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 |