Case Study: The $14,000 Season --- How One Bettor's Line Shopping Transformed Their NFL Results


Executive Summary

This case study follows the 2024 NFL season of a semi-professional sports bettor ("Alex") who made a deliberate decision to transform their approach to line shopping. After three consecutive seasons of marginal results --- winning between 51% and 52.5% of bets at standard -110 juice, producing near-zero or slightly negative ROI --- Alex invested in a systematic line shopping infrastructure: opening accounts at eight sportsbooks, building a Python-based odds comparison tool, and committing to a disciplined workflow that ensured every bet was placed at the best available price. Over the course of 682 bets during the 2024 NFL season, Alex's line shopping discipline yielded an average juice improvement of 4.1 cents per bet (from -110 to approximately -105.9), turning a marginal 52.8% win rate into a +3.4% ROI. The total profit attributable specifically to line shopping was approximately $14,107 on a total handle of $136,400. This case study documents Alex's infrastructure, workflow, results, and the quantitative analysis that isolates the line shopping contribution from the model edge contribution.


Background

The Bettor's Profile

Alex is a 34-year-old data analyst who bets NFL games as a serious side pursuit. Their primary approach is a proprietary power-rating model that combines Elo ratings, DVOA-inspired efficiency metrics, and situational adjustments (rest, travel, weather, divisional rivalry). The model generates probability estimates for each NFL game, and Alex bets when the model's probability exceeds the implied probability from the best available odds by at least 2%.

Over the three seasons prior to 2024, Alex's results were:

Season Bets Win Rate Avg Odds ROI Profit
2021 520 51.5% -110 -1.7% -$1,768
2022 588 52.3% -110 +0.3% +$353
2023 614 52.0% -110 -0.5% -$614

Despite three years of effort, Alex's total P&L was -$2,029. The model had genuine predictive value --- a 52% win rate at -110 is above the 52.38% break-even threshold in terms of skill signal, though not statistically significant over this sample. The problem was clear: Alex's edge was real but razor-thin, and the standard -110 vig was consuming virtually all of it.

The Decision to Invest in Line Shopping

In March 2024, Alex read a research paper that quantified the impact of line shopping across regulated US sportsbooks. The paper found that the average difference between the best and worst available odds on NFL spread bets was 6.2 cents (e.g., -107 vs. -113), and that a disciplined shopper could consistently capture 60-70% of this spread. Alex calculated that if they could improve their average odds from -110 to even -107, their marginal 52% win rate would produce a 2.7% ROI instead of approximately zero.

The investment was modest: $500 in initial deposits across five new sportsbook accounts (Alex already had three), approximately 20 hours building a Python odds comparison tool, and 15 minutes per day of additional workflow during the NFL season. The expected return was substantial.

The Infrastructure

Alex built a system with three components:

1. Account Network. Eight sportsbook accounts across a mix of sharp-origin books, market makers, and retail-focused books. The portfolio included:

Book Category Books Typical Vig Line Originality
Market maker 1 -108 to -112 Original lines
Sharp-friendly 2 -107 to -110 Follows market maker
Mainstream retail 3 -110 to -115 Copies consensus + vig
Promotional/reduced juice 2 -105 to -108 Reduced vig on select markets

Alex distributed $20,000 across these eight accounts, weighting more heavily toward the books that historically offered the best lines.

2. Odds Comparison Tool. A Python script that queried The Odds API every 15 minutes during the NFL week, stored historical odds in a SQLite database, and generated a comparison table showing the best and worst available odds for every market Alex was considering. The tool also calculated the implied probability for each book's line and flagged any outlier prices exceeding 1.5% deviation from the median.

3. Decision Workflow. A structured process executed three times during each NFL week:

  • Tuesday (opener scan): When lines opened, Alex ran the model, identified target games, and checked if any opening line offered value above their 2% threshold.
  • Thursday (mid-week review): After injury reports and sharp action had moved lines, Alex re-evaluated all targets, adjusted probability estimates for new information, and identified the current best available odds.
  • Sunday morning (final execution): A final scan 2-3 hours before kickoff captured any last-minute value from injury news, weather updates, or stale lines at slow-moving books.

The Analysis

Season Overview

Over the 18-week 2024 NFL season (plus Wild Card through Super Bowl), Alex placed 682 bets with the following aggregate results:

Metric Value
Total bets 682
Wins 360
Losses 316
Pushes 6
Win rate (excluding pushes) 53.3%
Average odds at placement -105.9
Average best available odds -105.4
Average worst available odds -112.1
Total staked $136,400
Total profit $4,638
ROI +3.40%
Average CLV (implied probability) +1.8%

Decomposing the Edge: Model vs. Shopping

The critical question is: how much of Alex's profit came from their model's ability to pick winners, and how much came from getting better prices through line shopping?

Method: Counterfactual Analysis

We compute what Alex's profit would have been under three scenarios:

  1. Actual results: Bets placed at the odds Alex actually obtained (average -105.9).
  2. No-shopping counterfactual: Same bets, same outcomes, but at the average worst available odds (-112.1).
  3. Perfect-shopping counterfactual: Same bets, same outcomes, but at the average best available odds (-105.4).
Scenario Avg Odds Profit per Win Total Wins Profit Total Losses Net Profit ROI
Actual (-105.9) -105.9 $94.43 | $33,995 -$31,600 | +$4,638 +3.40%
No shopping (-112.1) -112.1 $89.21 | $32,115 -$31,600 | -$1,242 -0.91%
Perfect shopping (-105.4) -105.4 $94.88 | $34,157 -$31,600 | +$4,800 +3.52%

Key Finding: Without line shopping, Alex would have lost $1,242 on the season despite a 53.3% win rate. Line shopping was worth approximately **$5,880** --- the difference between the actual profit ($4,638) and the no-shopping loss (-$1,242). Put differently, Alex's model contributed a win rate above 50% but not enough to overcome -112 vig. Line shopping contributed the vig reduction that turned a losing season into a profitable one.

Alex's shopping efficiency was:

$$ \text{Efficiency} = \frac{\text{Worst implied} - \text{Actual implied}}{\text{Worst implied} - \text{Best implied}} = \frac{52.83\% - 51.47\%}{52.83\% - 51.27\%} = \frac{1.36}{1.56} = 87.2\% $$

This is an excellent shopping efficiency, reflecting the disciplined three-scan workflow and the diversity of sportsbook accounts.

Week-by-Week Performance

The weekly performance reveals interesting patterns:

Week Bets Win Rate Avg Juice Saved Weekly Profit Cum. Profit
1 42 54.8% 3.8 cents +$482 | +$482
2 38 50.0% 4.2 cents -$38 | +$444
3 40 55.0% 3.5 cents +$510 | +$954
4 36 47.2% 4.8 cents -$412 | +$542
5 42 57.1% 4.0 cents +$720 | +$1,262
6 38 52.6% 3.9 cents +$155 | +$1,417
7 36 50.0% 4.5 cents -$12 | +$1,405
8 40 55.0% 4.1 cents +$488 | +$1,893
9 38 52.6% 4.3 cents +$162 | +$2,055
10 36 58.3% 3.7 cents +$680 | +$2,735
11 40 50.0% 4.0 cents -$45 | +$2,690
12 38 55.3% 4.4 cents +$468 | +$3,158
13 36 47.2% 4.6 cents -$395 | +$2,763
14 40 57.5% 3.8 cents +$690 | +$3,453
15 38 52.6% 4.2 cents +$170 | +$3,623
16 36 55.6% 4.0 cents +$420 | +$4,043
17 34 50.0% 4.5 cents -$15 | +$4,028
18 34 55.9% 3.9 cents +$395 | +$4,423
Playoffs 20 55.0% 4.8 cents +$215 | +$4,638

Notable observations:

  • Weeks 4 and 13 were the worst weeks (47.2% win rate both times), yet the losses were contained by favorable juice. At -110, Week 4 would have produced a $580 loss instead of $412.
  • The average juice saved (4.1 cents) was remarkably consistent week to week, ranging from 3.5 to 4.8 cents. This consistency reflects the structural nature of the shopping edge --- it does not depend on picking winners.
  • Cumulative profit was positive from Week 1 and never dropped below zero after Week 3, despite multiple losing weeks. This stability is a hallmark of combined model + shopping edges.

CLV Analysis

Alex tracked closing line value on every bet. The CLV distribution across 682 bets:

CLV Bucket Bets % of Total Avg Profit/Bet
CLV > +3% 98 14.4% +$18.42
CLV +1.5% to +3% 187 27.4% +$12.15
CLV +0.5% to +1.5% 204 29.9% +$5.28
CLV 0% to +0.5% 112 16.4% +$1.05
CLV < 0% 81 11.9% -$8.94

Key findings:

  1. 88.1% of Alex's bets had positive CLV, meaning they beat the closing line. This is a powerful indicator of a sound process.
  2. The average CLV of +1.8% translates to an expected long-term ROI of approximately 3.4%, which matches the observed ROI closely --- a sign that the results are not primarily driven by luck.
  3. Bets with CLV > +3% produced the highest per-bet profit ($18.42), confirming that the most value is captured on bets placed early in the week when lines are still soft.
  4. The 11.9% of bets with negative CLV occurred primarily on Sunday morning bets where Alex's model still showed value but the market had already moved past the fair price. These bets were marginal and dragged down overall results.

Timing Analysis

When did Alex place their bets, and how did timing correlate with CLV?

Timing Bets Avg CLV Win Rate Avg Juice
Tuesday (opener) 124 +2.8% 54.8% -106.2
Thursday 228 +1.9% 53.5% -105.8
Sunday morning 330 +1.2% 52.4% -105.7

Tuesday bets had the highest CLV (+2.8%) and win rate (54.8%), confirming the academic finding that opener bettors capture the most value. However, Alex placed the majority of bets on Sunday morning because more games and more information were available. The Thursday bets represented a middle ground: lower CLV than Tuesday but based on better-informed model estimates that incorporated injury reports.

The Account Limitation Challenge

By Week 10, two of Alex's eight sportsbooks began limiting their bet sizes. Book F reduced Alex's spread bet maximum from $500 to $100. Book G reduced their maximum from $500 to $200. These were two of the retail books that frequently offered the best lines due to slow adjustment.

Impact Quantification:

Before limitations (Weeks 1-9): Average of 6.2 books available per bet, average juice savings of 4.2 cents.

After limitations (Weeks 10-18): Average of 5.4 effective books per bet (2 books still accessible but at reduced limits), average juice savings of 3.8 cents.

The limitation reduced Alex's shopping edge by approximately 0.4 cents per bet, worth roughly $0.76 per bet or $255 over the remaining 336 bets. Alex's response was to open two new accounts at regional sportsbooks in Week 12, partially restoring the shopping network. By Week 14, the effective number of competitive books was back to 5.8 and the juice savings recovered to 4.0 cents.


The Python Analysis

The accompanying code (case-study-code.py) implements the full analysis pipeline for this case study, including:

  1. Counterfactual profit calculator that computes profit under actual, no-shopping, and perfect-shopping scenarios.
  2. Shopping efficiency tracker that measures the percentage of available odds improvement captured on each bet.
  3. CLV distribution analyzer that bins bets by CLV and correlates CLV with profitability.
  4. Weekly rolling analysis that tracks cumulative profit, rolling win rate, and rolling juice savings over the season.
  5. Account limitation impact simulator that models the effect of losing access to specific books on overall shopping value.

The code processes a synthetic dataset that mirrors Alex's actual results and produces the tables and metrics presented in this case study.


Key Findings

  1. Line shopping was the dominant source of profit. Alex's model contributed a win rate approximately 0.9 percentage points above the break-even rate at their average obtained odds, while line shopping contributed 4.1 cents of vig reduction per bet. Without shopping, the model edge alone would have produced a loss.

  2. Shopping efficiency of 87.2% is achievable with discipline. The three-scan weekly workflow (Tuesday, Thursday, Sunday) combined with eight sportsbook accounts allowed Alex to consistently find prices within 13% of the theoretical best available.

  3. CLV validated the process. An 88.1% positive-CLV rate and +1.8% average CLV provide strong statistical evidence that the combined approach has genuine edge, independent of win/loss variance.

  4. Account limitations are a real threat but manageable. Losing full access to two books cost approximately $255 over the affected period, but opening replacement accounts partially mitigated the damage.

  5. The investment case is overwhelming. Alex invested approximately $500 in new deposits, 20 hours in tool development, and 15 minutes per day in additional workflow. The return was $4,638 in profit that would not have existed without shopping. Even attributing the full $5,880 shopping value, the effective hourly rate for the additional time invested (approximately 50 hours total including tool development and daily workflow) was $117.60 per hour.


Discussion Questions

  1. Alex's model had a genuine but small edge (approximately 0.9% above break-even at obtained odds). If the model had zero edge (exactly 52.38% win rate at -110), would line shopping alone make them profitable? Calculate the required average juice improvement.

  2. Alex's shopping efficiency was 87.2%. What specific factors might prevent a bettor from achieving 100% efficiency? Design a system that could theoretically reach 95%+ efficiency.

  3. The account limitations Alex experienced are a common challenge for winning bettors. Is there an optimal strategy for delaying or preventing limitations? Discuss the trade-offs between maximizing short-term profit and preserving long-term account access.

  4. Alex's Tuesday bets had the highest CLV (+2.8%) but represented only 18% of total bets. Should Alex shift more of their betting volume to Tuesdays? What factors argue for and against this change?

  5. If Alex scaled up to $500 average bet size (from $200), how would this affect their line shopping strategy, account management, and expected profit? At what point does bet size create diminishing returns from line shopping?