0/70 completed
Behavioral Model Interactive

Recency Bias

Users overweight recent performance when predicting future outcomes. Exploit this by identifying regression to the mean opportunities.

๐Ÿง  The Cognitive Bias

What People Do

Overweight the most recent data points. A player's last game feels more predictive than it actually is.

  • โ€ข "He just dropped 40, he's on fire!"
  • โ€ข "He's cold, only 12 pts last game"
  • โ€ข "This team can't lose, 5 game win streak"

What Actually Happens

Performance regresses to the mean. Hot and cold streaks are mostly random variation.

  • โ€ข Variance in small samples is high
  • โ€ข True ability changes slowly
  • โ€ข Outliers are... outliers

Player Stats

Season Average 22
10 35
Last 5 Games Avg 30
10 45
Last Game 42
5 60

๐Ÿ“Š Projection Comparison

Public Projection
33.2
Heavy recency weighting
Optimal Projection
26.4
Regression-adjusted
Mispricing
+6.8 pts
Fade OVER

Weighting Schemes

Public (Recency Biased)

Season Avg 20%
Last 5 Games 40%
Last Game 40%

Optimal (Regression-Adjusted)

Season Avg 60%
Last 5 Games 30%
Last Game 10%

Simulated Regression to Mean

Hot streaks regress toward season average, not stay at elevated levels.

๐Ÿ“‹ Common Scenarios

Hot Streak

Recent: +35% vs avg
Public thinks: Will keep it up!
Reality: Likely regression
Edge: Fade the over

Cold Streak

Recent: -25% vs avg
Public thinks: Lost it, done
Reality: Likely bounce back
Edge: Take the over

Blowup Game

Recent: 50 pts (2x avg)
Public thinks: New level!
Reality: Outlier, regress
Edge: Strong fade

Injury Return

Recent: 15 pts (low)
Public thinks: Not same player
Reality: Ramping up
Edge: Buy the over

๐Ÿ’ฐ Pricing Implications

Exploit Recency Bias

  • โ†’ Shade lines toward public perception (let them bet wrong side)
  • โ†’ Boost props for players on cold streaks (public under-bets)
  • โ†’ Reduce props for hot players (public over-bets)

For Your Models

  • โ†’ Use Bayesian shrinkage to weight season over recent
  • โ†’ Calibrate optimal recency weights empirically
  • โ†’ Identify situations where recent IS more predictive (injuries, role changes)

R Code Equivalent

# Regression-adjusted projection
project_with_regression <- function(season_avg, last5_avg, last1, 
                                     weights = c(0.6, 0.3, 0.1)) { 
  projection <- season_avg * weights[1] + 
                last5_avg * weights[2] + 
                last1 * weights[3]
  return(projection)
}

# Compare public vs optimal
public_proj <- project_with_regression(22, 30, 42,
                                        weights = c(0.2, 0.4, 0.4))
optimal_proj <- project_with_regression(22, 30, 42,
                                          weights = c(0.6, 0.3, 0.1))

mispricing <- public_proj - optimal_proj
cat(sprintf("Public: %.1f, Optimal: %.1f, Edge: %.1f pts\n", 
            public_proj, optimal_proj, mispricing))

โœ… Key Takeaways

  • โ€ข Humans overweight recent performance
  • โ€ข Hot streaks regress, cold streaks bounce back
  • โ€ข Season average is more predictive than last game
  • โ€ข Fade extreme recent performance
  • โ€ข Use Bayesian shrinkage for optimal weighting
  • โ€ข Exception: genuine role/situation changes

Pricing Models & Frameworks Tutorial

Built for mastery ยท Interactive learning