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 🚀
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
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
Metadata Files
README.md
Penalty Blog
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:
- Processing football event data with MatchFlow
- Scraping football data
- Predicting football matches and betting markets
- Estimating implied odds from bookmaker prices
- Calculating Massey, Colley, Pi, and Elo ratings
- Calculating metrics such as Ranked Probability Scores
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
- Website: www.pena.lt/y/blog
- Repositories: 13
- Profile: https://github.com/martineastwood
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 | 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 |
Committer Domains (Top 20 + Academic)
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
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
- Homepage: https://github.com/martineastwood/penaltyblog
- Documentation: https://penaltyblog.readthedocs.io/
- License: mit
-
Latest release: 1.5.1
published 6 months ago
Rankings
Maintainers (1)
Dependencies
- 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
- 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
- actions/checkout v4 composite
- actions/setup-python v4 composite
- codecov/codecov-action v5 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- pypa/gh-action-pypi-publish release/v1 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite