AI
← All posts
Ai Polymarket Autonomous-Trading Risk-Management

The count reached 95%, the market was already there

Dmitrii Balabanov
Dmitrii Balabanov
September 14, 2026 · 4 min read

Yesterday the Swedish election feed had 22 of 6,626 districts and no seats. Today it has 6,312 districts, 349 published seats, and a market that has already decided.

This is the day the work crossed from synthetic validation into live data — and discovered that live data does not guarantee live edge. The count advanced, the seats appeared, the parser read them correctly against real official values for the first time. And none of it produced a trade.

Morning: seats arrive

By the 10:00 Jerusalem cycle, the Valmyndigheten preliminary report covered 6,273 of 6,626 districts — 94.7%. For the first time, published preliminary seats were present and schema-valid: 349 total, with the Social Democrats at 100, Moderaterna at 70, and the Sweden Democrats at 62.

This was not a fixture. The adapter read actual structured data from the official source, and the non-null seat branch — the code path that handles real published seat counts — was validated against live data for the first time. Twenty-six tests passed: eight live assertions against the captured report, thirteen mutated-fixture rejection tests, two archived regression checks, and three synthetic regression tests.

The final endpoint still returned 404. These were preliminary seats, not final results. M 70 versus SD 62 was an observation, not a probability. No independent fair value, no executable edge, no trade.

Evening: the market closes the door

By the 22:00 cycle, the count had reached 6,312 of 6,626 — 95.3%. The seat totals were unchanged: M 70, SD 62, a gap of eight. The source reported its timestamp as 14 September 2026, 18:30:04 Stockholm time.

The market order books told the rest of the story. M YES bid sat at 0.999. SD YES ask sat at 0.001. The market had priced Moderaterna as the second-largest party at 99.9% confidence and the Sweden Democrats at 0.1%.

Being right about the outcome is not the same as having a tradeable edge. The parser correctly identified the seat ordering. The source data confirmed it. The market agreed — completely. When a market prices an outcome at 99.9%, there is no spread to capture, no uncertainty to monetize, no edge to execute. The work was correct and the work was worthless, at least for trading purposes.

The final endpoint still returned 404. Sweden live entries were frozen as research-only.

What was actually built

This is not a story about waiting. Between yesterday and today, the Swedish source adapter advanced from reading a page shell with 22 districts and null seats to reading real structured preliminary results with 6,273 districts, published seats, and a live-validated non-null seat branch. That is a concrete technical advance: a parser that works against live official data, not synthetic fixtures.

The morning’s twenty-six tests included eight live assertions checking the actual captured report — party codes, abbreviations, seat counts, vote totals, count status, timestamps. Thirteen mutated-fixture tests deliberately broke the input to verify rejection behavior. The non-null seat branch, which yesterday was unvalidated, today ran against real published seats for the first time.

The evening produced a rotation artifact: Sweden frozen as research-only, the next active work redirected to a fresh source-first category. The Swedish parser is done — not because it failed, but because it succeeded and found nothing left to trade.

Discovery and account

The morning broad screener fetched 500 markets and produced 128 candidates. The evening screener fetched the same 500 and produced 163. These are separate scans, not 1,000 distinct markets. The top diversified candidates were dominated by Fed September meeting markets (25 bps hike at 85.5%, no-change at 14.5%) and crypto barrier contracts. None received an independently supported fair probability.

The account held steady at 27.914185 USDC across both cycles. Zero open orders, fourteen historical zero-value position rows, zero positive value. BTC conditional balance remains zero. Fed conditional dust sits at 0.006154 from preserved exposure records. No trades, no cancels, no fresh account fetch during finalization.

Compact anti-stuck audit