Skip to content

Releases: Jebel-Quant/jquantstats

v0.9.2

24 May 08:39

Choose a tag to compare

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

jquantstats

v0.9.1

17 May 14:42

Choose a tag to compare

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

jquantstats

v0.9.0

17 May 11:13

Choose a tag to compare

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/_negative filter 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 _PerformanceStatsMixin to _RiskStatsMixin for clearer domain boundaries (#732)
  • Centralize DataLike protocol 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.py to 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_sortino to 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, and win_loss_ratio aliases (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 _reports StatsLike to 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_sortino to explicit native Polars expressions and add 10Y benchmark coverage (#740)

PyPI Package

jquantstats

v0.8.4

16 May 06:37

Choose a tag to compare

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

PyPI Package

jquantstats

v0.8.3

15 May 13:47

Choose a tag to compare

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.3 - 2026-05-15

New Features

  • Accept pl.Expr in all three factory methods (#708)

Other Changes

  • Bump version 0.8.2 → 0.8.3

PyPI Package

jquantstats

v0.8.2

14 May 07:46

Choose a tag to compare

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.2 - 2026-05-14

Maintenance

  • Chore(deps)(deps): bump the python-dependencies group with 4 updates (#705)

Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • Chore(deps)(deps): bump github/codeql-action from 4.35.3 to 4.35.4 in the github-actions group (#704)

Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com

New Features

  • Add DataUtils.exponential_cov (#706)

Other Changes

  • Bump version 0.8.1 → 0.8.2

PyPI Package

jquantstats

v0.8.1

07 May 15:57

Choose a tag to compare

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.1 - 2026-05-07

Maintenance

  • Lock file maintenance (#687)
  • Lock file maintenance (#689)
  • Chore(deps-dev)(deps-dev): bump ipython from 9.10.1 to 9.13.0 in the python-dependencies group (#690)

Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • Lock file maintenance (#691)
  • Lock file maintenance (#694)
  • Lock file maintenance (#695)
  • Lock file maintenance (#696)
  • Lock file maintenance (#697)
  • Lock file maintenance (#698)
  • Lock file maintenance (#699)
  • Chore(deps)(deps): bump kaleido from 1.2.0 to 1.3.0 in the python-dependencies group (#701)
  • Chore(deps)(deps): bump github/codeql-action from 4.35.2 to 4.35.3 in the github-actions group (#700)
  • Lock file maintenance (#702)

Other Changes

  • Revise citation format in README

Updated citation instructions for jQuantStats

  • Delete .github/CITATIONS.bib
  • Delete renovate.json
  • Update template.yml
  • Code coverage badge
  • Bump version 0.8.0 → 0.8.1

PyPI Package

jquantstats

v0.8.0

25 Apr 13:56

Choose a tag to compare

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.0 - 2026-04-25

Maintenance

  • Lock file maintenance (#678)
  • Lock file maintenance (#679)
  • Lock file maintenance (#680)
  • Lock file maintenance (#681)
  • Lock file maintenance (#682)
  • Lock file maintenance (#683)
  • Lock file maintenance (#684)

Other Changes

  • Result is coming
  • Result is coming
  • Add interpolate: interior forward-fill for numeric Polars columns (#686)

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: Copilot 175728472+Copilot@users.noreply.github.com
Co-authored-by: Claude Sonnet 4.6 noreply@anthropic.com

  • Bump version 0.7.0 → 0.8.0

PyPI Package

jquantstats

v0.7.0

23 Apr 04:10

Choose a tag to compare

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.7.0 - 2026-04-23

Bug Fixes

  • Set dev as permanent default for GitHub Pages
  • Add missing mkdocs deps to mike set-default invocation
  • Use uv tool install to avoid duplicate uvx invocations for mike
  • Remove duplicate test fixtures in test_utils.py

Documentation

  • List notebooks and reports individually in nav
  • Replace Sphinx :attr:/:meth: refs with plain backticks
  • Enforce strict Google docstring style throughout

Maintenance

  • Refactor security and license targets using extensible hooks
  • Lock file maintenance (#653)
  • Lock file maintenance (#659)
  • Lock file maintenance (#660)
  • Lock file maintenance (#667)
  • Bump rhiza template to v0.10.1 (#666)
  • Chore(deps-dev)(deps-dev): bump yfinance from 1.2.2 to 1.3.0 in the python-dependencies group (#669)

Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com

  • Chore(deps)(deps): bump github/codeql-action from 4.35.1 to 4.35.2 in the github-actions group (#668)

Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com

  • Lock file maintenance (#670)
  • Lock file maintenance (#675)
  • Lock file maintenance (#677)

Other Changes

Co-authored-by: Claude Sonnet 4.6 noreply@anthropic.com

  • Fmt
  • Delete docs/notebooks.md (#655)
  • Scope interrogate pre-commit hook to src/ only (#657)

Co-authored-by: copilot-swe-agent[bot] 198982749+Copilot@users.noreply.github.com
Co-authored-by: tschm 2046079+tschm@users.noreply.github.com

  • Delete docs/rhiza directory (#658)
  • Reduce make complexity (#661)

Co-authored-by: Claude Sonnet 4.6 noreply@anthropic.com

  • Delete book/marimo/notebooks/yfinance_demo.py
  • Release with mike?
  • Update mkdocs-base.yml
  • Slim down mkdocs.yml
  • Update coverage badge link in README.md
  • Update test coverage link in README.md
  • Slim down mkdocs.yml
  • Extract shared config into docs/mkdocs-base.yml, inherit in mkdocs.yml

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Use material.extensions.emoji in mkdocs-base.yml for CI compatibility

zensical remaps material.extensions → zensical.extensions at parse time,
so this works with both; plain mkdocs in CI doesn't have zensical installed.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Moving to zensical
  • Moving to zensical
  • Replace mike deployment with peaceiris/actions-gh-pages

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Moving to zensical
  • Remove tests that require mkdocs-build/MKDOCS_EXTRA_PACKAGES in book.mk

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Run tests before make book to populate coverage HTML report

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Update coverage badge link in README.md

  • Generate coverage badge in book workflow, deploy via GitHub Pages

  • Badge generated from coverage.xml after tests, copied into _book/

  • README badge URL updated to Pages URL (no more raw.githubusercontent)

  • Remove CI coverage-badge job (conflicted with peaceiris gh-pages deploy)

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Fix coverage badge cp: write to /tmp, copy conditionally

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Fix SC2015: use if/fi instead of && || for badge copy

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Explicitly copy coverage HTML into _book/ after build

Bypasses zensical not serving non-Markdown static files from docs/.
Also inline badge generation after make book rather than a separate step.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Fix coverage badge link: point to docs root instead of 404 path

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Fix MkDocs build: add missing theme name to base config

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Fix book build: replace lucide icons with material, add coverage badge to _book

  • Replace lucide/* icon refs with material/* equivalents — lucide icons
    are not bundled in mkdocs-material <10 and caused a hard build failure

  • Generate coverage-badge.svg into _book/ during book build so it is
    served from GitHub Pages at the URL the README references

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Fix coverage badge: use coverage.xml instead of coverage.json for genbadge

genbadge only parses the standard coverage XML format; using the JSON report
caused silent failure so coverage-badge.svg was never written to _book/.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Fix MkDocs build: replace lucide icons with material equivalents

mkdocs-material<10.0 (9.x) does not bundle the lucide icon set, causing
TemplateNotFound errors during build. Replaced all lucide/ nav icons in
page frontmatter with equivalent material/ icons that exist in 9.x.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Fix coverage badge: use genbadge[coverage] extra for coverage subcommand

Without the [coverage] extra, genbadge silently fails to generate the badge.
Matches the invocation already used in the CI coverage-badge workflow step.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Fix coverage badge link to point to HTML report

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Update mkdocs.yml
  • Update mkdocs.yml
  • Change Test Report path in mkdocs.yml

Updated the path for the Test Report in mkdocs.yml

  • Remove mkdocstrings plugin from mkdocs configuration

Removed mkdocstrings plugin configuration for Python

  • Update mkdocs-base.yml

  • Fix docs build: install package into uvx env and correct nav paths

  • Add --with-editable . to MKDOCS_EXTRA_PACKAGES so mkdocstrings can import jquantstats in the uvx-isolated environment

  • Fix report nav paths in mkdocs.yml to match what _book-reports actually generates (test-report/, coverage/)

  • Fix broken links in MIGRATION.md: drop docs/ prefix, correct STABILITY.md casing, remove links to non-existent files

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Improve docs site format inspired by TinyCTA style

  • Remove navigation.sections for a cleaner, flat sidebar

  • Add Quick Links line and emoji section headers to index.md

  • Tighten homepage content: consolidate Portfolio Route features,
    remove standalone cost/lag sections, keep grid cards for next steps

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Switch book build from mkdocs to zensical (TinyCTA style)

  • Replace book.mk with TinyCTA version: uses zensical build, adds ROOT
    variable for absolute paths, adds serve target, simplifies _book-reports
    to a single cp -r _tests/. docs/reports/

  • Update mkdocs.yml nav report paths to match new layout
    (html-report/ and html-coverage/ instead of test-report/ and coverage/)

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Remove coverage badge job from CI workflow

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

  • Remove broken coverage badge links from README

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com

Co-authored-by: Claude Sonnet 4.6 noreply@anthropic.com

  • Feature/add returns winsorising (#676)

Co-authored-by: peter pjotr.b@yukkalab.com
Co-authored-by: Claude Opus 4.6 (1M context) noreply@anthropic.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com

  • Add to_volatility_adjusted_returns with pluggable vol estimator (#674)

Co-authored-by: peter pjotr.b@yukkalab.com
Co-authored-by: Claude Opus 4.6 (1M context) noreply@anthropic.com
Co-authored-by: Thomas Schmelzer thomas.schmelzer@gmail.com

  • Bump version 0.6.5 → 0.7.0

PyPI Package

jquantstats

v0.6.5

14 Apr 13:38

Choose a tag to compare

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.6.5 - 2026-04-14

Bug Fixes

  • Move semgrep.yml from .rhiza to .github (#647)
  • Add mkdocstrings[python] to MKDOCS_EXTRA_PACKAGES

Maintenance

  • Lock file maintenance (#643)
  • Lock file maintenance (#644)
  • Lock file maintenance (#648)
  • Sync rhiza template to v0.9.5 (#649)
  • Chore(deps-dev)(deps-dev): bump yfinance from 1.2.0 to 1.2.2 in the python-dependencies group (#650)

Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • Lock file maintenance (#651)
  • Simplify mkdocs.yml via INHERIT from docs/mkdocs-base.yml

Other Changes

  • Delete docs/marimo/rhiza.py (#652)
  • Bump version 0.6.4 → 0.6.5

PyPI Package

jquantstats