Line Movement & Steam Moves¶
Overview¶
Line movement refers to how sportsbook odds change over time from when they open until the market closes (game time). These changes reflect new information (injuries, weather, lineup changes), betting volume imbalances, and sharp bookmaker reactions to professional bettor action.
Steam moves are sudden, uniform line movements across multiple sportsbooks simultaneously, typically triggered by large wagers from professional bettors or syndicates. When a steam move occurs, multiple books adjust in the same direction within seconds or minutes, indicating that significant smart money has come in on one side.
Understanding line movement is important because: (a) steam moves can signal market corrections that the model should incorporate, (b) reverse line movement (line moving opposite to public betting) is a known market inefficiency signal, and (c) tracking CLV requires knowing both when the bet was placed and where the line closed.
Why It Matters¶
Line movement analysis matters for:
1. CLV tracking: The pipeline records odds at multiple time points, enabling CLV calculation against closing lines.
2. Market signal detection: Steam moves can confirm or contradict the model's predictions.
3. Reverse line movement: When line moves toward underdog despite majority of bets on favorite, it signals sharp money on the underdog.
4. Information incorporation: Tracking how quickly markets react to news helps calibrate the model's information advantage.
Key Concepts¶
- Line opening: Initial odds set by the sportsbook, often based on power rankings or previous day lines.
- Steam move: Rapid, uniform line movement across multiple books, usually indicating sharp action.
- Reverse line movement (RLM): Line moves toward underdog despite majority of bets on favorite — strong signal that sharp money is on the underdog.
- Public money vs. sharp money: Public bets (recreational) often push lines incorrectly; sharp money is more influential.
- Line capping: Practice of tracking and analyzing line movement to find inefficiencies.
Steam Move Detection¶
Steam moves are detected by monitoring real-time odds feeds and flagging when:
1. Odds move > X% (e.g., 2%) across > Y books (e.g., 3+) simultaneously
2. The move happens within a short time window (< 5 minutes)
import time
from collections import defaultdict
class SteamDetector:
def __init__(self, threshold_pct=0.02, min_books=3):
self.threshold_pct = threshold_pct
self.min_books = min_books
self.odds_history = defaultdict(list)
def record_odds(self, event_id, book, odds):
ts = time.time()
self.odds_history[event_id].append((ts, book, odds))
def detect_steam(self, event_id):
records = sorted(self.odds_history[event_id], key=lambda x: x[0])
books_at_open = {}
books_moved = {}
for ts, book, odds in records:
if book not in books_at_open:
books_at_open[book] = odds
else:
pct = abs(odds - books_at_open[book]) / books_at_open[book]
if pct > self.threshold_pct:
books_moved[book] = (books_at_open[book], odds, ts)
if len(books_moved) >= self.min_books:
direction = sum(1 if new > old else -1 for old, new, _ in books_moved.values())
return abs(direction) == len(books_moved)
return False
def reverse_line_movement(public_bets_pct, line_direction):
"""Detect reverse line movement signal."""
if public_bets_pct > 0.55 and line_direction < 0:
return "RLM: sharp on underdog despite public favorite betting"
elif public_bets_pct < 0.45 and line_direction > 0:
return "RLM: sharp on favorite despite public underdog betting"
return "Normal line movement"
Pitfalls¶
- Steam chasing is not a strategy: By the time a steam move is detectable, the line has already moved and the value may be gone.
- The model's value is in predicting BEFORE the steam move, not reacting to it.
- World Cup line movement is public-dominated: Many recreational bettors influence lines, so steam signals may be less reliable than in professional markets.
- Data requirements: Detecting steam requires real-time odds feeds, which not all data sources provide.
See Also¶
- market-efficiency — sharp books move first; soft books follow
- closing-line-value — CLV is the key metric for validating line movement predictions
- value-bet-identification — the model's value comes from prediction before market moves