Implied Odds
[1]:
import sys
sys.path.append("../")
from pprint import pprint
import penaltyblog as pb
import numpy as np
Example starting odds (including overround)
[2]:
odds = [2.7, 2.3, 4.4]
np.sum(1 / np.array(odds))
[2]:
1.0324257063387499
Remove the overround using basic multiplicative method
[3]:
normalised = pb.implied.multiplicative(odds)
pprint(normalised)
{'implied_probabilities': array([0.35873804, 0.42112726, 0.2201347 ]),
'margin': 0.03242570633874986,
'method': 'multiplicative'}
[4]:
np.sum(normalised["implied_probabilities"])
[4]:
0.9999999999999999
Remove the overround using additive method
[5]:
normalised = pb.implied.additive(odds)
normalised
[5]:
{'implied_probabilities': array([0.3595618 , 0.42397404, 0.21646416]),
'method': 'additive',
'margin': 0.03242570633874986}
[6]:
np.sum(normalised["implied_probabilities"])
[6]:
1.0
Remove the overround using power method
[7]:
normalised = pb.implied.power(odds)
normalised
[7]:
{'implied_probabilities': array([0.3591711 , 0.42373075, 0.21709815]),
'method': 'power',
'k': 1.0309132393169356,
'margin': 0.03242570633874986}
[8]:
np.sum(normalised["implied_probabilities"])
[8]:
0.9999999999989682
Remove the overround using Shin’s method
[9]:
normalised = pb.implied.shin(odds)
normalised
[9]:
{'implied_probabilities': array([0.35934392, 0.42324385, 0.21741223]),
'method': 'shin',
'z': 0.016236442857291165,
'margin': 0.03242570633874986}
[10]:
np.sum(normalised["implied_probabilities"])
[10]:
0.9999999999990125
Remove the overround using Joseph Buchdahl’s margin weights proportional to the odds approach
[11]:
normalised = pb.implied.differential_margin_weighting(odds)
normalised
[11]:
{'implied_probabilities': array([0.3595618 , 0.42397404, 0.21646416]),
'method': 'differential_margin_weighting',
'margin': 0.03242570633874986}
[12]:
np.sum(normalised["implied_probabilities"])
[12]:
0.9999999999999998
Remove the overround using Keith Cheung’s odds ratio approach
[13]:
normalised = pb.implied.odds_ratio(odds)
normalised
[13]:
{'implied_probabilities': array([0.35881036, 0.42256142, 0.21862822]),
'method': 'odds_ratio',
'c': 1.05116912729218,
'margin': 0.03242570633874986}
[14]:
np.sum(normalised["implied_probabilities"])
[14]:
1.000000000000595