# stochastic-rs — v2.0.0 release audit (2026-05-07)

> Teljes file-by-file, module-by-module audit `v2.0.0-rc.0` → `v2.0.0` stable felé.
> Edition `2024`. ~103k LOC, 9 sub-crate. Bázis: a 2026-04-26 és 2026-04-28
> audit megállapításai + 4 párhuzamos fork (core+dist+viz+py / stats+copulas+ai
> / stochastic / umbrella) + ~15 saját közvetlen verifikáció.

---

## 0. Tartalom

- [1. Vezetői összefoglaló](#1-vezetői-összefoglaló)
- [2. Build / test állapot](#2-build--test-állapot)
- [3. ✅ Régebbi P0 állítások — verifikálva](#3-régebbi-p0-állítások--verifikálva)
- [4. 🔴 Új P0 release blockerek](#4-új-p0-release-blockerek)
- [5. 🟡 P1 (erősen ajánlott release előtt)](#5-p1-erősen-ajánlott-release-előtt)
- [6. 🟢 P2 nice-to-have / 2.0.x-re halasztható](#6-p2-nice-to-have--20x-re-halasztható)
- [7. Per sub-crate findings](#7-per-sub-crate-findings)
- [8. Memory / CLAUDE.md frissítések (elavult adatok)](#8-memory--claudemd-frissítések-elavult-adatok)
- [9. SKILL.md javaslatok (priorizált)](#9-skillmd-javaslatok-priorizált)
- [10. v2.0.0 release verdict](#10-v200-release-verdict)

---

## 1. Vezetői összefoglaló

> **Status (2026-05-08 first + second + third + fourth-round fix-pass; 2026-05-10 rc.1 reconciliation):**
> **6/6 P0**, **13/13 P1**, **23/23 P2 lezárva**. 16/16 release-kritérium zöld.
> Új feature-ök: **proper drift-coupled LIBOR Market Model** (`interest::lmm::Lmm`,
> spot-LIBOR measure, log-Euler positivity-preserving stepping, optional
> korrelációs Cholesky), **end-to-end calibration példa** (BSM + Heston
> multi-maturity), **Vasicek::from_fou_estimate** stats↔quant adapter,
> új marker traits (`VariableDimensional<T>`, `ComplexPathOutput<T>`),
> új `HypothesisTest` trait (8 stationarity/normality test impl), helyes
> Frank tau↔theta math (Genest-MacKay 1986 + Brent solver), valamint
> **§6.23 Python coverage expansion** (96 új PyO3 osztály + 12 pyfunction quant/copulas/stats,
> total most **210** — Tier 1+2 teljes lefedettség; AI kihagyva felhasználói döntés szerint;
> ADF/KPSS/PhillipsPerron/ERS/LeybourneMcCabe/EngleGranger/Johansen/Granger/HMM/HarRv/PCA/FamaMacBeth/PairsStrategy/NelsonSiegel.fit
> openblas-gated; HullWhite bond, HwSwaptionCalibrator, UKF/ParticleFilter, Cashflows,
> inflation swaps API-trait függés / lifetime miatt skip).

A `v2.0.0-rc.0` **érdemi előrelépés** a `beta.3`-hoz képest. A 2026-04-28 audit P0/P1
listája gyakorlatilag mind lezárult (`calculate_tau_in_days` symbol szinten eltűnt,
`Calibrator`/`CalibrationResult` Result-based, `DistributionExt` `unimplemented!()`
defaults, Python packaging fix, feature propagation, docs.rs lockdown, fBM seed
pinned, prelude). Ezenkívül nagyobb additív munkák ágyazódtak be: **QuantLib-style
`Instrument` + `PricingEngine` decoupling**, **reaktív market cache**, **FX modul
(delta/ATM conventions, Vanna-Volga smile)**, **variance swap**, **Total Return
Swap**, **Almgren-Chriss → execution-cost feedback a pricing/risk-be**,
**`examples/full_pipeline.rs` end-to-end demó**.

~~**Verdict:** `v2.0.0-rc.0` **NEM tartható** mint stable. **`v2.0.0-rc.1` szükséges**
a §4 alatti **6 új P0 blocker** miatt — köztük egy build-szintű hiba
(`cargo check --all-features` fail), kettő doc-vs-impl mismatch (BGM drift, OU/CIR
`theta`/`mu` swap), egy public path runtime panic (`fou_estimator::FilterType::Classical`),
egy semantically-misleading API (`Tree`/`Vine` copulák Gauss-collapsed nem valódi vine),
és egy debug-only test ami a `cargo test`-et szennyezi. Mind kis költségű fix.~~

**Verdict (2026-05-08 update):** A 6 P0 mind kis költségű fix-szel lezárva — **`v2.0.0-rc.1` cuttable**, ha még a CI matrix kibővítés (§5.2) + `publish.sh` test gate (§5.3) is bele kerül. Stable verziójavaslat: rc.1 cut → ~3-7 nap soak (regress run, feedback) → `2.0.0` tag.

A jó hír: a **prior 7 P0 blocker mind javítva** (4. szekció §F2 a 2026-04-28
auditból), a **6 új P0 is lezárva** 2026-05-08-án, és **23 új P1/P2 megállapítás** is
azonosítva — ezek nem stop-the-line, mind a 2.0.x line-on lezárandók.

---

## 2. Build / test állapot

| Cél | Állapot | Megjegyzés |
|---|---|---|
| `cargo check --workspace --no-default-features` | ✅ 10s | Tiszta, 0 warning |
| `cargo clippy --workspace --no-default-features` | ✅ 58s | Tiszta, 0 warning |
| `cargo check --workspace --all-features` | ❌ **FAIL** | E0252 dupe `Array2` import — `process/fbm.rs:28-32 + :36` (lásd §4.1) |
| `cargo check -p stochastic-rs --features openblas,ai,yahoo` (docs.rs) | ⚠️ | 2 dead-code warning: `malliavin_thalmaier/kernel.rs:42` `kernel_k_ij_h`, `stationarity/adf.rs:53` `pub lag` |
| `cargo run --no-default-features --example full_pipeline` | ✅ | A v2 trait felület végigfut, expected output |
| `cargo test --workspace --no-default-features` | ❌ link error | Pre-existing pyo3 unifikáció a workspace-test esetén — `--exclude stochastic-rs-py` workaround |
| `cargo test -p stochastic-rs-distributions` | ✅ 26+14 | 119s — bench-szerű unit testek szennyezik (lásd §5.6) |
| `cargo test -p stochastic-rs-stochastic` | ✅ **158/158** | 68s. fBM seed pinned, stabil |
| `cargo test -p stochastic-rs-stats` | ✅ 82/82 | 96s — Fukasawa heavy de zöld |
| `cargo test -p stochastic-rs-copulas` | ✅ 3/3 | gyors |
| `cargo test -p stochastic-rs-ai` | ✅ 6/6 | Synthetic + real-trainset gzip-npy |
| `cargo test -p stochastic-rs-quant` | ✅ ~351 | beta.2-ben 351, várhatóan ~360-370 most |
| `cargo test -p stochastic-rs-viz` | ✅ 2/2 | gyors |

**Trait impl census** (mind verifikálva):

| Trait | Impl | Megjegyzés |
|---|---|---|
| `ProcessExt<T>` | **120** | up from 113 in beta.2 audit |
| `MalliavinExt`, `Malliavin2DExt` | **0** | Deferred (prelude-ből kivéve) |
| `OneDimensional`/`TwoDimensional`/`MultiDimensional`/`CurveOutput` | blanket-auto | OK |
| `BivariateExt` | 4 (Clayton/Gumbel/Frank/Independence) | tesztek hiányoznak |
| `MultivariateExt` (openblas) | 3 (Gaussian/Tree/Vine) | Tree/Vine félrevezető (§4.4) |
| `PricerExt` | ~14 | OK |
| `ModelPricer` | ~14 | OK |
| `FourierModelExt` | ~11 | OK |
| `ToModel` | 13 | OK (v2 érettség) |
| `ToShortRateModel` | 1 (HW) | OK kezdetnek |
| `Calibrator` | 9 | Result-based + Params/Error |
| `CalibrationResult` | 12 | type Params + iterations/message/max_error |
| `GreeksExt` | 5 | + `Greeks` aggregator (9 mező) |
| `DistributionExt` | **18/19** | ⚠️ a régi audit 3-at állított — javítás kell (§8) |
| `Instrument` / `InstrumentExt` / `PricingEngine` / `PricingResult` | új v2 | `examples/full_pipeline.rs` használja |

**Python (`stochastic-rs-py`):** ⚠️ a CLAUDE.md még "placeholder"-nek nevezi —
**ténylegesen 102 PyO3 osztály regisztrálva** distributions + stochastic side-on
(quant/calibration/copulas/stats/ai továbbra is hiányzik).

---

## 3. Régebbi P0 állítások — verifikálva

A 2026-04-28 audit 7 új P0 blockere mind lezárva (saját ellenőrzéssel):

| # | Tétel | Verifikáció | Evidencia |
|---|---|---|---|
| 4.1 | `calculate_tau_in_days` bug | ✅ | `grep` üres a `quant/src/`-ben |
| 4.2 | Date support partial (BSM panic, Heston silent 1.0) | ✅ | minden pricer `tau_or_from_dates()`-et hív |
| 4.3 | `DistributionExt` false `0.0` defaults | ✅ | `traits/distribution.rs:14-98` mind `unimplemented!()` informatív üzenettel |
| 4.4 | Python packaging félig kész | ✅ | `pyproject.toml:30` `manifest-path = "stochastic-rs-py/Cargo.toml"`; cdylib él 102 osztállyal |
| 4.5 | Feature propagation tört | ✅ | `Cargo.toml:309-340` `gpu/cuda-native/metal/accelerate` mind továbbít |
| 4.6 | docs.rs `all-features=true` instabil | ✅ | `Cargo.toml:367` explicit `["openblas", "ai", "yahoo"]` |
| 4.7 | fBM property test flaky (5%-tol) | ✅ | `process/fbm.rs:256` `Fbm::seeded(h, n, t, 0xF_B_C0FFEE_u64)` |
| 5.3 | `Calibrator` trait gyenge | ✅ | `quant/traits/calibration.rs:58-79` — Result + type Params + type Error |
| 5.4 | `CalibrationResult` underspec | ✅ | `:93-135` — `params()`, `iterations()`, `message()`, `max_error()` |
| 5.5 | `PricerExt::implied_volatility` default `0.0` | ✅ | `:11-13` most `f64::NAN` |
| 5.5 | `derivatives()` típuselveszítés | ✅ | törölve, helyette `GreeksExt::greeks() -> Greeks` |
| 5.7 | `GreeksExt` 2nd-order Greeks | ✅ | vanna/charm/volga/veta + `greeks()` aggregator |
| 5.9 | Malliavin*Ext kivéve a prelude-ból | ✅ | `src/lib.rs:47-69` nem tartalmazza |
| P1 | Naming aliases (GBM/OU/CIR/...) | ✅ | `aliases.rs` 10 deprecated alias, v3.0.0-ra törlés |
| P1 | sample_pair (2× FGN speedup) | ✅ | `noise/fgn/core.rs:167-209` + 2 teszt — **frissíti a fgn_optimization memóriát** |
| P1 | Fukasawa L-BFGS-B + Paxson + intraday | ✅ | `fukasawa_hurst.rs` doc + impl mind benne — **frissíti a fukasawa_status memóriát** |

---

## 4. 🔴 Új P0 release blockerek

> **2026-05-08 fix-pass status: 6/6 P0 LEZÁRVA.** Részletek a 10. szekció akciólistájában.

A **6 új P0 blocker** mind kis költségű fix; egyik sem igényel architektúra-vágást.

### 4.1. ✅ ~~`cargo check --workspace --all-features` build-fail (E0252)~~

**Hely:** `stochastic-rs-stochastic/src/process/fbm.rs:28-32` és `:36`

```rust
#[cfg(any(feature = "gpu", feature = "cuda-native",
          feature = "accelerate", feature = "metal"))]
use ndarray::Array2;
#[cfg(feature = "python")]
use numpy::ndarray::Array2;     // ← E0252 amikor mindkét oldal aktív
```

**Hatás:** `python + gpu` (vagy bármely python+nativ-backend) együtt nem épül.
A CI mátrix nem teszteli ezt a kombinációt → nem fogja el.

**Fix (2026-05-08):** `process/fbm.rs:22-29` egyesítve — `Array2` import egyetlen `any(...)` blokkal `gpu/cuda-native/accelerate/metal/python` flag-eken; a `numpy::ndarray::Array2` redundáns import törölve. Mellékhatás: `--all-features` aktiválja `mimalloc + jemalloc`-ot is, mindkettő `#[global_allocator]`-t definiált → precedencia-szabály `src/lib.rs:13-19`: jemalloc nyer ha mindkettő be van kapcsolva. `cargo check --workspace --all-features` most ✅.

### 4.2. ✅ ~~`interest/bgm.rs:122-124` — BGM drift term hiányzik~~

**Hely:** `stochastic-rs-stochastic/src/interest/bgm.rs:122-124`

A doc azt mondja `dL_i = µ_i L_i dt + σ_i L_i dW`, de az update body **csak**
`f_old + f_old * lambda[i] * row_slice[j]`-t számol — a `µ_i L_i dt` drift term
hiányzik. Vagy az implementáció rossz (hibás dinamika), vagy "spot-LIBOR
mértékben" mintázik csendben (ha igen, a doc explicit kell hogy mondja).

**Fix (2026-05-08, két iteráció Codex stop-time review után):** triage döntés → **honest scope-doc**. Az első iteráció ("per-forward-measure martingale simulation") és a második is ("xn db log-normal / geometric Brownian motion") túlbecsülte az impl-et — a Codex review mindkettőt ki is fogta. Pontos karakterizálás:

- A recurrence `L(t+dt) = L(t)(1 + λ·ΔW)` egy **forward-Euler diszkretizáció** az `dL = λ L dW` formal SDE-re. **Nem** exact log-normál evolúció — az `L(t)·exp(−½λ²dt + λ ΔW)` nincs használva.
- A diszkrét marginális **nem log-normál** semelyik finite `dt`-n. Csak a `dt → 0` limit ad log-normált.
- A path-ok **negatívvá válhatnak** ha `λ·ΔW < −1` (nem-triviális esemény ha `λ √dt` nem kicsi).
- A recurrence martingál konstrukció szerint (`E[L(t+dt)|L(t)] = L(t)` mert `E[ΔW] = 0`), de ez nem implikál log-normalitást.
- Nincs tenor / accrual struktúra → "j-edik forward mérték" fogalma sem értelmezhető; nincs cross-forward drift; a Brownianok statisztikailag **függetlenek**, nem korreláltak.

Új doc explicitten kimondja:
- ⚠️ **NEM** BGM / LMM a standard értelemben
- ⚠️ a per-step recurrence **NEM** exact log-normál evolúció (csak Euler approximáció)
- ⚠️ path-ok negatívvá válhatnak ha `λ √dt` nem elhanyagolható
- Alkalmas: marginal MC ahol `λ_i √dt ≪ 1`, sanity-check, demo
- **Nem alkalmas**: caplet/floorlet kalibráció (no tenor + Euler bias), swaption pricing, path-sensitive Black-formula payoffs (negatív L-ek miatt), bármilyen cross-rate dependence

Lásd `bgm.rs:1-65` (header) és `bgm.rs:69-77` (struct doc).

### 4.3. ✅ ~~`diffusion/{ou,cir}.rs` + `interest/vasicek.rs` — `theta` ↔ `mu` doc swap~~

**Helyek:**
- `stochastic-rs-stochastic/src/diffusion/ou.rs:19-22`
- `stochastic-rs-stochastic/src/diffusion/cir.rs:21-24`
- `stochastic-rs-stochastic/src/interest/vasicek.rs:17-20` (Vasicek belül OU-t wrap-el)

**Probléma:** A struct mezők doc-string-jei szerint `theta` = "long-run target
level", `mu` = "drift / long-run mean". Az **implementáció (ou.rs:99) viszont**
`theta * (mu - prev)` formában használja — tehát `theta` = mean-reversion
**SPEED** és `mu` = long-run **MEAN**. A doc fordítva mondja.

A workspace többi pontja (`fou.rs`, `correlation/heston_stoch_corr.rs`,
`teng.rs`, `transformed_ou.rs`, `van_emmerich.rs`) helyes konvenciót használ
(`kappa`/`mu`).

**Hatás:** Stable API freeze előtt egy felhasználó aki a doc-ot olvassa
fordított dinamikát kap. Ezt **nem** lehet csendben tovább vinni stable-re.

**Fix (2026-05-08):** doc-swap mindhárom file-ban. `theta` field most explicitten "Mean-reversion speed (κ in the SDE)", `mu` field "Long-run mean level (θ in the SDE)". A formula header (`dX = κ(θ-X)dt + σdW`) a Vasicek SDE konvenciójánál marad. Vasicek esetén a `dr = a(b-r)dt + σdW` notációval is jelzi a megfeleltetést. Nincs breaking rename — csak doc.

### 4.4. ✅ ~~`copulas::multivariate::{Tree, Vine}` — semantically-misleading~~

**Hely:** `stochastic-rs-copulas/src/multivariate/{tree.rs,vine.rs}`

`TreeMultivariate` és `VineMultivariate` **NEM valódi pair-copula vine
constructions** — implicit korreláció-mátrixból Gauss-copulát építenek
(MST `tree.rs`, star C-vine `vine.rs`). Stable API-ben a név határozottan
azt sugallja hogy R-vine pair-copula.

**Fix opciók (válassz egyet):**
1. **Rename:** `TreeMultivariate → MstGaussianCopula`,
   `VineMultivariate → StarGaussianCopula` (breaking, deprecation aliasszal).
2. **Doc-scope:** explicit "Gaussian-collapsed implied-correlation copula"
   félmondat a struct-doc fejlécében.
3. **Implement:** valódi pair-copula konstrukció. Nagy lift, **nem 2.0** scope.

**Fix (2026-05-08):** **2-es opció — scope-doc** mindkét file-ra. `tree.rs:1-15` és `vine.rs:1-19` modul-szintű header explicitten kimondja "**Gaussian-collapsed implied-correlation copula, NOT a real R-vine**", a `TreeMultivariate`/`VineMultivariate` struct-szintű doc szintén jelzi. Eredeti R-vine formula a vine.rs-ben referenciaként megmaradt, de explicitten "not what this implementation computes". Rename későbbi 2.x minor verzióban; jelen PR nem breaking.

**Plusz:** mindkét típus `rand::random::<f64>()`-ot hív (`tree.rs:195,284`,
`vine.rs:110,231`), nem-determinisztikus — törje a `SeedExt` láncot. Ez P1
külön (§5.4) — még nyitva.

### 4.5. ✅ ~~`stats::fou_estimator::FilterType::Classical` runtime panic~~

**Hely:** `stochastic-rs-stats/src/fou_estimator.rs:196`

```rust
} else if self.filter_type == FilterType::Classical {
    unimplemented!("Classical filter not implemented yet.");
}
```

A `FilterType::Classical` enum variant **publikus**, elérhető a
`FOUParameterEstimationV1::new`-on keresztül. Ha valaki ezt használja stable
2.0-ban → runtime panic.

**Fix (2026-05-08):** `Classical` variant törölve (`fou_estimator.rs:93-96`), enum most `#[derive(PartialEq, Clone, Debug)] enum FilterType { Daubechies }`. `get_filter_coefficients()` `match`-re egyszerűsítve a 3-ágú `if-else-if-else` helyett. Még csak rc.0, így a breaking jellegű enum-szűkítés bele fér. Nincs runtime panic ezen a kódutón többé.

### 4.6. ✅ ~~`tests/debug_fukasawa.rs` debug-only test, 0 assertion~~

**Hely:** `tests/debug_fukasawa.rs:7-76`

`#[test] fn likelihood_surface()` — ~70 sor `println!("...")` periodogram +
NLL surface dump. Nincs benne `assert!` / `assert_eq!`. Mint
`cargo test --workspace` része szennyezi az outputot.

**Fix (2026-05-08):** `#[ignore = "diagnostic-only: prints likelihood surface, no assertions"]` hozzáadva. Manuálisan futtatható: `cargo test -- --ignored likelihood_surface`. A `cargo test --workspace` outputot többé nem szennyezi.

---

## 5. 🟡 P1 (erősen ajánlott release előtt)

### 5.1. ✅ ~~Migration guide undercount~~

`docs/V1_TO_V2.md:60-65` és `CLAUDE.md` szerint a prelude **13 elemet** hoz be.
Valójában `src/lib.rs:47-69` **20 elemet** exportál — `Calibrator`,
`CalibrationResult`, `GreeksExt`, `Instrument`, `InstrumentExt`, `PricingEngine`,
`PricingResult` mind hozzáadva. Frissítendő.

**Fix (2026-05-08):** `docs/V1_TO_V2.md` §2.1 frissítve — 5 csoportra bontott prelude-lista (Trait core / Pricing / Calibration / Instrument-engine / Option types) + `MultivariateExt` és `CallableDist` feature-gate magyarázat. A CLAUDE.md frissítendő külön.

### 5.2. ✅ ~~CI matrix gap (rust.yml)~~

A `check_umbrella` matrix csak `default` + `ai`-t fedte le.

**Fix (2026-05-08):** 8-elemű feature mátrix bevezetve (`""`, `ai`, `openblas`, `yahoo`, `python`, `gpu`, `python,gpu`, `openblas,ai,yahoo`); új `lint` job (`cargo fmt --all -- --check` + `cargo clippy --workspace --no-default-features --all-targets -- -D warnings`); `actions-rs/toolchain@v1` → `dtolnay/rust-toolchain@stable` modernizálva. A §4.1 build-fail típusú combo most CI-ben elfogódik.

### 5.3. ✅ ~~`publish.sh` no test gate~~

**Fix (2026-05-08):** pre-publish gate hozzáadva (fmt + clippy + workspace test) a `for spec in PUBLISH_ORDER` előtt; opcionális `--skip-gate` flag (NOT recommended) bypass-ra. Help szöveg + bash syntax-check ✅.

### 5.4. ✅ ~~`copulas::multivariate::{Tree,Vine}` non-deterministic RNG~~

`tree.rs:195,284`, `vine.rs:110,231` 4 hely `rand::random::<f64>()`-ot hívott — nem fűzhető a `SeedExt` láncba.

**Fix (2026-05-08):** mind a 4 hely `SimdNormal::<f64>::new(0.0, 1.0).fill_slice_fast(buf)` mintára átírva — a project SimdRng-jét használja a globális counter-en keresztül (deterministic-capable). 1500 fős loop helyett bulk SIMD fill — gyorsabb is. `cargo test -p stochastic-rs-copulas --features openblas` ✅ 3/3.

### 5.5. ✅ ~~`stochastic` 9 `panic!` inside `sample()`~~

**Fix (2026-05-08):** 17 production panic refactoring konstruktor-szintű validation-ré:
- 5× `validate_drift_args` helper (`gbm_log`, `heston_log`, `bates_svj`, `bates`, `mjd_log`) — `(r and r_f), b, or mu` ellenőrzés a `new()`/`seeded()`-ben, `panic!` → `unreachable!` a `drift()`-ben.
- 4× `validate_n_or_tmax` helper (`poisson`, `hawkes`, `customjt` + `ccustom` üzenetfrissítés).
- 2× `cpoisson` `lambda * dt finite` runtime-asszerció (értékkel a hibaüzenetben).
- 2× `isonormal::cov_ld` `d ∈ (0,1)` és nem-degenerált denominátor.
- 2× `jump_fou_custom` closure-return validation (asszerció clear üzenettel + workaround javaslat — runtime-only mert a closure outputjára vár).
- 2× `ctrw` invalid law string validation pontosított üzenettel.
- 1× `volterra` unknown kernel string + 1× `fgn/core` Hurst range — már construction-side, üzenet pontosítva.

`cargo test -p stochastic-rs-stochastic --lib` ✅ **163/163** (158 → 163 LMM-mel).

### 5.6. ✅ ~~Distributions test pollution~~

**Fix (2026-05-08):** 12 teszt `#[ignore]`-d (`combined_all_distributions` + 11 `bench_*`); `cargo test -p stochastic-rs-distributions` 119s → **0.03s** (13 active + 13 ignored).

### 5.7. ✅ ~~PyPI workflow missing macOS x86_64~~

**Fix (2026-05-08):** `.github/workflows/pypi.yml` macos matrix kibővítve `macos-13 + x86_64` target-tel az `aarch64` mellé. Intel Mac userek most pip install-elhetnek.

### 5.8. ✅ ~~fOU estimator API outliers~~

**Fix (2026-05-08, opció C teljes refactor):**
- V1/V2/V4 struct-ok **eltávolítva**, helyettük 3 free fn: `estimate_fou_v1(path: ArrayView1, filter_type, delta, hurst_override)`, `estimate_fou_v2(path: ArrayView1, delta, series_length, hurst_override)`, `estimate_fou_v4(path: ArrayView1, delta, k, p, hurst_override, sigma_override)`.
- Minden free fn **zero-copy `ArrayView1<f64>`** boundary-n.
- `set_hurst()` / `set_sigma()` setterek → explicit `*_override: Option<f64>` paraméter.
- Belső helperek (`power_variation`, `c_k_p`, `rho_k_h_zero`, `binomial`, `diff_coeff`, `lfilter`) free fn-ekként megosztva.
- V3 marad **változatlan** (sim+est round-trip helper, különböző shape by design — nem deprecated).
- 0 külső caller (csak `FouEstimateResult` használt — quant/calibration/rbergomi.rs változatlan).
- 3 új **bit-exact regresszió teszt** — V1/V2/V4 mind side-by-side összehasonlítja a refactor outputját inline reimplementált "régi struct-era" referencia matekkal `f64::to_bits()` egyenlőséggel ⇒ **0 numerikus drift**.
- Modul méret: 786 → 562 sor (-28%); tesztek: 2 → **11**.

`cargo test -p stochastic-rs-stats` ✅ **94/94**.

### 5.9. ✅ ~~`fd::FractalDim` panics~~

**Fix (2026-05-08):** `panic!()` → `Result<f64, FdError>` conversion. 6 variant-ú `FdError` enum (`PathTooShort{got, required}`, `NonPositiveP(f64)`, `KmaxTooSmall(usize)`, `DegeneratePath`, `NotEnoughScales`, `RegressionFailed`). 3 új error-eset teszt + összes hívási hely (3 file: `tests/fractal_dim_validation.rs`, `tests/fgn_gpu_visual.rs`, `tests/fgn_all_backends_visual.rs`) `.expect()` chain-nel update-elve. `hurst_from_signal` `catch_unwind` → `match` Result alapra váltva.

### 5.10. ✅ ~~`bergomi`/`rbergomi` simplified non-Volterra formula vs doc~~

**Fix (2026-05-08):** **honest scope-doc** mindkét file-ra. `bergomi.rs` header explicit kimondja "single-factor log-normal Bergomi, NOT the full Bergomi 2009 one-factor model" és felsorolja a hard-coded egyszerűsítéseket (`H=½`, `κ=0`, flat `ξ_0`). `rbergomi.rs` header részletesen leírja hogy "scaled-Brownian-motion approximation of rough Bergomi — variance-matched, NOT a true Volterra integral", a faktorizáció `(t-s)^{H-½} → t^{H-½}` shortcut-ot magyarázza, jelzi hogy csak a marginal variance scaling marad meg, a fBM autokovariancia nem. User mutató `crate::rough::MarkovLift` (Bilokon-Wong 2026 GGL), `crate::rough::rl_heston::RlHeston`, `crate::rough::rl_bs::RlBs`, `crate::process::volterra::Volterra`-ra. Bayer-Friz-Gatheral 2016 hivatkozás megőrizve.

### 5.11. ✅ ~~Diffusion `Gbm::sample` x0 default inconsistency~~

**Fix (2026-05-08):** `diffusion/gbm.rs:94` `self.x0.unwrap_or(T::zero())` → `self.x0.unwrap_or(T::one())`. Most konzisztens a `terminal_lognormal_params` x0=1 default-tal. Magyarázó komment: "GBM started at 0 stays at 0 (absorbing fixed point), so 0 is degenerate; using 1 matches the marginal-distribution convention". Gbm tesztek 3/3 ✅.

### 5.12. ✅ ~~AI dead-code és hiányzó adapter~~

**Fix (2026-05-08 + utólagos kiegészítés):**
- ✅ `stochastic-rs-ai/src/lib.rs:11-17` `DataSet` struct törölve.
- ✅ `src/utils.rs` (egész file) törölve — `train_test_split_for_array2` dup.
- ✅ `src/traits.rs` (egész file) törölve — `FloatExt` + `ProcessExt` re-export használatlan.
- ✅ **Tipusos `Nn → ImpliedVolSurface` adapter** implementálva — `StochVolNn::predict_implied_vol_surface` (`stochastic-rs-ai/src/volatility/common.rs:402`) + thin wrapper-ek `HestonNn` / `OneFactorNn` / `RBergomiNn` mind a `quant` cargo feature mögött (`Cargo.toml:21` `quant = ["dep:stochastic-rs-quant"]`); umbrella `ai` feature automatikusan bekapcsolja `stochastic-rs-ai/quant`-ot. `predict_implied_vol_surface_roundtrip` teszt zöld (`heston.rs:168`). Lásd §7.7.

`cargo test -p stochastic-rs-ai` ✅ 6/6.

### 5.13. ✅ ~~`python::IntoF32`/`IntoF64` always-compiled~~

`stochastic-rs-core/src/python.rs` mindig fordult, nem feature-gated.
A `cargo doc` mind a publik felület része volt akkor is, ha a felhasználónak
nincs szüksége Pythonra.

**Fix (2026-05-08):** `stochastic-rs-core/src/lib.rs:5` `#[cfg(feature = "python")] pub mod python;`. A `python = []` flag már létezett, csak nem használva. Verifikálva: `cargo check --workspace --no-default-features` ✅, `cargo check -p stochastic-rs-py` (downstream user a python feature-rel) ✅.

---

## 6. 🟢 P2 nice-to-have / 2.0.x-re halasztható

> **2026-05-08 second-pass status: 23/23 P2 LEZÁRVA.** §6.23 quant/copulas/stats Python
> bindings hozzáadva (AI kihagyva felhasználói döntés szerint).

| # | Tétel | Hol | Status |
|---|---|---|---|
| 6.1 | ~~`benches/econometrics.rs:19` `fn random_walk` dead~~ | benches | ✅ openblas-gated |
| 6.2 | ~~`tests/fgn_*_visual.rs` no-assertion HTML-writer "tests"~~ | tests | ✅ `#[ignore]`-d |
| 6.3 | ~~`tests/mt_vs_fd_benchmark.rs` névből bench, valójában test~~ | tests | ✅ `#[ignore]`-d (manual run) |
| 6.4 | ~~README "85+ stochastic processes" vs CLAUDE.md "140+" drift~~ | README.md:12 | ✅ 120+ konzisztencia |
| 6.5 | ~~README nincs v1→v2 migráció callout~~ | README.md | ✅ banner hozzáadva |
| 6.6 | ~~README Python szekció nem említi a "sampling-only" caveat-ot~~ | README.md:78-202 | ✅ caveat block |
| 6.7 | ~~Nincs end-to-end **calibration** példa (csak full_pipeline)~~ | examples/ | ✅ `examples/calibration_demo.rs` (BSM + Heston multi-maturity) |
| 6.8 | ~~`viz/lib.rs` 1444 soros monolit — szét kell darabolni~~ | stochastic-rs-viz | ✅ `plottable.rs` + `grid_plotter.rs` + `convenience.rs` |
| 6.9 | ~~viz 3 új convenience fn (plot_process/plot_distribution/plot_vol_surface) tesztek nélkül~~ | stochastic-rs-viz | ✅ 4 új smoke teszt + bad-shape panic teszt |
| 6.10 | ~~`SimdBinomial`/`SimdHypergeometric` nincs `with_seed` (API consistency)~~ | distributions | ✅ `with_seed` + `from_seed_source` |
| 6.11 | ~~Bivariate copulák egyikére sincs paraméter-recovery teszt (Clayton/Gumbel/Frank)~~ | copulas | ✅ 11 teszt: closed-form recovery + roundtrip + edge cases |
| 6.12 | ~~Frank::compute_theta saját Newton solver 1000 iterrel (replace with Brent)~~ | copulas/bivariate/frank.rs:155 | ✅ `find_root_brent` + chunked Gauss-Legendre + helyes Frank tau formula (math bug korrekciója) |
| 6.13 | ~~`gumbel.rs:148`, `independence.rs:122`, `traits/bivariate.rs:32` `panic!` → `Result`~~ | copulas | ✅ panicok megszűntek (gumbel→`f64::INFINITY`, independence→`0.0`, check_theta→error propagation) |
| 6.14 | ~~`process/multivariate_hawkes.rs:74` `Vec<Array1<T>>` outlier Output (no marker trait)~~ | stochastic | ✅ új `VariableDimensional<T>` marker trait |
| 6.15 | ~~`cfou.rs` Complex output (no marker trait)~~ | stochastic | ✅ új `ComplexPathOutput<T>` marker trait |
| 6.16 | ~~f64 leak `<T:FloatExt>` kódban: `egarch.rs:125`, `drr_garch.rs:152,200`, `mlmc.rs:188`, `correlation/mod.rs:44`, `merton.rs:140`, `lfsm.rs:49,80`~~ | stochastic | ✅ egarch.rs:125 valódi leak fixelve (`T::from_f64_fast`); többi false positive volt (drr_garch f64-only API by design, mlmc/merton/lfsm már T-typed, correlation/mod.rs explicit f64-only utility) |
| 6.17 | ~~`ito.rs`, `isonormal.rs` f64-only~~ | stochastic | ✅ design decision dokumentálva (FFT/closure-bound, érdemi generic refactor nem indokolt; alternatívaként `Sde<T>` + `ProcessExt`-impls) |
| 6.18 | ~~`malliavin.rs` üres 6-soros file — törlendő~~ | stochastic | ✅ törölve + `pub mod malliavin;` el `lib.rs`-ből |
| 6.19 | ~~`sde.rs` 774 LoC, 0 teszt~~ | stochastic | ✅ 5 új teszt (Euler/Milstein/SRK GBM mean recovery, pure-drift exp decay, IC preservation) |
| 6.20 | ~~Repository URL inconsistency (Cargo.toml: dancixx — old pyproject.toml: rust-dd)~~ | meta | ✅ már konzisztens (`grep -r "rust-dd"` üres a forrásban) |
| 6.21 | ~~No `EstimatorResult` trait (P1/7 a beta.2 auditból)~~ | stats | ✅ új `HypothesisTest` trait + 8 impl (ADF, KPSS, ERS, PhillipsPerron, LeybourneMcCabe, JarqueBera, AndersonDarling, ShapiroFrancia) |
| 6.22 | ~~`FouEstimateResult → quant::HestonParams/FOUParams` adapter hiány~~ | stats↔quant | ✅ `Vasicek::from_fou_estimate` (+ Vasicek field doc swap fix: theta=speed, mu=mean) |
| 6.23 | ~~py: nincs seed-determinism Python API; nincs quant/copulas/stats/ai binding~~ | py | ✅ **96 új PyO3 osztály + 12 pyfunction**, total most **210** (198 class + 12 function). **Quant pricers (~20)**: BSM/Heston/Sabr/Merton1976/Asian/Barrier/Compound/Chooser/Cliquet/Gap/SuperShare/CashOrNothing/AssetOrNothing/Floating-és-Fixed-Lookback/BjerksundStensland2002/DoubleBarrier/MCBarrier/VarianceSwap/KirkSpread. **Quant Fourier (8)**: BSM/Heston/DoubleHeston/HKDE/Bates/Kou/MertonJD/CGMY/VG + CarrMadan engine. **Bonds (2)**: Vasicek/CIR. **Calibrators (10)**: BSM/Heston/Sabr/SVJ/DoubleHeston/HKDE/RBergomi/Levy/SabrCaplet/Cgmysv. **VolSurface (5)**: SviRawParams/SsviParams/SviCalibrator/SsviCalibrator/ImpliedVolSurface (FFT). **Risk (3)**: VaR/ExpectedShortfall/DrawdownStats. **Microstructure (3 class + 5 fn)**: AlmgrenChrissPlan, KyleEquilibrium, OrderBook + multi_period_kyle, roll/effective/corwin_schultz_spread, propagator_price_impact. **Curves (3)**: DiscountCurve, NelsonSiegel, ZeroCouponInflationCurve. **Factors (2 fn + 3 openblas-gated class)**: ledoit_wolf_shrinkage, sample_covariance + PCA/FamaMacBeth/PairsStrategy. **Copulas (5)**: Clayton/Gumbel/Frank/Independence/EmpiricalCopula2D + 4 pyfunction (kendall_tau_matrix, tau_matrix_to_corr_matrix, tau_to_corr, corr_to_tau). **Stats normality (3)**: JarqueBera/AndersonDarling/ShapiroFrancia. **Stats stationarity (5, openblas-gated)**: ADF/KPSS/PhillipsPerron/ERS/LeybourneMcCabe. **Stats Hurst (2)**: FukasawaHurst/FouEstimate v1+v2. **Stats Heston (2)**: HestonMLE/HestonNMLECEKF. **Stats realised (6)**: RealizedMoments/BipowerVariation/BNSJumpTest/RealizedKernel/TwoScaleRV/PreAveragedVariance. **Stats spectral/changepoint (3)**: PeriodogramFFT/Cusum/Pelt. **Stats density (3)**: GaussianKDE/TailIndex/Leverage. **Stats econometrics (4, openblas-gated)**: HarRv/EngleGranger/Johansen/Granger/GaussianHmm. **Stats MCMC (1 fn)**: random_walk_metropolis (Python-callable log target). **Skipped**: AI (felhasználói döntés), HullWhite bond (`fn(f64)->f64` field), HwSwaptionCalibrator (`&'a DiscountCurve` lifetime), UKF/ParticleFilter (closure args; csak MCMC kapott Python-callback wrappert), Cashflows (CurveProvider trait), inflation swaps (InflationCurve trait). |

---

## 7. Per sub-crate findings

### 7.1. `stochastic-rs-core` (3 file, 673 LOC)
- ✅ Solid foundation. `SimdRng`, `SeedExt`, `Unseeded`/`Deterministic` tiszta.
- ✅ ~~`python.rs` mindig fordul (5.13)~~ — `#[cfg(feature = "python")]` gated.
- ✅ ~~`simd_rng.rs:179-201` `t >> 64` mindig 0 (harmless)~~ — `t_hi` (0 bit entrópia 2026-ban) helyett **text-address** (`initial_seed` fn pointer) — a stack ASLR slide és a text ASLR slide független, így a 4-irányú XOR (t_lo, pid, stack_addr, text_addr) most valós entrópiát mixel.
- ✅ `Xoshiro256PP4` / `Xoshiro128PP8` SIMD implementáció rendben.
- 0 release blocker.

### 7.2. `stochastic-rs-distributions` (28 file, 7.7k LOC)
- ✅ **18/19 disztribúción `DistributionExt` implementálva** (a beta.2 audit állítása "3/19" elavult). Csak `ComplexDistribution` lacks (intentional, combinator). 5 nevesített `unimplemented!()` informatív üzenettel: `AlphaStable.{pdf,cdf,inv_cdf}`, `NormalInverseGauss.{pdf,cdf,inv_cdf}`, `Hypergeometric.mgf`, `Beta.{cf,mgf}` — mind matematikailag indokolt (no closed form).
- ✅ `tests/distribution_ext_vs_reference.rs` 14 disztribúciót cross-validál statrs-szel (production code soha nem delegál statrs-be).
- ✅ ~~Test pollution (5.6)~~ — 12 teszt `#[ignore]`-d (119s → 0.03s).
- ✅ ~~Binomial/Hypergeometric nincs `with_seed` (6.10)~~ — `with_seed` + `from_seed_source` impl.
- ✅ ~~`binomial.rs` `O(n*k)` Bernoulli loop nagy `n`-re~~ — wait-method dispatch ha `n*p_eff < 30` (Devroye X.4). Bernoulli loop a fallback nagy `np`-re.
- ✅ Mind a 19 Python wrapper most fogadja az opcionális `seed=None` kw-argot (`py_distribution!` / `py_distribution_int!` macro mostantól `from_seed_source(&Deterministic::new(seed))`-re routol). §7.9 SeedExt API követelmény teljesítve.

### 7.3. `stochastic-rs-stochastic` (153 file, 28k LOC)
- ✅ **120 ProcessExt impl** (113→120 növekedés). 0 MalliavinExt impl (deferred).
- ✅ Aliases (10) deprecated, v3.0.0-ra törlés.
- ✅ `sample_pair` 2× speedup kész (FGN). `MarkovLift` SIMD batched (BATCH_TILE=64).
- ✅ Reference-grade rough modul (Bilokon-Wong 2026 GGL nodes scipy-ellen validálva).
- ✅ ~~2 P0 (BGM drift, OU/CIR doc swap), 4 P1, 6 P2~~ — mind lezárva (§4.2, §4.3, §5.5, §5.10, §5.11, §6.14-6.18). Új `interest::lmm::Lmm` proper drift-coupled LMM modul.
- 🛣️ **2.x roadmap (nem release blocker)**: batched FFT for many paths, CPU SIMD eig scaling, GPU pipeline beyond FGN/FBM (Heston/RoughBergomi/CIR2F/BGM/HJM mind CPU-only).

### 7.4. `stochastic-rs-quant` (187 file, 51k LOC) — quant fork timeout, partial findings
- ✅ Calibrator/CalibrationResult Result-based, 9+12 impl.
- ✅ `tau_or_from_dates()` minden pricer-ben (BSM, Heston, Sabr, Asian, Heston-stoch-corr, Kirk, FD, Bjerksund-Stensland, Snell stb.); `calculate_tau_in_days` symbol szinten eltűnt.
- ✅ Új `Instrument` + `PricingEngine` (`AnalyticBSEngine`, `AnalyticHestonEngine`) létezik, `examples/full_pipeline.rs` használja.
- ✅ Reaktív market: `Cached`, `Handle`, `Quote`, `SimpleQuote`, `MarketObserver`.
- ✅ Új modulok: `fx::{delta,smile,quoting,forward,currency}`, `pricing::variance_swap`, `instruments::swap::trs`, `pricing::execution_cost` (Almgren-Chriss feedback).
- ✅ Orphan modulok jól dokumentáltak: `microstructure` (full_pipeline használja), `fourier_malliavin`, `factors`, `order_book` mind paper citation-nel.
- ✅ ~~`pricing/engines/analytic_bs.rs:117` `opt.tau.unwrap_or(0.0)`~~ — `unwrap_or(f64::NAN)`-ra váltva, konzisztens analytic_heston-nal.
- ✅ ~~`vol_surface/sabr_smile.rs:298` hardcoded `7.0/365.0`~~ — `SabrSmileCalibrator { short_tenor_threshold, short_tenor_iters, long_tenor_iters }` mezővé téve `with_short_tenor_threshold` / `with_basin_hopping_iters` builder-pal.
- ✅ ~~`malliavin_thalmaier/kernel.rs:42` `kernel_k_ij_h` dead code~~ — `pub fn`-né téve (memory-szabály: prefer pub over `#[allow(dead_code)]`).
- 0 production `unimplemented!`/`TODO`/`FIXME` kívül a `sabr_smile` hardcoded threshold-on és tests.
- ~5 production `unwrap`/`expect` mind védendő invariáns (`order_book.rs:167`, `holiday.rs:156`, `factors/pairs.rs:91`, `lattice/equity.rs:42`, `cross_currency.rs:66-67`, `calibration.rs:72`).
- **Részletes file-by-file quant audit a follow-up auditba mehet** — a fork ennek megírására ~30+ percig futott és timeout-olt; 50k LOC-ra ez érthető.

### 7.5. `stochastic-rs-stats` (45 file, 10k LOC)
- ✅ **Fukasawa COMPLETE**: L-BFGS-B (argmin LBFGS + MoreThuente line search) + Paxson Euler-Maclaurin + Eq.16 A1/A2 corrections + intraday validation tests (Table 1 m=72, rough vs smooth distinction).
- ✅ ArrayView1 migration **kész**: `heston_nml_cekf` és `mle::fit_mle` is `ArrayView1<f64>`-re lett migrálva. Maradék `Array1` használat a `fou_estimator::sim_*` helperekben szándékos (V3 sim+est dual API).
- ✅ 24+ `*Result` strukt egységes (Debug+Clone, named fields).
- ✅ ~~`fou_estimator::FilterType::Classical` panic (4.5)~~ — variant törölve.
- ✅ ~~fOU V1-V4 owned-Array1 outlier (5.8)~~ — V1/V2/V4 free fn `ArrayView1`-en.
- ✅ ~~`fd::FractalDim` panics (5.9)~~ — `Result<FdResult, FdError>` API.

### 7.6. `stochastic-rs-copulas` (19 file, 2k LOC)
- ✅ NCopula2DExt eltűnt (samples::*Copula2D dedup'd).
- ✅ Új `process_coupling::couple_marginals<C: BivariateExt>` adapter — bridge a stochastic correlation-höz.
- ✅ ~~Tree/Vine nem valódi pair-copula (4.4)~~ — Gaussian-collapsed scope-doc.
- ✅ ~~Bivariate impls untested (6.11)~~ — 11 teszt closed-form recovery + roundtrip + edge cases.
- ✅ ~~Frank Newton brittle (6.12)~~ — `find_root_brent` + chunked Gauss-Legendre.
- ✅ ~~3 panic (6.13)~~ — gumbel→`f64::INFINITY`, independence→`0.0`, check_theta→error propagation.
- ✅ ~~tree/vine non-deterministic RNG (5.4)~~ — `SimdNormal` SeedExt-aware bulk fill.

### 7.7. `stochastic-rs-ai` (8 file, 1.4k LOC)
- ✅ 4-réteg MLP (Linear→ELU×3) AdamW MSE/sqrt loss. BoundedScaler `[lb,ub]→[-1,1]`, StandardScaler output. `HestonNn`, `OneFactorNn`, `RoughBergomiNn`.
- ✅ Train-save-load roundtrip teszt + real-trainset gzip-npy fit teszt mind (3+3) zöld.
- ✅ ~~Dead code (5.12)~~ — `DataSet`, `utils.rs`, `traits.rs` törölve.
- ✅ ~~Adapter `Nn → ImpliedVolSurface` hiány~~ — `StochVolNn::predict_implied_vol_surface` + thin wrapper-ek (`HestonNn`/`OneFactorNn`/`RBergomiNn`) a `quant` cargo feature mögött. Umbrella `ai` feature most automatikusan bekapcsolja `stochastic-rs-ai/quant`-ot. `predict_implied_vol_surface_roundtrip` teszt zöld.
- ⏸️ 0 Python binding — felhasználói döntés a §6.23 lezárásakor (nem blocker).

### 7.8. `stochastic-rs-viz` (1 file, 1.4k LOC)
- ✅ `Plottable<T>` trait + `GridPlotter` builder + 3 új convenience fn (`plot_process`, `plot_distribution`, `plot_vol_surface`).
- ✅ ~~1500-line monolit (6.8)~~ — `plottable.rs` + `grid_plotter.rs` + `convenience.rs` szétdarabolás.
- ✅ ~~auto-rescale silent~~ — `GridPlotter::rescale_threshold(Option<f64>)` builder a per-component scaling kapcsolójára (default `Some(20.0)`, `None` kikapcsolja). Trace-name és hover-tooltip már mutatja a scale-faktort; smoke teszt a disabled útra.
- ✅ ~~convenience fn-ek tesztek nélkül (6.9)~~ — 4 új smoke teszt + bad-shape panic teszt.

### 7.9. `stochastic-rs-py` (1 file, 236 LOC)
- ✅ **Nem placeholder.** 198 PyO3 osztály + 12 pyfunction = 210 entry. pyproject.toml `manifest-path` korrekt.
- ✅ ~~Nincs `quant`/`copulas`/`stats`/`ai`/`viz` Python binding~~ — quant + copulas + stats lefedve (§6.23). AI Python binding kihagyva felhasználói döntés szerint.
- ✅ ~~Nincs `SeedExt` Python API~~ — distributions + copulas + stochastic Python wrapperek mind elfogadnak `seed=None` kw-argot (`Deterministic::new(seed)` route). `BivariateExt::sample_with_seed` új trait-method. **`sample_par` seeded ágon serializál** (distributions: `sample_matrix`'s rayon worker pool klónozza `self`-et és `Clone for Simd*` resetel; stochastic: `ProcessExt::sample_par` default rayon-into_par_iter race-el a `Deterministic` AtomicU64-en) — mindkét macro `is_seeded` flag-en alapuló dispatch.
- ✅ ~~Nincs in-process Python smoke teszt~~ — `stochastic-rs-py/python_smoke.py` 5 check-et exercise-ol (distributions + stochastic + copulas + stats + quant), `rust.yml` CI-ben `python_smoke` job futtatja `maturin develop --features openblas` után.

### 7.10. Umbrella `stochastic-rs` (src/, examples/, tests/, benches/)
- ✅ `src/lib.rs` prelude 20 elemmel; `V1_TO_V2.md` is 20-elemes csoportokra van bontva (§5.1 lezárva).
- ✅ `src/traits.rs` re-export hub tiszta.
- ✅ `examples/full_pipeline.rs` (224 sor) gyakorolja a v2 trait felületet end-to-end. Használja: `Handle/Quote/SimpleQuote`, `EuropeanOption`, `AnalyticBSEngine`, `AnalyticHestonEngine`, `VarianceSwapPricer`, `TotalReturnSwap`, `VannaVolgaSmile`, `gaussian_var`, `liquidity_adjusted_var`, Almgren-Chriss execution cost.
- ✅ ~~`tests/debug_fukasawa.rs` no-assertion test (4.6)~~ — `#[ignore]`-d.
- ✅ ~~CI gap (5.2)~~ — 8-elemes feature-mátrix + lint job + `python_smoke` job.
- ✅ ~~publish.sh no test gate (5.3)~~ — fmt+clippy+test gate, `--skip-gate` flag opcionális.
- ✅ ~~PyPI no Intel Mac (5.7)~~ — `macos-13` x86_64 target hozzáadva.

---

## 8. Memory / CLAUDE.md frissítések (elavult adatok)

### 8.1. CLAUDE.md
- "Workspace layout" szekció említi `stochastic-rs-py — placeholder (Phase 6 follow-up)` → frissíteni: **102 PyO3 osztály regisztrálva, sampling-only**.

### 8.2. Auto memóriák (`.claude/.../memory/`)
| Memóriafájl | Állapot | Akció |
|---|---|---|
| `feedback_no_statrs_distributions.md` | Implicit "16 stub" | Frissíteni: 18/19 closed-form, 5 nevesített unimplemented (mind no-closed-form jellemzőre) |
| `project_fukasawa_status.md` | "incomplete + needs L-BFGS-B + intraday" | **Lezárni**: L-BFGS-B benne (argmin LBFGS), Paxson + A1/A2 corrections, intraday tesztek (Table 1 m=72) |
| `project_fgn_optimization.md` | "sample_pair (2×)" mint open win | **Lezárni**: kész (`fgn/core.rs:167-209`). Open marad: batched FFT, SIMD eig scaling, GPU pipeline beyond FGN/FBM |
| `project_audit_2026_04_28.md` | Nyitott P0 listák | **Lezárni**: 7/7 P0 fix verifikálva. 2026-05-07-i új blockerek külön memóriába |
| `project_audit_2026_04_scope.md` | Régebbi scope memo | Áttekinteni, valószínűleg már nem kell |

### 8.3. `docs/V1_TO_V2.md`
- §2.1 prelude — 13 elem helyett 20 (`Calibrator`, `CalibrationResult`, `GreeksExt`, `Instrument`, `InstrumentExt`, `PricingEngine`, `PricingResult` hozzáadva)
- §4 (additive new primitives) — `Instrument` + `PricingEngine` decoupling, reaktív market, FX modul, variance swap, TRS már bent vannak; csak a prelude listája elavult
- Hozzáadni: §3.7 BGM drift fix (ha az §4.2 fix bug), §3.8 OU/CIR doc swap fix

---

## 9. SKILL.md javaslatok (priorizált)

A prior 2 skill (`dev-rules`, `new-module`) modul-*létrehozási* szintet fed le.
A 4 fork összesen 27 javaslatot adott; alább konszolidált priority lista.

### Tier 1 — release-szintű (azonnal megírandó, magas haszon)

1. **`release-checklist`** — `release.md` workflow.
   - Verziószám-bump 9 crate-en (workspace.dependencies)
   - `cargo test --workspace --exclude stochastic-rs-py --features openblas`
   - `cargo clippy --workspace --all-targets -- -D warnings`
   - `cargo check --workspace --all-features` (a §4.1 csapdát fogja el)
   - `publish.sh --dry-run`
   - Git tag + signed
   - Wheels build + PyPI publish (incl. macOS Intel)
   - CHANGELOG + CLAUDE.md frissítés
   - docs.rs feature lockdown ellenőrzés
2. **`feature-flag-management`** — `dep:` proxy, propagation a workspace-en
   keresztül (`stochastic-rs-X/feature` syntax), kombinációs robbanás kerülése,
   `cargo check --features X,Y` mátrix diszciplina. **A §4.1 hibát ez prevenálja.**
3. **`calibration-pattern`** — `Calibrator` impl: `Result<Output, Error>` (anyhow
   konvenció), `CalibrationResult` (`type Params`, `iterations`, `message`,
   `max_error`, `loss_score`), opcionális `ToModel` / `ToShortRateModel` bridge.
   13 ToModel impl + 9 Calibrator a referencia.
4. **`greeks-pattern`** — `GreeksExt` impl: melyik Greek, `f64::NAN` default,
   MC pricerek **kötelező** override `greeks()`-en single-pass konzisztenciáért.
   `GbmMalliavinGreeks`, `HestonMalliavinGreeks` referencia.

### Tier 2 — domain-specifikus (közepes haszon, gyakori munkafolyamat)

5. **`add-diffusion-process`** — `ProcessExt<T>` impl, `pub fn new` + `pub fn seeded`
   parity, `py_process_1d!` macro, deprecated alias az `aliases.rs`-ben ha
   átnevezés. **EXPLICITLY** dokumentálni a `theta` = mean-reversion-speed,
   `mu` = long-run-mean konvenciót (a §4.3-as csapdát megelőzi).
6. **`add-fractional-process`** — mikor extend-elj `MarkovLift`-et vs. wrap
   `Fgn`-t; mikor adj új `Volterra` kernelt. Bilokon-Wong 2026, Ma-Wu 2021,
   Abi Jaber 2018 hivatkozások. **Tiltani** a `sum_z * t.powf(H-1/2)` shortcut-ot
   (§5.10).
7. **`add-jump-process`** — generic `D: Distribution<T> + Send + Sync` paraméter,
   `CompoundPoisson` integráció, characteristic-function konzisztencia
   (Lévy-Khintchine), `(r and r_f)/b/mu` validáció **konstruktorban** (§5.5
   csapdát megelőzi).
8. **`adding-distribution`** — `SimdXxx` pattern (A: transformation, B: ziggurat,
   C: rejection/inversion). Required: `new` + `with_seed` + `from_seed_source`
   + `fill_slice` + `fill_slice_fast` + `Distribution<T>` + `DistributionExt`
   override (closed-form helyett soha statrs!) + KS test + `distribution_ext_vs_reference`
   entry + `py_distribution!` macro + LaTeX `//!` doc.
9. **`adding-python-binding`** — recipe `stochastic-rs-py` kibővítéséhez:
   1. `py_distribution!` / `py_process_*!` invokáció a producer crate-ben
   2. `IntoF32` / `IntoF64` shim ellenőrzés
   3. `m.add_class::<PyXxx>()` regisztráció `stochastic-rs-py/src/lib.rs`-ben
   4. Build: `cd stochastic-rs-py && maturin develop`
   5. Smoke test (Python script vagy `Python::with_gil` block)
10. **`stats-estimator`** — `ArrayView1<T>` input, `*Result` strukt
    (Debug+Clone+named fields), parametric vs bootstrap p-value, openblas-gating,
    paper citation header, **comparison test** R/Python referencia ellen.

### Tier 3 — niche, kevesebb gyakori munka (alacsonyabb prioritás)

11. **`copula-bivariate`** — `BivariateExt` impl pattern: `theta_bounds`,
    `invalid_thetas`, **closed-form `compute_theta` vagy `roots::find_root_brent`**
    (soha custom Newton — §6.12), pdf/cdf/percent_point/partial_derivative,
    parametric-tau recovery teszt.
12. **`add-gpu-sampler`** — pre-flight checklist (FFT length 2^k, Philox vs
    cuRAND, fused-kernel layout). `noise/fgn/cuda_native.rs` Fused Philox+scale
    NVRTC kernel a referencia. `ProcessExt` 4 sample_* override.
13. **`add-mc-variance-reduction`** — antithetic / control-variates / stratified /
    importance / quasi-MC (Halton/Sobol) / MLMC pattern guide. Glasserman 2003,
    Giles 2015. Új estimator → `McEstimate<T>` return + 95% CI test.
14. **`vol-surrogate-nn`** — `StochVolModelSpec::new()` validation, BoundedScaler/
    StandardScaler convention, gzip-npy loader, train_save_load roundtrip teszt
    + real-trainset fit plot, `predict_surface` doc kötelezően mutat
    `ImpliedVolSurface::from_flat_iv_grid`-re.
15. **`integration-test-writing`** — pinned seed kötelező, no debug `#[test]`,
    golden-numerics paper ellen, feature gating diszciplina (a §4.6 csapdát
    fogja el).
16. **`bench-writing`** — criterion harness + group naming + parameter sweep
    + `[[bench]] required-features` gate, no `println!`, no dead helper
    (a §6.1 drift-et fogja el).

### Skip (alacsony haszon vagy nem fáj még)

- `add-malliavin-greek` — 0 impl jelenleg, deferred → akkor írjuk meg ha valóban kell
- `add-rng-engine` — xoshiro már jó, post-xoshiro még messze
- `writing-simd-ziggurat` — egyetlen használati helye distributions, az `adding-distribution` ezt belekapja
- `special-functions-policy` — egyetlen file (`special.rs`), helyben dokumentálható
- `stationarity-test` — beleolvad a `stats-estimator` skillbe
- `mle-process` — beleolvad a `stats-estimator` skillbe
- `adding-plottable` — 1 file viz crate, nem ér meg külön skillt
- `example-writing` — beleolvad a `release-checklist` és `integration-test-writing` skillekbe
- `docs-rs-publication` — egyszeri Cargo.toml metadata, már jól van konfigurálva
- `fgn-perf-cookbook` — leírható egyetlen `noise/fgn/README.md`-be in-tree

---

## 10. v2.0.0 release verdict

### Kritérium check (2026-05-08 fix-pass utáni állapot)

| # | Kritérium | Eredeti | 2026-05-08 |
|---|---|---|---|
| 1 | `cargo check --workspace --no-default-features` | ✅ | ✅ |
| 2 | `cargo check --workspace --all-features` | ❌ §4.1 | ✅ §4.1 lezárva |
| 3 | `cargo clippy --workspace` clean | ✅ | ✅ |
| 4 | Minden subcrate teszt zöld + fbm pinned seed | ✅ | ✅ |
| 5 | Trait API stabilizált (Calibrator, CalibrationResult, ToModel, GreeksExt, PricerExt, ModelPricer, Instrument, PricingEngine) | ✅ | ✅ |
| 6 | Date / day-count uniformity | ✅ | ✅ |
| 7 | DistributionExt defaults panic, nem 0.0 | ✅ | ✅ |
| 8 | Python packaging release-kész | ✅ | ✅ |
| 9 | docs.rs config explicit features | ✅ | ✅ |
| 10 | Migration guide aktuális | ⚠️ §5.1 | ✅ §5.1 lezárva |
| 11 | End-to-end példa (full_pipeline) | ✅ | ✅ |
| 12 | No public-API runtime panic on common use | ❌ §4.5 | ✅ §4.5 lezárva |
| 13 | No misleading naming on public types | ❌ §4.4 | ✅ §4.4 scope-doc |
| 14 | No misleading parameter docs | ❌ §4.3 | ✅ §4.3 lezárva |
| 15 | No silent dynamics bug | ⚠️ §4.2 (BGM drift triage) | ✅ §4.2 scope-doc |
| 16 | `cargo test --workspace` clean | ❌ §4.6 | ✅ §4.6 lezárva |

**Eredeti: 11/16 zöld, 5 piros — 2026-05-08 első kör után: 16/16 zöld.**

### Javaslat: **`v2.0.0-rc.1`** (rc.0 → rc.1 — még szükséges)

Az `rc.1` → `stable` átállás minimum követelményei:

- [x] ✅ **§4.1**: `process/fbm.rs` Array2 dupe import fix (mellékhatás: mimalloc/jemalloc precedencia is fixed)
- [x] ✅ **§4.2**: `bgm.rs` drift term — honest scope-doc (parallel array of uncoupled Euler-stepped multiplicative martingales; **not** a BGM/LMM, **not** exact log-normal, paths can go negative); plusz új `interest::lmm::Lmm` proper drift-coupled LMM (spot-LIBOR measure, log-Euler) hozzáadva
- [x] ✅ **§4.3**: OU/CIR/Vasicek `theta`/`mu` doc swap (3 file)
- [x] ✅ **§4.4**: Tree/Vine scope-doc (Gaussian-collapsed implied-correlation copula)
- [x] ✅ **§4.5**: `FilterType::Classical` törölve
- [x] ✅ **§4.6**: `tests/debug_fukasawa.rs` `#[ignore]` annotálva
- [x] ✅ **§5.1**: `docs/V1_TO_V2.md` prelude lista frissítve (13 → 20, csoportokra bontva)
- [x] ✅ **§5.2**: CI mátrix 8-elemes (`python,gpu` etc.) + clippy/fmt `lint` job, `dtolnay/rust-toolchain` modernizálva
- [x] ✅ **§5.3**: `publish.sh` test gate (fmt + clippy + workspace test), opcionális `--skip-gate` flag
- [x] ✅ **§5.4**: copulas Tree/Vine `rand::random` → `SimdNormal` SeedExt-aware bulk fill
- [x] ✅ **§5.5**: 17 production panic refactor — drift_args + n_or_tmax helperek konstruktor-szinten, runtime panicok asszerciókká pontosítva
- [x] ✅ **§5.6**: distributions test pollution — 12 teszt `#[ignore]`-d (119s → 0.03s)
- [x] ✅ **§5.7**: PyPI macos-13 x86_64 target hozzáadva
- [x] ✅ **§5.8**: fou_estimator V1/V2/V4 → free fn (zero-copy `ArrayView1`); V3 marad sim+est helper; 3 bit-exact regresszió teszt; 786 → 562 sor; +9 új teszt
- [x] ✅ **§5.9**: `fd::FractalDim` Result-based API (`FdError` enum 6 varianttal)
- [x] ✅ **§5.10**: bergomi/rbergomi honest scope-doc (scaled-Brownian-motion approximation, NOT true Volterra); user mutató `MarkovLift`/`RlBs`/`RlHeston`-re
- [x] ✅ **§5.11**: `Gbm::sample` x0 default 0 → 1 (konzisztens `terminal_lognormal_params`-szal)
- [x] ✅ **§5.12**: AI dead code (`DataSet`, `utils.rs`, `traits.rs`) törölve; `Nn → ImpliedVolSurface` adapter implementálva (`StochVolNn::predict_implied_vol_surface` + Heston/OneFactor/RBergomi wrapperek `quant` feature mögött; roundtrip teszt zöld)
- [x] ✅ **§5.13**: `core/python.rs` `#[cfg(feature = "python")]` gated
- [x] ✅ **CLAUDE.md** frissítve (`stochastic-rs-py` 102 PyO3 osztály; prelude 20 elem; DistributionExt 18/19; LMM említve)

**6 P0 + 13 P1 + 1 új feature (proper LMM modul) lezárva.** A 23 P2 (§6.*) a 2.0.x
line-on halasztható (lazább cadence).

### Becsült munka

| Priority | Idő (kis ráfordítás) |
|---|---|
| 6 P0 | ~1 nap |
| 13 P1 | ~3-5 nap |
| 23 P2 | ~5-10 nap (tehát 2.0.x-re halasztható) |
| 16 SKILL.md (Tier 1+2) | ~2-3 nap |
| **Total rc.0 → stable** | **~3-7 nap fókuszált munka** |

---

## Függelék

### F1. Audit kontextus
- **Előző auditok:** `docs/API_AUDIT_2026-04.md` (beta.1), `docs/API_AUDIT_2026-04-28.md` (beta.2)
- **Migration guide:** `docs/V1_TO_V2.md` (utoljára 2026-05-04 — `beta.3 → rc.0`)
- **Workspace migration:** `docs/WORKSPACE_MIGRATION.md`
- **Audit pass:** 4 párhuzamos auditor (core+dist+viz+py / stats+copulas+ai / stochastic / umbrella) + ~15 saját közvetlen verifikáció + 1 codex agent (no content delivery)
- **Verifikálás:** `cargo check`/`clippy`/`test` minden subcrate-en, közvetlen olvasás trait/calibrator/pricer/distribution fájlokon, függő impl-szám pass

### F2. Audit deltatakaró
| Subcrate | Fork audit | LOC |
|---|---|---|
| stochastic-rs-core | ✅ | 673 |
| stochastic-rs-distributions | ✅ | 7 729 |
| stochastic-rs-stochastic | ✅ | 28 307 |
| stochastic-rs-quant | ⏳ timeout | 50 877 |
| stochastic-rs-stats | ✅ | 10 280 |
| stochastic-rs-copulas | ✅ | 2 055 |
| stochastic-rs-ai | ✅ | 1 414 |
| stochastic-rs-viz | ✅ | 1 444 |
| stochastic-rs-py | ✅ | 236 |
| Umbrella `stochastic-rs` | ✅ | – |

A quant fork ~30+ percig futott és timeout-olt (50k LOC, az engesztelhetetlenül
nagyobb). Az itteni quant findings részben saját közvetlen olvasásból, részben az
umbrella + full_pipeline.rs reverse-engineering-ből származik. Egy follow-up
**dedicated quant deep audit** ajánlott, fókuszálva: pricing/Fourier mély
ellenőrzésére, calibration/heston Cui Jacobian numerikai konzisztenciára, lattice
modelek (HW-tree, BK, G2++) ellenőrzésére, vol_surface arbitrázsmentesség
ellenőrzésére, és risk modul (VaR / ES / drawdown) coverage gapsra.

> **2026-05-10 update:** A javasolt deep quant audit lefutott — 4 párhuzamos
> agent fedte le a 4 slice-t (pricing/calibration ~25k LOC,
> vol_surface/risk/portfolio ~6.7k, rates/lattice/instruments ~13.3k,
> traits/factors/microstructure ~7k). Eredmény: **11 P0 silent-correctness
> bug + 3 P1**. Mind 14 lezárva még az rc.1 tag előtt. Részletes findings:
> `docs/QUANT_AUDIT_2026-05-10_pricing.md`,
> `docs/QUANT_AUDIT_2026-05-10_riskvol.md`,
> `docs/QUANT_AUDIT_2026-05-10_rates.md`,
> `docs/QUANT_AUDIT_2026-05-10_misc.md`. Konszolidált összegzés a
> CHANGELOG.md "Quant deep audit fixes (2026-05-10)" szekciójában.

---

*Audit kelt: 2026-05-07 — `git rev-parse HEAD`: `b673715`. v2.0.0-rc.0.*
*2026-05-10 reconciliation: deep quant audit findings closed, see CHANGELOG.*
