Getting Started¶
A quick tour of pyrf's core functionality.
Create a Distribution¶
from pyrf.models import Poisson, DixonColes
# Single team goal distribution
home = Poisson(lambda_=1.8)
away = Poisson(lambda_=1.2)
# Joint match model with Dixon-Coles adjustment
model = DixonColes(lambda_home=1.8, lambda_away=1.2, rho=-0.10)
Compute Probabilities¶
from pyrf.core import GoalGrid
grid = GoalGrid.default()
pmf = model.pmf(grid) # probability mass function over all scorelines
Build a Quote¶
from pyrf.market import Quote, Market
quote = Quote.build(
market=Market.TOTAL_GOAL,
line=2.5,
over_odds=1.90,
under_odds=2.00,
)
print(quote.implied_margin())
Calculate Payoffs¶
from pyrf.payoffs import TotalGoals
from pyrf.market import QuotedLine
surface = TotalGoals(line=QuotedLine(value=2.5))
implied = surface.implied_odds(model, grid)
print(implied)
Calibrate from Market Data¶
model = DixonColes.calibrate(
tg_quote=tg_quote,
ah_quote=ah_quote,
rho=-0.10,
)
Visualise¶
model.plot() # heatmap of the joint PMF
For more detail, see the User Guide or explore the Marimo Notebooks.