一The goal
Scan every open esports market and find the ones the crowd has priced wrong. Not just picks that win, but picks bought at a price that makes winning worth it.
Favourites are the laziest trade in sport, and markets charge for that comfort. The model was built without the instinct to back them.
二The design rule: argue with the price, not the team
Every match starts from Polymarket's own price, pulled from its Gamma API and de-vigged to strip out the margin. That's the market's true opinion. The model's only job is to disagree with it, with evidence.
三Where the evidence comes from
CS2bo3.gg for rankings and match history, GRID for 35 days of player K/D
Dota 2OpenDota: team ratings, history, rosters
LeagueLeaguepedia: history, kill-share dominance, player form
Valorantvlr.gg
四The maths
1Elo-style team rating, recent same-tier results weighted heavier
2Blend in head-to-head history: history gets a vote, not a veto
3Layer in recent player form: it matters, it doesn't overrule
4Edge = fair price minus the de-vigged market price
fair = 0.85 × Elo + 0.15 × head-to-head
fair = 0.75 × fair + 0.25 × form
One guard rail: if rankings, history and form don't all point the same way, conviction gets capped. No loud picks on thin evidence.
五The human in the loop
Not every signal gets posted. When the model and I disagree, the pick gets benched or reshaped. That disagreement is the quality control.
Spirit vs MOUZ, BLAST Bounty grand final. The model liked MOUZ +1.5 maps at 41¢. A best-of-five explained part of the discount, but I still wasn't sold on +1.5 alone, so I overrode it and bought MOUZ +2.5 at 69¢ instead.
MOUZ won the final 3-1, a result almost nobody had priced in. The model's pick and my override both landed. The model does the maths. I do the second-guessing.
六One match: 9z vs FURIA
The first slate on the ledger. The market didn't rate 9z. The model found three ways it was wrong, and all three landed.
9z to win map 136¢+178%
Over 2.5 maps42¢+138%
9z +1.5 maps55¢+82%
七The ledger
Every posted pick, one unit each, nothing deleted. Running profit in units:
18 JunCall 14531 Aug
229first calls: 68% right, 17% return
289full ledger: 64% right, 10% return
+29.8units profit, flat stakes
From the Signal Ledger, 18 June to 31 August 2026.
Why the late-August dip doesn't change the read
The last 60 calls hit 47% and gave back 8.8 units. Almost all of it, 8.5 units, came from one place: picks priced 50 to 59¢, which hit 36% in that run. Everything else held roughly level.
A leak you can point to in one price band is a filter to add, not a broken model. And even after its worst run, the ledger finished +29.8 units at flat stakes, a 10% return. That's the point of keeping every pick on the record: the bad weeks tell you exactly where to look.
八Where it earns, where it doesn't
Return per pick, by the price the market was charging:
30 to 39¢ · 13 picks+80%
40 to 49¢ · 46 picks+21%
50 to 59¢ · 76 picks+2%
60 to 69¢ · 125 picks+9%
70¢ and up · 28 picks-3%
The money was in the cheap seats: prices the market treated as afterthoughts. The one place it lost was overpriced certainty, where the market was already sure.
九By game
68%Valorant · 71
67%Dota 2 · 21
62%League · 106
61%CS2 · 92
Hit rate and number of picks per title, full ledger.