Rough volatility · self-audit · github.com/Michaellumor/roughvollab
← back to the interactive tour

How this codebase audits itself

Every numerical claim in RoughVolLab is backed by a committed, reproducible run — and the code is held to the same standard. This is the public record of the project's internal quality audit: how findings were verified before they were trusted, what was fixed, and what remains open.

Reconciled against main @ f9b22e5 · 2026-07-10
01Refute-first, not trust-first

Findings were not taken on trust. Each was adversarially verified against the current code before any fix — line-checked, and where the claim was numerical, reproduced by Monte Carlo. Every fix is then pinned by a regression test proven to fail on the pre-fix code, so a silent regression can't slip back behind a green suite.

One issue at a time; each closed by a public pull request with the reasoning, the diff, and the verification in the open. The full test suite — 265 passed, 2 skipped — runs on every change.

02The two High-severity findings — resolved & MC-validated

Both sat in layer1_rough_vol.py, the quarantined teaching engine (nothing downstream imports it; no published number depends on it). ROADMAP issue L1-1:

RVL-001fbm_hybrid over-subtracted near-diagonal kernel terms, so the simulated variance undershot (Var(BH₁) ≈ 0.91 instead of the discrete target). RVL-002 — the rough-Bergomi variance used the continuum compensator t2H rather than the discrete variance, so the forward variance E[Vt]/ξ₀ dipped to ~0.35. Both were rewritten in place to the validated discrete-variance construction.

Monte-Carlo proof · 3 seeds × 300k paths · n = 128, H = 0.1
RVL-001 · Var(W̃T) / vn
0.998 – 1.000  (was ≈ 0.91)
RVL-002 · maxt |E[Vt]/ξ₀ − 1|
within 4·s.e.  (was ↓ to 0.35)
z < 1 (variance) · worst-z < 4 family-wise (forward variance) · pinned by test_layer1_rough_vol.py, proven to fail on the old code  →  PR #53
03Nine confirmed findings, nine public fixes

The audit's confirmed higher-severity findings — the two High-severity and the Medium ones — each closed by its own reviewed pull request:

04What's still open — honestly

The nine above resolve every confirmed High- and Medium-severity finding — all fixed and merged. The audit also logged a longer tail of lower-priority items:

10 lower-priority items still tracked

Documentation polish, cosmetic consistency, and defensive hardening — tracked in docs/AUDIT_TAIL.md, the tail's durable system of record (5 further cosmetic items were retired 2026-07-25 as unrecoverable-detail; see D48). Nothing load-bearing is left open, and nothing is hidden: items close gradually in the open, one reviewed PR at a time.

Self-audit reconciled 2026-07-10 · honest measurement over confident numbers
M. Lumor · University of Salford
github.com/Michaellumor/roughvollab