Exercises: Pace and Play Calling
Exercise 1: Basic Pace Calculation
A team ran 1,054 plays over 17 games. Calculate: - Plays per game - If they averaged 28 seconds between plays, how many minutes of possession per game?
Exercise 2: Pass Rate Analysis
A team's season data:
| Category | Passes | Rushes |
|---|---|---|
| Total | 612 | 442 |
| Neutral situations | 280 | 240 |
Calculate overall and neutral pass rates. What does the difference indicate?
Exercise 3: Game Script Effect
Team X's play calling by score differential:
| Score State | Passes | Rushes |
|---|---|---|
| Down 7+ | 185 | 65 |
| Close (±6) | 220 | 210 |
| Up 7+ | 95 | 145 |
Calculate pass rates for each situation. How much does game script affect this team's play calling?
Exercise 4: Pass vs Rush Efficiency
A team has these efficiency metrics:
| Play Type | EPA/Play | Success Rate | Std Dev |
|---|---|---|---|
| Pass | +0.09 | 48% | 1.4 |
| Rush | -0.04 | 44% | 0.9 |
Calculate the pass premium. Should this team pass more or less?
Exercise 5: Fourth Down Expected Value
Situation: 4th & 2 at the opponent's 35-yard line, tied game, 25 minutes remaining.
Given: - Conversion probability: 65% - Field goal probability (52 yards): 68% - EP if convert: +3.5 points - EP if fail: -1.8 points - EP if FG miss: -2.1 points
Calculate expected value for: a) Going for it b) Field goal attempt
Which is optimal?
Exercise 6: Entropy and Predictability
A team has these pass rates by situation:
| Situation | Pass Rate |
|---|---|
| 1st & 10 | 50% |
| 2nd & Long | 90% |
| 3rd & Short | 30% |
Calculate Shannon entropy for each situation. Which is most predictable?
Exercise 7: Down and Distance Patterns
Analyze this team's play calling:
| Situation | Pass Rate | EPA |
|---|---|---|
| 1st down | 45% | +0.02 |
| 2nd & Short | 35% | -0.01 |
| 2nd & Long | 72% | +0.06 |
| 3rd & Short | 55% | +0.15 |
| 3rd & Long | 88% | -0.08 |
Identify the team's most and least efficient situations.
Exercise 8: Neutral Situation Analysis
Define "neutral" as: 1st/2nd down, score within 7, WP 35-65%.
From 500 total plays, 185 were in neutral situations (95 passes, 90 rushes).
Calculate: - Neutral pass rate - Compare to likely overall pass rate (~58%) - What does this reveal about the team's true philosophy?
Exercise 9: Tempo Comparison
Two teams' pace data:
| Metric | Team A | Team B |
|---|---|---|
| Plays/Game | 68 | 58 |
| Sec/Play | 24 | 32 |
| Off EPA | +0.08 | +0.10 |
Which team is more efficient despite fewer plays? Calculate EPA per game for each.
Exercise 10: Fourth Down Decision Audit
A team's 4th down decisions over the season:
| Field Position | Distance | Decision | Optimal |
|---|---|---|---|
| Opp 35 | 2 | FG | Go |
| Opp 42 | 1 | Punt | Go |
| Opp 28 | 4 | FG | FG |
| Midfield | 3 | Punt | Go |
| Own 35 | 6 | Punt | Punt |
How many optimal decisions did the team make? What's their "correct" rate?
Exercise 11: Formation Tendencies
A team's play calling by formation:
| Formation | Passes | Rushes | Pass Rate |
|---|---|---|---|
| Shotgun | 380 | 120 | ? |
| Under Center | 85 | 215 | ? |
| Pistol | 45 | 80 | ? |
Calculate pass rates. Which formation is a "tell"?
Exercise 12: Score-Time Analysis
Late in the 4th quarter, down by 4 points:
| Time Left | Pass Rate |
|---|---|
| 5:00-4:01 | 65% |
| 4:00-3:01 | 72% |
| 3:00-2:01 | 80% |
| 2:00-1:01 | 88% |
| < 1:00 | 95% |
Is this pattern appropriate? Why or why not?
Exercise 13: Early Down Optimization
A team's 1st down data:
| Play Type | Attempts | EPA/Play | Success Rate |
|---|---|---|---|
| Pass | 280 | +0.06 | 49% |
| Rush | 340 | -0.02 | 43% |
If they shifted 50 rushes to passes (maintaining same efficiency), how much total EPA would they gain?
Exercise 14: Predictability Score
Calculate predictability scores for two teams:
Team A: - 1st & 10: 52% pass - 2nd & Long: 68% pass - 3rd & Short: 48% pass
Team B: - 1st & 10: 48% pass - 2nd & Long: 85% pass - 3rd & Short: 25% pass
Which team is more predictable?
Exercise 15: Win Probability and Pass Rate
A team's pass rates at different win probabilities:
| Win Prob Range | Pass Rate | EPA |
|---|---|---|
| 20-30% | 75% | +0.04 |
| 40-50% | 52% | +0.06 |
| 50-60% | 48% | +0.05 |
| 70-80% | 40% | +0.02 |
In which range is the team most efficient? Should they adjust their neutral-game approach?
Programming Exercises
Exercise 16: Pace Calculator
Write a function to calculate comprehensive pace metrics:
def calculate_pace_metrics(pbp: pd.DataFrame, team: str) -> dict:
"""
Calculate pace metrics for a team.
Returns:
- plays_per_game
- seconds_per_play (average)
- neutral_pace (plays in neutral situations per game)
- pace_by_quarter
"""
pass
Exercise 17: Pass Rate Analyzer
Build a pass rate analysis function:
def analyze_pass_rates(pbp: pd.DataFrame, team: str) -> pd.DataFrame:
"""
Analyze pass rates across all situations.
Returns DataFrame with columns:
- situation (1st&10, 2nd&Short, etc.)
- pass_rate
- plays
- epa
- success_rate
"""
pass
Exercise 18: Fourth Down Evaluator
Create a fourth down decision evaluator:
def evaluate_fourth_down(
field_position: int,
distance: int,
score_diff: int,
time_remaining: float,
conversion_model: dict = None
) -> dict:
"""
Evaluate optimal 4th down decision.
Returns:
- ev_go: Expected value of going for it
- ev_fg: Expected value of field goal (if in range)
- ev_punt: Expected value of punting
- optimal_decision: 'go', 'fg', or 'punt'
- confidence: How clear-cut the decision is
"""
pass
Exercise 19: Game Script Visualizer
Create a visualization of pass rate by game state:
def plot_game_script_analysis(pbp: pd.DataFrame, team: str) -> None:
"""
Create visualization showing:
- Pass rate vs score differential
- Pass rate vs win probability
- Pass rate by quarter and score state
Include reference lines for league averages.
"""
pass
Exercise 20: Predictability Analyzer
Build a tendency detection system:
def analyze_predictability(pbp: pd.DataFrame, team: str) -> dict:
"""
Measure team's play-calling predictability.
Returns:
- overall_entropy
- situational_entropy (by down/distance)
- formation_tells (formations with extreme pass rates)
- personnel_tells
- predictability_score (0 = unpredictable, 1 = very predictable)
"""
pass
Challenge Exercises
Challenge 1: Optimal Pass Rate Model
Build a model that suggests optimal pass rates:
- Calculate pass and rush EPA for each team
- Account for variance (risk tolerance)
- Consider game state adjustments
- Compare suggested rates to actual rates
- Estimate "lost EPA" from suboptimal play selection
Challenge 2: Fourth Down Decision Audit
Audit an entire season of 4th down decisions:
- Load all 4th down plays
- Calculate optimal decision for each
- Compare to actual decision
- Calculate aggregate "decision value added"
- Rank coaches by 4th down aggressiveness
Challenge 3: Tempo Impact Study
Analyze whether tempo affects efficiency:
- Calculate pace metrics for all teams
- Segment by game situation (close vs blowout)
- Correlate pace with efficiency metrics
- Control for team quality
- Determine if tempo has causal effect on EPA
Challenge 4: Predictability Exploitation
Identify the most predictable teams and situations:
- Calculate conditional pass rates for all teams/situations
- Identify "tells" (extreme tendencies)
- Quantify the EPA difference when plays are predictable
- Determine if predictability costs teams wins
Challenge 5: Complete Play Calling Optimizer
Build a comprehensive play selection optimization system:
- Account for team-specific pass/rush efficiency
- Incorporate game state (score, time, field position)
- Include opponent defensive tendencies
- Model risk/variance preferences
- Generate play-by-play recommendations
- Backtest against actual outcomes
Solutions
Solutions are available in code/exercise-solutions.py