Documentation Index
Fetch the complete documentation index at: https://docs.delphina.ai/llms.txt
Use this file to discover all available pages before exploring further.
11 seasons of Division I men’s basketball (2015-16 through 2025-26) — 368 D1 programs, 22,000+ players, 64,000+ games, and 20 million play-by-play events. The current season is live and refreshed daily.
Also includes Polymarket prediction market data — real-money betting odds for tournament winner, conference champions, #1 seeds, player awards, and more, with hourly price history. Refreshed daily.
At a glance
| |
|---|
| Schema | SPORTS.NCAA |
| Seasons | 2015-16 through 2025-26 (season ID = ending year, so SEASON = 2026 is 2025-26) |
| Current season | 2025-26 (live, refreshed daily) |
| Sources | Barttorvik / T-Rank (advanced stats, efficiency ratings, predictions), ESPN (play-by-play), and Polymarket (prediction market odds) |
Tables
| Table | Description | Rows |
|---|
DIM_SEASON | Season lookup (ID to label mapping) | 11 |
DIM_TEAM | D1 teams with conference and ESPN ID | 368 |
FACT_TEAM_SEASON_RATINGS | Adjusted efficiency, four factors, WAB per team per season | 3,918 |
FACT_SCHEDULE | Every game: scores, pace, predictions, site info | 64,249 |
FACT_TEAM_GAME_STATS | Team box scores + point-in-time ratings per game | 128,024 |
FACT_PLAYER_GAME_LOG | Player box scores + advanced stats per game | 1,178,855 |
FACT_PLAYER_SEASON_STATS | Player season aggregates + advanced metrics | 53,670 |
FACT_GAME_PREDICTIONS | T-Rank predicted vs actual scores | 64,009 |
FACT_TOURNAMENT_SEEDS | NCAA Tournament seeds, regions, play-in flags | 612 |
FACT_PBP | Play-by-play events with shot coordinates | 20,926,885 |
POLYMARKET_EVENTS | Polymarket betting events (tournament winner, conference champs, awards) | 32 |
POLYMARKET_MARKETS | Individual outcomes within events (one per team/player) | 385 |
POLYMARKET_PRICE_HISTORY | Hourly price (implied probability) history per market | 129,001 |
Table details
Dimensions
DIM_SEASON — Maps season IDs to labels (e.g. 2026 is “2025-26”).
DIM_TEAM — 368 D1 teams with canonical names, conference, and ESPN ID. About 15-20% of games are against non-D1 opponents who don’t appear here.
Games and team stats
FACT_SCHEDULE — One row per game with scores, winner, date, pace, T-Rank predicted scores, point-in-time rankings, and neutral-site flag.
FACT_TEAM_GAME_STATS — Two rows per game (one per team). Full box score plus Barttorvik ratings at game time — useful for tracking how a team was rated at any point in the season.
FACT_GAME_PREDICTIONS — T-Rank pre-game predicted scores alongside actuals. These are statistical model outputs, not betting lines.
Team season analytics
FACT_TEAM_SEASON_RATINGS — The richest team table. One row per team per season with adjusted efficiency, power rating (Barthag), all four factors (offense + defense with ranks), shooting splits, strength of schedule, and Wins Above Bubble.
Player stats
FACT_PLAYER_GAME_LOG — One row per player per game (22,000+ players, 57,000+ games). Traditional box score plus advanced metrics like offensive rating, usage rate, and game-level BPM.
FACT_PLAYER_SEASON_STATS — Season-level aggregates with BPM, PORPAG, true shooting percentage, shot-zone breakdowns, and player bio (height, hometown, recruit rating).
Tournament and play-by-play
FACT_TOURNAMENT_SEEDS — 68 teams per year: seed (1-16), region, and play-in flag. Covers 2016-2019 and 2021-2025 (2020 cancelled; 2026 not yet available).
FACT_PBP — 20M+ play-by-play events from ESPN. Every shot, foul, turnover, sub, and timeout with scoring flags, running score, game clock, and shot coordinates.
Polymarket prediction markets
POLYMARKET_EVENTS — One row per betting event (e.g. “2026 NCAA Tournament Winner”, “NCAAB Conference Winner: ACC”). Includes total trading volume and liquidity.
POLYMARKET_MARKETS — One row per outcome within an event. For team-based events, each row is one team; for player awards, each row is one player. The current price represents the implied probability (0-1) — a price of 0.16 means the market implies a 16% chance.
POLYMARKET_PRICE_HISTORY — Hourly price observations per market. Useful for tracking how odds shift over time. History goes back to when each market was created (typically early February 2026).
262 of 368 teams have a Polymarket name mapping, so you can ask about how betting odds compare to statistical ratings.
Key metrics
Box scores tell you what happened. Advanced analytics tell you how good a team or player actually is — adjusting for pace and opponent quality. Scoring 80 against a weak team at a fast pace is very different from 80 against an elite defense in a slow game.
Team metrics (in FACT_TEAM_SEASON_RATINGS)
| Metric | Column | What it tells you |
|---|
| Adjusted Offensive Efficiency | ADJ_O | Points per 100 possessions, adjusted for opponent defense. D1 average ~100; elite: 120+. |
| Adjusted Defensive Efficiency | ADJ_D | Points allowed per 100 possessions. Lower is better. D1 average ~100; elite: below 90. |
| Barthag | BARTHAG | Probability of beating an average D1 team on a neutral court (0-1). Top-10 teams: 0.95+. The single best “how good is this team?” number. |
| Adjusted Tempo | ADJ_T | Possessions per 40 minutes. D1 average ~68. Only available from 2023 onward. |
| Wins Above Bubble | WAB | Wins above what a bubble team would get with the same schedule. The go-to metric for tournament selection debates. |
| Strength of Schedule | SOS | Opponent difficulty (0-1). Also split into conference (CON_SOS) and non-conference (NC_SOS). |
The Four Factors
Dean Oliver’s framework for why teams win. All tracked on offense and defense, each with a national rank.
| Factor | Offense / Defense | What it measures |
|---|
| Effective FG% | OFF_EFG / DEF_EFG | Shooting efficiency weighted for threes. Most important factor (~40% of winning). |
| Turnover Rate | OFF_TO / DEF_TO | Turnovers per possession. Lower is better on offense; higher on defense. |
| Offensive Rebound Rate | OFF_OR / DEF_OR | Second-chance opportunities. |
| Free Throw Rate | OFF_FTR / DEF_FTR | FTA relative to FGA. Least impactful overall, but matters in close games. |
Player metrics (in FACT_PLAYER_SEASON_STATS)
| Metric | Column | What it tells you |
|---|
| Offensive Rating | ORTG | Points per 100 possessions used. D1 average ~107; elite: 120+. |
| Usage Rate | USAGE_RATE | Share of team possessions used while on floor. Stars: 25-35%. |
| Box Plus/Minus | BPM / OBPM / DBPM | Points per 100 possessions above average. 0 = average, +5 = very good, +10 = generational. |
| PORPAG | PORPAG | Points Over Replacement Per Adjusted Game. Top players: 6-8+. |
| True Shooting % | TS_PCT | Overall shooting efficiency (2P + 3P + FT combined). |
Shot-zone breakdowns (rim, mid-range, three, dunk, layup) are also available for profiling a player’s shot selection.
Try asking
Team strength
- “Who are the top 10 teams by Barthag this season?”
- “How does Duke’s offensive efficiency compare to North Carolina’s over the last 5 years?”
- “Which conferences are strongest by AdjO and AdjD?”
Predictions and upsets
- “How accurate are T-Rank predictions this season?”
- “What were the biggest upsets by rank difference?”
- “Which team has outperformed predictions the most?”
- “Who leads the nation in scoring (min 10 games)?”
- “Show Cooper Flagg’s game-by-game stats.”
- “Top 5 players by BPM in the ACC?”
Play-by-play
- “Three-point shooting in clutch situations (last 2 min, margin within 5)?”
- “Shot distribution: top-10 vs bottom-10 offenses?”
- “Which teams score the most in overtime?”
March Madness
- “Which teams have been #1 seeds the most since 2016?”
- “What seed produces the most upsets historically?”
- “Show me bubble teams by WAB.”
Prediction markets (Polymarket)
- “Who does Polymarket favor to win the tournament?”
- “How have Duke’s tournament odds changed over the last month?”
- “Compare Polymarket odds to Barthag rankings — where does the market disagree with the stats?”
- “Which conference champion markets have the most liquidity?”
Good to know
| Note | Detail |
|---|
| Polymarket odds ≠ sportsbook lines | Polymarket prices are prediction market probabilities, not traditional sportsbook spreads or moneylines. T-Rank predictions are separate statistical model outputs. |
| Polymarket refresh | Polymarket data is refreshed daily. Price history is at hourly granularity and grows as new observations are added each day. |
| Polymarket team matching | Most teams have a Polymarket name mapping. Some markets are player-based (awards) and aren’t linked to teams. |
| Non-D1 opponents | ~15-20% of games are against non-D1 teams. They appear in game tables but not DIM_TEAM. |
| Adjusted tempo | ADJ_T is only available from the 2023 season onward. |
| 2020 tournament | Cancelled (COVID-19). No seed data for that season. |
| 2021 season | Shortened to ~4,300 games (normally ~6,000). Not directly comparable without normalization. |