Exercises: Offensive Line Analytics

Difficulty Levels

  • Level 1 (Foundational): Basic O-line metric calculations
  • Level 2 (Applied): Team-level O-line analysis
  • Level 3 (Intermediate): Advanced blocking metrics
  • Level 4 (Advanced): Context adjustments and attribution
  • Level 5 (Expert): Comprehensive O-line evaluation

Section 1: Pass Protection Metrics (Level 1-2)

Exercise 1.1: Sack Rate Calculation

Level 1 | Basic Metric

For the 2023 season: 1. Calculate sack rate for all teams 2. Rank teams from best to worst protection 3. What is the league average sack rate? 4. Which teams are significantly above/below average?

# Your code here

Exercise 1.2: Pressure Rate

Level 2 | Expanded Metric

Calculate a broader pressure metric: 1. Define pressure as sack OR QB hit OR scramble 2. Calculate pressure rate by team 3. Compare to sack rate—which tells more? 4. Which teams have high pressure but low sacks (QB escapes)?

# Your code here

Exercise 1.3: Clean Pocket Analysis

Level 2 | Situational

Compare performance with and without pressure: 1. Calculate EPA on clean plays vs pressured plays by team 2. Which teams have the biggest performance drop under pressure? 3. Is there a correlation between pressure rate and EPA drop?

# Your code here

Exercise 1.4: QB Hit Analysis

Level 2 | Component

Analyze QB hits specifically: 1. Calculate QB hit rate by team 2. How does hit rate correlate with sack rate? 3. Which teams allow hits without sacks (good QB)? 4. Which teams allow sacks without hits (quick wins)?

# Your code here

Exercise 1.5: Scramble Rate

Level 2 | QB Effect

Analyze how often QBs scramble: 1. Calculate scramble rate by team 2. Is high scramble rate good or bad protection? 3. Separate designed runs from scrambles if possible 4. Which teams' QBs scramble most/least?

# Your code here

Section 2: Run Blocking Metrics (Level 2-3)

Exercise 2.1: Stuff Rate

Level 2 | Basic Metric

Calculate stuff rate: 1. Define stuffs as runs for 0 or fewer yards 2. Calculate stuff rate by team 3. Also calculate negative run rate (yards < 0) 4. Rank teams by run blocking quality

# Your code here

Exercise 2.2: Adjusted Line Yards

Level 3 | ALY

Calculate ALY using the Football Outsiders formula: 1. Apply the caps (100%/50%/25% for short/medium/long) 2. Apply the penalty for negative runs (125%) 3. Calculate ALY by team 4. Compare to raw YPC—what differs?

# Your code here

Exercise 2.3: Explosive Run Rate

Level 2 | Big Plays

Analyze explosive runs: 1. Calculate percentage of runs going 10+ yards 2. Calculate percentage going 20+ yards 3. Rank teams by explosive run rate 4. Is this O-line or RB skill?

# Your code here

Exercise 2.4: Run Direction Analysis

Level 3 | Direction

If run location is available: 1. Calculate ALY by run direction (left, middle, right) 2. Which teams have directional strengths? 3. Which teams have directional weaknesses? 4. How might this inform scheme?

# Your code here

Exercise 2.5: Second Level Blocks

Level 3 | Advanced

Analyze runs reaching the second level: 1. Calculate percentage of runs gaining 4+ yards 2. This proxy for reaching linebackers 3. Compare to stuff rate—correlation? 4. Which teams get to the second level?

# Your code here

Section 3: Separating O-Line from Skill Players (Level 3-4)

Exercise 3.1: Sack Rate vs QB Time

Level 3 | Attribution

Investigate QB contribution to sack rate: 1. Calculate average target depth (ADOT) by team 2. Higher ADOT = more time needed 3. Adjust sack rate for ADOT 4. Which teams' rankings change?

# Your code here

Exercise 3.2: Multiple RB Analysis

Level 3 | RB Control

Compare RBs on same team: 1. Find teams with multiple RBs (30+ carries each) 2. Compare their YPC and stuff rates 3. If same O-line, RB differences = RB skill 4. What does this tell us about O-line vs RB?

# Your code here

Exercise 3.3: RB Change Impact

Level 4 | Natural Experiment

Analyze teams with RB changes: 1. Compare rushing metrics before/after injury 2. If O-line constant, change = RB effect 3. How much does RB matter vs O-line?

# Your code here

Exercise 3.4: Short Yardage Analysis

Level 3 | Situational

Analyze short yardage (1-2 yards to go): 1. Calculate conversion rate by team 2. This is more O-line dependent 3. Compare to overall run blocking 4. Which teams excel in short yardage?

# Your code here

Exercise 3.5: Goal Line Analysis

Level 4 | Extreme Short

Analyze goal line (inside 5): 1. Calculate rushing success in goal-to-go 2. Very O-line dependent (limited space) 3. Which teams push it in? 4. Compare run vs pass success

# Your code here

Section 4: Advanced Metrics (Level 4-5)

Exercise 4.1: Opponent Adjustment

Level 4 | Adjustment

Adjust O-line metrics for opponent: 1. Calculate defensive sack rate and stuff rate allowed 2. Create opponent-adjusted O-line metrics 3. Which teams look better/worse after adjustment?

# Your code here

Exercise 4.2: Blitz Protection

Level 4 | Blitz

Analyze protection against blitzes: 1. Define blitz (5+ rushers or use available data) 2. Calculate sack rate vs blitz and non-blitz 3. Which teams handle blitz well? 4. Is blitz protection a different skill?

# Your code here

Exercise 4.3: Composite O-Line Index

Level 4 | Composite

Create a composite O-line rating: 1. Combine pass protection and run blocking 2. Weight appropriately 3. Normalize to 0-100 scale 4. Rank all teams

# Your code here

Exercise 4.4: Stability Analysis

Level 5 | Reliability

Test O-line metric stability: 1. Split season into halves 2. Calculate metrics for each half 3. What is the half-to-half correlation? 4. Which metrics are most stable?

# Your code here

Exercise 4.5: O-Line and Offensive Success

Level 5 | Impact

Analyze O-line impact on offense: 1. Correlate O-line metrics with team EPA 2. Does pass protection or run blocking matter more? 3. Which O-line metric best predicts wins?

# Your code here

Section 5: Comprehensive Evaluation (Level 4-5)

Exercise 5.1: O-Line Comparison Tool

Level 4 | Application

Build an O-line comparison tool: 1. Compare two teams' O-lines 2. Break down by pass and run 3. Include situational analysis 4. Generate report

class OLineComparison:
    def __init__(self, pbp):
        pass

    def compare(self, team_a, team_b):
        pass

    def generate_report(self):
        pass

Exercise 5.2: Individual Attribution Estimation

Level 5 | Attribution

Estimate individual lineman impact: 1. Use team metrics when specific player is injured 2. Calculate team metrics with/without player 3. Estimate player's individual value 4. Discuss limitations

# Your code here

Exercise 5.3: Scheme Classification

Level 5 | Scheme

Classify teams by blocking scheme: 1. Use run direction distribution as proxy 2. Outside zone teams run more outside 3. Gap teams run more inside 4. How does scheme affect metrics?

# Your code here

Exercise 5.4: Multi-Year Trajectory

Level 5 | Longitudinal

Analyze O-line stability across years: 1. Load multiple seasons 2. Track team O-line metrics over time 3. Which teams are consistently good/bad? 4. How stable is O-line performance?

# Your code here

Exercise 5.5: Complete O-Line Report

Level 5 | Capstone

Generate comprehensive O-line evaluation: 1. Select a team to analyze 2. Include all metric categories 3. Break down pass and run 4. Compare to league 5. Provide assessment and recommendations

# Your code here

Submission Guidelines

For each exercise: 1. Include all code with comments 2. Provide visualizations where appropriate 3. Interpret findings with appropriate caveats 4. Acknowledge data limitations

Grading Rubric

Level Points Focus
1 2 each Correct calculation
2 3 each Calculation + interpretation
3 4 each Multi-metric analysis
4 5 each Context and adjustment
5 6 each Comprehensive evaluation