Skip to main content

Extended Elo rating system implementation exploiting the equivalence with logistic regression.

Project description

:chess_pawn: EloGrad

Extended Elo rating system implementation exploiting the equivalence with logistic regression.

EloGrad (Elo as Gradient descent) leverages the framing of the Elo rating system as logistic regression with stochastic gradient descent (see Elo as Logistic Regression for a walkthrough) to offer a collection of extensions to the rating system. All models are scikit-learn compatible.

:sparkles: Features

  • Standard Elo rating system for binary outcomes.
    • pandas and scikit-learn compatible.
    • See examples/nba.ipynb for an example using NBA data.
  • Elo rating system for binary outcomes with additional regressors, e.g. home advantage.
  • Elo rating system for count data based on Poisson regression.

:book: Installation

You can install elo-grad with:

pip install elo-grad

:zap: Quick Start

Detailed example notebooks are provided in the examples/ directory. To install any extra dependencies required to run the notebooks install with:

pip install elo-grad[examples]

:clipboard: Minimal Example

from elo_grad import EloEstimator, Regressor

# Input DataFrame with sorted index of Unix timestamps
# and columns entity_1 | entity_2 | score | home
# where score = 1 if player_1 won and score = 0 if
# player_2 won and home is a boolean flag indicating if
# entity_1 has home advantage.
df = ...
estimator = EloEstimator(
    k_factor=20, 
    default_init_rating=1200,
    entity_cols=("player_1", "player_2"),
    score_col="result",
    init_ratings=dict(home=(None, 0)),
    additional_regressors=[Regressor(name='home', k_factor=0.1)],
)
# Get expected scores
expected_scores = estimator.predict_proba(df)
# Get final ratings (of form (Unix timestamp, rating))
ratings = estimator.model.ratings

:compass: Roadmap

In rough order, things we want to add are:

  • Support for Polars
  • Head-to-head ratings
  • Skellam model support
  • Interaction terms
  • Other optimizers, e.g. momentum
  • Extend plotting support, e.g. plotly
  • Support for handling correlation in scores
  • Explore any ways we can approximate standard errors for the ratings

:blue_book: References

  1. Elo rating system: https://en.wikipedia.org/wiki/Elo_rating_system
  2. Elo rating system as logistic regression with stochastic gradient descent: https://stmorse.github.io/journal/Elo.html
  3. Elo rating system for NFL predictions: https://fivethirtyeight.com/methodology/how-our-nfl-predictions-work/
  4. Elo rating system based on Poisson regression: https://github.com/octonion/puzzles/blob/master/elo/poisson.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elo_grad-0.4.1.tar.gz (689.7 kB view details)

Uploaded Source

Built Distribution

elo_grad-0.4.1-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file elo_grad-0.4.1.tar.gz.

File metadata

  • Download URL: elo_grad-0.4.1.tar.gz
  • Upload date:
  • Size: 689.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.4.20

File hashes

Hashes for elo_grad-0.4.1.tar.gz
Algorithm Hash digest
SHA256 8832afdd1f47e828ca020f9524a55c12c19c9dc43017ebc47ff22c259c3b4f30
MD5 84aabba238dfd6f917896fef5455bc51
BLAKE2b-256 7fe3d54379dc85e7c73ab670bb23e245f261a52b8d2683867667c8ba73f7d770

See more details on using hashes here.

File details

Details for the file elo_grad-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: elo_grad-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.4.20

File hashes

Hashes for elo_grad-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1245b4cfc7c6b649798101cdb05360a24546d96f729a246d5cd7eb20fd1a3c8d
MD5 4eb94cc5650749959f6f30ed6ccb273e
BLAKE2b-256 59f2284cfe9b93a40d30ce1a25411a36c3ba30179dff7009c66ab1e9f18616ba

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page