Skip to main content

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

SchemaSPORTS.NCAA
Seasons2015-16 through 2025-26 (season ID = ending year, so SEASON = 2026 is 2025-26)
Current season2025-26 (live, refreshed daily)
SourcesBarttorvik / T-Rank (advanced stats, efficiency ratings, predictions), ESPN (play-by-play), and Polymarket (prediction market odds)

Tables

TableDescriptionRows
DIM_SEASONSeason lookup (ID to label mapping)11
DIM_TEAMD1 teams with conference and ESPN ID368
FACT_TEAM_SEASON_RATINGSAdjusted efficiency, four factors, WAB per team per season3,918
FACT_SCHEDULEEvery game: scores, pace, predictions, site info64,249
FACT_TEAM_GAME_STATSTeam box scores + point-in-time ratings per game128,024
FACT_PLAYER_GAME_LOGPlayer box scores + advanced stats per game1,178,855
FACT_PLAYER_SEASON_STATSPlayer season aggregates + advanced metrics53,670
FACT_GAME_PREDICTIONST-Rank predicted vs actual scores64,009
FACT_TOURNAMENT_SEEDSNCAA Tournament seeds, regions, play-in flags612
FACT_PBPPlay-by-play events with shot coordinates20,926,885
POLYMARKET_EVENTSPolymarket betting events (tournament winner, conference champs, awards)32
POLYMARKET_MARKETSIndividual outcomes within events (one per team/player)385
POLYMARKET_PRICE_HISTORYHourly price (implied probability) history per market129,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)

MetricColumnWhat it tells you
Adjusted Offensive EfficiencyADJ_OPoints per 100 possessions, adjusted for opponent defense. D1 average ~100; elite: 120+.
Adjusted Defensive EfficiencyADJ_DPoints allowed per 100 possessions. Lower is better. D1 average ~100; elite: below 90.
BarthagBARTHAGProbability 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 TempoADJ_TPossessions per 40 minutes. D1 average ~68. Only available from 2023 onward.
Wins Above BubbleWABWins above what a bubble team would get with the same schedule. The go-to metric for tournament selection debates.
Strength of ScheduleSOSOpponent 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.
FactorOffense / DefenseWhat it measures
Effective FG%OFF_EFG / DEF_EFGShooting efficiency weighted for threes. Most important factor (~40% of winning).
Turnover RateOFF_TO / DEF_TOTurnovers per possession. Lower is better on offense; higher on defense.
Offensive Rebound RateOFF_OR / DEF_ORSecond-chance opportunities.
Free Throw RateOFF_FTR / DEF_FTRFTA relative to FGA. Least impactful overall, but matters in close games.

Player metrics (in FACT_PLAYER_SEASON_STATS)

MetricColumnWhat it tells you
Offensive RatingORTGPoints per 100 possessions used. D1 average ~107; elite: 120+.
Usage RateUSAGE_RATEShare of team possessions used while on floor. Stars: 25-35%.
Box Plus/MinusBPM / OBPM / DBPMPoints per 100 possessions above average. 0 = average, +5 = very good, +10 = generational.
PORPAGPORPAGPoints Over Replacement Per Adjusted Game. Top players: 6-8+.
True Shooting %TS_PCTOverall 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?”

Player performance

  • “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

NoteDetail
Polymarket odds ≠ sportsbook linesPolymarket prices are prediction market probabilities, not traditional sportsbook spreads or moneylines. T-Rank predictions are separate statistical model outputs.
Polymarket refreshPolymarket data is refreshed daily. Price history is at hourly granularity and grows as new observations are added each day.
Polymarket team matchingMost 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 tempoADJ_T is only available from the 2023 season onward.
2020 tournamentCancelled (COVID-19). No seed data for that season.
2021 seasonShortened to ~4,300 games (normally ~6,000). Not directly comparable without normalization.