Version: 3.0 | Date: 2026-04-03 | Database: research-pipeline.db
| Table | Rows | Source | Schedule | Key |
|---|---|---|---|---|
| sports_edges (tennis_atp, ml) | 52 | Pinnacle de-vig vs Kalshi | 8AM/10AM/2PM/6PM | tennis-edge-match |
| sports_edges (tennis_atp, total) | 6 | Markov chain vs Kalshi alt-lines | 8AM/10AM/2PM/6PM | tennis-edge-total |
| sports_edges (tennis_atp, setwinner) | 14 | Markov chain vs Kalshi | 8AM/10AM/2PM/6PM | tennis-edge-setwinner |
| sports_edges (tennis_atp, setscore) | — | Markov chain vs Kalshi exact scores | 8AM/10AM/2PM/6PM | tennis-edge-setscore |
| sports_edges (tennis_atp, spread) | — | Markov chain vs Kalshi game spreads | 8AM/10AM/2PM/6PM | tennis-edge-spread |
| sports_edges (tennis_atp, outright) | 582 | Monte Carlo 100K bracket sims | 8AM/10AM/2PM/6PM | tennis-edge-outright |
| market_implied_curves (tennis) | — | Kalshi alt-line ladders | Every 30min | implied-curves-tennis |
| tennis_integrity_config | 6 | Static config | On change | tennis-integrity |
| Table | Rows | Source | Schedule | Key |
|---|---|---|---|---|
| sports_odds_snapshots (Kalshi tennis) | 497,964 | Kalshi API | Every 30min | kalshi-tennis |
| sports_odds_snapshots (Pinnacle tennis) | 34 | Odds API (dynamic discovery) | Adaptive | pinnacle-tennis |
| Table | Rows | Source | Schedule | Key |
|---|---|---|---|---|
| tennis_matches | 15,611 | Sackmann GitHub CSV | Weekly | tennis-sackmann |
| tennis_serve_stats | 32,518 | Sackmann GitHub CSV | Weekly | tennis-sackmann |
| tennis_players | 1,231 | Sackmann CSV | Weekly | tennis-sackmann |
| tennis_rankings | 3,613 | Sackmann CSV | Weekly | tennis-rankings |
| tennis_tournaments | 811 | Built from match history | Weekly | tennis-tournaments |
| tennis_draws | 31,222 | Built from match results | Weekly | tennis-draws |
| tennis_h2h | 354 | Computed from matches | Weekly | tennis-h2h |
| tennis_weather | 312 | Open-Meteo API (24 venues) | Hourly | tennis-weather |
| tennis_abstract_stats | 50 | TennisAbstract scrape | Weekly | tennis-abstract |
| Table | Rows | Source | Schedule | Key |
|---|---|---|---|---|
| tennis_surface_baselines | 1,099 | Computed from serve stats | Weekly | tennis-baselines |
| tennis_custom_metrics | 1,099 | SA-Elo + Log5 + clutch | Weekly | tennis-elo / tennis-metrics |
| tennis_fatigue | 8 | Computed from match history | Daily | tennis-fatigue |
| tennis_wta_calibration | 7 | ATP vs WTA parameter comparison | Weekly | tennis-wta-calibration |
| Parameter | Value |
|---|---|
| SA-Elo blend | 0.5 overall + 0.3 surface + 0.2 recent |
| Min edge | 4 cents |
| Kalshi fee | 7% on profit |
| Kelly fraction (match) | 1/8 |
| H2H min meetings | 3 |
| Elo stabilization | ATP 30/50, WTA ~40 |
| Integrity kill-switch | 40c move on Challenger/ITF |
| Type | Freq (min) | Threshold (min) |
|---|---|---|
| Weekly scrapers | 10080 | 10095 |
| Daily (fatigue) | 1440 | 1455 |
| Hourly (weather) | 60 | 75 |
| Edge scanner (4x daily) | 360 | 375 |
| Kalshi (30min) | 30 | 45 |
| Pinnacle (adaptive) | 120 | 135 |
| Implied curves (30min) | 30 | 45 |
| Item | Status |
|---|---|
| WTA edge scanner | Needs Pinnacle WTA data; dynamic resolver deployed |