Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

0.15.1 - 2026-07-28

Compare with 0.15.0

Docs

  • amend the constitution to 2.4.0 for plain writing (f6fc2a2 by georgedouzas).
  • rewrite the documentation and examples in plain English (4f08106 by georgedouzas).

0.15.0 - 2026-07-27

Compare with 0.14.0

Features

  • execution as one pipeline, four steps, both modes (ee6d72d by georgedouzas).
  • execute the value bets one match at a time (2b96ceb by georgedouzas).
  • the tools reach what the commands reach (36a26a8 by georgedouzas).
  • follow the money, and drive a site an agent can place at (6249397 by georgedouzas).
  • place the bets a model found, at a venue with a betting API (4a33ac1 by georgedouzas).

Bug Fixes

  • make execution status work on a single bet's identity (98f7cef by georgedouzas).
  • read the football-data index against beautifulsoup 4.13 (2b693bc by georgedouzas).

Docs

  • give the odds-api example a placeholder key (19d2dc2 by georgedouzas).
  • amend the constitution to 2.3.0 and restructure for clarity (51f8c91 by georgedouzas).
  • show the single-event unit in the execution example and guide (31dd959 by georgedouzas).
  • amend the constitution to 2.2.0 with the sweep's lessons (1007cbe by georgedouzas).
  • restructure the constitution into a repo-agnostic body and a project profile (d1f19f3 by georgedouzas).
  • tighten source docstrings and extend the docstring rules (64bb490 by georgedouzas).
  • describe source content in docstrings and amend the constitution (021c69d by georgedouzas).
  • conform core docstrings to Principle VI (272d64b by georgedouzas).
  • single-line docstrings for the snapshot hooks (c2823df by georgedouzas).
  • name what dataloaders/_base is, not what its class does (843c60d by georgedouzas).
  • plainer package docstrings for dataloaders and sources (7a71903 by georgedouzas).
  • fold the conventions into the constitution, drop CONVENTIONS.md (a3f059a by georgedouzas).
  • complete the rename ledger for the conformance sweep (6ba4261 by georgedouzas).
  • rewrite the reconciliation docs to the current resolve_odds API (d987f6b by georgedouzas).
  • require plain English in docstrings, and apply it (c7f64ac by georgedouzas).
  • specify the conventions-conformance refactor (speckit 007) (a99366a by georgedouzas).
  • adopt the code conventions as constitution Principle VI (8a1dcbb by georgedouzas).
  • a runnable execution example, and two bugs it found (7748835 by georgedouzas).
  • show placement in the README, with real tool output (1c7be4d by georgedouzas).
  • the execution page, leading with what it costs (e96b53c by georgedouzas).
  • break bet execution into tasks (ea9f722 by georgedouzas).
  • specify and plan bet execution (06afaa7 by georgedouzas).
  • sync the constitution to the surfaces that exist (8aa8ac9 by georgedouzas).

Code Refactoring

  • keep the core helpers in one _utils module (9e20de8 by georgedouzas).
  • conform all of src to the constitution's code conventions (326b124 by georgedouzas).
  • conform sources to Principle VI (6804b0e by georgedouzas). BREAKING CHANGE: source methods index_items/catalogue/available_params/required_items/fixtures_items are now list_index_items/read_catalogue/list_available_params/list_required_items/list_fixtures_items; schema methods snapshot_cols/col_metadata/odds_cols are now list_snapshot_cols/get_col_metadata/list_odds_cols; and OddsApi(key=...) is now OddsApi(key_env=...).
  • conform dataloaders to Principle VI and sharpen the naming rule (e5aaf7d by georgedouzas). BREAKING CHANGE: the dataloader properties sources and sport are now sources_ and sport_.
  • privatize dataloaders/_base helpers, move event-time grammar to core (9331ee3 by georgedouzas).
  • make load_object a public core utility (7f11c83 by georgedouzas).
  • a core subpackage of shared leaves, builders with what they build (968e4ea by georgedouzas).
  • rework the factory, dataloader persistence and model selection (8fb4971 by georgedouzas).
  • drop the dead max_unmatched_rate parameter (38eb5e9 by georgedouzas).
  • conform the mcp package to Principle VI (59fad03 by georgedouzas).
  • conform the cli package to Principle VI (7c9615b by georgedouzas).
  • conform the selection and artifacts glue to Principle VI (d52144b by georgedouzas).
  • conform the execution package to Principle VI (b7668cf by georgedouzas).
  • conform the evaluation package to Principle VI (fee4516 by georgedouzas).
  • conform the dataloaders package to Principle VI (109583a by georgedouzas).
  • conform the sources package to Principle VI (4345af2 by georgedouzas).
  • restore the source reorganization to green (ed0c53a by georgedouzas). Full gate green: formatting, checks and tests on 3.11, 3.12 and 3.13.
  • ship no bookmaker, the venue is the user's (be18a8c by georgedouzas).

Chore

  • Release 0.15.0 (36ef644 by georgedouzas).
  • point speckit at the conventions-conformance feature (41dcc62 by georgedouzas).

0.14.0 - 2026-07-16

Compare with 0.13.1

Features

  • Show the results of a command as a table (03c870c by georgedouzas).
  • Add an MCP server, so an assistant can drive the library (2230389 by georgedouzas).
  • Add the NBA as a second basketball league (fd6997d by georgedouzas).
  • Add basketball, starting with the EuroLeague (71381d1 by georgedouzas).
  • Reconcile two sources, and refuse a dataset with holes in it (c35e3b6 by georgedouzas).
  • Add the odds source backed by The Odds API (a10fc83 by georgedouzas).
  • Make date the kick-off instant in UTC (d6c7e6a by georgedouzas).
  • Replace the mirrored dataset with pluggable data sources (b4e8ae0 by georgedouzas).

Bug Fixes

  • pass the test suite on Windows (bbff2a9 by georgedouzas).
  • Do not let the features run past the odds they are bet against (6f07100 by georgedouzas).
  • Read the catalogue once, and stop the manifest growing forever (affe495 by georgedouzas).
  • Drop the fake sport from the CLI, and stop the messages lecturing (774eb33 by georgedouzas).
  • Make the CLI reach the whole API, and fix four bugs it exposed (5fd6afa by georgedouzas).
  • Do not report a club that belongs to another competition (96d93ca by georgedouzas).
  • Derive the complementary markets from the data (e817c5d by georgedouzas).
  • Rebuild the derived data when the transform or the upstream changes (118988f by georgedouzas).

Docs

  • rewrite the user guide and README, concise and positive (e67d049 by georgedouzas).
  • rework the example gallery (cf2303c by georgedouzas).
  • give Interfaces its own landing page (66bba2b by georgedouzas).
  • rerun and expand the README chat; docstrings say what things do (116ec98 by georgedouzas).
  • simpler README example, and docstrings that say what things do (d3e244d by georgedouzas).
  • consolidate the practice guides into one section (2c0adf1 by georgedouzas).
  • an interfaces menu, a betting guide, and a lighter README (f6c9b4e by georgedouzas).
  • write the README the way it reads best (e9277a0 by georgedouzas).
  • fix the warnings the documentation build emits (16c5b3b by georgedouzas).
  • Make the assistant a first-class way into the library (4908b4a by georgedouzas).
  • Show what the examples print (7b3b3b8 by georgedouzas).
  • Give the CLI the same example as the Python API (1f77b06 by georgedouzas).
  • Say what the CLI does, not what it is not (9b9d97d by georgedouzas).
  • Rewrite the betting theory, with the mathematics written out (397a86d by georgedouzas).
  • Document the surfaces, and the two breaking changes (7a3c6df by georgedouzas).
  • Document the extension surface with runnable examples (2c27189 by georgedouzas).

Code Refactoring

  • scikit-learn init style, and remove dead code (2d4d879 by georgedouzas).
  • Pair the rosters of a league, rather than a name against every club (3d05d04 by georgedouzas).
  • Move parameter discovery from the dataloader to the source (9b78e1f by georgedouzas).

Chore

  • Release 0.14.0 (3ffbd6c by georgedouzas).

0.13.1 - 2026-07-10

Compare with 0.13.0

Bug Fixes

  • Drop nptyping so numpy can move to 2.x (20cc10a by georgedouzas).

Chore

  • Release 0.13.1 (bb63246 by georgedouzas).

0.13.0 - 2026-07-10

Compare with 0.12.1

Features

  • Add an input horizon and factory construction functions (a04a0c8 by georgedouzas).
  • Expose target moment in CLI and GUI (364d7b0 by georgedouzas).
  • Adapt bettors to moment-aware X/Y/O (d33d330 by georgedouzas).
  • Add soccer and offline dummy snapshot dataloaders (c4dda0b by georgedouzas).
  • Add moment-aware event-snapshot data model (d2237da by georgedouzas).
  • Validate pandas schema (05470ca by georgedouzas).
  • Modify base class (9fcdb3c by georgedouzas).

Bug Fixes

  • Pass the full odds data to bet when scoring (d92f245 by georgedouzas).
  • Discover feed parameters from a manifest (1631b4f by georgedouzas).
  • Make the soccer feed robust to empty fixtures (f4f59e6 by georgedouzas).

Docs

  • Fix stale betting_markets grammar in the README (7864397 by georgedouzas).
  • Document all bettor parameters and the grid search (82226c3 by georgedouzas).
  • Fix the ambiguous user-guide cross-reference (16737ed by georgedouzas).
  • Expand the dataloader guide and add an end-to-end guide (9ee55ea by georgedouzas).
  • Document long-format snapshots and consumption (6b1dbae by georgedouzas).
  • Use market_average provider in bettor examples (090ec29 by georgedouzas).
  • Align spec-kit gate docs with copier update (ef602ec by georgedouzas).
  • Update guides and changelog for in-play model (1cbc2b0 by georgedouzas).

Code Refactoring

  • Drop the test-only engine helper from source (506af4b by georgedouzas).
  • Move the factory functions to a dedicated module (12a6936 by georgedouzas).
  • Make BaseDataLoader abstract and drop from_csv (946b61a by georgedouzas).
  • Make all dataloaders inherit BaseDataLoader directly (6f73027 by georgedouzas).
  • Read long-format snapshots and derive schemas (5f64d6a by georgedouzas).
  • Simplify comments and constants (e6f6958 by georgedouzas).

Tests

  • Flatten base tests and quiet the untyped-body note (5692618 by georgedouzas).
  • Cover long-format loader and data consumption (025cbcc by georgedouzas).

Chore

  • Release 0.13.0 (d069bd1 by georgedouzas).
  • Update copier template (1609d73 by georgedouzas).
  • Add spec-kit tooling and in-play feature specs (222f2fb by georgedouzas).
  • Configure bandit for the checks session (61d3c12 by georgedouzas).
  • Change to correct template name (eb8a572 by georgedouzas).
  • Do not build source distribution (2fc301b by georgedouzas).

0.12.1 - 2025-12-07

Compare with 0.12.0

Chore

  • Release 0.12.1 (56cc79b by georgedouzas).
  • Change distribution name (de7cf6f by georgedouzas).

0.12.0 - 2025-12-07

Compare with 0.11.3

Features

  • Modify supported Python versions (73fff83 by georgedouzas).

Docs

  • Fix list indentation (d8b8aed by georgedouzas).

Chore

  • Release 0.12.0 (5226c64 by georgedouzas).
  • Fix type errors (82ff5f4 by georgedouzas).

0.11.3 - 2025-05-18

Compare with 0.11.2

Bug Fixes

  • Remove redundant file (f24cc63 by georgedouzas).

Tests

  • Add CLI runner (2cff9a6 by georgedouzas).

Chore

  • Release 0.11.3 (5b0af64 by georgedouzas).
  • Update copier template (32579b1 by georgedouzas).

0.11.2 - 2025-03-16

Compare with 0.11.1

Chore

  • Release 0.11.2 (a03a4f9 by georgedouzas).
  • Release 0.11.1 (b62c6a9 by georgedouzas).
  • Clean .states directory (9af162a by georgedouzas).

0.11.1 - 2025-03-16

Compare with 0.11.0

Bug Fixes

  • Downgrade reflex version to 0.7.0 (6f077a9 by georgedouzas).

Code Refactoring

  • Modify to pass checks (b9b69aa by georgedouzas).

Chore

  • Release 0.11.1 (94194dc by georgedouzas).

0.11.0 - 2025-01-14

Compare with 0.10.0

Features

  • Make GUI responsive (9d17c35 by georgedouzas).

Docs

  • Include screenshots and descriptions from updated GUI (bc7ef79 by georgedouzas).
  • Fix broken README links (12589f0 by georgedouzas).

Chore

  • Release 0.11.0 (9211a91 by georgedouzas).
  • Update reflex dependencies (87ba394 by georgedouzas).

0.10.0 - 2025-01-11

Compare with 0.9.3

Features

  • Implement full GUI functionality (7a910ee by georgedouzas).
  • Add model creation to GUI (33dab84 by georgedouzas).
  • Create script to run app (ababb94 by georgedouzas).
  • Implement bot functionality (c03bd2a by georgedouzas).
  • Implement data functionality of GUI (0af3510 by georgedouzas).
  • Initial GUI implementation (6646395 by georgedouzas).

Docs

  • Update README to include GUI description (b18b91b by georgedouzas).
  • Exclude GUI from API documentation (11fa52d by georgedouzas).

Code Refactoring

  • Use common state for dataloader (dcb2ba5 by georgedouzas).
  • Implement modules for components and states (8be2a51 by georgedouzas).
  • Remove directories (0932445 by georgedouzas).
  • Use simpler structure (e97d499 by georgedouzas).
  • Split dataloader funcionality to multiple pages (e87cad5 by georgedouzas).

Chore

  • Release 0.10.0 (a043b41 by georgedouzas).
  • Modify default dataloader settings (92066ba by georgedouzas).
  • Increase timeout for backtesting functionality (138246e by georgedouzas).
  • Ignore gui from testing (fcad0aa by georgedouzas).
  • Change base classes to public (d646258 by georgedouzas).
  • Make gui dependencies optional (c53bf7c by georgedouzas).
  • Clean .web directory (40159d8 by georgedouzas).
  • Add reflex-ag-grid dependency (6c1017b by georgedouzas).
  • Renamed GUI app (c33d575 by georgedouzas).

0.9.3 - 2024-12-12

Compare with 0.9.2

Bug Fixes

  • Update scikit-learn minimum version (7b4b6f2 by georgedouzas).

Docs

  • Fix doctests (cbaa5ac by georgedouzas).

Chore

  • Release 0.9.3 (2d43b44 by georgedouzas).
  • Use correct pytest options (721591a by georgedouzas).
  • Update copier template (9fb983b by georgedouzas).

0.9.2 - 2024-12-09

Compare with 0.9.1

Bug Fixes

  • Include current date to fixtures (fc7d2c1 by georgedouzas).

Style

  • Sort imports (4edc0f4 by georgedouzas).

Chore

  • Release 0.9.2 (ed04c81 by georgedouzas).
  • Fix ruff check errors (3fc21c7 by georgedouzas).
  • Update copier template (4d052d4 by georgedouzas).

0.9.1 - 2024-07-01

Compare with 0.9.0

Bug Fixes

  • Use correct repo to download data (f9ce528 by georgedouzas).

Docs

  • Modify description (bbb4874 by georgedouzas).
  • Remove redundant link (e435047 by georgedouzas).

Chore

  • Release 0.9.1 (58ef3d0 by georgedouzas).

0.9.0 - 2024-07-01

Compare with 0.8.1

Features

  • Implement bettor grid search (08ecb8f by georgedouzas).

Bug Fixes

  • Add strict=True (461e5a4 by georgedouzas).
  • Use parameters from config file (06e46dc by georgedouzas).

Docs

  • Add class link (b7376d1 by georgedouzas).
  • Simplify attribute description (add2cf3 by georgedouzas).
  • Remove sports-betting-data (7cf877b by georgedouzas).
  • Fix README template and CHANGELOG (96368dd by georgedouzas).

Tests

  • Match regex for all Python versions (3ff9b8d by georgedouzas).
  • Ignore type comparison (a488d77 by georgedouzas).

Chore

  • Release 0.9.0 (cf657ae by georgedouzas).
  • Make it compatible to new Python versions (f20e27f by georgedouzas).
  • Update dependencies (2d3d1f5 by georgedouzas).
  • Remove support for Python 3.9 (a1ec03a by georgedouzas).
  • Remove non used group (4c31432 by georgedouzas).
  • Support Python 3.11 and 3.12 (c365e01 by georgedouzas).
  • Remove script to generate results (a5cdfe1 by georgedouzas).
  • Remove duplicate docstring (7cd1416 by georgedouzas).
  • Predictions 29/03/2024 (de32b51 by georgedouzas).
  • Predictions 24/03/2024 (3b64b79 by georgedouzas).
  • Predictions 16/03/2024 (ea644d5 by georgedouzas).
  • Follow private module convention (bfcb854 by georgedouzas).
  • Decrease number of splits of TimeSeriesSplit (c045834 by georgedouzas).
  • Predictions 13/03/2024 (3120e91 by georgedouzas).
  • Predictions 11/03/2024 (1503f88 by georgedouzas).
  • Update copier template and Github workflows (f38468d by georgedouzas).

0.8.1 - 2024-03-08

Compare with 0.8.0

Bug Fixes

  • Decode response and convert data types (55f6c33 by georgedouzas).

Docs

  • Fix README typo (5477a30 by georgedouzas).

Chore

  • Release 0.8.1 (33fe943 by georgedouzas).
  • Sort imports (0940efc by georgedouzas).
  • Silence ruff usage and configuration warnings (e85e56f by georgedouzas).
  • Predictions 13/10/2023 (77a3a72 by georgedouzas).
  • Predictions 03/10/2023 (6af121b by georgedouzas).
  • Skip session if fixtures data are empty (00d3eeb by georgedouzas).

0.8.0 - 2023-09-29

Compare with 0.7.0

Features

  • Use footballdata only for data source (582d547 by georgedouzas).

Style

  • Split line (6b93930 by georgedouzas).

Chore

  • Release 0.8.0 (b611337 by georgedouzas).
  • Ignore warnings (6b78adc by georgedouzas).
  • Update Pandas dependency (51a9a13 by georgedouzas).
  • Update copier template (a724b9e by georgedouzas).

0.7.0 - 2023-09-23

Compare with 0.6.0

Features

  • Create script to update results (c7a274f by georgedouzas).
  • Simplify CLI functionality (fdcc171 by georgedouzas).

Bug Fixes

  • Use GB classifier instead of RF classifier (e14bd71 by georgedouzas).

Docs

  • Fix wrong description (e90e23e by georgedouzas).

Chore

  • Release 0.7.0 (4e5545f by georgedouzas).
  • Add more descriptive names for columns (833a84e by georgedouzas).

0.6.0 - 2023-09-21

Compare with 0.5.1

Features

  • Include daily tips (5df1910 by georgedouzas).

Style

  • Apply ruff guide (bcc40b4 by georgedouzas).
  • Split long line (2148c1c by georgedouzas).

Chore

  • Release 0.6.0 (5d647d7 by georgedouzas).
  • Modify type aliases (e719d06 by georgedouzas).
  • Update copier template to 0.6.8 (7f5c484 by georgedouzas).

0.5.1 - 2023-06-05

Compare with 0.5.0

Bug Fixes

  • Create missing directories for configuration data (bd9dd9f by georgedouzas).

Docs

  • Update information (d581fc5 by georgedouzas).

Chore

  • Release 0.5.1 (4355bef by georgedouzas).

0.5.0 - 2023-04-27

Compare with 0.4.0

Features

  • Implement async downloading of data (a600307 by georgedouzas).

Docs

  • Fix wrong issues link (06cfb4c by georgedouzas).
  • Relax condition for numerical columns (2aa53fb by georgedouzas).

Chore

  • Release 0.5.0 (9cda706 by georgedouzas).
  • Add github workflow for CI and documentation (1052fab by georgedouzas).
  • Automate release process (adebdaa by georgedouzas).

0.4.0 - 2023-04-25

Compare with 0.3.1

Features

  • Add configs for dataloaders and bettors (73ba86d by georgedouzas).
  • Add more commands (ae5a8e0 by georgedouzas).
  • Add rule-based bettor (db154fb by georgedouzas).

Bug Fixes

  • Replace string with regex (bedd98e by georgedouzas).
  • Sort data by date (c0e51de by georgedouzas).

Docs

  • Remove plot of portfolio value (2d0b185 by georgedouzas).
  • Add description for CLI and sports betting (9a14f76 by georgedouzas).
  • Add all methods to bettors (f94bde9 by georgedouzas).

Code Refactoring

  • Rename load function and type hint (0d89209 by georgedouzas).
  • Run tests serial or parallel (a495aa2 by georgedouzas).
  • Modify base class and subclasses (c232624 by georgedouzas).
  • Validate data for backtesting (ab3101c by georgedouzas).

Chore

  • Release 0.4.0 (aaf7f48 by georgedouzas).
  • Automate release process (c4ff404 by georgedouzas).
  • Downgrade mkdocs gallery version (b916110 by georgedouzas).
  • Fix pypi page links (a1d83a9 by Nicholas Cassarino).
  • Add keywords and ignore variable name (e6d99d6 by georgedouzas).

0.3.1 - 2023-04-12

Compare with 0.3.0

Chore

  • Release 0.3.1 (06b8109 by georgedouzas).
  • Export requirements from pyproject (1624021 by georgedouzas).
  • Updated copier template (c362bc1 by georgedouzas).
  • Split to multiple CI job (5aa7bda by georgedouzas).
  • Add multiple Python versions to CI (60d8d2f by georgedouzas).

0.3.0 - 2023-04-12

Compare with 0.2.9

Features

  • Support Python 3.9 and 3.10 (8eb16e7 by georgedouzas).

Docs

  • Ignore ruff warning and add attributes type (4d65bd3 by georgedouzas).

Code Refactoring

  • Change int type to np.int64 (ee6cee8 by georgedouzas).
  • Ignore ruff error (6aee287 by georgedouzas).

Chore

  • Release 0.3.0 (f85cd17 by georgedouzas).
  • Modify type hints to support Python 3.9 (535cf2d by georgedouzas).
  • Use copier new template version 0.3.6 (cecce6b by georgedouzas).
  • Restricted python version for pandas (23ff003 by georgedouzas).

0.2.9 - 2023-04-03

Compare with 0.2.8

Chore

  • Release 0.2.9 (b66e204 by georgedouzas).
  • Use copier template for project restructure (c2f5f94 by georgedouzas).

0.2.8 - 2022-04-20

Compare with 0.2.6

0.2.6 - 2022-04-20

Compare with 0.2.5

0.2.5 - 2022-04-19

Compare with 0.2.2

0.2.2 - 2022-02-02

Compare with 0.2.1

0.2.1 - 2022-02-01

Compare with 0.2.0

0.2.0 - 2022-01-26

Compare with 0.1.6

0.1.6 - 2022-01-19

Compare with 0.1.5

0.1.5 - 2022-01-18

Compare with 0.1.4

0.1.4 - 2021-12-22

Compare with 0.1.3

0.1.3 - 2021-12-15

Compare with 0.1.2

0.1.2 - 2021-12-12

Compare with first commit