Recommendations
Model edges ranked by net-of-fee expected value. World Cup 2026 group + knockout markets. Sizes are Kelly-fraction suggestions — you execute manually.
Edge Blotter · sorted by Net Edge ↓
| Match | Market | Selection | pmodel | pmkt | Gross | Net Edge▾ | Conf | Size · Kelly | Kickoff | Actions |
|---|---|---|---|---|---|---|---|---|---|---|
Spain vs Cape VerdeGroup H · MetLife |
Total O/U | Over 2.5 | 71.2% | 62.8% | +8.4% | +6.9% | $640 · 0.18× | 02:11:40 | ||
Score Probability MatrixH↓ A→
0 1 2 3 4
0
2.1 3.4 3.0 1.6 0.6
1
5.1 8.2 6.4 3.2 1.2
2
7.8 9.4 10.1 5.0 1.9
3
5.6 7.1 6.0 3.4 1.3
4
2.4 3.1 2.6 1.5 0.6
cell = P(Spain i : Cape Verde j) % · shaded by density
Implied 1X2 & ConsensusP(Spain win)79.4%
P(Draw)13.1%
P(Cape Verde)7.5%
Model E[goals]3.18
λ Spain / λ CV2.55 / 0.63
API-Football consensus O2.564.1%
Kalshi mid (yes)62.8%
Pinnacle no-vig65.5%
Edge vs Kalshi+8.4% gross
Per-Venue Fees & NetKalshi · best−1.5% fee → +6.9% net
Coinbase Predict−2.2% fee → +6.2% net
Suggested venueKalshi
pmodel vs pmarket · 24hmodelmarket
edge has widened 3.1pp over 24h
| ||||||||||
Argentina vs CroatiaR16 · SoFi |
Winner | Argentina ML | 64.0% | 57.5% | +6.5% | +5.3% | $720 · 0.16× | 26:40:00 | ||
France vs MoroccoGroup I · AT&T |
BTTS | Yes | 58.9% | 52.0% | +6.9% | +5.1% | $410 · 0.11× | 04:55:10 | ||
Brazil vs Korea Rep.R16 · Hard Rock |
Spread | Brazil −1.5 | 55.4% | 49.8% | +5.6% | +4.4% | $560 · 0.13× | 50:10:00 | ||
USA vs TurkiyeGroup D · Levi's |
Winner | Draw | 28.1% | 24.5% | +3.6% | +2.9% | $300 · 0.08× | LIVE 70' | ||
Portugal vs UruguayGroup F · Gillette |
Correct Score | 2–1 Portugal | 12.4% | 9.0% | +3.4% | +2.6% | $180 · 0.05× | 28:20:00 | ||
Germany vs MexicoGroup G · Lumen |
Total O/U | Under 3.5 | 61.0% | 57.9% | +3.1% | +2.0% | $260 · 0.06× | 06:15:00 | ||
Netherlands vs JapanGroup E · MetLife |
Winner | Netherlands ML | 59.2% | 57.4% | +1.8% | +1.0% | $140 · 0.03× | 30:00:00 | ||
England vs SenegalR16 · Mercedes-Benz |
Total O/U | Over 2.5 | 54.8% | 53.5% | +1.3% | +0.6% | $90 · 0.02× | 52:30:00 | ||
Colombia vs EcuadorGroup C · NRG |
BTTS | No | 51.5% | 50.8% | +0.7% | −0.2% | — skip — | 31:45:00 | ||
Belgium vs CanadaGroup B · BMO |
Spread | Canada +1.5 | 63.0% | 63.7% | −0.7% | −1.6% | — skip — | 08:00:00 | ||
Live / In-Play
Matches in progress. Live model re-prices each minute off the score state and clock; flagged rows are mispricings where Kalshi's live line diverges from the model.
Live Edges
| Match | Market | Model | Mkt mid | Net edge | Stake | |
|---|---|---|---|---|---|---|
| No live edges — nothing in play, or no market diverges from the live model. | ||||||
Positions / Portfolio
Open exposure marked to current Kalshi mid. Caps enforced per match and per market type by the risk engine.
Open Positions
| Match | Market | Selection | Stake | Entry | Mark | Qty | Unreal. P&L | % |
|---|---|---|---|---|---|---|---|---|
| Argentina vs Croatia | Winner | Argentina ML | $980 | 57.5¢ | 61.0¢ | 1,704 | +$60 | +6.1% |
| Spain vs Cape Verde | Total | Over 2.5 | $640 | 62.8¢ | 66.4¢ | 1,019 | +$37 | +5.7% |
| Brazil vs Korea Rep. | Spread | Brazil −1.5 | $560 | 49.8¢ | 52.5¢ | 1,124 | +$30 | +5.4% |
| Mexico vs Poland | Winner | Mexico ML | $700 | 66.0¢ | 84.0¢ | 1,060 | +$191 | +27.3% |
| France vs Morocco | BTTS | Yes | $410 | 52.0¢ | 54.1¢ | 788 | +$17 | +4.0% |
| Germany vs Mexico | Total | Under 3.5 | $260 | 57.9¢ | 56.2¢ | 449 | −$8 | −2.9% |
| USA vs Turkiye | Winner | Draw | $300 | 24.5¢ | 38.0¢ | 1,224 | +$285 | +55.1% |
Exposure by Match
By Market Type
Bet Log
Full audit trail of staged, filled, and resolved bets with fees and realized P&L. Cold-start sample — 23 markets resolved so far this tournament.
Cumulative P&L
Bet History
| Settled | Match | Market | Selection | Edge | Stake | Fill | Fees | Outcome | P&L |
|---|---|---|---|---|---|---|---|---|---|
| 24 Jun | Mexico vs Poland | Winner | Mexico ML | +5.1% | $700 | 66.0¢ | $11 | ● Won | +$349 |
| 24 Jun | Japan vs Tunisia | Total | Under 2.5 | +3.2% | $320 | 54.0¢ | $5 | ● Won | +$268 |
| 23 Jun | Croatia vs Ghana | BTTS | Yes | +4.4% | $280 | 51.5¢ | $4 | ● Lost | −$280 |
| 23 Jun | Argentina vs Saudi A. | Spread | Arg −1.5 | +6.0% | $540 | 48.0¢ | $8 | ● Won | +$585 |
| 22 Jun | Brazil vs Serbia | Score | 2–0 Brazil | +2.9% | $150 | 11.0¢ | $2 | ● Lost | −$150 |
| 22 Jun | England vs Iran | Winner | England ML | +3.6% | $600 | 72.0¢ | $9 | ● Won | +$233 |
| 21 Jun | France vs Australia | Total | Over 2.5 | +4.1% | $450 | 59.0¢ | $7 | ● Won | +$313 |
| 21 Jun | Portugal vs Ghana | Winner | Draw | +2.2% | $200 | 25.0¢ | $3 | ● Lost | −$200 |
Tournament Futures
Champion & round-qualifier edges from the bracket Monte Carlo — 1M simulated tournaments per refresh (Rust engine), consensus-anchored where ties are scheduled, MLE prior beyond. Extra skepticism is built in: a 5pt edge floor plus a confidence haircut.
Futures Edges
| Market | Tier | Side | Model | Kalshi Mid | Net Edge | Conf | Stake |
|---|---|---|---|---|---|---|---|
| No futures sweep yet — the cron runs twice a day. | |||||||
Calibration
How well do model probabilities match observed frequencies? In a single 3.5-week tournament we cannot fully calibrate — this state is shown honestly below.
Reliability Diagram
Brier Score Over Time
Verticals
Non-World-Cup surfaces (crypto strikes, tennis, MLB, Fed/macro, global events). Each carries its own calibration ladder and stays paper-only behind the 5pt skepticism floor until its log matures. Disabled verticals are surfaced here but do not sweep.
Watchlist
| Market | Vertical | Question / side | p0 | posterior | news LR | rationale |
|---|---|---|---|---|---|---|
| No watchlist rows — enable a vertical or wait for the next sweep. | ||||||
Parlays
Multi-leg (combo) markets priced off the joint score distribution, not the product of leg odds. Legs from the same match are correlated, so our fair value diverges from the crowd's independence assumption — that gap is the model's structural edge. Books are thin until near kickoff; net-vs-market fills in then.
Same-Match Combos
| Match | Legs | Joint fair | Naïve | Corr Δ | Mkt mid | Net edge | |
|---|---|---|---|---|---|---|---|
| No parlay scan yet — run the parlays job or wait for the next refresh. | |||||||
Research
Free-feed evidence (injuries + RSS) condensed by one Haiku call per match into aggregate likelihood ratios, then clamped (max 2.0x), confidence-shrunk, and Bayes-applied to the model. Everything shown is auditable.
Evidence Feed
Applied Ratios
Help & Platform Guide
What STZ Astra does, what every screen means, and how to run your daily World Cup betting loop. Concise by design — each panel covers one part of the platform.
What STZ Astra is
A single-user decision-support desk for FIFA World Cup 2026 prediction markets on Kalshi. Astra builds one probability model per match, prices every Kalshi market from it (winner, totals, correct score, spread, BTTS, halves), compares those fair prices to live Kalshi quotes, and surfaces the mispricings — ranked by net-of-fee edge with a suggested bet size. You approve and place each trade; Astra never fires orders on its own.
The daily loop
Risk bar
Recommendations blotter
The goal model
A Dixon-Coles bivariate-Poisson model produces a full score-probability matrix — P(home goals i, away goals j) — for each match, seeded from FIFA strength and the de-vigged sharp bookmaker consensus (API-Football, ~13 books). Every market is just a region of that one matrix: winner = summed halves, totals = diagonals, correct score = a single cell, BTTS = both ≥ 1. The detail drawer shows the matrix behind each edge.
Edge, sizing & fees
Live / In-Play
As a match plays, the model re-prices from the current score and minutes remaining and compares to Kalshi's live quote. It flags overreactions — e.g. a team still priced near its pre-match number after the game state has clearly shifted. These are the cleanest, most time-sensitive edges.
Positions & Bet Log
Logging a bet you placed
POST /api/bets into the ledger — it appears in Positions immediately and settles with the nightly job.KXBTCD = BTC price), pick the strike/expiry, buy the side the row names.Where your data lives
Calibration & Research
Calibration shows whether 60%-predictions actually win ~60% (reliability diagram + Brier over time). In a single 3.5-week tournament there aren't enough resolved markets to fully calibrate, so the model runs in an honest UNCALIBRATED · cold-start state — shown explicitly. Research surfaces news/lineups and a copilot brief that nudges probabilities before kickoff.
Execution & bankroll
paperdemoprod