Release Notes

Version 0.5.0 (2026-03-29)

Breaking changes – see CHANGELOG.md for migration details.

  • Replaced set_constraints() / set_transaction_costs() with typed Constraints / TransactionCosts dataclasses and factory classmethods (from_moments, from_scenarios, from_robust_posterior).

  • Removed 7 deprecated PortfolioFrontier aliases and 5 deprecated PortfolioWrapper methods. New canonical names: min_risk(), max_return(), tangency(), at_risk(), at_return(), etc.

New features: budget risk parity, CVaR views, EWMA covariance, max-Sharpe direct solver, Prayer repricing framework, group constraints, short-position discrete allocation, PortfolioFrontier shape validation.

See the full CHANGELOG.md in the repository root for details.

Version 0.4.1 (2026-03-29)

Bug fixes, theory corrections, and hardening. See CHANGELOG.md for details.

Version 0.4.0 (2026-02-01)

  • Added robust-Bayesian uncertainty helpers (NIW mean-uncertainty covariance and RobustBayesPosterior) plus posterior_moments_niw_with_uncertainty.

  • Introduced ensemble specification helpers and risk-percentile alignment for consistent portfolio comparisons.

  • Expanded plotting utilities with robust diagnostics, report-ready frontier visuals, and 3D assumption/uncertainty views.

  • Added scenario P&L and performance reporting helpers for compact risk summaries.

  • Reworked examples and tutorials to be shorter, clearer, and aligned with the updated API; Sphinx build is warning-free.

Release checklist (0.4.0) — completed

  • Confirm version strings (pyproject.toml, docs/conf.py) and update CHANGELOG.md.

  • Run the test suite (pytest) and build example artefacts (python examples/quickstart_etf_allocation.py).

  • Build documentation (sphinx-build -b html docs docs/_build/html) and ensure zero warnings.

  • Create a git tag v0.4.0 and draft the GitHub release notes.

  • Build distribution artefacts (python -m build) and upload to PyPI.

Version 0.3.1 (2025-11-06)

  • Added dedicated API reference pages for discrete allocation and plotting utilities, wiring them into the core module index.

  • Refreshed the README messaging to highlight the consistent optimisation surface, view integration, and production plumbing helpers.

  • Synced with upstream improvements and reran the full pytest suite to keep 0.3.x validated on Python 3.12.

Version 0.3.0 (2025-02-25)

  • Hardened the discrete allocation engine with iteration safeguards, automatic MILP fallback, and richer unit test coverage for lot sizes and failure modes.

  • Eliminated numpy.matlib deprecation noise by wrapping non-linear shrinkage imports in targeted warning filters.

  • Ran a documentation deep clean: HTML build is warning-free and linkcheck now passes thanks to durable DOI handling and updated references.

  • Expanded the quickstart tutorial narrative so discrete trade conversion steps explain the new fallback behaviour.