Exercises: Receiving Analytics

Difficulty Levels

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

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

Exercise 1.1: Target Share Calculation

Level 1 | Target Share

For the 2023 season: 1. Calculate target share for all receivers with 30+ targets 2. Who has the highest target share? 3. What is the typical target share for a WR1 (top receiver on team)? 4. Is target share correlated with total receiving yards?

# Your code here

Exercise 1.2: EPA per Target

Level 1 | Efficiency

Calculate for qualified receivers (50+ targets): 1. EPA per target 2. Total EPA 3. Rank receivers by both metrics 4. Who has the biggest gap between efficiency and volume rankings?

# Your code here

Exercise 1.3: Catch Rate Analysis

Level 2 | Catch Rate

Analyze catch rate patterns: 1. Calculate catch rate for all receivers 2. What is the average catch rate league-wide? 3. How does catch rate relate to target depth (ADOT)? 4. Is high catch rate associated with high EPA?

# Your code here

Exercise 1.4: Yards Per Target

Level 2 | Yards

Compare yards per target: 1. Calculate yards per target for qualified receivers 2. How does this compare to yards per reception? 3. Which metric is more correlated with EPA? 4. Rank receivers by yards per target

# Your code here

Exercise 1.5: Target Quality

Level 2 | Target Analysis

Analyze the quality of targets received: 1. Calculate percentage of targets in the red zone 2. Calculate percentage on third down 3. Calculate percentage that are deep (20+ air yards) 4. Which receivers get the most "high-value" targets?

# Your code here

Section 2: Air Yards and YAC (Level 2-3)

Exercise 2.1: Air Yards Analysis

Level 2 | Air Yards

For qualified receivers: 1. Calculate total air yards and ADOT 2. Who are the deepest targets in the league? 3. Who are the shallowest? 4. How does ADOT correlate with catch rate?

# Your code here

Exercise 2.2: YAC Analysis

Level 2 | Yards After Catch

Analyze yards after catch: 1. Calculate total YAC and YAC per reception 2. Rank receivers by YAC per reception 3. What percentage of yards come from YAC for each receiver? 4. Is high YAC associated with low ADOT?

# Your code here

Exercise 2.3: RACR Calculation

Level 3 | RACR

Calculate and interpret RACR: 1. Compute RACR for all qualified receivers 2. Who has RACR above 1.0? Below? 3. What does high RACR indicate about a receiver? 4. How does RACR relate to EPA?

# Your code here

Exercise 2.4: Receiver Style Profiles

Level 3 | Clustering

Categorize receivers by style: 1. Use ADOT and YAC as features 2. Create 4 style categories (Field Stretcher, YAC Specialist, etc.) 3. Which receivers fall into each category? 4. Visualize the style clusters

# Your code here

Exercise 2.5: Air Yards vs Actual Yards

Level 3 | Comparison

Compare intended vs completed production: 1. Calculate total intended air yards vs receiving yards 2. Who converts air yards best (high RACR)? 3. Who wastes opportunities (low RACR)? 4. What explains the differences?

# Your code here

Section 3: Catch Rate Over Expected (Level 3-4)

Exercise 3.1: Expected Catch Rate Model

Level 3 | Modeling

Build a simple expected catch rate model: 1. Use air yards as the primary feature 2. Calculate league-average catch rate by depth buckets 3. Estimate expected catch rate for each target 4. Calculate catch rate over expected

# Your code here

Exercise 3.2: Difficult Catch Analysis

Level 3 | Catch Difficulty

Analyze catches by difficulty: 1. Define "difficult" catches (20+ air yards) 2. Calculate catch rate on difficult targets 3. Who excels at difficult catches? 4. Is difficult-catch rate a stable skill?

# Your code here

Exercise 3.3: Short Target Efficiency

Level 3 | Short Targets

Analyze short target (under 10 yards) performance: 1. Calculate catch rate on short targets 2. Calculate YAC on short targets 3. Who maximizes short targets? 4. Compare to overall performance

# Your code here

Exercise 3.4: Drop Estimation

Level 4 | Drops

Estimate drop-like behavior: 1. Identify catchable but incomplete targets (approximation) 2. Calculate "drop rate" proxy per receiver 3. Is drop rate stable across season? 4. Discuss limitations of this approach

# Your code here

Exercise 3.5: Catch Rate Stability

Level 4 | Stability

Test catch rate stability: 1. Split season into halves 2. Calculate catch rate for each half 3. What is the half-to-half correlation? 4. How stable is ADOT-adjusted catch rate?

# Your code here

Section 4: QB Attribution (Level 3-4)

Exercise 4.1: Same-QB Comparison

Level 3 | QB Control

Compare receivers with the same QB: 1. Pick a QB with multiple receiving options 2. Compare EPA, catch rate, and YAC for all targets 3. Which receiver performs best with this QB? 4. What might explain differences?

# Your code here

Exercise 4.2: Multi-QB Analysis

Level 4 | Receiver Across QBs

Analyze receiver with multiple QBs (if applicable): 1. Find receivers who had multiple QBs 2. Compare performance with each QB 3. Is receiver performance consistent? 4. How much does QB quality affect receiver stats?

# Your code here

Exercise 4.3: QB-Adjusted EPA

Level 4 | Adjustment

Create QB-adjusted receiving metrics: 1. Calculate baseline EPA for each QB 2. Calculate each receiver's EPA over QB baseline 3. Which receivers outperform their QBs? 4. Compare raw vs adjusted rankings

# Your code here

Exercise 4.4: Team Passing Effect

Level 4 | Team Adjustment

Account for team passing quality: 1. Calculate team passing EPA 2. Adjust receiver EPA for team context 3. Which receivers benefit most from team? 4. Who overcomes poor team passing?

# Your code here

Exercise 4.5: Route vs Throw Analysis

Level 4 | Attribution

Attempt to separate route from throw: 1. Use catch rate over expected as "route" proxy 2. Use YAC as "receiver" proxy 3. Combine for total receiver contribution 4. Discuss limitations

# Your code here

Section 5: Situational Analysis (Level 3-4)

Exercise 5.1: Third Down Receiving

Level 3 | Third Down

Analyze third down receiving: 1. Calculate third down targets and catch rate 2. Calculate conversion rate on third down targets 3. Who are the best third down receivers? 4. Is third down performance predictive?

# Your code here

Exercise 5.2: Red Zone Receiving

Level 3 | Red Zone

Analyze red zone receiving: 1. Calculate red zone targets and TDs 2. Calculate TD rate per red zone target 3. Who are the best red zone receivers? 4. How does red zone correlate with overall EPA?

# Your code here

Exercise 5.3: Deep Ball Production

Level 4 | Deep Targets

Analyze deep ball (20+ yards) production: 1. Calculate deep targets, catches, and EPA 2. Deep catch rate vs overall catch rate 3. Who are the best deep threats? 4. Is deep ball production stable?

# Your code here

Exercise 5.4: Contested Catch Estimation

Level 4 | Contested

Estimate contested catch performance: 1. Use tight coverage or low expected catch rate as proxy 2. Calculate performance on "contested" targets 3. Who wins contested catches? 4. Discuss limitations without tracking data

# Your code here

Exercise 5.5: Game Script Effects

Level 4 | Game State

Analyze receiving by game state: 1. Calculate EPA when leading, trailing, close 2. Which receivers excel when trailing (passing situations)? 3. Is there garbage time inflation? 4. Adjust for game script

# Your code here

Section 6: Comprehensive Evaluation (Level 4-5)

Exercise 6.1: Build a Receiver Index

Level 4 | Composite Metric

Create a composite receiver rating: 1. Select 5+ metrics to include 2. Standardize each metric 3. Weight and combine into a single score 4. Validate against team success or fantasy points

# Your code here

Exercise 6.2: Receiver Comparison Tool

Level 4 | Application

Build a receiver comparison tool: 1. Allow input of receiver names 2. Calculate all relevant metrics 3. Generate side-by-side comparison 4. Include visualizations

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

    def compare(self, receiver_list):
        pass

    def generate_report(self):
        pass

Exercise 6.3: Position-Specific Analysis

Level 5 | Position

Analyze by receiver position: 1. Separate WRs from TEs (using roster data or approximation) 2. Compare metrics between positions 3. What makes an elite TE vs elite WR? 4. Create position-appropriate benchmarks

# Your code here

Exercise 6.4: Predictive Model

Level 5 | Prediction

Build a model to predict future receiver performance: 1. Use current season metrics as features 2. Predict next season's yards or EPA 3. Which metrics are most predictive? 4. What is receiver production stability?

# Your code here

Exercise 6.5: Complete Receiver Report

Level 5 | Capstone

Generate a comprehensive scouting report: 1. Select a receiver to analyze deeply 2. Include all metric categories 3. Add situational breakdowns 4. Provide visualizations and narrative summary

# 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