https://github.com/martineastwood/penaltyblog

⚽ High-performance football analytics toolkit: build data pipelines, scrape data, model matches, rank teams, and bet smarter | Powered by pena.lt/y/blog 🚀

https://github.com/martineastwood/penaltyblog

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    2 of 6 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.8%) to scientific vocabulary

Keywords

betting-strategies cython data-science elo-rating fantasy-football football football-data match-prediction match-predictions pi-rating poisson-model predictive-modeling python ranked-probability-score soccer sports-analytics sports-betting
Last synced: 5 months ago · JSON representation

Repository

⚽ High-performance football analytics toolkit: build data pipelines, scrape data, model matches, rank teams, and bet smarter | Powered by pena.lt/y/blog 🚀

Basic Info
  • Host: GitHub
  • Owner: martineastwood
  • License: mit
  • Language: Python
  • Default Branch: master
  • Homepage: http://pena.lt/y/blog
  • Size: 7.63 MB
Statistics
  • Stars: 101
  • Watchers: 10
  • Forks: 14
  • Open Issues: 1
  • Releases: 13
Topics
betting-strategies cython data-science elo-rating fantasy-football football football-data match-prediction match-predictions pi-rating poisson-model predictive-modeling python ranked-probability-score soccer sports-analytics sports-betting
Created over 4 years ago · Last pushed 6 months ago
Metadata Files
Readme Roadmap

README.md

Penalty Blog

[![Python Version](https://img.shields.io/pypi/pyversions/penaltyblog)](https://pypi.org/project/penaltyblog/) [![PyPI](https://img.shields.io/pypi/v/penaltyblog.svg)](https://pypi.org/project/penaltyblog/) [![Downloads](https://static.pepy.tech/badge/penaltyblog)](https://pepy.tech/project/penaltyblog) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Code style: pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
Penalty Blog Logo

penaltyblog: Football Data & Modelling Made Easy

penaltyblog is a production-ready Python package designed for football (soccer) analytics, providing powerful tools from pena.lt/y/blog for data analysis, outcome modelling, and betting insights. Optimized with Cython, penaltyblog delivers high-performance modelling to power faster, efficient predictions.

Features

  • 🔄 Streamline JSON Workflows with MatchFlow: Process nested football data using a lazy, streaming pipeline built for JSON. Filter, select, flatten, join, group, and summarize large datasets without loading everything into memory.
  • 📊 Model Matches Efficiently: High-performance implementations of Poisson, Bivariate Poisson, Dixon-Coles, and other advanced statistical models, optimized with Cython for rapid analysis.
  • Scrape Data: Collect match statistics from sources like FBRef, Understat, Club Elo, and Fantasy Premier League.
  • 💰 Bet Smarter: Precisely estimate probabilities for Asian handicaps, over/under totals, match outcomes, and more.
  • 🏆 Rank Teams: Evaluate team strengths with sophisticated methods including Elo, Massey, Colley, and Pi ratings.
  • 📈 Decode Bookmaker Odds: Accurately extract implied probabilities by removing bookmaker margins (overrounds).
  • 🎯 Fantasy Football Optimisation: Mathematically optimize your fantasy football squad to maximize performance.
  • 🎨 Visualize with Style: Create publication-ready pitch visualizations and data flow diagrams with customizable themes, supporting multiple data providers and flexible layouts.

Take your football analytics and betting strategy to the next level with penaltyblog 🚀

Installation

bash pip install penaltyblog

Documentation

Learn more about how to utilize penaltyblog by exploring the official documentation and detailed examples:

Why Penaltyblog?

Unlike many football analytics resources that are academic, one-off, or hard to scale, penaltyblog is designed from the ground up to be production-ready, performance-optimized, and practically useful.

It combines advanced statistical models, efficient implementations (via Cython), and real-world workflows, from scraping public data to modelling outcomes and optimising fantasy teams.

Built by Martin Eastwood, who has worked with football clubs, governing bodies, and player agencies worldwide, penaltyblog is the foundation for football analytics.

Whether you're a club analyst, independent researcher, or just data-curious, penaltyblog gives you the tools to go from data to insight - fast, flexibly, and with confidence.

Support & Collaboration

If you're working at a football club, agency, or organisation and want help applying these tools to your own data or workflows, I'm open to:

  • 📂 Integration support
  • 🔧 Custom model development
  • 🧠 Technical collaboration on football analytics projects

➡️ Get in touch here

Owner

  • Login: martineastwood
  • Kind: user
  • Location: United Kingdom

GitHub Events

Total
  • Create event: 10
  • Release event: 8
  • Issues event: 5
  • Watch event: 34
  • Delete event: 1
  • Issue comment event: 2
  • Push event: 297
  • Fork event: 6
Last Year
  • Create event: 10
  • Release event: 8
  • Issues event: 5
  • Watch event: 34
  • Delete event: 1
  • Issue comment event: 2
  • Push event: 297
  • Fork event: 6

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 143
  • Total Committers: 6
  • Avg Commits per committer: 23.833
  • Development Distribution Score (DDS): 0.231
Top Committers
Name Email Commits
Martin Eastwood m****d@o****k 110
Martin Eastwood m****n@M****l 11
Martin Eastwood m****n@M****l 9
Martin Eastwood m****d@g****m 5
Ubuntu u****u@i****l 5
Ubuntu u****u@i****l 3

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 13
  • Total pull requests: 0
  • Average time to close issues: 3 months
  • Average time to close pull requests: N/A
  • Total issue authors: 10
  • Total pull request authors: 0
  • Average comments per issue: 2.15
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • wormwood (2)
  • Chigstardan (2)
  • hedonistrh (2)
  • monokizsolt (1)
  • patem2 (1)
  • lgaggini (1)
  • aftershock9 (1)
  • ssoulless (1)
  • frogman141 (1)
  • nachimbol (1)
  • Pincopiotta (1)
  • arthurfleck-jpg (1)
Pull Request Authors
Top Labels
Issue Labels
enhancement (3) bug (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 5,229 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 28
  • Total maintainers: 1
pypi.org: penaltyblog

Football (soccer) Data & Modelling Made Easy

  • Versions: 28
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 5,229 Last month
Rankings
Stargazers count: 9.8%
Dependent packages count: 10.1%
Downloads: 11.4%
Average: 13.2%
Forks count: 13.3%
Dependent repos count: 21.6%
Maintainers (1)
Last synced: 6 months ago

Dependencies

docs/requirements.txt pypi
  • Pygments ==2.12.0
  • Sphinx ==5.1.1
  • ipython ==8.4.0
  • nbsphinx ==0.8.9
  • numpydoc ==1.4.0
  • sphinx-rtd-theme ==1.0.0
pyproject.toml pypi
  • Pygments ^2.12.0 develop
  • Sphinx ^5.1.1 develop
  • black ^22.6.0 develop
  • bumpversion ^0.6.0 develop
  • coverage ^6.4.2 develop
  • coveralls ^3.3.1 develop
  • ipython ^8.4.0 develop
  • jupyterlab ^3.4.4 develop
  • jupyterlab-code-formatter ^1.5.2 develop
  • nbsphinx ^0.8.9 develop
  • numpydoc ^1.4.0 develop
  • pre-commit ^2.20.0 develop
  • pytest ^7.1.2 develop
  • sphinx-rtd-theme ^1.0.0 develop
  • PuLP ^2.6.0
  • cssselect ^1.1.0
  • lxml ^4.9.1
  • numpy ^1.23.1
  • pandas ^1.4.3
  • python >=3.8, <3.12
  • scipy ^1.9.0
  • selenium ^4.3.0
  • webdriver-manager ^3.8.3
.github/workflows/coverage.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v4 composite
  • codecov/codecov-action v5 composite
.github/workflows/publish.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v4 composite
  • pypa/gh-action-pypi-publish release/v1 composite
.github/workflows/test.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v4 composite
setup.py pypi