Exercises: Quarterback Evaluation

Difficulty Levels

  • Level 1 (Foundational): Basic QB metric calculations
  • Level 2 (Applied): Standard QB analysis with NFL data
  • Level 3 (Intermediate): Multi-dimensional evaluation
  • Level 4 (Advanced): Context adjustments and modeling
  • Level 5 (Expert): Research-level QB analysis

Section 1: EPA-Based Metrics (Level 1-2)

Exercise 1.1: Basic EPA Calculation

Level 1 | EPA Fundamentals

For the 2023 season: 1. Calculate EPA per dropback for all QBs with 300+ attempts 2. What is the league average EPA per dropback? 3. How many QBs are above league average? 4. What is the standard deviation of EPA per dropback?

# Your code here

Exercise 1.2: EPA Rankings

Level 2 | Rankings

Create a QB ranking table with: 1. EPA per play (ranked 1-N) 2. Total EPA (ranked 1-N) 3. A composite rank (average of the two) 4. Which QBs have the largest gap between efficiency and volume rankings?

# Your code here

Exercise 1.3: Success Rate Analysis

Level 2 | Success Rate

Calculate for each qualified QB: 1. Overall success rate 2. Success rate on early downs (1st and 2nd) 3. Success rate on third down 4. Which QBs show the biggest drop-off on third down?

# Your code here

Exercise 1.4: Weekly Consistency

Level 2 | Variance Analysis

For the top 15 QBs by volume: 1. Calculate week-by-week EPA 2. Find the standard deviation of weekly EPA 3. Rank QBs by consistency (lowest variance) 4. Is there a correlation between average EPA and consistency?

# Your code here

Exercise 1.5: EPA by Quarter

Level 2 | Temporal Analysis

Analyze how QBs perform through the game: 1. Calculate EPA by quarter (1-4) for top QBs 2. Which QBs improve as the game goes on? 3. Which QBs decline? 4. Visualize the patterns

# Your code here

Section 2: CPOE Analysis (Level 2-3)

Exercise 2.1: Basic CPOE

Level 2 | CPOE Calculation

For qualified QBs: 1. Calculate average CPOE 2. What is the range of CPOE (min to max)? 3. Which QB has the highest CPOE? 4. What completion percentage would you expect from the lowest CPOE QB?

# Your code here

Exercise 2.2: CPOE vs EPA Comparison

Level 3 | Metric Comparison

Compare CPOE and EPA rankings: 1. Calculate both metrics for all qualified QBs 2. What is the correlation between CPOE and EPA? 3. Identify QBs who rank much higher in one vs the other 4. What might explain these discrepancies?

# Your code here

Exercise 2.3: CPOE by Depth

Level 3 | Stratified Analysis

Break down CPOE by target depth: 1. Calculate CPOE for short (<10 yards), medium (10-20), and deep (20+) passes 2. Which QBs have consistent CPOE across depths? 3. Which QBs excel at specific depths?

# Your code here

Exercise 2.4: CPOE Stability

Level 3 | Reliability

Test CPOE stability: 1. Split the season into first and second halves 2. Calculate CPOE for each half 3. What is the correlation between halves? 4. Is CPOE more or less stable than raw completion %?

# Your code here

Exercise 2.5: CPOE Trend Analysis

Level 3 | Time Series

For a specific QB: 1. Calculate rolling 50-pass CPOE 2. Plot the trend throughout the season 3. Identify significant up or down trends 4. Do injuries or other factors explain changes?

# Your code here

Section 3: Air Yards and Passing Depth (Level 2-3)

Exercise 3.1: ADOT Rankings

Level 2 | Basic Air Yards

Calculate for all qualified QBs: 1. Average Depth of Target (ADOT) 2. Deep ball percentage (throws 20+ yards) 3. Behind-line-of-scrimmage percentage 4. Rank QBs from most to least aggressive

# Your code here

Exercise 3.2: Air Yards vs YAC

Level 3 | Passing Decomposition

Decompose passing production: 1. Calculate air yards per attempt and YAC per completion 2. What percentage of each QB's yards come from air vs YAC? 3. Which QBs rely most on YAC? Which on air yards? 4. What does this tell us about their supporting cast?

# Your code here

Exercise 3.3: Deep Ball Efficiency

Level 3 | Deep Passing

Analyze deep passing (20+ yards): 1. Calculate deep ball completion percentage by QB 2. Calculate EPA per deep attempt 3. Which QBs are efficient deep passers? 4. Is there a correlation between deep volume and deep efficiency?

# Your code here

Exercise 3.4: Completed Air Yards

Level 3 | CAY Analysis

Calculate Completed Air Yards (CAY): 1. CAY = total air yards on completions 2. CAY per attempt 3. Compare to ADOT - what's the difference? 4. Which metric better predicts EPA?

# Your code here

Exercise 3.5: Passing Style Profiles

Level 3 | Clustering

Create passing style profiles: 1. Use ADOT, CPOE, and EPA as features 2. Cluster QBs into style groups 3. Characterize each cluster (e.g., "aggressive and accurate") 4. Visualize the clusters

# Your code here

Section 4: Context Adjustments (Level 3-4)

Exercise 4.1: Home vs Away

Level 3 | Split Analysis

Compare QB performance home vs away: 1. Calculate EPA at home and away for each QB 2. Which QBs have the biggest home advantage? 3. Is home/away split consistent year-to-year?

# Your code here

Exercise 4.2: Opponent Adjustment

Level 4 | Adjusted Metrics

Adjust for opponent strength: 1. Calculate pass defense EPA allowed by each team 2. Adjust each QB's EPA based on opponents faced 3. Which QBs move up/down most after adjustment? 4. Compare raw vs adjusted rankings

# Your code here

Exercise 4.3: Supporting Cast Isolation

Level 4 | Cast Adjustment

Attempt to isolate QB from supporting cast: 1. Calculate team's YAC above/below average 2. Calculate time to throw (if available) or sack rate 3. Estimate how much of EPA is attributable to cast 4. Discuss limitations of this approach

# Your code here

Exercise 4.4: Scheme Effects

Level 4 | System Analysis

Analyze scheme effects: 1. Calculate play-action usage and effectiveness by QB 2. Calculate RPO usage and effectiveness 3. Do QBs in certain systems have inflated stats? 4. How would you control for scheme?

# Your code here

Exercise 4.5: Pressure Performance

Level 4 | Pressure Analysis

Analyze performance under pressure: 1. Identify "pressure" using sack, qb_hit, or scramble 2. Calculate EPA when pressured vs clean pocket 3. Which QBs maintain performance under pressure? 4. Is pressure performance stable year-to-year?

# Your code here

Section 5: Situational Analysis (Level 3-4)

Exercise 5.1: Third Down Specialist

Level 3 | Third Down

Identify third down specialists: 1. Calculate third down EPA and conversion rate by QB 2. Compare to overall EPA - who overperforms on 3rd down? 3. Is third down performance predictive of future success?

# Your code here

Exercise 5.2: Red Zone Efficiency

Level 3 | Red Zone

Analyze red zone passing: 1. Calculate red zone EPA and TD rate by QB 2. Who are the best red zone passers? 3. How does red zone performance correlate with overall EPA?

# Your code here

Exercise 5.3: Two-Minute Drill

Level 4 | Late Game

Evaluate two-minute drill performance: 1. Filter to last 2 minutes of each half 2. Calculate EPA and success rate in these situations 3. Who are the best two-minute QBs? 4. Account for garbage time

# Your code here

Exercise 5.4: Trailing Performance

Level 4 | Game Script

Analyze performance when trailing: 1. Calculate EPA when trailing by 7+ 2. Compare to performance when leading 3. Which QBs elevate when behind? 4. Distinguish ability from garbage time inflation

# Your code here

Exercise 5.5: Fourth Quarter Clutch

Level 4 | Clutch Analysis

Define and measure "clutch" performance: 1. Define clutch situations (4Q, close game) 2. Calculate EPA in clutch vs non-clutch 3. Is clutch performance a real, stable skill? 4. Use WPA to validate findings

# Your code here

Section 6: Comprehensive Evaluation (Level 4-5)

Exercise 6.1: Build a QB Index

Level 4 | Composite Metric

Create a composite QB rating: 1. Select 5+ metrics to include 2. Standardize each metric 3. Weight and combine into a single score 4. Validate against wins, EPA, or other outcomes

# Your code here

Exercise 6.2: QB Comparison Tool

Level 4 | Application

Build a reusable QB comparison tool: 1. Allow input of QB names 2. Calculate all relevant metrics 3. Rank in each category 4. Generate a formatted comparison report

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

    def compare(self, qb_list):
        pass

    def generate_report(self):
        pass

Exercise 6.3: Career Trajectory Analysis

Level 5 | Multi-Year

Analyze QB career trajectories: 1. Load multiple seasons of data 2. Calculate year-over-year changes in EPA 3. Identify typical career arcs (peak age, decline) 4. Which QBs defy typical patterns?

# Your code here

Exercise 6.4: Predictive Model

Level 5 | Prediction

Build a model to predict future QB EPA: 1. Use current season metrics as features 2. Predict next season's EPA 3. Which metrics are most predictive? 4. How much of performance is predictable vs luck?

# Your code here

Exercise 6.5: Complete QB Report

Level 5 | Capstone

Generate a comprehensive scouting report: 1. Select a QB to analyze deeply 2. Include all metric categories 3. Add visualizations 4. Provide a narrative summary 5. Format for presentation to a front office

# Your code here

Submission Guidelines

For each exercise: 1. Include all code with comments 2. Provide visualizations where appropriate 3. Interpret findings in football context 4. Acknowledge 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