Behavioral Model Interactive
Home & Fandom Bias
Public bettors overbet popular teams and home favorites. Identify mispriced lines created by emotional betting patterns.
๐ The Bias Pattern
Home Field Bias
Public overvalues home field advantage by 1-3 points on average.
- โข Actual HFA: ~2.5 pts (NFL), ~3 pts (NBA)
- โข Public perception: often 4-5 pts
- โข Creates fade opportunity on road teams
Fandom Bias
Popular/national TV teams attract disproportionate betting action.
- โข Cowboys, Lakers get 60-70% of public bets
- โข Lines shade 1-2 points against them
- โข Contrarian value on small market teams
Scenario Setup
Select popular teams playing:
-10 10
Bias Strength
0 5
0 8
Line Movement
True Fair Line
-3
No bias
Market Line
+2.0
With public bias
Edge Available
+5.0
Fade popular team
Betting Action Distribution
% of Bets on Popular Team 85%
% of Money on Popular Team 70%
Sharp Money on Underdog 30%
When bet count and money % diverge, sharps are on the other side.
๐ Most Biased Teams
Dallas Cowboys
NFLAmerica's Team, massive public action
LA Lakers
NBALargest fanbase, national TV favorites
NY Yankees
MLBHistoric brand, heavy public betting
Notre Dame
CFBNational following, inflated lines
Ohio State
CFBHuge alumni base, public favorite
Manchester United
SoccerGlobal fanbase, retail favorite
๐ฐ Pricing Strategy
For the House
- โ Shade lines against popular teams (capture public action)
- โ Watch bet count vs money % for sharp action
- โ Prime time games get extra juice
For Bettors (to model)
- โ Fade public teams when line moves against value
- โ Small market road dogs are undervalued
- โ Track closing line value to validate edge
R Code Equivalent
# Calculate public bias adjustment
calculate_bias_adjustment <- function(is_popular, is_home,
pop_bias = 3, home_bias = 2) {
adjustment <- 0
if (is_popular) adjustment <- adjustment - pop_bias
if (is_home) adjustment <- adjustment - home_bias * 0.5
return(adjustment)
}
# Shade line for public action
shade_line <- function(true_line, is_popular_home,
public_pct = 0.65, target_balance = 0.5) {
# Higher public % = more shading
imbalance <- public_pct - target_balance
shade_factor <- imbalance * 3 # ~1.5 pts for 10% imbalance
if (is_popular_home) {
return(true_line - shade_factor)
} else {
return(true_line + shade_factor)
}
}
# Example
true_line <- -3
market_line <- shade_line(true_line, TRUE, 0.70)
edge <- market_line - true_line
cat(sprintf("True: %+.1f, Market: %+.1f, Edge: %+.1f\n",
true_line, market_line, edge))โ Key Takeaways
- โข Public overvalues home field by 1-3 points
- โข Popular teams attract 60-70% of public bets
- โข Lines shade against public favorites
- โข Sharps fade popular teams, take road dogs
- โข Bet count vs money % reveals sharp action
- โข Small market teams = contrarian value