Releases
v0.2.1
Compare
Sorry, something went wrong.
No results found
0.2.1 (2026-05-17)
Features
add data for testing (5e2a0a8 )
add SP500 return sample for testing (9a44bcb )
base: add NormalMixture and JointNormalMixture base classes (68b35be )
bench: add GH EM path comparison for Phase 6 (796880c )
benchmarks: add EM/Bessel/GIG suite with JSON results and compare (f51f06a )
bessel: Phase 1 — Hankel large-z asymptotic in pure JAX (ca70328 )
bessel: Phase 2 — numerical quadrature replaces scipy callback (5fc7a27 )
bessel: Phase 3 — Olver uniform expansion, zero scipy callbacks (3fd1385 )
CPU Bessel backend for EM hot path (cpu_bessel_design.md) (#16 ) (d620007 )
dependencies: add development dependencies and update package configurations (e5c26b9 )
dependencies: add yfinance and new packages to project (f8459c5 )
distributions: add Generalized Hyperbolic distribution (9afb121 )
distributions: add KL projections and embeddings for GIG and GH families (34635da )
distributions: add Normal-Inverse Gamma and Normal-Inverse Gaussian distributions (6dd5c07 )
distributions: add pdf, cdf, mean, var, std, rvs to all distributions (89f3481 )
divergences: add Hellinger and KL for exponential families (e870441 )
download: add script to download S&P 500 stock data (02382af )
em: add comprehensive mixture model EM benchmark script (fc59cc8 )
em: add MCECM and split M-step via _m_step_subordinator (d9b09b8 )
em: add NormalMixtureEta and refactor E/M-step API (764a8c4 )
em: add Shrinkage combinator and shrinkage target builders (321a983 )
em: EMResult, verbose dual-loop fitter, default_init API (2119acb )
em: factor analysis mixtures, orbit regularizations, SP500 study (257bd3f )
em: incremental EM, eta rules, and compute_eta_from_model (5b6e21a )
em: NormalMixtureEta from_expectation and marginal replace facade (c79e24b )
em: Phase 1 EM API generalisation (eta order, AffineRule, MarginalMixture) (128229b )
expectation-to-natural: enhance expectation-to-natural conversion across distributions (4ff70f7 )
gamma,inverse_gamma,inverse_gaussian: convert rvs methods from scipy/numpy to JAX (b0e9c27 )
gh: add warm-start, pure-JAX Newton for GIG; profiling scripts and tech notes (1f951bd )
gig: add cpu_legacy solver — normix_numpy scipy.kve on CPU, warm-start (cd32363 )
gig: add JAX-based GIG sampling — Devroye TDR and PINV (d12a083 )
gig: add projection to special-case distributions via expectation parameters (c54043f )
gig: analytical Hessian Newton + JAXopt LBFGS solver variants (706c681 )
gig: enhance initialization and conversion methods for special cases (b8a3a6b )
migration: implement JAX-based normix package (Phases 0-5) (fe78846 )
mixture: enhance JointNormalMixture with parameter extraction methods (11c5753 )
mixtures: implement caching for Cholesky factor of Sigma in JointNormalMixture (1375fa6 )
mixtures: joint from_natural, incremental EM converged, optional x64 (06fe127 )
normal: Phase 7 — MultivariateNormal as ExponentialFamily, jaxopt plan (34b0921 )
notebook: replicate thesis tables on Hellinger vs parameter error (018a0f6 )
notebooks: add Bessel function comparison notebook (b391543 )
notebooks: add TFP/logbesselk overflow comparison to Bessel notebook (99c0f5d )
notebooks: migrate and standardise 9 distribution notebooks (00e853e )
notebooks: revise mixture distribution notebooks with unified visualization (d6a15f1 )
params: add frozen dataclass parameter containers (62b4a48 )
scripts: add EM convergence comparison script (d203f38 )
scripts: support jax input in GH profiler (88d1f86 )
solvers: introduce solve_bregman and solve_bregman_multistart for Bregman divergence minimization (4504249 )
utils: lazy-load plotting helpers so matplotlib is optional (776bc70 )
Bug Fixes
em: default m_step_backend to cpu, set cpu e_step for GH fit (6e1429d )
gh: stabilize EM and warm-start; perf(em) CPU E-step for VG/NInvG (77d9841 )
gig: analytical grad for log-partition to avoid jax.where NaN at a→0 (ee8cf8b )
handle scalar observations correctly in JointNormalMixture (ec72c0a )
ig,em: rewrite IG CDF in log-space and fix scan iteration count (02d2a8e )
joint: align GIG natural parameters for JGH and JNIG (a5b1550 )
resolve docstring formatting issues (68b35be )
scripts: add repo root to profiling harness path (56281c8 )
variance_gamma: handle PDF at x=μ (q=0) correctly (0712d00 )
Performance
em: CPU digamma Newton for Gamma/InvGamma from_expectation (56f079a )
em: scan-based IncrementalEMFitter and Phase 5 benchmarks (a9bf108 )
solver: stable jitted Newton for GIG warm-start and Gamma digamma (1a9c5d5 )
Refactoring
add theta0/maxiter/tol to fit_mle; remove long inline derivation comments (db780ac )
AGENTS.md: streamline content and enhance design philosophy section; remove ROADMAP.md and project-overview.mdc (cd16009 )
base: add cache infrastructure to Distribution (4251900 )
base: ExponentialFamily with cached_property and backward compat (de31437 )
bessel: clean up code formatting and fix test (3cd737b )
bessel: lax.cond for single-branch dispatch; JIT-wrap GIG gradient (9346ad6 )
centralize _EPS constant, rename L→L_Sigma and _conditional_expectations_impl (f54b93d )
constants: add GIG_THETA_PERTURB, GIG_CLAMP_*, GIG_P_MAX (d9d53e5 )
delete legacy doc files before migration (099a743 )
distributions: colocate factor mixtures and inline GIG RVS (a3e6022 )
distributions: remove legacy CPU solver and update documentation (6e650ae )
distributions: rename GIG→GeneralizedInverseGaussian, centralize constants, add Bregman solvers (2745651 )
em_shrinkage_demo: simplify slice controls and enhance documentation (f56efe7 )
em: m_step_subordinator naming; JIT-safe GH on jax backend (6a4af9f )
em: use parameter change for convergence, NIG warm start for GH (e516372 )
exponential_family: implement log-partition triad architecture (4052d4b )
foundational cleanups across codebase (f5e1245 )
gamma,inverse_gamma,inverse_gaussian: add analytical triad methods (4052d4b )
gh: JAX-native default_init for GeneralizedHyperbolic (#26 ) (ac45107 )
gig: migrate to triad architecture, clean up module-level functions (4052d4b )
gig: use from_expectation_params in special-case projections (f1b345e )
hygiene: Phase 5 — centralize x64 config, add return types, GIG tests, log_kv examples (992d063 )
joint-mixtures: migrate Joint{VG,NInvG,NIG,GH} to internal attrs (f90aab1 )
joint: lift shared natural_params and theta-parsing into JointNormalMixture (9ef80b1 )
joint: Phase 4 — remove dead code, add joint EF tests, update docs (12c2270 )
marginal-mixtures: migrate VG, NInvG, NIG, GH to direct attr access (80b7eba )
marginal: lift fit, _initialize, m_step, regularize into NormalMixture (e3ea5a9 )
mixture-base: JointNormalMixture with cached Cholesky properties (f11bc28 )
mixture-base: NormalMixture using cached_property from Distribution (c2f34b8 )
mixtures: clean up JointGH expectation-to-natural to clearly use GIG method (eb3e6a5 )
mixtures: joint natural params via from_natural (1ccbecf )
mixture: update Cholesky factor handling in JointNormalMixture and related distributions (6a18ba2 )
move _bessel.py → utils/bessel.py, rename gig.py → generalized_inverse_gaussian.py (85af01e )
mvn: Cholesky-first storage, eliminate np.linalg.inv from logpdf (2e5f4aa )
params: enhance parameter access with _ParamsBase mixin (748c16f )
redesign parameter storage architecture (9103e66 )
remove _natural_params tuple from univariate distributions and fix docstrings (8583446 )
remove deprecated wrappers, dummy instances, and simplify internal structure (170d43b )
remove normix_numpy and clean up numpy-version references (b2b8f59 )
rename package from pygh to normix (1f251e7 )
replace 'mixing distribution' terminology with 'subordinator distribution' (c28612e )
replace numerical derivatives with log_kv_derivative_v in mixture distributions (5af6a9e )
rules: update best practices and coding style for JAX-based development (162a1ba )
solver: JAX (lower, upper) bounds and vectorized _setup_reparam (a240c3f )
solvers,exponential_family: remove deprecated wrappers, dummy instances, and simplify _cpu_solve (28f56bb )
solvers: replace grad_hess_fn with separate grad_fn + hess_fn (4052d4b )
streamline initialization in mixture distributions (0e7f7d8 )
unify Greek-letter naming, add Cholesky logpdf, optimize expectation params (8b9bb5b )
univariate: migrate to internal attributes + dataclass params (1e245b0 )
update EM M-steps to use _set_internal fast path (670ee9f )
update GIG and BatchEMFitter to use backend and method parameters (9ebb09e )
update InverseGaussian and related distributions to use delta and eta parameters (e3e8a31 )
utils: split into plotting.py and validation.py (c20543d )
vg,nig,ninvg: replace GH delegation with analytical formulas (836a214 )
Documentation
add AGENTS.md and update project documentation (448a311 )
add Appendix D — porting bessel.py to JAX without logbesselk (2938d31 )
add architecture reference page and clean up leftover _natural_params (3f4b5ed )
add comprehensive efax architecture analysis (0e680f1 )
add comprehensive JAX distribution ecosystem survey (0eeaefb )
add JAX design exploration (Equinox, FlowJAX analysis) (d16d7c7 )
add JAX ecosystem research for EM algorithm design (1c04370 )
add JAX EM algorithm design research (2f51777 )
add new sections for CVaR derivatives, effective number of bets, factor analysis, generalized ENB, mean-risk optimization, online EM, shrinkage, and transaction costs (6ff608d )
add parameter storage redesign plan (17ac358 )
add tech note on TFP log_bessel_kve crash investigation (9ebfe3b )
agent: add docs publish skill (2eb9ac9 )
agents: mention bench_gh_paths in benchmarks context map (e4422d2 )
api: format exponential-family docstrings for Sphinx math (726dc01 )
arch: add shrinkage_targets to fitting module tree (5be0005 )
arch: document divergences module and three-tier design (b4623e4 )
architecture: clarify terminology for MultivariateNormal and JointGeneralizedHyperbolic (5bda42d )
arch: link distribution conversions tech note from navigation (a82b2e1 )
arch: Phase 4 JIT Newton cache and investigation status (cf48b7d )
bessel: add comparison script and accuracy figures (12a3294 )
create Sphinx documentation for JAX version (d74a15f )
design: add CPU-based Bessel design report for EM hot path (638554a )
design: add fitters redesign document and update EM fitter descriptions (94df008 )
design: add log-partition triad redesign proposal (6fc96f5 )
design: clarify simplicity criterion for special-case distributions (cf06239 )
design: expand fitters_redesign for E/M decomposition and efax (ae11c6e )
design: layer EtaUpdateRule predictor over AffineRule (a52ce60 )
design: mark EM covariance Phases 1-2.5 complete (5be1d12 )
design: refine Design Philosophy with four prioritised principles (f89ef5f )
design: reorganise docs/design into topical files; archive implemented proposals (ed69b35 )
design: revise CPU Bessel design — backend parameter, class methods only (13167ee )
design: split EM covariance and finance architecture docs (70bca87 )
detailed design — Equinox, FlowJAX, GMMX EM, and batch/online fitting (14e92ba )
em: sync ARCHITECTURE and design docs with fitter/solver API (0ea57b4 )
em: update all references to new e_step/m_step/fitter API (06bd40b )
em: η→model API, penalised EM, shrinkage demo (e1f582d )
fix README examples and init docstring (e8db92a )
improve Sphinx documentation (68b35be )
investigations: add test suite performance investigation (15d8f94 )
investigations: close Phase 6 benchmark policy with GH path results (36889b7 )
investigations: record Phase 3 EM consolidation status (8cf4c58 )
investigation: summarize GH GPU slowdown analysis (69815e0 )
JAX Bessel function & optimization ecosystem research (bdbde2e )
JAX distribution packages survey and design recommendation (9e7e6e3 )
JAX migration feasibility report (07b577b )
joint from_natural, EMResult fields, review follow-up (425c826 )
merge design docs → design.md; update ARCHITECTURE.md and README (ff38f01 )
notebook: add distribution_conversions demo (7545af9 )
notebook: add S&P 500 index empirical study (9c4b352 )
notebook: re-execute all 9 notebooks with refactored codebase (da42453 )
notebook: refresh GH and GIG distribution notebooks (d009cb1 )
notebook: refresh GIG, NInvGam, and SP500 study notebooks (6134ef8 )
notebook: use default_init for EM examples (386546d )
plans: add package improvement roadmap from review analysis (c3c1c74 )
plans: mark Phase 2 fitter repair as done in roadmap (95872d5 )
plans: mark Phase 3 complete in package improvement roadmap (dfeaa54 )
readme: document PyPI install and plotting extra (ae18f84 )
readme: enable JAX float64 support and update code examples (74caee3 )
review: add comprehensive package review for normix (5dfc2a6 )
rules: split maintain-* rules, add agent design doc and skills (f373195 )
rules: update coding conventions, ARCHITECTURE, design.md, benchmark script (543b86e )
tech_notes: diagnose JAX vs NumPy overhead for GIG solver (e7a88c1 )
tech_notes: rerun EM profiling with pure-JAX Bessel architecture (627a483 )
tech,arch: add GIG RVS tech note, update architecture (01c6b12 )
tech: add distribution conversions note (KL projection and bridges) (c558e32 )
theory: add GIG random variate generation algorithm review (3d9008f )
theory: add R GeneralizedHyperbolic package analysis and PINV m… (75d0f83 )
theory: add R GeneralizedHyperbolic package analysis and PINV method review (1eb103c )
update architecture docs, add tech_notes, tighten coding rules (6059f92 )
update ARCHITECTURE, design, AGENTS, rules, migration plan for triad architecture (728c0cd )
update ARCHITECTURE.md to reflect new solver API names (935d3e5 )
update docstrings with proper LaTeX formatting (49c31e3 )
update em_gpu_profiling.md for CPU backend; minor notebook update (781a4ae )
update ROADMAP.md and project-overview.mdc for parameter storage redesign (848b056 )
You can’t perform that action at this time.