Skip to content

Latest commit

 

History

History
138 lines (103 loc) · 6.22 KB

File metadata and controls

138 lines (103 loc) · 6.22 KB

Changelog

All notable changes to this project are documented in this file. The format is based on Keep a Changelog, and the project follows Semantic Versioning.

[Unreleased]

[0.4.2] - 2026-10-07

Fixed

  • Documentation pages other than the homepage are titled <page title> - goal-based-allocation rather than ending with the full site title, which search results cut off.
  • The former user-guide/ pages, which redirect to their chapters, carry a noindex, follow robots tag and are left out of the sitemap with the noindex search page and the general index.
  • Documentation pages built for the stable version name their latest address as canonical, so search engines no longer see each page twice. Numbered versions keep their own canonical address. No signature or computed value changes.

[0.4.1] - 2026-10-01

Documentation release: no package code changed.

Added

  • Added the goal-based allocation handbook to the documentation: eleven methodology chapters in the layout of the qis and optimalportfolios handbooks, each with a convention card, concise proofs, Insight and Pitfall callouts, and worked examples executed by tests/test_documentation_examples.py, plus a single bibliography, a notation page, a documentation standard and an API reference generated from the docstrings. The former user-guide/ pages redirect to their chapters.

Fixed

  • The README quickstart no longer describes the target_return of find_ell as a target return: it fixes the present value of the policy's target, not the expected terminal wealth.
  • Corrected README references: the buy-and-hold moments are Proposition A.1 of the manuscript, and Lipton's "Assets with jumps" appeared in Risk in 2002, volume 15.

[0.4.0] - 2026-09-08

Added

  • Added explicit stack dependency and optional-import boundary checks, including isolated maintainer adapters, plus a fresh Python 3.10 lowest-direct dependency CI lane.

  • Added tag-driven PyPI Trusted Publishing with release-identity and distribution validation; creating a GitHub Release remains optional.

Changed

  • Raised the minimum supported NumPy version from 1.24 to 2.0.

  • Aligned package summaries, software citations, README navigation, and documentation landing pages with the canonical package identity and Read the Docs documentation.

  • Replaced the legacy GitHub Pages documentation build with redirects to Read the Docs.

  • Declared pytest 7.0 as the minimum test-tool version so the fresh lowest-dependency job does not select an incompatible legacy pytest release.

Removed

  • Retired the contributor-facing dev extra in favor of PEP 735 dependency groups: test for pytest and lint for Black and Ruff. The docs extra remains available.

Fixed

  • Raised the Matplotlib runtime floor to 3.8.4: the previously allowed 3.7 wheels fail to import with the minimum supported NumPy 2.0, while 3.8.4 wheels support its ABI.

  • Explicitly included LICENSE in distribution license metadata.

[0.3.1] - 2026-08-22

Changed

  • Separated source development runners from production and pytest code under the source-only goal_based_allocation/run/*_local.py convention, using Locals and run_local(local=...).

[0.3.0] - 2026-08-19

Changed

  • Moved the installable package from goal_based_allocation/ to src/goal_based_allocation/ without changing the import name or numerical code.
  • Renamed the repository-only research root from paper_code/ to papers/. Existing GitHub source and image URLs containing paper_code/ must use the new path.
  • Added an output-free installed-wheel quickstart, artifact-provenance CI, and a gated Sphinx/MyST documentation site with task guides and a checked public API catalogue.
  • Adopted SPDX license metadata and raised the build-backend floor to setuptools 77; runtime dependencies are unchanged.
  • Published task-oriented Sphinx documentation on GitHub Pages and added its canonical project URL to package metadata.

[0.2.0] - 2026-07-15

Added

  • vanilla_option_pricer module: Laplace-transform European vanilla option pricing under the regime-switching jump-diffusion. Exposes RiskNeutralParams, price_vanilla, implied_vol, OptionType, and Regime from the package top level. All strikes are priced jointly by a single Abate-Whitt inversion in maturity, reusing the degree-6 characteristic roots of the wealth-floor machinery.
  • examples/ folder with minimal, self-contained illustrations: wealth_process_simulation.py (Figure 1), terminal_wealth_distribution.py (Figure 2), investment_opportunity_set.py (Figure 4), and regime_switch_smile.py (implied-volatility smile with Carr-Madan Fourier and Monte Carlo reference pricers).
  • tests/ suite (pytest): option-pricer properties (put-call parity, Black-Scholes limit, monotonicity in strike, scalar/array consistency, input validation), Fourier and Monte Carlo cross-checks, and core-framework smoke tests.
  • GitHub Actions CI: runs the test suite on Python 3.10, 3.11, and 3.12.

Changed

  • Repository reorganised: the core library remains in goal_based_allocation/; the 2026 paper (LaTeX source, compiled PDF, figures, and generate_paper_figures.py) is now self-contained under papers/goal_based_allocation_2026/.
  • generate_paper_figures.py now defaults its output directory to the paper's own figures/ folder, independent of the working directory.
  • The regime_switch_smile example draws its parameters from the paper's equity regime process instead of a standalone base case.
  • README updated for the new layout, the option pricer, and the examples.
  • Paper title standardised to "Dynamic Mean-Variance Portfolio Allocation under Regime-Switching Jump-Diffusions with Absorbing Barriers and Distribution Matching" across code docstrings, README, and the citation.

Fixed

  • Reconciled the package version, which was out of sync between __init__.py (0.1.0) and pyproject.toml (0.1.1).

[0.1.1]

Initial packaged release of the analytical framework: Riccati ODE solver for the MV-optimal policy, Laplace-domain density / survival / overshoot computations, buy-and-hold moments via matrix exponential, and the investment opportunity-set framework.