Releases: ArturSepp/VanillaOptionPricers
Release list
VanillaOptionPricers 2.1.0
Highlights
- Replaced the former normal-distribution approximations with a tail-stable erfc and refined Acklam/Halley inverse, reaching near-double-precision agreement down to probabilities of 1e-300.
- Added focused numerical regression coverage for erfc, normal quantiles, inverse erf, boundaries, Numba interoperability, and delta-to-strike workflows.
- Added practical absolute-normal-volatility examples, including negative rate forwards.
- Reworked the BSM speed example into a readable 61-strike call-chain workflow with an equal-input Numba batch versus numpy.vectorize comparison.
Verification
- 54 local tests passed.
- Packaged-wheel tests and outside-checkout examples passed.
- CI passed on Python 3.10-3.12 and wheel workflows on Linux, macOS, and Windows.
vanilla-option-pricers 2.0.0
Breaking release: all public Bachelier functions now use annualised absolute normal volatility in forward/strike units; version 1.x used dimensionless relative normal volatility. Normal pricing, Greeks, and implied-volatility inversion now consistently use absolute units and support zero or negative forwards. Black and normal chain IV solvers now accept fixed-width NumPy option-code arrays. See CHANGELOG.md and the Bachelier convention guide for migration details.
vanilla-option-pricers 1.3.1
Adoption and documentation release: publishes both wheel and source distribution from the standard src layout; adds hosted Read the Docs task, convention, numerical-boundary, API, and package-choice guides; adds the deterministic offline pricing/IV quickstart with three-OS wheel verification; and adds an output-free, drift-checked Colab entry point. No pricing API or numerical behavior changed. See CHANGELOG.md.
vanilla-option-pricers 1.3.0
Implied-vol solvers (BSM and Bachelier) rewritten as safeguarded Newton with the analytic vega, converging in ~5-8 pricer evaluations; implied vols unchanged where the volatility is identifiable. infer_normal_implied_vol signature aligned with infer_bsm_implied_vol and now returns nan for unbracketed prices instead of a silent bound. Adds compute_bsm_digital_price and compute_bsm_digital_delta to the public API and tests/test_bachelier.py. compute_bsm_vanilla_vega takes an optional discfactor (default 1.0, output unchanged). Fixes inv_erf, which was sign- and magnitude-wrong and corrupted ncdf_inv, compute_bsm_strike_from_delta and compute_normal_delta_to_strike; fixes the ncdf_inv.ppf AttributeError in compute_normal_delta_to_strike; carries the compute_bsm_vanilla_theta fix from #1 (thanks @gaoflow). Removes the unexported duplicate vega helpers. Full docstrings and module headers. See CHANGELOG.md.
v1.2.4
Fixed: compute_bsm_vanilla_theta (and _vector wrapper) volatility-decay term was 4x too large and omitted the leading discfactor; both call and put branches affected. Added: first numerical test module (put-call parity and finite-difference greek checks). Both contributed by @gaoflow in #1.