Methodology

Transparency is the product. This page describes exactly how the numbers on this site are produced, including what the model cannot know.

Data

Public per-round scoring data (2022–present, 80,000+ player-rounds) and live contract prices from Kalshi’s public market-data API, including order-book depth. No paid data feeds.

Player skill

Raw scores are adjusted for course and round difficulty with a two-way decomposition, then converted to per-player skill estimates using recency weighting (half-life ≈ 29 rounds) with empirical-Bayes shrinkage toward the field prior. Players with thin histories are flagged and excluded from analysis rather than passed off as confident estimates.

Simulation

Tournaments are simulated at least 10,000 times with correlated scoring: shared daily condition shocks, Thursday/Friday wave shocks, integer-stroke rounds (tie clusters at the cut line are real and priced), event-specific cut rules, and a final-round pressure adjustment near the lead. Live mode re-simulates the remainder of the tournament from the current leaderboard.

Contract pricing

Edges are computed against executable prices — the ask when evaluating YES, the bid when evaluating NO — never the midpoint or last trade, and expected value is net of exchange fees. Apparent edges on sub-10¢ longshots are held to a stricter threshold: the favorite-longshot bias in prediction markets is well documented, and cheap contracts carry the worst fee-to-price ratios.

Validation

No model version publishes to the track record until it passes a composite statistical gate on out-of-sample data: Brier skill versus baseline with tournament-clustered significance, calibration (Spiegelhalter Z within ±2, published reliability curves), and selection-bias controls (probability of backtest overfitting via combinatorial cross-validation, deflated Sharpe ratio with a registered trial count). The current validation report is in the repository and summarized on this site.

Honest limitations

  • Public data has per-round totals only — no shot-level strokes-gained decomposition, so ball-striking versus putting form cannot be separated.
  • Players without recent tour history (many major-championship qualifiers) get prior-dominated estimates and are excluded from analysis.
  • The market’s closing price embeds injury and withdrawal news the model cannot see.
  • Team events, Stableford scoring, and 54-hole-cut formats are not modeled; the engine declines to produce numbers for them.