Releases: Jebel-Quant/jquantstats
Release list
v0.10.0
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog,
and entries are generated from Conventional Commits.
[0.10.0] - 2026-07-29
New Features
- (portfolio) Add deduct_management_fee for flat annual fee deduction (#901)
Bug Fixes
Documentation
Maintenance
- Update rhiza to v1.1.3 (#882)
- Sync with rhiza (#884)
- Chore(deps)(deps): bump the python-dependencies group with 7 updates (#886)
- Sync rhiza template to v1.2.0 (#887)
- Opt out of rhiza fuzzing/scorecard/weekly workflows (#888)
- Update rhiza to v1.2.1 (#889)
- Split data.py god-module and decompose B(10) blocks (#871) (#894)
- Chore(deps)(deps): bump the github-actions group with 11 updates (#895)
- Chore(deps)(deps): bump the python-dependencies group with 4 updates (#896)
- (pyproject) Modernize Python version and license metadata (#897)
- Chore(deps)(deps): bump the python-dependencies group with 8 updates (#900)
- Chore(deps)(deps): bump docker/login-action from 4.4.0 to 4.5.1 in the github-actions group (#899)
- Declare version bump locations for bump-my-version
Other Changes
- Support Python 3.14; refresh README badges; add CLAUDE.md (#881)
- Harden Rhiza sync schedule editing and tighten exception API typing (#883)
PyPI Package
Conda Recipe
A conda-forge recipe was generated with grayskull and uploaded as the conda-recipe workflow artifact.
v0.9.7
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog,
and entries are generated from Conventional Commits.
[0.9.7] - 2026-07-10
New Features
- Add ClusterFuzzLite fuzzing scaffold for jquantstats (#845)
Bug Fixes
- (make) Skip worktree/current branches in clean branch-prune (#838)
- (stats) Kill scipy VaR RuntimeWarning (#839) and split large _stats modules (#840) (#841)
- (reports) Narrow broad except blocks swallowing benchmark-metric errors (#857)
- (deps) Migrate pl.concat to how="horizontal_extend" (#866) (#867)
Maintenance
- Chore(deps)(deps): bump the python-dependencies group with 5 updates (#831)
- Add Rhiza Claude commands (/rhiza_quality, /rhiza_update) (#829)
- Skip kaleido image-export tests when no browser is available (#833)
- Centralize cross-mixin TYPE_CHECKING stubs (closes #834) (#835)
- Fix Sharpe scale-invariance property test (closes #836) (#837)
- Chore(deps)(deps): bump the python-dependencies group with 6 updates (#844)
- (plots) Split 1404-line _plots/_data.py into a subpackage (#846)
- Chore(deps)(deps): bump the github-actions group with 3 updates (#849)
- Chore(deps)(deps): bump the python-dependencies group with 6 updates (#850)
- Silence incidental BenchmarkAlignmentWarning noise in the suite (#848)
- Split the three largest src modules into focused submodules (#851)
- (exceptions) Reduce noqa[TRY003] density via reusable exception subclasses (#858)
- Chore(deps)(deps): bump the python-dependencies group with 3 updates (#860)
- Decompose C-grade blocks to reduce cyclomatic complexity (#863) (#864)
- Update rhiza to v1.0.2 (#865)
- Chore(deps)(deps): bump docker/login-action from 4.2.0 to 4.4.0 in the github-actions group (#868)
- Chore(deps)(deps): bump the python-dependencies group with 7 updates (#869)
- Update rhiza to v1.1.1 (#870)
- Remove orphaned git_repo fixture and test_utils from .rhiza/tests (#877)
- Update rhiza to v1.1.2 (#878)
Other Changes
- Add jquantstats vs QuantStats comparison documents
- Move QuantStats comparison docs into book
- Sync Rhiza template v0.18.8 → v0.19.3 (#832)
- Sync Rhiza template v0.19.3 → v0.19.4 (#843)
- Sync Rhiza template v0.19.4 → v0.19.6 + add github-paper (#847)
- Sync Rhiza template v0.19.6 → v0.19.9 (#854)
- Delete .rhiza/tests/test_git_repo_fixture.py (#876)
- Delete .claude/commands directory (#875)
- Bump version 0.9.6 → 0.9.7
PyPI Package
Conda Recipe
A conda-forge recipe was generated with grayskull and uploaded as the conda-recipe workflow artifact.
v0.9.6
[0.9.6] - 2026-06-13
💼 Other
- Bump version 0.9.5 → 0.9.6
⚙️ Miscellaneous Tasks
- Update CHANGELOG.md for v0.9.5 [skip ci]
PyPI Package
Conda Recipe
A conda-forge recipe was generated with grayskull and uploaded as the conda-recipe workflow artifact.
v0.9.5
[0.9.5] - 2026-06-12
🐛 Bug Fixes
- Warn when benchmark alignment drops rows, loosen kaleido pin
- Raise timeout for kaleido tests to absorb Chrome cold-start
💼 Other
- Bump version 0.9.4 → 0.9.5
⚙️ Miscellaneous Tasks
- Update CHANGELOG.md for v0.9.4 [skip ci]
PyPI Package
Conda Recipe
A conda-forge recipe was generated with grayskull and uploaded as the conda-recipe workflow artifact.
v0.9.4
[0.9.4] - 2026-06-12
🚀 Features
- Typed stat decorators, snapshot tests, docs FAQ/diagrams, protocol dedup
🐛 Bug Fixes
- CAGR sign flip in reports, accept integer rf, harden API endpoint (#791)
- Harden public API, messaged exceptions, numerical edge-case docs, 100% coverage gate
- Move coverage gate to custom-env.mk so rhiza validation passes
💼 Other
- Bump version 0.9.3 → 0.9.4
🧪 Testing
- Increase coverage to 100%
⚙️ Miscellaneous Tasks
- Update CHANGELOG.md for v0.9.3 [skip ci]
- Bump rhiza to v0.18.8 (#788)
PyPI Package
Conda Recipe
A conda-forge recipe was generated with grayskull and uploaded as the conda-recipe workflow artifact.
v0.9.3
[0.9.3] - 2026-06-05
🐛 Bug Fixes
- Update test_release_workflow to match inline release workflow
💼 Other
- Bump version 0.9.2 → 0.9.3
⚙️ Miscellaneous Tasks
- Update CHANGELOG.md for v0.9.2 [skip ci]
- Bump rhiza template to v0.11.0 (#776)
- Update rhiza to v0.15.2 (#778)
- Bump rhiza to v0.17.0
- Apply rhiza sync v0.17.0
- Update rhiza to v0.15.3 (#779)
- Upgrade paper workflow actions to Node.js 24-compatible versions
- Update rhiza to v0.18.4 (#781)
PyPI Package
v0.9.2
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.9.2 - 2026-05-24
Maintenance
- Chore(deps)(deps): bump github/codeql-action from 4.35.4 to 4.35.5 in the github-actions group (#772)
- Chore(deps)(deps): bump the python-dependencies group with 4 updates (#773)
- Sync rhiza template to v0.10.9 (#774)
- Bump rhiza to v0.14.1 with github-project profile and marimo template (#775)
Other Changes
- Bump version 0.9.1 → 0.9.2
PyPI Package
v0.9.1
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.9.1 - 2026-05-17
Documentation
- Fix README — remove duplicate lines, correct version and parameter name
Other Changes
- Remove deprecated stats aliases (
ghpr,r2,win_loss_ratio) from API surface (#762)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com
Co-authored-by: Claude Sonnet 4.6 noreply@anthropic.com
- Bump version 0.9.0 → 0.9.1
PyPI Package
v0.9.0
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.9.0 - 2026-05-17
Documentation
- Clarify hhi_positive / hhi_negative as intentionally public optional metrics (#730)
- Close edge-case metric coverage gaps vs quantstats (9 → 10) (#766)
Maintenance
- Hide back-references on all facade classes (#709)
- Add
_positive/_negativefilter helpers and eliminate inline filter duplication in_basic.py(#725) - Extract _is_finite/_fmt to _reports/_formatting.py (#727)
- Document and normalise null-return convention in stats mixins (#724)
- Rename
_PerformanceStatsMixinto_RiskStatsMixinfor clearer domain boundaries (#732) - Centralize
DataLikeprotocol at package root and remove subpackage redefinitions (#736) - Cancel redundant runs with concurrency group
- Extract inline Data setup into sub-fixtures in
test_stats.py(#747) - Document
_ReportingStatsMixin.rar()cross-mixin dependency via isolation test (#748)
New Features
- Add winsorise and exponential_cov to PortfolioUtils (#726)
- Add DataPlots.compare and figsize parity for log_returns/rolling_beta (#750)
- Add Monte Carlo fan chart and simulation distribution plots to
DataPlots(#749)
Other Changes
- Refactor
test_stats.pyto reuse integer-indexed Data setup via sub-fixture (#711)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
- Initial plan
- Merge branch 'copilot/address-issue-1a-1b-2a-2b-2c' into main
- Refactor
rolling_sortinoto align with rolling stats implementation pattern (#723) - Update rhiza_ci.yml
- Document cross-mixin method dependencies in reporting and risk stats mixins (#752)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com
- Refactor stats decorators to support explicit data attribute contracts (#735)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com
Co-authored-by: Claude Sonnet 4.6 noreply@anthropic.com
- Add Monte Carlo stats suite to close QuantStats parity gap (#751)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com
- Refactor stats mixins to enforce Data null invariants and remove redundant null guards (#739)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com
Co-authored-by: Claude Sonnet 4.6 noreply@anthropic.com
- Refine benchmark-aware null handling in
information_ratio(#754) - Deprecate
ghpr,r2, andwin_loss_ratioaliases (preserve compatibility) (#756)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com
Co-authored-by: Claude Sonnet 4.6 noreply@anthropic.com
- Refactor
_reportsStatsLiketo the actual Report-facing surface (#755)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com
Co-authored-by: Claude Sonnet 4.6 noreply@anthropic.com
Co-authored-by: Copilot Autofix powered by AI 175728472+Copilot@users.noreply.github.com
- Document legitimate empty-after-filter guards in stats mixins (#761)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
- Consolidate residual duplication in reports, stats, and plot helpers (#760)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com
- Add snapshot tests for all DataPlots methods; update plot coverage docs to 10/10 (#765)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
- Add end-to-end benchmarks and close map_elements / Python-loop performance gaps (#768)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com
- Add migration tests for new jquantstats functionality (#770)
Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: Claude Sonnet 4.6 noreply@anthropic.com
- Bump version 0.8.4 → 0.9.0
Performance
- Align
rolling_sortinoto explicit native Polars expressions and add 10Y benchmark coverage (#740)
PyPI Package
v0.8.4
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.8.4 - 2026-05-16
Bug Fixes
- Add src path to mkdocstrings so jquantstats is importable
Maintenance
- Merge save() into to_html(path=None)
Other Changes
- Bump version 0.8.3 → 0.8.4