Methodology

Overview

Gridiron Edge provides transparent, data-driven college football analytics. Our system processes real-time market data, historical performance, and environmental factors to generate power ratings and identify potential betting edges.

Important: This platform provides analytical insights, not betting recommendations. Users should expect transparent assessment tools, not picks or guarantees.

Inputs & Sources

Team Performance Metrics

Core statistical features derived from game-by-game team performance:

  • YPP (Yards Per Play): Total yards divided by total plays (offense/defense)
  • Success Rate: Percentage of successful plays (when available from CFBD)
  • EPA (Expected Points Added): Advanced efficiency metric (when available)
  • Pace: Plays per game proxy for tempo analysis
  • Pass/Rush Efficiency: Yards per attempt/carry for offensive and defensive units

Team Talent Composite

Talent assessment based on recruiting data and team composition:

  • Team Talent Index: CFBD composite score (0-100 scale)
  • Recruiting Class Rankings: National and conference rankings
  • Star Ratings: Counts of 5-star, 4-star, and 3-star recruits
  • Commit Points: Recruiting class point totals

Data Sources

College Football Data (CFBD)

  • Game schedules, venues, and final scores
  • Team classifications (FBS filtering applied)
  • Conference and division information
  • Historical game data and statistics
  • Team game-by-game performance statistics
  • Team talent composite and recruiting data

The Odds API

  • Live and historical spreads, totals, and moneylines
  • Multiple sportsbooks (DraftKings, FanDuel, Caesars, etc.)
  • Opening and closing line tracking
  • Real-time odds updates

Visual Crossing Weather

  • Game-time weather conditions
  • Temperature, wind, and precipitation data
  • Historical weather patterns

Data Constraints

  • Coverage varies by book and game importance
  • Historical data access limited by API tiers
  • Real-time updates depend on source availability
  • Weather data subject to forecast accuracy

Data Flow (ETL)

Automated Workflows

  • Nightly Ingest: Full data refresh with ratings recalculation
  • 3x Daily Poll: Live odds updates during active weeks
  • One-Week Test: Manual testing and validation workflows

Processing Pipeline

  1. CFBD schedules and team data ingestion
  2. Odds API market line collection (spreads, totals, moneylines)
  3. Weather data integration for game conditions
  4. Chunked database upserts with deduplication
  5. Power rating calculations and implied line generation

Performance Optimizations

  • Single-week polling to prevent timeouts
  • Chunked upserts (500 records per batch)
  • In-memory deduplication before database writes
  • FBS-only filtering to reduce data volume

Market Lines & Selection

Data Storage

We store individual rows per game/book/line type combination. This allows us to track line movement, compare book offerings, and identify consensus vs. outlier positions.

Selection Logic

  • Source Priority: SGO → Odds API → Other sources
  • Timestamp Preference: Latest available data
  • Value Selection: closing_line preferred, fallback to line_value
  • Deduplication: Remove duplicate entries by game/book/type/timestamp

Moneyline Handling

Moneylines are stored as American odds (e.g., -175, +150). We calculate implied probabilities using standard formulas:

Implied Probability Formulas:

  • Negative odds: |odds| / (|odds| + 100)
  • Positive odds: 100 / (odds + 100)

Example: -175 → 175/(175+100) = 63.6% implied probability

Production Models

Hybrid Spread Model (Production ATS Engine)

Our production ATS (Against The Spread) model is a Hybrid that blends V1 power ratings with V2 unit matchup analysis. All spread edges, confidence tiers, and official ATS picks on "Current Slate", "My Picks", and "Matchup" pages come from this Hybrid model.

Hybrid Formula

Hybrid Spread = (V1 Spread × 70%) + (V2 Spread × 30%)

This blend leverages the stability of V1 (results-aware) with the matchup specificity of V2 (stats-only). The weights were optimized through backtesting against 2025 season results, achieving superior performance compared to pure V1 or V2 alone.

V1 Component: Power Ratings (70% weight)

V1 generates team power ratings using a balanced four-pillar approach. Each component is normalized to Z-scores and weighted equally (25% each) to create a composite rating that captures multiple dimensions of team strength:

The Four Pillars

  • 25% Talent: 247Sports Composite talent rating. Measures roster potential and recruiting quality. Provides a stable baseline that reflects program strength independent of current season performance.
  • 25% Efficiency: EPA (Expected Points Added) per play and Success Rate. Captures down-to-down dominance and play-level effectiveness. EPA measures the value created on each play, while Success Rate tracks consistency.
  • 25% Scoring: Net Points per Game (Points For minus Points Against). Reflects margin of victory and overall team strength. Teams that consistently outscore opponents demonstrate superior ability to finish drives and prevent scores.
  • 25% Results: Win Percentage. The ultimate measure of team success. Accounts for game management, clutch performance, and the ability to win close games.

Normalization: Each metric is converted to Z-scores (standard deviations from the mean) across all FBS teams, ensuring equal weight regardless of scale. The composite is then scaled by a factor of 14.0 to convert to "points above average" (where +14 represents approximately one standard deviation above average).

Calibration & Backtesting

The 25/25/25/25 weight distribution is not arbitrary—it was determined through rigorous backtesting against historical game results. Our calibration engine simulates thousands of past games using different weight combinations to identify the configuration that minimizes prediction error.

Optimization Process

We test various weight combinations (e.g., 50% Efficiency/50% Talent, 40% Scoring/30% Efficiency/30% Results, etc.) against actual game outcomes from the 2025 season. For each configuration, we calculate the Mean Absolute Error (MAE) between predicted spreads and actual score margins.

Result: The balanced 25/25/25/25 approach achieved the lowest MAE (approximately 10.8 points) for the 2025 season, outperforming alternative strategies such as "Efficiency-Only" (higher error) and "Talent-Only" (higher error) models.

Continuous Improvement: We re-calibrate these weights periodically (typically at the start of each season or after significant rule changes) to ensure the model adapts to the current season's meta. This ensures our predictions remain accurate as the game evolves.

V2 Component: Unit Matchup Analysis (30% weight)

V2 analyzes specific unit matchups to identify tactical advantages. It breaks down team performance into granular unit grades (Run Offense, Pass Defense, Explosiveness) and compares them head-to-head to find hidden edges.

Unit grades are calculated by aggregating game-level stats to season averages, normalizing to Z-scores, and blending related metrics (40% Run, 40% Pass, 20% Explosiveness).

Spread Calculation

The Hybrid spread is calculated as:

V1 Spread = (Home Rating - Away Rating) + HFA

V2 Spread = Unit Matchup Analysis (scaled by 9.0)

Hybrid Spread = (V1 × 0.7) + (V2 × 0.3)

Where HFA (Home Field Advantage) = 2.0 points for home games, 0.0 for neutral sites.

V3 Drive-Based Totals Model (Production Totals Engine)

Our production totals model uses drive-level data to predict game totals. The core insight: drives that gain 40+ yards ("Quality Drives") typically yield ~5 points. By projecting the number of quality drives each team will have, we can estimate total scoring.

V3 Totals Formula

  1. Quality Drive Rate: (Drives ≥ 40 yards) / (Total Drives) per team
  2. Tempo: Average drives per game for each team
  3. Expected Drives: Average of home and away team tempo
  4. Projected Points: (Expected Drives × Quality Drive Rate) × 5.0
  5. Model Total: Home Projected Points + Away Projected Points

Data Source: Drive-level data from CFBD API, stored as drive_statson TeamSeasonStats. The model is wired into Game API (Matchup page), Week Slate API (Current Slate), and My Picks via official Bet records.

Bet Record as Source of Truth: When a V3 totals bet exists for a game, the Bet record stores the line taken, model price, closing price, edge magnitude, and Tier (A/B/C). This ensures consistency across all UI elements—the same edge and grade are displayed everywhere, derived from the stored bet rather than re-computed from current market lines.

Fallback: If V3 drive data is unavailable, the system falls back to Core V1 totals, which use spread-driven overlays based on market totals.

Confidence Tiers (A/B/C)

All bets (spreads and totals) are assigned confidence tiers based on the magnitude of the edge. This logic is centralized in shared helpers and used consistently across Week Review, Season Review, and My Picks:

  • Tier A: |edge| ≥ 4.0 points — High confidence, primary "Best Bets"
  • Tier B: 3.0 ≤ |edge| < 4.0 points — Medium confidence
  • Tier C: |edge| < 3.0 points — Lower confidence, experimental

Operational Rules:

  • Spreads (ATS): Hybrid model, primarily Tier A, optionally Tier B
  • Totals: V3 Totals, Tier A only is the main "serious" system
  • Tier B/C Totals: Experimental/action, visually de-emphasized with "High Risk" warnings

User Interface & Features

My Picks Page

The My Picks page is organized into two main sections that prioritize Tier A picks:

🔥 Best Bets (Tier A)

  • Located at the top of the page with green styling and Tier A badges
  • Shows games that have at least one Tier A pick (spread or total)
  • Includes Hybrid Tier A spreads and V3 Totals Tier A picks
  • These are the primary recommendations based on our strongest edges

👀 Leans / Action (Tier B & C)

  • Located below Best Bets with muted styling
  • Shows games that only have Tier B/C picks or where users want more action
  • V3 Totals Tier B/C picks are shown with an explicit "Experimental / High Risk" warning
  • These are for users seeking additional betting opportunities beyond Tier A

Sorting: Games with any Tier A pick appear first (in Best Bets). Within each section, games are sorted by earliest kickoff or highest absolute edge.

Current Slate Table

The Current Slate table displays key information for each game:

  • Best Spread / Best Total: Line and book pulled from market data (best available number at that moment, usually from DraftKings/others)
  • Model Spread: From Hybrid model (70% V1 + 30% V2)
  • Model Total: From V3 Drive-Based Totals model (or Core V1 fallback)
  • Pick (ATS / Total): Derived from model vs best line; tied back to official Bet when one exists
  • Max Edge: Largest edge among all bet types for that game
  • Confidence: Highest tier (A/B/C) among all picks for that game

Week Review & Season Review

Both Week Review and Season Review support filtering by Confidence Tier:

  • Confidence Filter: Users can filter by Tier (All / A / B / C)
  • Summary Metrics: All metrics (PnL, ROI, record, cumulative PnL, per-week breakdowns) respect the selected Tier
  • Performance Insights:
    • Hybrid Tier A spreads: Extremely strong performance (~66% win rate, 25%+ ROI over large sample)
    • V3 Totals Tier A: Profitable (~57% win rate, +9% ROI)
    • V3 Totals Tier B/C: Negative ROI (-14% to -20%) — hence operational rule to focus on Tier A only

Unit Matchup Analysis (V2 Component)

Overview

The V2 component of the Hybrid model analyzes specific unit matchups to identify tactical advantages. It breaks down team performance into granular unit grades (Run Offense, Pass Defense, Explosiveness) and compares them head-to-head to find hidden edges.

These unit grades are displayed on the Game Detail page in the "Unit Matchup" card, showing how each team's offensive and defensive units stack up against their opponent.

Unit Grade Calculation

Each unit grade is calculated by:

  1. Aggregating game-level stats to season averages (PPA, Line Yards, Success Rate, IsoPPP)
  2. Normalizing to Z-scores across all FBS teams (standard deviations from mean)
  3. Blending related metrics with equal weights (e.g., Run Grade = 50% Line Yards + 50% Rush PPA)
  4. Inverting defensive metrics where lower values are better (e.g., PPA Allowed becomes negative Z-score)

Example: Run Offense Grade

A team's Run Offense Grade combines:

  • Line Yards Z-score: How many standard deviations above/below average the offensive line performs
  • Rush PPA Z-score: How many standard deviations above/below average the rushing attack is in terms of predicted points added
  • Final Grade: (Line Yards Z × 0.5) + (Rush PPA Z × 0.5)

Grading Scale

Unit grades are displayed on the Game Detail page using a letter grade system (A+ to F) converted from Z-scores:

  • A+ (2.0+ Z): Elite unit, top 2.5% of FBS
  • A (1.5-1.99 Z): Excellent unit, top 7%
  • B+ (1.0-1.49 Z): Very good unit, top 16%
  • B (0.5-0.99 Z): Above average unit
  • C+ (0.0-0.49 Z): Average unit
  • C (-0.49-0.0 Z): Below average unit
  • D+ (-0.99 to -0.5 Z): Poor unit
  • D (-1.49 to -1.0 Z): Very poor unit
  • F (< -1.5 Z): Bottom tier unit

Matchup Analysis

The V2 system calculates net advantages for each matchup:

  • Run Matchup: (Home Run Offense - Away Run Defense) vs (Away Run Offense - Home Run Defense)
  • Pass Matchup: (Home Pass Offense - Away Pass Defense) vs (Away Pass Offense - Home Pass Defense)
  • Explosiveness Matchup: (Home Offensive Explosiveness - Away Defensive Explosiveness) vs (Away Offensive Explosiveness - Home Defensive Explosiveness)

These net advantages are then weighted (40% Run, 40% Pass, 20% Explosiveness) and converted to a spread prediction using an optimized scale factor.

Integration with Hybrid Model

The V2 unit matchup analysis is combined with the V1 Power Rating in the production Hybrid model. The Hybrid model (70% V1 + 30% V2) is the source of all ATS edges, confidence tiers, and official spread picks across the application.

For comparison and analysis, the "Labs (V2)" dashboard allows users to view pure V1, pure V2, and Hybrid predictions side-by-side.

Situational Adjustments

Weather Adjustments (V2)

The V2 model applies situational penalties to unit grades based on weather conditions. These adjustments are visible on the Game Detail page when the "Weather Adjustment" toggle is enabled.

Wind Penalty

Threshold: Wind speed > 15 mph

Effect: Passing offense grades are penalized by 0.05 Z-score per mph above 15 mph

Example: 20 mph wind = (20 - 15) × 0.05 = 0.25 Z-score penalty to Pass Offense Grade

High wind conditions make passing more difficult, reducing the effectiveness of teams that rely heavily on the aerial attack. The penalty is capped at -3.0 Z-score to prevent extreme adjustments.

Precipitation Penalty

Threshold: Precipitation probability > 50%

Effect: Offensive explosiveness grades are penalized by 0.2 Z-score

Heavy rain or snow conditions make ball handling more difficult and reduce the likelihood of explosive plays. This penalty affects both teams equally and is applied to the Explosiveness component of the V2 matchup calculation.

Note: Weather adjustments only affect the V2 component of the Hybrid model. The V1 Power Rating remains unchanged, as it reflects season-long performance that already accounts for typical weather conditions.

Risk Notes / Limitations

Data Variability

  • Odds change frequently and may not reflect current market conditions
  • Weather forecasts update and may differ from game-time conditions
  • Data latency varies by source and can impact real-time accuracy
  • Coverage gaps may exist for smaller games or less popular books

Model Limitations

  • Power ratings are based on historical data and may not capture recent changes
  • Implied lines assume our model is more accurate than market consensus
  • Confidence tiers are estimates and not guarantees of success
  • Past performance does not guarantee future results

Reproducibility

Post-Run Verification

We provide SQL queries and data export tools to verify our calculations and ensure transparency. See our runbook documentation for detailed post-run expectations and verification steps.

Data Exports

  • CSV Export: /api/weeks/csv for spreadsheet analysis
  • API Endpoints: JSON data access for custom analysis
  • Database Queries: Direct SQL access for advanced users

Change Log

2025-01-08

Switched to single-week polling to prevent workflow timeouts

Implemented chunked upserts and deduplication for better performance

2025-01-08

Added moneyline support across API and UI

Integrated Odds API as primary source with SGO fallback

2025-01-08

Implemented FBS-only filtering to reduce data volume

Added CI safety guards and performance optimizations