Methodology
A complete technical reference for how Olympus Bets Analytics generates a sports betting projection — from raw data ingestion to a Kelly-sized recommendation. Every component documented with version numbers, formulas, and the empirical research that motivated each design decision.
TL;DR — How a projection is made, in 150 words
Olympus Bets Analytics produces a sports betting projection in nine steps. (1) Pull live schedule, odds, injuries, and advanced metrics from authoritative sources. (2) Run a league-specific Monte Carlo engine for 10,000+ iterations per game, producing a full probability distribution over moneyline, spread, and total outcomes. (3) Calibrate the raw output with Platt scaling and per-league isotonic regression. (4) Compute edge as calibrated probability minus market-implied probability. (5) Map the candidate into a 15-dimension profitability zone and block RED zones. (6) Apply an adaptive regime threshold that tightens or relaxes based on a rolling window of recent accuracy. (7) Size the bet via Kelly Criterion after a 15% Bayesian probability shrinkage. (8) Append to an immutable timestamped ledger. (9) Resolve against official scores and feed the outcome back into the calibration set. The entire loop is closed, automated, and version-tagged.
1. Monte Carlo Simulation Engine
Definition. A Monte Carlo simulation is a computational technique that uses repeated random sampling — drawing inputs from calibrated probability distributions — to estimate the distribution of outcomes for a system under uncertainty. Olympus Bets Analytics uses Monte Carlo simulation as the foundation of every projection: rather than producing a single point estimate ("Lakers win 108-103"), each engine produces a full probability distribution over the moneyline, point spread, and total markets. The width of that distribution is what makes the output actionable, because it directly corresponds to model confidence.
Each scheduled game is simulated for a minimum of 10,000 iterations. The number is not arbitrary. With 1,000 iterations a true 55% probability appears anywhere in the 52–58% range due to sampling noise; at 10,000 iterations the standard error drops to roughly 0.5 percentage points, which is the precision required to discriminate between a 54% true edge and a 56% true edge. Lower-iteration models produce noisy probabilities that systematically generate false edges and lead to overbetting; this is one of the most common failure modes in retail sports modeling.
League-specific engines
A basketball engine cannot be repurposed for hockey any more than a chess engine can play poker. Olympus Bets Analytics maintains nine independent simulation engines, each modeling the actual physical mechanics of its sport:
- NBA — Possession Monte Carlo V5.0.2 simulates each game possession by possession (≈200 per game), with Beta-distributed shooting accuracy per player, score-state-aware play calling, 13-player rotations, and rating-anchored team efficiency. The engine handles transition opportunities, free-throw sequences, and pace-duration compensation.
- NHL — V19.1 Pinnacle works at the shot level rather than the goal level, ingesting MoneyPuck Fenwick Shooting Value (FSV) expected-goals data and modeling shot generation by zone (slot, point, perimeter), goaltender save probability by shot type, special-teams deployment, and Bayesian shrinkage on small-sample goalie ratings. Total goals are clamped at 4.3 mean to prevent extreme outliers.
- CBB — Savant Ultra v5.0.1 runs a five-on-five player-level simulation using EvanMiya BPR ratings, conference-strength calibration, defensive-matchup variance, and regime-gated ATS spread bucketing (CLOSE, TRAP, BEST, LARGE, HUGE). Adaptive unit multipliers (1.15× for high-confidence buckets, 0.85× for low-confidence) further shape sizing.
- NFL — Elite V1.1 Pinnacle runs play-by-play with drive sequencing, Expected Points Added (EPA) metrics, red-zone efficiency, and CDF-based edge calculation. Weekly automated refresh handles roster turnover and injury impact.
- MLB — Pitch Sim V5.0 is pitch-type aware: each at-bat is simulated pitch by pitch using Statcast pitcher-vs-batter matchups, platoon splits, catcher framing, bullpen-fatigue modeling, ballpark geometry, directional wind, and umpire strike-zone tendencies.
- Soccer — V16.3 PBP uses FBref expected-goals data, isotonic probability calibration, score-state modeling (teams behave differently when leading versus trailing), referee modeling, formation matchups, and a discrete extra-time and penalty-shootout simulation for cup competitions.
- LoL — Championship v2.1 uses a five-layer Glicko-2 rating system blended with market odds, with patch-aware meta adjustments, side win-rate modeling, and staleness regression for teams with infrequent matches.
- Golf — Conditional Sim V3.2 runs round-by-round with mid-tournament anchoring, market-adaptive blends, per-round weather, directional wind, continuous-wave field-shared noise (α = 0.40 → ρ = 0.16), and historical strokes-gained overrides for established players.
- Olympic Hockey — V2.2 handles short-tournament dynamics with talent-compression and mismatch-boost modifiers tuned to international play.
Each engine writes a model_version string into every simulation output, which the downstream pipeline guardian validates against an expected version table to catch drift between the orchestrator and the engine code itself.
Reproducibility
Every simulation run is seeded with a SHA256 hash of the game ID plus the simulation date. This guarantees that a re-run on the same inputs produces identical output, which is essential for debugging, auditing, and post-game forensic analysis. A non-reproducible model is unfalsifiable, and an unfalsifiable model cannot be improved.
2. Kelly Criterion + Bayesian Probability Shrinkage
Definition. The Kelly Criterion, derived by John Kelly at Bell Labs in 1956, is the bet-sizing fraction that maximizes the expected logarithm of bankroll over time. The closed form is f = (bp − q) / b, where b is the decimal odds minus one, p is the probability of winning, and q is the probability of losing (1 − p). Kelly is provably optimal in the sense that no other strategy achieves higher long-run growth rate without taking on extra variance.
In practice, full Kelly sizing is too aggressive for human bettors. The geometric drawdown distribution under full Kelly is heavy-tailed, and a sequence of unlucky outcomes can wipe out a bankroll even when the long-run edge is real. Olympus Bets Analytics uses fractional Kelly — Kelly percentages are mapped to a discrete unit scale capped at 3.0u — and applies a Bayesian probability shrinkage step before Kelly is computed.
Bayesian Kelly shrinkage
Before any Kelly fraction is computed, the calibrated model probability is shrunk toward 50%:
shrunk_prob = model_prob × 0.85 + 0.50 × 0.15
This pulls a 70% raw probability to 64.5% before Kelly sees it. The economic effect is significant: full Kelly on a 70% probability at -110 odds is 38% of bankroll; on a 64.5% probability it drops to 24%. The shrinkage step is the single most important guard against the platform's most expensive failure mode — STRONG-tier inflation from overconfident model output. The 0.85 / 0.15 weights were tuned empirically on a 6,101-game validation set and are not a free parameter; tighter shrinkage produces under-betting on real edges, looser shrinkage produces blow-ups in model-blind regimes.
Kelly percentage to units mapping
| Kelly % | Units | Tier |
|---|---|---|
| 0 – 1% | 0.5u | Speculative |
| 1 – 3% | 1.0u | Standard |
| 3 – 6% | 1.5u | Confident |
| 6 – 10% | 2.0u | Strong |
| 10 – 15% | 2.5u | Very Strong |
| 15%+ | 3.0u | Maximum |
League-specific unit caps
Different sports have different variance profiles. A 60% edge in the NFL (a 17-game regular-season sample) carries more uncertainty than a 60% edge in the NBA (an 82-game sample). Caps are calibrated to that variance:
| League | Max Units | Rationale |
|---|---|---|
| NBA / NFL / MLB / CFB | 3.0u | Deep markets, high liquidity, large samples |
| NHL | 2.5u | Goaltending variance, parity |
| CBB | 2.5u | Large spread variance in college |
| Soccer | 2.0u | Three-way market — draw counts as a loss for moneyline |
Full guide: Kelly Criterion in sports betting → | Interactive Kelly calculator →
3. Probability Calibration (Platt + Isotonic)
Definition. Probability calibration is the process of adjusting raw model probabilities so that the predicted probability of an outcome matches the empirical frequency of that outcome over a large historical sample. A model is well calibrated when its 70% predictions win 70% of the time over a meaningful sample, regardless of league, market, or conviction tier.
Raw Monte Carlo probabilities are systematically miscalibrated. Across thousands of resolved Olympus Bets Analytics projections, raw 70% predictions have historically won closer to 64% of the time. This overconfidence is universal across sports leagues and is the dominant source of model-vs-market disagreement that does not translate into long-run edge. Olympus Bets Analytics layers two complementary calibrators on top of every raw Monte Carlo output.
Platt scaling
Platt scaling fits a parametric sigmoid P_calibrated(x) = 1 / (1 + exp(A·x + B)) to historical (raw probability, outcome) pairs. The Olympus implementation uses a regularization constant of C = 10.0 and produces a 3.0–19.7% reduction in Brier loss across leagues compared to raw probabilities. Platt scaling is appropriate when the calibration curve is approximately sigmoidal, which is the case for most Monte Carlo outputs.
Isotonic regression
Isotonic regression fits a non-parametric, monotonically non-decreasing step function from raw probabilities to empirical frequencies. It does not assume a sigmoidal shape and is therefore robust to model-specific quirks in the calibration curve. Olympus Bets Analytics fits a separate isotonic regression per league, per bet type — NBA spreads have a different calibration curve than NHL totals, and a single global calibrator would average those out.
Ensemble stacking
For each candidate projection, the system also queries an ensemble gradient-boosting stacker (AUC = 0.6045 on a held-out 11,700-row training set, 19 features) that blends raw probability, calibrated probability, market-implied probability, recency-weighted league performance, and several engineered signals. The stacker output is the final calibrated probability used downstream.
Self-correcting feedback loop
Calibration tables are recomputed daily after results resolve. A bad week in NHL totals immediately adjusts the next day's NHL totals calibration. The system is therefore not "trained once, deployed forever" — it is a closed loop where every new resolved projection is part of the calibration set for the next day's run.
Full guide: Bayesian sports betting and overconfidence correction →
4. Edge Calculation Against the Market
Definition. Edge is the difference between the model's calibrated win probability and the market's implied probability at the offered odds, expressed in percentage points. A 5-point edge means the model assigns a 5pp higher probability than the sportsbook line implies.
For a moneyline bet at -110, the implied probability is approximately 52.4%. If the calibrated model probability is 57%, the edge is 4.6 percentage points. For a spread bet, the edge is computed from the simulated cover distribution: the percentage of Monte Carlo iterations in which the team covered the spread minus the implied probability from the offered price.
Edge is computed against the best available line across tracked sportsbooks (line shopping is a separate quality gate). Because a single book's line can be sharper or softer than consensus, this matters: a 4-point edge against a soft book may collapse to 1 point against the consensus close. Olympus Bets Analytics also tracks Closing Line Value (CLV) — whether the price at projection publication was better than the eventual closing price. Consistently beating the closing line is one of the few empirically robust indicators of a real edge, distinct from variance.
Full guide: Expected Value in sports betting → | Full guide: Closing Line Value →
5. Profitability Zone Engine (15-dimensional) — a.k.a. Pattern Edge
Definition. A profitability zone (marketing name: Pattern Edge) is a sub-niche of the betting universe defined by a tuple of 15 dimensions — league, bet type, side (home or away), favorite/underdog, edge bucket, probability bucket, time of day, day of week, and others. The profitability-zone engine computes long-run win rate, units, and z-statistic for each zone, classifies it as GREEN, YELLOW, or RED, and uses those tags to gate which projections are surfaced.
Blanket league-level filtering is too coarse. "NBA spreads are bad" misses the fact that NBA home favorites in the 5–10% edge bucket are historically profitable while NBA away underdogs in the same edge bucket are historically catastrophic. The zone engine exposes this granularity and acts on it surgically.
Zone classification rules
| Tag | Criteria | Effect |
|---|---|---|
| GREEN | z > 1.0 AND win rate > 54% AND n ≥ 30 AND OOS validation (held-out 14d WR ≥ 50% with n ≥ 5) | Rank-score boosted ~1.10× via continuous zone multiplier |
| YELLOW | Default (everything not GREEN or RED) | Premium: blocked unless in-sample units ≥ +2.0u AND n ≥ 30 AND WR ≥ 52.5% AND z ≥ 0 AND OOS not collapsing. Free: passes through. |
| RED | z < −1.0 AND win rate < 48% AND n ≥ 25 | Hard-blocked from premium, plus a ROI-gated catch-all at n ≥ 30 AND units ≤ −10u AND ROI ≤ −3% |
Walk-forward training split
As of April 2026, the zone engine uses a walk-forward training/holdout split: bets at least 14 days old are the training set (with a 21-day recency decay), and the most recent 14 days are the held-out out-of-sample validation set (flat-weighted). Base tags are set from training, then validated against OOS. A zone classified GREEN by training is demoted to YELLOW if its OOS win rate falls below 50%; a YELLOW zone can be promoted to GREEN if its OOS win rate exceeds 60%. This catches in-sample overfits — on the April 2026 baseline, 28 in-sample GREEN zones were demoted by OOS validation. The engine writes an oos_override note into the zone JSON for every override so the decision is auditable.
Hierarchical lookup
Zone keys are looked up most-specific-first, then progressively broader: drop probability bucket → drop edge bucket → drop favorite/underdog → drop side → drop bet type. This ensures that a candidate with no exact zone match still receives the most specific available signal rather than falling through to a generic league-level tag.
6. Adaptive Regime Calibrator
Definition. A regime calibrator is a meta-controller that adjusts model thresholds in real time based on a rolling window of recent performance. It detects when the current regime — defined by recent calibration accuracy, edge realization, and league-specific variance — has shifted, and tightens or relaxes the minimum-edge threshold accordingly.
Static thresholds decay. A 4% minimum edge that was profitable on 2025 data may be unprofitable on 2026 data because the underlying market has tightened, or because team rosters have produced a regime shift in scoring variance. Without a regime layer, the system would rigidly apply stale thresholds during streaks in either direction. The regime calibrator runs daily over a 14-to-30 day rolling window per league and bet type; if recent accuracy drops below the calibrated baseline, the minimum-edge threshold is tightened by a calibrated step. Conversely, if recent accuracy exceeds baseline, thresholds are relaxed to capture more of the regime.
The regime layer composes with the profitability-zone engine: a bet must clear both the zone filter and the regime-tightened minimum edge to surface as a recommendation. This is intentional. Zones answer "is this kind of bet historically profitable?" and the regime calibrator answers "is the model's current edge estimate trustworthy in the current market state?" — two different questions with two different answers.
7. ML Conviction → Spread Cascade (NBA)
Definition. The conviction cascade is a self-learning routing layer specific to NBA where a high-conviction moneyline signal can reweight the corresponding spread recommendation, but never the other direction. It encodes the empirical observation that ML conviction is a stronger leading indicator than spread conviction in the NBA market.
The cascade is implemented as a learned weight rather than a hardcoded rule. When the model produces a STRONG-tier moneyline edge on a side, the spread recommendation on the same side receives a continuous rank-score adjustment proportional to the ML edge. There is no symmetric reverse — a strong spread signal does not reweight the moneyline — because the asymmetry is itself an empirical finding from the resolved-pick history. The weight is recalibrated on every resolved-pick batch and stored in data/best_bets_tracking/ml_conviction_spread_cascade.json.
8. Data Sources and Freshness Gates
Definition. Every input to the projection pipeline is a real, named, authoritative data source. The system never estimates, extrapolates, or synthesizes input data — if a required input is missing or stale, the corresponding game is skipped rather than projected on incomplete inputs.
- Schedules and final scores — ESPN API. Authoritative for game times, scores, records, and game state.
- Live odds — The Odds API, polled multiple times per day across all major US sportsbooks.
- Injuries — Multi-source aggregator with cross-validation across ESPN, RotoWire, and team beat reports. Players flagged
OUTorOFSare excluded from per-player simulation samples and surfaced as injury impact in the writeup. - NBA player profiles and ratings — Per-team ESPN-derived profiles in
data/nba/player_profiles/{TEAM}_2025_players.json. - NHL advanced metrics — MoneyPuck Fenwick Shooting Value (FSV) for expected goals, plus league-wide Corsi and danger-zone splits.
- CBB efficiency and player ratings — EvanMiya BPR for individual player ratings, ESPN for win/loss records (overwrites EvanMiya records as authoritative live source).
- MLB pitch-level metrics — Statcast pitch-by-pitch data, ballpark dimensions, weather forecasts with directional wind, and umpire strike-zone tendency tables.
- Soccer expected goals — FBref xG with isotonic per-league calibration; Understat as a secondary source for shot-by-shot data.
Freshness gates
Before any sim runs, every upstream cache file is timestamp-checked. Files older than six hours trigger an automatic re-fetch; files older than 18 hours hard-block the simulation step until the source is refreshed. Stale Python .pyc caches are cleared on each run to prevent module-shadowing bugs after refactors. The pipeline guardian checks file timestamps every hour and pages the operator if a critical input has gone stale beyond its freshness contract.
9. Quality Gates (Multi-Layer Filtering)
Definition. A quality gate is a binary check that a candidate projection must pass before it is surfaced as a recommendation. Olympus Bets Analytics layers several independent gates so that the system is conservative by composition rather than by any single threshold being conservative.
- Minimum edge threshold — Per-league, per-bet-type, regime-adapted. Typical floor is 3–8 percentage points.
- Minimum probability threshold — Per league. CBB ATS requires cover probability ≥ 60% (calibrated from the V-shaped accuracy-by-cover-probability curve).
- Profitability-zone check — RED zones are hard-blocked, YELLOW zones must clear in-sample and OOS criteria, GREEN zones are boosted.
- Regime gate — Adaptive minimum edge based on rolling recent performance.
- Edge cap — 25% maximum edge for premium, 30% for free. Edges above 25% historically had 43.3% WR (n = 127); edges above 30% had 33.3% WR (n = 46). The caps are not arbitrary — they reflect the overconfidence-inversion finding.
- ML odds floor —
ML_ODDS_HARD_CAP = -130universal inutils/units_calculator.py; per-league overrides exist for tighter floors (e.g., LoL ML at -160 after the April 2026 Karmine -174 loss). - Premium minimum odds floor —
PREMIUM_MIN_ODDS = -200universal floor. - Data freshness — Underlying data must be within its freshness contract.
- Game start filter — Games already in progress are auto-excluded.
The gates compose. A 4-point edge in a GREEN zone with stale injury data does not pass. A fresh-data 6-point edge in a RED zone does not pass. A 28% edge in a GREEN zone is capped at the 25% premium ceiling. Pass-through is rare by design.
10. Production Engine Versions
Every simulation output writes a model_version string into the result file. The pipeline guardian validates this against the canonical version table on every run; mismatches generate an alert. The current canonical versions:
| Sport | Engine | Version | Output cache |
|---|---|---|---|
| NBA | Possession Monte Carlo | v5.0.2-calibrated-possession | data/nba/cache/{date}_simulations.json |
| NHL | Pinnacle | v19.1-pinnacle | data/nhl/elite_recommendations/nhl_v17_sim_{date}.json |
| CBB | Savant Ultra | v5.0.1 | data/cbb/simulation_archive/{date}.json |
| NFL | Elite Pinnacle | v1.1 | data/nfl/cache/season/2025/week_{n}.json |
| MLB | Pitch Sim | v5.0 | data/mlb/cache/today.json |
| Soccer | PBP | v16.3 | (per-fixture) |
| LoL | Championship | v2.1 | olympus_esports_lol/outputs/simulations_ultra.json |
| Golf | Conditional Sim | v3.2 | data/golf/cache/today.json |
| Tennis | Tennis V2 | (calibrating) | (per-match) |
| Olympic Hockey | Olympic | v2.2 | data/olympic/simulations/{date}.json |
11. Key Research Findings
A handful of empirical findings drive most of the platform's design decisions. Each is reproducible from the resolved-pick ledger.
- Universal overconfidence inversion. Across every league tracked, the highest-confidence and highest-edge projections perform worse than mid-confidence projections, not better. This is the single most expensive lesson encoded in the system. The 25% premium edge cap, the Bayesian Kelly shrinkage, and the conviction-tier-aware rank scoring all derive from this finding.
- V-shaped CBB ATS accuracy. In CBB, ATS accuracy as a function of cover probability is V-shaped — worst at 50–60% and best at the extremes (below 40% and above 65%). The minimum cover-probability threshold for CBB ATS is set at 60% to live on the right side of that V.
- Market blend alpha. Market-implied probability is closer to the true outcome than the model's raw probability 59.4% of the time in CBB. The CBB engine therefore blends model output with market output at α = 0.60 — heavier weight on market — rather than treating model output as ground truth.
- 15% Bayesian Kelly shrinkage is not a free parameter. Tighter shrinkage (90/10) produces under-betting on real edges; looser shrinkage (80/20) produces blow-ups during model-blind regimes. The 85/15 setting was tuned on a 6,101-game validation set and updated against a held-out OOS window.
- Free tier outperforms premium in the current window. As of April 2026, the free tier (publicly published projections) is at +27.48u and 54.5% WR across 755 picks; the premium tier is at -16.25u and 51.5% WR across 543 picks. The April zone-engine tightening reshuffled which zones qualify for premium, and the resulting concentration is taking 60–90 days of additional resolution to validate. We publish both numbers because integrity of the track record is a higher-order priority than short-window optics.
12. Immutable Ledger and Resolution
Definition. The Olympus Bets Analytics projections ledger is an append-only JSON-Lines file that records every projection at publication time. It is never edited, never reordered, and never selectively pruned. The file is data/best_bets_tracking/best_bets_picks.jsonl; the resolved counterpart is data/best_bets_tracking/best_bets_resolved.jsonl. Both are mirrored into the public CSV download via the daily SEO updater.
Every record contains: date, league, market, matchup, line, odds, model probability, edge percentage, units, confidence tier, and publication timestamp. Resolved records additionally contain the WIN/LOSS/PUSH outcome, units won, the actual home and away scores, and the resolution timestamp. The ledger is the canonical source of truth — every performance number on the track record, llms.txt, and /webmcp/api/performance endpoint is computed from this file.
An automated resolver (workers/bulletproof_best_bets_resolver.py) runs three times daily at 5 AM, 10 AM, and 2 PM EST. It matches each unresolved projection against the official ESPN final score (or, for player-prop markets, against the Statcast / boxscore final stat line), writes the outcome, computes units won, and appends to the resolved ledger. There is no manual intervention. There is no "voiding" of legitimate losses. Cancellations from the data source itself (postponed games, weather cancellations) are the only no-result resolutions.
13. How This Compares to Other Platforms
Olympus Bets Analytics differs from the major sports analytics platforms along five axes. None of these are aesthetic preferences — each reflects an empirical or architectural decision that materially affects the output.
- Full Monte Carlo simulation, not regression. Most competitor platforms use linear or logistic regression on engineered features. Regression collapses uncertainty into a point estimate; Monte Carlo preserves the full distribution. The Kelly Criterion requires a probability distribution as input, so a regression model cannot produce mathematically optimal sizing without a separate uncertainty estimate (which most competitors do not publish).
- Kelly Criterion with Bayesian shrinkage, not flat unit sizing. Flat unit sizing throws away the information content of edge magnitude. Two bets with the same direction but a 5% edge versus a 12% edge get the same stake under flat sizing — and that is provably suboptimal for long-run growth.
- Per-league isotonic calibration, not a global recalibrator. NBA spread calibration curves and NHL totals calibration curves are different shapes. A single global calibrator averages them out, which is worse than no calibrator on the leagues at the tails of the average.
- Walk-forward profitability zones, not in-sample tuning. The April 2026 walk-forward audit demoted 28 in-sample GREEN zones because their out-of-sample win rate collapsed below 50%. Without an OOS holdout, all 28 would have continued to receive a rank-score boost. In-sample tuning is the single biggest source of shipped overfit in the sports modeling industry.
- Append-only public ledger, not a marketing track record. The CSV at /track_record.csv contains every projection ever published, including losses. Many competitor track records are computed from a curated subset, and the curation rules are not public.
14. Olympus Oracle — Prediction Market Intelligence
Definition. Olympus Oracle is the prediction-market intelligence layer that ingests whale trades from Polymarket and Kalshi, classifies wallets via Bayesian scoring on resolved-outcome history, and cross-references the signals against Olympus's own Monte Carlo simulations. It is the first publicly available model-vs-market edge detector — no competitor crosses internal Monte Carlo output against external prediction-market positioning at this resolution.
The pipeline has five stages: (1) Trade ingestion — read-only Polymarket and Kalshi clients pull recent trades and active markets every 15 minutes. (2) Wallet profiling — every distinct wallet is profiled by ROI on resolved trades, win rate, sport specialization, and entry timing relative to event start. (3) Insider classification — a Bayesian scorer flags wallets whose historical resolution rate is statistically inconsistent with a random walk; thresholds tighten as evidence accumulates. (4) Signal generation — when a classified insider takes a position in a market that maps to one of Olympus's tracked games, a signal is generated with a compound confidence score (10 components: whale consensus, entry zone, conviction, wallet tier, sport bonus, specialist, sim adjustment, copy-trade, pre-news, EOA-ring). (5) Cross-validation — the signal is compared against the Olympus Monte Carlo projection for the same game; agreement amplifies the score, disagreement triggers an audit flag.
Critical rules: Oracle is read-only. The Kalshi client exposes no order methods; we never place trades against the surface we are reading. Stale signals (event date in the past) are filtered before publication. Wallet scores are derived only from resolved data — never synthetic or projected. Polymarket wallet addresses are stored as proxy addresses, not the underlying EOA, matching Polymarket's published wallet model.
Live Oracle signals (premium) are surfaced via the /oracle preview component on the platform and the /oracle Discord command. The configuration registry lives at prediction_market/config/pm_config.py; thresholds are bootstrap defaults that self-tighten as resolved-outcome volume grows.
15. Athena — AI-Authored Recommendation Writeups
Definition. Athena is the AI authoring system that generates every premium pick's narrative — the executive summary, the factor analysis, the risk enumeration, the "why this beats the market" thesis. Athena does not generate projections or set lines; the upstream Monte Carlo engine produces the numbers and Athena produces the prose that explains them, given the engine's output as input.
Athena is bounded by three guarantees: (1) No invented data. Athena receives the simulation output dict (probabilities, scores, edge, units, key model factors, injury status) and may compose a writeup only from those fields. Writeups never reference statistics not present in the input. (2) Version-tagged. Every Athena writeup carries a writeup_version string written into the same record as the projection, so an outcome that drifts from the prose can be traced to the exact prompt and model version that generated it. (3) Append-only. Writeups are never edited retroactively. If a writeup is wrong, a corrected record is appended; the original remains in the ledger.
Athena outputs are stored alongside their picks in data/best_bets/{date}/premium_ledger.json. Free-tier picks receive a shorter writeup via the same system. The MCP get_todays_projections tool returns the short writeup by default; verbose=true returns the full long-form text.