Possession Value Models
Advanced
10 min read
245 views
Nov 25, 2025
Possession Value Models
Advanced frameworks for valuing possession and ball progression. This chapter explores on-the-ball value (OBV), expected threat (xT) models, and VAEP frameworks. Learn how to quantify action value in different contexts.
Topics Covered
- Possession value frameworks
- Pitch control and territory
- On-the-ball value (OBV)
- Expected threat (xT) models
- VAEP (Valuing Actions by Estimating Probabilities)
- Action value in different contexts
Code Examples
Calculate Corsi
Calculate Corsi For Percentage (CF%) - a hockey possession metric
def calculate_corsi(shots_for, shots_against, goals_for, goals_against,
missed_for, missed_against, blocked_for, blocked_against):
"""Calculate Corsi For Percentage"""
cf = shots_for + goals_for + missed_for + blocked_for
ca = shots_against + goals_against + missed_against + blocked_against
if cf + ca == 0:
return 50.0
cf_pct = (cf / (cf + ca)) * 100
return round(cf_pct, 1)
# Example: Team with 60 CF, 45 CA
corsi = calculate_corsi(30, 25, 3, 2, 15, 10, 12, 8)
print(f"CF%: {corsi}%") # Should be above 50% (good)
Discussion
Have questions or feedback? Join our community discussion on
Discord or
GitHub Discussions.
Table of Contents
Related Topics
Quick Actions