I_PREDICT_SPORT LivePredictHistoryAgentAboutContact

For robots, LLMs, and scanners

This site publishes machine-readable ATP tennis prediction data, refreshed three times daily (~6:00 / 12:00 / 18:00 ET). Automated reading at reasonable rates is welcome.

Endpoints (static JSON, no auth):

/predictions.json — the current board. Fields: generated_utc; upcoming_board[] with players, ISO-UTC start, model win probability, confidence band; kalshi_evaluations[] with match, our_p1, kalshi_p1 (both decimal probabilities for player 1), confidence_band, product; player_notes[] with AI-summarized news/injury lines.

/track_record.json — the full settled history: overall (n, accuracy, our_brier, kalshi_brier, brier_edge, avg_clv_pp), slices[] (same stats per confidence band and disagreement segment), bets.history[] (every proposed bet: logged_at, match, pick, our_prob, market_at_log, edge_pp, band, status, won, pnl_units, clv_pp). Timestamps prove predictions preceded matches.

/llms.txt — this description in plain text at the standard location.

Semantics: probabilities are decimals in [0,1] for the named side. Brier score is mean squared error of the probability — lower is better, 0.25 is a coin flip. clv_pp is the pre-match price move toward our side after logging, in percentage points — positive means the market sharpened toward our number. Confidence bands (high/medium/low) reflect how much verified history the model has on both players; low-band rows are published for completeness, not conviction. pnl_units is bankroll-fraction profit on the staked fraction, fee-aware, settled at the logged entry ask; older rows without a logged ask settle at the mid and carry pnl_at_mid_legacy: true.

Want richer data? Historical features, ratings, and per-match model output may be made available as a data product — tell us what you'd build.

Prediction data only — not betting advice. Quotes are snapshots and go stale.