Key Takeaways: Offensive Line Analytics
One-page reference for Chapter 9 concepts
The O-Line Analytics Challenge
| Challenge |
Implication |
| No direct stats |
Must use outcome proxies |
| Shared responsibility |
Hard to isolate individuals |
| Scheme-dependent |
Zone vs gap affects metrics |
| QB/RB conflation |
Can't perfectly separate |
Team-Level Pass Protection
protection = (passes
.groupby('posteam')
.agg(
dropbacks=('pass_attempt', 'count'),
sacks=('sack', 'sum'),
qb_hits=('qb_hit', 'sum')
)
)
protection['sack_rate'] = protection['sacks'] / protection['dropbacks']
Sack Rate Interpretation
| Sack Rate |
Quality |
| < 4% |
Elite |
| 4-6% |
Above average |
| 6-8% |
Average |
| 8-10% |
Below average |
| > 10% |
Poor |
Team-Level Run Blocking
def calc_stuff_rate(rushes):
return (rushes['yards_gained'] <= 0).mean()
def calc_aly(yards):
if yards < 0: return yards * 1.25
elif yards <= 4: return yards
elif yards <= 10: return 4 + (yards - 4) * 0.5
else: return 4 + 3 + (yards - 10) * 0.25
Stuff Rate Interpretation
| Stuff Rate |
Quality |
| < 15% |
Excellent |
| 15-18% |
Above average |
| 18-22% |
Average |
| 22-25% |
Below average |
| > 25% |
Poor |
Adjusted Line Yards (ALY)
Philosophy: Cap credit for long runs (RB contribution)
| Yards Gained |
Credit |
| Negative |
125% (penalty) |
| 0-4 |
100% |
| 5-10 |
50% |
| 10+ |
25% |
Pressure Definition
pressured = (
(sack == 1) |
(qb_hit == 1) |
(scramble == 1)
)
pressure_rate = pressured.sum() / dropbacks
Data Sources
| Metric |
Source |
| Sacks, hits |
Standard PBP |
| Stuff rate |
Standard PBP |
| Individual grades |
PFF (subscription) |
| Pressures allowed |
PFF, SIS |
| Win rate |
ESPN/NFL |
| Time in pocket |
Next Gen Stats |
Individual Evaluation (Requires Charting)
PFF Grades:
- 90+: All-Pro
- 80-89: Pro Bowl
- 70-79: Starter
- 60-69: Average
- 50-59: Below average
- <50: Backup/replacement
Scheme Effects
| Scheme |
Evaluation Impact |
| Zone |
Collective grade more meaningful |
| Power/Gap |
Individual grades more attributable |
| Mixed |
Requires play-by-play tagging |
What Metrics Capture
| Metric |
Captures |
Misses |
| Sack rate |
Protection failures |
QB holds ball |
| Stuff rate |
Initial blocking |
RB vision |
| ALY |
Blocking yards |
Scheme effects |
| Pressure rate |
All pressure types |
Source of pressure |
Emerging Metrics
- Win Rate: % of blocks won (tracking-based)
- Time to Throw: Pocket duration
- YBC: Yards before contact (blocking quality)
- Pressure probability: Expected vs actual
Common Pitfalls
| Pitfall |
Better Approach |
| All sacks = O-line |
Consider QB decisions |
| High YPC = good blocking |
Check ALY, YBC |
| Team metrics = individual |
Need charting data |
| Ignore scheme |
Context matters |
Evaluation Framework
1. Pass Protection
- Sack rate
- Pressure rate
- Clean pocket EPA
2. Run Blocking
- Stuff rate
- ALY
- Rush success rate
3. Context
- Scheme type
- Opponent quality
- QB/RB contribution
Key Limitations
- Standard PBP lacks individual data
- QB and RB always conflate
- Scheme effects not controlled
- Opponent adjustment difficult
- Sample sizes per lineman small
Preview: Chapter 10
Next: Defensive Analytics — evaluating the 11 players trying to stop everything we've analyzed.