Kalshi ask is what you would pay right now for the side shown. Sharp fair is the de-vigged probability from Pinnacle (or a sharp-book consensus). Model P is our bottom-up probability with an 80% range.
Sizing: Quarter-Kelly (change "Kelly ×" in the header) using the low end of the range. When you add several contracts from the same game, a joint Kelly over the model's simulated scores computes how correlated they are and cuts each stake accordingly. Every step is shown in the bet slip.
News (off by default): when enabled, "Scan news" asks Gemini (with Google Search) for injuries and narratives. Only lines that Gemini's own grounding metadata ties to a web source are shown. A key player out widens the model range ×1.5.
History: ESPN results are collected in the background a few days at a time (newest first). Until a league's history is complete, the Data health tab shows how many days are stored and its model uses what's there.
Trade log: saved on the server (Cloudflare KV), so it's the same on your phone and PC. A change can take up to a minute to show on another device. Each trade keeps the model probability, its range, the sharp line and the price at the time you logged it. The Calibration panel compares those to what actually happened, once trades are marked win/loss. Under about 30 resolved trades it's noise.
Off-season / early season: results are recency-weighted and shrunk to league average, so thin or old data shows up as wide ranges and "low" confidence rather than false precision.
The desk never places bets. You decide. Full details: docs/HOW-IT-WORKS.md in the repo.