feat: stochastic-process discrimination + process→regime→option→archetype crosswalk - #52
Merged
Merged
Conversation
…e->option->archetype crosswalk Builds on the merged MemoryRegimeCharacterization (#50); reuses its Hurst / Lyapunov / kurtosis / receipt estimators (memory_regime_estimators unchanged). - process_family_estimators.py: Ornstein-Uhlenbeck generator + estimator (theta, long-run mu, half-life = ln2/theta; OU autocorr decays exponentially => canonical short_decaying / mean-reverting, anti-persistent H<0.5), fractional-OU (mean-reversion + long memory), a variance-time diffusion Hurst, seeded GBM / regime-switching / Hawkes / jump-Levy generators, and a six-family discriminator (brownian_gbm, markov_regime_switching, ornstein_uhlenbeck, fractional_brownian_motion, hawkes, jump_levy). - ProcessFamilyCharacterization schema + ProcessRegimeCrosswalk schema (the total process<->regime<->option-family<->archetype mapping), fixtures, and one validator with teeth both ways: VERIFIES seeded OU -> theta>0/finite half-life/anti-persistent, fBm -> stays long_memory, GBM/Hawkes/jump-Levy -> their families; REJECTS OU-as-long_memory, theta<=0 called mean-reverting, fBm-as-memoryless, OU missing ou_params, crosswalk OU<->long_memory / fBm<->memoryless, non-total crosswalk; option-family anchors (OU->Vasicek/Heston, fBm->rough-vol) asserted. - rough-vol tie makes the Hurst axis govern volatility itself, unifying the long-memory work with the vol surface (economic-prophet #44) by reference. - Makefile target + aggregate validate, CI workflow, README + arch doc. - proof-artifact-spine SHA-256 receipts (FIPS-180-4 algorithm; not FIPS-140).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-on to #50. Builds on the merged MemoryRegimeCharacterization and reuses its estimators —
scripts/memory_regime_estimators.pyis unchanged (pure reuse of Hurst / Lyapunov / kurtosis / receipt). Adds stochastic-process discrimination and a total process↔regime↔option-family↔archetype crosswalk.OU vs traditional Markov
New Ornstein-Uhlenbeck estimator:
dX=θ(μ−X)dt+σdW→ estimate θ, long-run μ, and half-life = ln2/θ. OU autocorrelation decays exponentially (e^{−θτ}) with a finite timescale, so OU is the canonicalshort_decaying/ mean-reverting regime and is anti-persistent — its variance-time (aggregated-variance) Hurst is< 0.5because k-step-move variance saturates instead of growing like a random walk. Distinguished from discrete-state Markov regime-switching (Hamilton): both are "Markov", but OU is a continuous mean-reverting diffusion with a timescale; regime-switching is memoryless jumps between discrete states (regimememoryless/state-only). Fractional-OU (OU driven by fBm) is provided as the hybrid = mean-reversion + long memory.Process-family discriminator
Classifies a process path/observable among
{brownian_gbm, markov_regime_switching, ornstein_uhlenbeck, fractional_brownian_motion, hawkes, jump_levy}, reusing the Hurst/Lyapunov estimators and adding the OU fit, a variance-time diffusion Hurst, and a jump/heavy-tail test.VERIFIES (seeded, deterministic, robust across seeds): OU(θ∈{0.7,0.3,1.0}) →
ornstein_uhlenbeck/short_decayingwith θ̂>0, finite half-life (θ=0.7 → θ̂≈0.74, half-life≈0.93), anti-persistent variance-time H≈0.05 (<0.5); fBm(H=0.7) →fractional_brownian_motion/long_memory; GBM/Hawkes/jump-Lévy paths → their families. REJECTS: OU mislabeledlong_memory; θ≤0 calledmean_reverting; fBm mislabeledmemoryless; OU missingou_params.The crosswalk (reference doc + typed mapping with teeth)
brownian_gbmmemorylessmarkov_regime_switchingmemoryless(state)ornstein_uhlenbeckshort_decayingfractional_brownian_motionlong_memoryhawkesshort_decaying(self-exciting)jump_levymemoryless(fat-tail jumps)Crosswalk teeth: the mapping is asserted total (every process family present) and coherent (each entry's regime matches the canonical process→regime map); the anchor option families are checked (OU→Vasicek/Heston, fBm→rough-vol). REJECTS a crosswalk mapping OU↔
long_memoryor fBm↔memoryless, and a non-total crosswalk (a family missing).Rough-vol → vol surface
The
fractional_brownian_motion↔ rough volatility tie makes the Hurst axis govern volatility itself (Gatheral-Jaisson-Rosenbaum, vol is fractional H≈0.1), unifying the long-memory work with the vol surface (economic-prophet #44) by reference; the fBmrisk_distribution_Fcarries the Hurst H a rough-vol calibration / the RAROCrisk(F, reference, kernel, horizon)interface consumes.Files
scripts/process_family_estimators.py,schemas/process-family-characterization.schema.json,schemas/process-regime-crosswalk.schema.json,examples/process-family/(5 valid + 4 invalid),examples/process-regime-crosswalk/(1 valid + 3 invalid),scripts/validate_process_family_crosswalk.py,docs/architecture/process-regime-crosswalk.md, workflow + Makefile + README.Local:
make validate-process-family-crosswalk→ VERIFIES (9 seeded paths) + REJECTS (7 fixtures) + crosswalk totality/coherence + receipt teeth all green. Deterministic, stdlib-only. Records carry proof-artifact-spine SHA-256 receipts (FIPS-180-4 algorithm; not a FIPS-140 module).