Skip to content

gotoConversion/goto_conversion

Repository files navigation

goto_conversion - Used by 4+ Gold Medal Solutions on Kaggle

goto_conversion has been a leverage for at least four 🥇 gold-medal-winning solutions and many other medal-winning solutions on Kaggle [6,7]. They include:

Outside of Kaggle, goto_conversion has achieved:

Ease of Use

To use goto_conversion, it does not require historical data for model fit, advanced domain knowledge, nor paid computational resources. Linked below is an example of how to use goto_conversion in the freely available, Google Colab.

Open in Colab

Abstract

The most common method used to convert gambling odds to probabilities is to normalise the inverse odds (Multiplicative conversion). However, this method does not consider the favourite-longshot bias.

To the best of our knowledge, there are two existing methods that attempt to consider the favourite-longshot bias. (i) Shin conversion [1,2,3] maximises the expected profit for the bookmakers assuming a small proportion of bettors have inside information. (ii) Power conversion [4] raises all inverse odds to the same constant power.

Our proposed method, Gambling Odds To Outcome probabilities Conversion (goto_conversion) reduces all inverse odds by the same units of standard error. This attempts to consider the favourite-longshot bias by utilising the proportionately wider standard errors implied for inverses of longshot odds and vice-versa. Our experiments show goto_conversion converts gambling odds to probabilities more robustly than all three of these existing methods.

This package is an implementation of goto_conversion as well as efficient_shin_conversion. The Shin conversion is originally a numerical solution but according to Kizildemir 2024 [5], we can enhance its efficiency by reduction to an analytical solution. We have implemented the enhanced Shin conversion proposed by Kizildemir 2024 as efficient_shin_conversion in this package.

The favourite-longshot bias is not limited to gambling markets, it exists in stock markets too. Thus, we applied the original goto_conversion to stock markets by defining the zero_sum variant. Under the same philosophy as the original goto_conversion, zero_sum adjusts all predicted stock prices (e.g. weighted average price) by the same units of standard error to ensure all predicted stock prices relative to the index price (e.g. weighted average nasdaq price) sum to zero. This attempts to consider the favourite-longshot bias by utilising the wider standard errors implied for predicted stock prices with low trade volume and vice-versa.

Installation

Requires Python 3.7 or above.

pip install goto-conversion

Usage

Decimal Odds

import goto_conversion
goto_conversion.goto_conversion([1.2, 3.4, 5.6])
[0.7753528189788175, 0.17479473292721065, 0.04985244809397199]

American Odds

import goto_conversion
goto_conversion.goto_conversion([-500, 240, 460], isAmericanOdds = True)
[0.7753528189788175, 0.17479473292721065, 0.04985244809397199]

Numpy array inputs will return numpy array outputs

import goto_conversion
import numpy as np
goto_conversion.goto_conversion(np.array([1.2, 3.4, 5.6]))
[0.77535282 0.17479473 0.04985245]

Test cases for efficient_shin_conversion

import goto_conversion
print(goto_conversion.efficient_shin_conversion([1.22,4.57,6.54]))
print(goto_conversion.efficient_shin_conversion([1.22,4.63,6.38]))
print(goto_conversion.efficient_shin_conversion([1.17,4.97,7.57]))
[0.8005889182988829, 0.13614976602243348, 0.0632613156786835]
[0.8004787158953608, 0.1325348922189233, 0.0669863918857159]
[0.8396249156189404, 0.11832615760257503, 0.04204892677848464]

Notice the printed probability lists match the first three rows of table 1 in Kizildemir 2024 [6].

Pseudo Code

alt text

References

[1] H. S. Shin, “Prices of State Contingent Claims with Insider traders, and the Favorite-Longshot Bias”. The Economic Journal, 1992, 102, pp. 426-435.

[2] E. Štrumbelj, "On determining probability forecasts from gambling odds". International Journal of Forecasting, 2014, Volume 30, Issue 4, pp. 934-943.

[3] M. Berk, "Python implementation of Shin's method for calculating implied probabilities from bookmaker odds"

[4] S. Clarke, S. Kovalchik, M. Ingram, "Adjusting bookmaker’s odds to allow for overround". American Journal of Sports Science, 2017, Volume 5, Issue 6, pp. 45-49.

[5] Kizildemir, M., Akin, E., & Alkan, A. (2024). A Family of Solutions Related to Shin’s Model For Probability Forecasts. Cambridge Open Engage

[6] goto_conversion's Kaggle Profile

[7] Kaggle Main Page

Contact Me

via LinkedIn Message: https://www.linkedin.com/in/goto/