Skip to content

v2.0.0-rc.2

Choose a tag to compare

@dancixx dancixx released this 10 May 14:40
· 147 commits to main since this release

stochastic-rs v2.0.0-rc.2

  • cargo clippy --workspace --all-targets -- -D warnings is now clean (was 3 errors: deprecated FromPyObject on PyNigFourier, lazy unwrap_or_else in order_book::add_order, negated-comparison in PyNigFourier::new).
  • stats::fukasawa_hurst test suite (estimate_h_from_simulated_rv, rough_vs_smooth_distinguished, table1_m72_accuracy) now uses Fou::seeded(...) for the volatility path so the entire RNG chain is pinned.
  • Python coverage gaps from §1.5 filled: PyHscmModel, PyHscmCalibrator (+ PyHscmMarketOption), PyHullWhiteBond (with HullWhiteBond.from_curve(...) taking a DiscountCurve), and empirical_cvar exposed as a top-level #[pyfunction] with the documented alpha < 0.5 precondition translated to PyValueError.
  • portfolio::optimizers::empirical_cvar is now pub (was a private helper) so external callers can reach it directly.

Pricing. unreachable!() cleanups, NaN-tolerant partial_cmp, regime-switching matrix ops via ndarray operators (was hand-written triple loops), document hardcoded paper maturities, fourier_malliavin canonical-window comments, heston_stoch_corr FFT-vs-quadrature doc fix.

Vol / risk. SVI butterfly arb-freeness check + Durrleman g(k); Rockafellar-Uryasev tail-share correction in historical_es; max_peak_to_recovery_duration companion to existing duration; fourier_model_surface_fft_with(...) exposes Carr-Madan grid params; try_from_quotes Result variant on ImpliedVolSurface; Sortino / momentum ScoreWeighted convention doc; mat_inversenalgebra::try_inverse; new strategies module: Strategy trait + Backtest driver + MarketBar / StrategyAction types; bucket_dv01 sign doc.

Rates. curves::InstrumentBootstrapInstrument (with backward-compat alias); five new day-count conventions (BUS/252, ACT/364, ACT/ACT AFB, NL/365, 30E/360 ISDA); ScheduleBuilder long-first / long-last StubConvention; observable Mutex poisoning is now logged + recovered (was panic); fx Display fallback to NaN; short-rate round-isize defensive default.

Microstructure / factors. Stray no-ops removed (shrinkage, bootstrap, migration); loss.rs metrics return NaN on zero-divisor; pca.rs to_f64 defensive; CalibrationLossScore::get → NaN + try_get; scipy.linalg.expm regression test for migration matrix expm.

SKILLs (16 written, .claude/skills/)

  • Tier 1 (release-level): release-checklist, feature-flag-management, calibration-pattern, greeks-pattern.
  • Tier 2 (domain): add-diffusion-process, add-fractional-process, add-jump-process, adding-distribution, adding-python-binding, stats-estimator.
  • Tier 3 (niche): copula-bivariate, add-gpu-sampler, add-mc-variance-reduction, vol-surrogate-nn, integration-test-writing, bench-writing.

Full Changelog: v2.0.0-rc.1...v2.0.0-rc.2