From 49be6c7bf7dcd3e0f3bec2386b59952df5f81470 Mon Sep 17 00:00:00 2001 From: ThotDjehuty Date: Sat, 7 Mar 2026 13:39:43 +0100 Subject: [PATCH] =?UTF-8?q?docs(diagrams):=20add=204=20remaining=20SVG=20f?= =?UTF-8?q?igures=20for=20=C2=A78=20HMM=20+=20=C2=A710=20geometry?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fig_hmm_regime: 3-state Bull/Neutral/Bear HMM state machine + emission table - fig_viterbi_trellis: Viterbi trellis K=3 T=4 with MAP path highlighted - fig_std_vs_nat_gradient: standard vs natural gradient property comparison panels - fig_lie_group_hierarchy: GL/SL/O/SO/Sp/H Lie group tree with finance annotations All 27 SVGs regenerated; mathematical_foundations.md now 0 remaining ASCII blocks. _fix_diagrams3.py added for reproducibility. --- docs/source/_fix_diagrams3.py | 141 ++ docs/source/_gen_diagrams.py | 223 ++ docs/source/_static/diagrams/fig_bm_fan.svg | 70 +- .../_static/diagrams/fig_curvatures.svg | 62 +- .../_static/diagrams/fig_de_mutation.svg | 54 +- .../_static/diagrams/fig_em_milstein.svg | 244 +- .../_static/diagrams/fig_fisher_curvature.svg | 48 +- .../_static/diagrams/fig_fokker_planck.svg | 58 +- docs/source/_static/diagrams/fig_gbm.svg | 54 +- .../_static/diagrams/fig_hmm_regime.svg | 1950 +++++++++++++++ .../_static/diagrams/fig_ito_correction.svg | 36 +- .../_static/diagrams/fig_jump_diffusion.svg | 38 +- .../diagrams/fig_kalman_covariance.svg | 44 +- .../_static/diagrams/fig_kl_asymmetry.svg | 60 +- .../_static/diagrams/fig_levy_tails.svg | 256 +- .../diagrams/fig_lie_group_hierarchy.svg | 2183 +++++++++++++++++ .../_static/diagrams/fig_mcmc_energy.svg | 56 +- .../_static/diagrams/fig_mcmc_trace.svg | 172 +- .../_static/diagrams/fig_natural_gradient.svg | 156 +- .../source/_static/diagrams/fig_ou_loglik.svg | 160 +- docs/source/_static/diagrams/fig_ou_path.svg | 46 +- .../_static/diagrams/fig_ou_residuals.svg | 110 +- .../_static/diagrams/fig_ou_transition.svg | 62 +- docs/source/_static/diagrams/fig_picard.svg | 52 +- docs/source/_static/diagrams/fig_poisson.svg | 104 +- .../_static/diagrams/fig_random_walk.svg | 40 +- .../source/_static/diagrams/fig_rastrigin.svg | 62 +- .../diagrams/fig_std_vs_nat_gradient.svg | 1715 +++++++++++++ .../_static/diagrams/fig_viterbi_trellis.svg | 1551 ++++++++++++ .../source/theory/mathematical_foundations.md | 87 +- 30 files changed, 8808 insertions(+), 1086 deletions(-) create mode 100644 docs/source/_fix_diagrams3.py create mode 100644 docs/source/_static/diagrams/fig_hmm_regime.svg create mode 100644 docs/source/_static/diagrams/fig_lie_group_hierarchy.svg create mode 100644 docs/source/_static/diagrams/fig_std_vs_nat_gradient.svg create mode 100644 docs/source/_static/diagrams/fig_viterbi_trellis.svg diff --git a/docs/source/_fix_diagrams3.py b/docs/source/_fix_diagrams3.py new file mode 100644 index 0000000..2564a77 --- /dev/null +++ b/docs/source/_fix_diagrams3.py @@ -0,0 +1,141 @@ +"""Replace the 4 remaining ASCII diagram blocks in mathematical_foundations.md +with {figure} directives pointing to the new SVGs. +""" +import pathlib + +MD = pathlib.Path(__file__).parent / "theory" / "mathematical_foundations.md" +text = MD.read_text(encoding="utf-8") + +# ── 1. HMM regime state machine → fig_hmm_regime ────────────────────────── +old1 = '''\ +``` + HMM regime state machine (K = 3) + ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ + + A₁₂ → A₂₃ → + ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ + │ State 1 │──────▶│ State 2 │──────▶│ State 3 │ + │ Bull │◀──────│ Neutral │◀──────│ Bear │ + └─────────────┘ └─────────────┘ └─────────────┘ + ← A₂₁ ← A₃₂ + + Emission B_k(y) = 𝒩(μ_k, σ_k²): + ┌────────┬────────┬────────┬──────────────────┐ + │ State │ μ │ σ │ Character │ + ├────────┼────────┼────────┼──────────────────┤ + │ Bull │ +0.05 │ 0.12 │ high return, low vol │ + │ Neutral│ 0.00 │ 0.18 │ flat, medium vol │ + │ Bear │ -0.08 │ 0.35 │ crash, high vol │ + └────────┴────────┴────────┴──────────────────┘ + (self-transition: A₁₁=0.97, A₂₂=0.97, A₃₃=0.90) +```''' + +new1 = '''\ +```{figure} ../_static/diagrams/fig_hmm_regime.svg +:align: center +:width: 90% + +HMM $K=3$ state machine with Bull / Neutral / Bear regimes and Gaussian emission +parameters. Self-transitions $A_{11}=A_{22}=0.97$, $A_{33}=0.90$. +```''' + +# ── 2. Viterbi trellis → fig_viterbi_trellis ─────────────────────────────── +old2 = '''\ +``` + Viterbi trellis (K=3, T=4) + ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ + + State t=1 t=2 t=3 t=4 + + 1 ○─────────▶○─────────▶○─────────▶○ + ╲ ╳ + 2 ○─────────▶●─────────▶●─────────▶○ ● = MAP path + ╲ ╲ ╲ + 3 ○─────────▶○─────────▶○─────────▶○ + + δ_t(k) = max_j [δ_{t−1}(j) · A_jk · B_k(y_t)] + ψ_t(k) = argmax_j ← backtrack pointer + + Traceback: z_4★ ← z_3★ ← z_2★ ← z_1★ via ψ +```''' + +new2 = '''\ +```{figure} ../_static/diagrams/fig_viterbi_trellis.svg +:align: center +:width: 82% + +Viterbi trellis ($K=3$, $T=4$). Filled nodes mark the MAP (most probable) state +sequence; arrows show transition candidates. Backtracking via $\psi_t(k)$ recovers +$z_1^\star \to z_4^\star$. +```''' + +# ── 3. Standard vs natural gradient (text comparison) → fig_std_vs_nat_gradient +old3 = '''\ +``` + Standard vs natural gradient + ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ + + Standard: θ_{k+1} = θ_k − η·∇ℒ Natural: θ_{k+1} = θ_k − η·ℐ(θ)^{−1}∇ℒ + ──────────────────────────────────────────── + + ┌────────────────────┐ ┌────────────────────┐ + │ Flat ℝᵈ geometry │ │ Riemannian metric ℐ(θ) │ + │ Ignores curvature │ │ Adapts to geometry │ + │ Slow on ill-cond ℐ │ │ Reparam invariant │ + │ O(κ(ℐ)) iters │ │ O(1) on exp families │ + └────────────────────┘ └────────────────────┘ + + On Gaussian / exponential family: ℐ⁻¹∇ℒ = MLE step → 1 iteration! +```''' + +new3 = '''\ +```{figure} ../_static/diagrams/fig_std_vs_nat_gradient.svg +:align: center +:width: 88% + +Standard versus natural gradient: geometric properties. On exponential families +the natural gradient equals the MLE Newton step, achieving convergence in one +iteration. +```''' + +# ── 4. Matrix Lie group hierarchy → fig_lie_group_hierarchy ───────────────── +old4 = '''\ +``` + Matrix Lie group hierarchy + ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ + + GL(n,ℝ) ─ all invertible n×n real matrices + │ + ├──▶ SL(n,ℝ) det = 1 + │ + ├──▶ O(n) RᵀR = I (orthogonal) + │ └─▶ SO(n) det = +1 (pure rotations) + │ ↳ portfolio factor rotation, PCA constraints + │ + └──▶ Sp(2n,ℝ) preserves symplectic form ω + ↳ Hamiltonian mechanics, PMP §4.2 / §10.4 + + H(n) Heisenberg ─ upper triangular, 1s on diagonal + ↳ path-signature feature maps +```''' + +new4 = '''\ +```{figure} ../_static/diagrams/fig_lie_group_hierarchy.svg +:align: center +:width: 90% + +Matrix Lie group hierarchy: subgroup inclusions and their quantitative-finance +applications. $SO(n)$ underpins PCA factor rotation; $\mathrm{Sp}(2n,\mathbb{R})$ +governs Hamiltonian mechanics (PMP §10.4); $H(n)$ drives path-signature features. +```''' + +replacements = [(old1, new1), (old2, new2), (old3, new3), (old4, new4)] +for i, (old, new) in enumerate(replacements, 1): + if old in text: + text = text.replace(old, new, 1) + print(f" Block {i}: replaced OK") + else: + print(f" Block {i}: NOT FOUND — check encoding/whitespace") + +MD.write_text(text, encoding="utf-8") +print("Done.") diff --git a/docs/source/_gen_diagrams.py b/docs/source/_gen_diagrams.py index 07ed749..5898801 100644 --- a/docs/source/_gen_diagrams.py +++ b/docs/source/_gen_diagrams.py @@ -663,6 +663,226 @@ def fig_picard(): save("fig_picard") +# ════════════════════════════════════════════════════════════════════════════ +# §8 HMM REGIME STATE MACHINE (K = 3) +# ════════════════════════════════════════════════════════════════════════════ + +def fig_hmm_regime(): + from matplotlib.patches import FancyBboxPatch, FancyArrowPatch + import matplotlib.patheffects as pe + + fig, ax = plt.subplots(figsize=(9, 4.2)) + ax.set_xlim(0, 9); ax.set_ylim(0, 4); ax.axis("off") + + states = [ + (1.5, 2.6, "State 1\nBull", C2), + (4.5, 2.6, "State 2\nNeutral", GRAY), + (7.5, 2.6, "State 3\nBear", C3), + ] + box_w, box_h = 2.0, 1.1 + for (cx, cy, label, col) in states: + fancy = FancyBboxPatch((cx - box_w/2, cy - box_h/2), box_w, box_h, + boxstyle="round,pad=0.08", linewidth=1.6, + edgecolor=col, facecolor=col + "22", + zorder=2) + ax.add_patch(fancy) + ax.text(cx, cy, label, ha="center", va="center", fontsize=10, + fontweight="bold", color=col, zorder=3) + + # Forward arrows A₁₂, A₂₃ + for x0, x1, label in [(2.5, 3.5, r"$A_{12}$"), (5.5, 6.5, r"$A_{23}$")]: + ax.annotate("", xy=(x1, 2.85), xytext=(x0, 2.85), + arrowprops=dict(arrowstyle="-|>", color=C0, lw=1.5)) + ax.text((x0+x1)/2, 2.98, label, ha="center", fontsize=9, color=C0) + # Backward arrows A₂₁, A₃₂ + for x0, x1, label in [(3.5, 2.5, r"$A_{21}$"), (6.5, 5.5, r"$A_{32}$")]: + ax.annotate("", xy=(x1, 2.35), xytext=(x0, 2.35), + arrowprops=dict(arrowstyle="-|>", color=C1, lw=1.5)) + ax.text((x0+x1)/2, 2.22, label, ha="center", fontsize=9, color=C1) + + # Emission table + col_labels = ["State", r"$\mu$", r"$\sigma$", "Character"] + rows = [ + ["Bull", "+0.05", "0.12", "high return, low vol"], + ["Neutral", " 0.00", "0.18", "flat, medium vol"], + ["Bear", "−0.08", "0.35", "crash, high vol"], + ] + row_colors = [[C2+"33", C2+"33", C2+"33", C2+"33"], + [GRAY+"33", GRAY+"33", GRAY+"33", GRAY+"33"], + [C3+"33", C3+"33", C3+"33", C3+"33"]] + tbl = ax.table(cellText=rows, colLabels=col_labels, loc="bottom", + cellColours=row_colors, bbox=[0.05, 0.0, 0.90, 0.42]) + tbl.auto_set_font_size(False); tbl.set_fontsize(9) + for (r, c), cell in tbl.get_celld().items(): + cell.set_edgecolor("#cccccc") + if r == 0: + cell.set_facecolor(C0 + "33") + cell.set_text_props(fontweight="bold") + + ax.set_title(r"HMM Regime State Machine ($K=3$) — Emission $B_k(y)=\mathcal{N}(\mu_k,\sigma_k^2)$", + fontsize=11, pad=6) + plt.tight_layout() + save("fig_hmm_regime") + + +# ════════════════════════════════════════════════════════════════════════════ +# §8.2 VITERBI TRELLIS (K=3, T=4) +# ════════════════════════════════════════════════════════════════════════════ + +def fig_viterbi_trellis(): + from matplotlib.patches import Circle, FancyArrowPatch + + K, T = 3, 4 + state_labels = ["1 (Bull)", "2 (Neutral)", "3 (Bear)"] + map_path = {(1, 1), (1, 2)} # state index 1 = "2 (Neutral)" at t=2,3 (0-indexed t) + + fig, ax = plt.subplots(figsize=(8, 3.8)) + ax.set_xlim(-0.5, T + 0.5); ax.set_ylim(-0.5, K - 0.3); ax.axis("off") + + # x-positions: t=1..4 → 0.5, 1.5, 2.5, 3.5 + xs = [0.6 * (t + 1) for t in range(T)] + ys = [K - 1 - k for k in range(K)] # top = state 1 + + # Draw crossing / passing arrows (selective to show crossing) + arrow_kw = dict(arrowstyle="-|>", connectionstyle="arc3,rad=0.0", + color=GRAY, lw=1.1, alpha=0.55) + cross_kw = dict(arrowstyle="-|>", connectionstyle="arc3,rad=0.18", + color=GRAY, lw=1.1, alpha=0.45) + for t in range(T - 1): + for k in range(K): + for k2 in range(K): + rad = 0.0 if k == k2 else (0.18 if k2 > k else -0.18) + col = C0 if (k == 1 and k2 == 1 and t >= 1) else GRAY + alpha = 0.9 if col == C0 else 0.3 + ax.annotate("", xy=(xs[t+1], ys[k2]), xytext=(xs[t], ys[k]), + arrowprops=dict(arrowstyle="-|>", + connectionstyle=f"arc3,rad={rad}", + color=col, lw=1.2 if col == C0 else 0.8, + alpha=alpha)) + + # Draw nodes + r = 0.14 + for k in range(K): + for t in range(T): + is_map = (k == 1 and 1 <= t <= 2) + fc = C0 if is_map else "white" + ec = C0 if is_map else GRAY + circ = Circle((xs[t], ys[k]), r, facecolor=fc, edgecolor=ec, lw=1.8, zorder=4) + ax.add_patch(circ) + + # Labels on left + for k in range(K): + ax.text(-0.1, ys[k], state_labels[k], ha="right", va="center", + fontsize=9, color=C0 if k == 1 else "black") + + # x-axis ticks + for t in range(T): + ax.text(xs[t], -0.35, f"$t={t+1}$", ha="center", va="top", fontsize=9) + + # Legend + ax.scatter([], [], color=C0, s=80, label="● MAP (Viterbi) path", zorder=5) + ax.scatter([], [], facecolor="white", edgecolors=GRAY, s=80, label="○ other nodes", zorder=5) + ax.legend(loc="upper right", fontsize=9, framealpha=0.9) + + ax.set_title(r"Viterbi Trellis ($K=3$, $T=4$) — $\delta_t(k)=\max_j\,\delta_{t-1}(j)\,A_{jk}\,B_k(y_t)$", + fontsize=11) + plt.tight_layout() + save("fig_viterbi_trellis") + + +# ════════════════════════════════════════════════════════════════════════════ +# §10.2 STANDARD VS NATURAL GRADIENT — PROPERTY COMPARISON +# ════════════════════════════════════════════════════════════════════════════ + +def fig_std_vs_nat_gradient(): + from matplotlib.patches import FancyBboxPatch + + fig, axes = plt.subplots(1, 2, figsize=(9, 3.0)) + + panels = [ + ("Standard Gradient\n" + r"$\theta_{k+1} = \theta_k - \eta\nabla\mathcal{L}$", + ["Flat $\\mathbb{R}^d$ geometry", + "Ignores manifold curvature", + "Slow on ill-conditioned $\\mathcal{I}$", + "$O(\\kappa(\\mathcal{I}))$ iterations"], + C3, C3 + "18"), + ("Natural Gradient\n" + r"$\theta_{k+1} = \theta_k - \eta\,\mathcal{I}(\theta)^{-1}\nabla\mathcal{L}$", + ["Riemannian metric $\\mathcal{I}(\\theta)$", + "Adapts to manifold geometry", + "Reparametrisation-invariant", + "$O(1)$ on exp. families (MLE step)"], + C2, C2 + "18"), + ] + + for ax, (title, props, border, bg) in zip(axes, panels): + ax.set_xlim(0, 1); ax.set_ylim(0, 1); ax.axis("off") + fancy = FancyBboxPatch((0.03, 0.04), 0.94, 0.92, + boxstyle="round,pad=0.04", linewidth=2, + edgecolor=border, facecolor=bg) + ax.add_patch(fancy) + ax.text(0.5, 0.87, title, ha="center", va="top", fontsize=10, + fontweight="bold", color=border, transform=ax.transAxes, + multialignment="center") + y = 0.68 + for prop in props: + ax.text(0.12, y, "• " + prop, ha="left", va="top", fontsize=9.5, + transform=ax.transAxes, color="#222222") + y -= 0.17 + + fig.suptitle("Standard vs Natural Gradient — geometric properties", fontsize=11, y=1.02) + plt.tight_layout() + save("fig_std_vs_nat_gradient") + + +# ════════════════════════════════════════════════════════════════════════════ +# §10.3 MATRIX LIE GROUP HIERARCHY +# ════════════════════════════════════════════════════════════════════════════ + +def fig_lie_group_hierarchy(): + from matplotlib.patches import FancyBboxPatch, FancyArrowPatch + + fig, ax = plt.subplots(figsize=(9, 4.6)) + ax.set_xlim(0, 9); ax.set_ylim(0, 4.6); ax.axis("off") + + nodes = { + "GL": (4.5, 4.1, r"$\mathrm{GL}(n,\mathbb{R})$" + "\nall invertible $n\times n$", C0), + "SL": (1.8, 2.85, r"$\mathrm{SL}(n,\mathbb{R})$" + "\n$\det=1$", C2), + "On": (4.5, 2.85, r"$O(n)$" + "\n$R^\top R=I$", C1), + "Sp": (7.2, 2.85, r"$\mathrm{Sp}(2n,\mathbb{R})$" + "\npreserves $\omega$", C2), + "SO": (4.5, 1.55, r"$\mathrm{SO}(n)$" + "\n$\det=+1$ (rotations)", C2), + "Hn": (1.8, 1.55, r"$H(n)$ Heisenberg" + "\nupper triangular", C3), + } + notes = { + "SO": "portfolio factor\nrotation, PCA", + "Sp": "Hamiltonian\nmechanics, PMP", + "Hn": "path-signature\nfeature maps", + } + edges = [("GL","SL"), ("GL","On"), ("GL","Sp"), ("On","SO")] + + bw, bh = 2.2, 0.76 + for key, (cx, cy, label, col) in nodes.items(): + fbp = FancyBboxPatch((cx-bw/2, cy-bh/2), bw, bh, + boxstyle="round,pad=0.07", lw=1.6, + edgecolor=col, facecolor=col+"22", zorder=2) + ax.add_patch(fbp) + ax.text(cx, cy, label, ha="center", va="center", fontsize=8.5, + multialignment="center", color=col, fontweight="bold", zorder=3) + if key in notes: + ax.text(cx + bw/2 + 0.15, cy, notes[key], va="center", + fontsize=7.5, color="#555555", fontstyle="italic") + + for src, dst in edges: + sx, sy = nodes[src][0], nodes[src][1] + dx, dy = nodes[dst][0], nodes[dst][1] + ax.annotate("", xy=(dx, dy + bh/2 + 0.04), xytext=(sx, sy - bh/2 - 0.04), + arrowprops=dict(arrowstyle="-|>", color=GRAY, lw=1.4)) + + ax.set_title("Matrix Lie Group Hierarchy — subgroup inclusions and finance applications", + fontsize=11, pad=5) + plt.tight_layout() + save("fig_lie_group_hierarchy") + + # ════════════════════════════════════════════════════════════════════════════ # RUN ALL # ════════════════════════════════════════════════════════════════════════════ @@ -680,6 +900,9 @@ if __name__ == "__main__": fig_mcmc_energy, fig_mcmc_trace, fig_kl_asymmetry, fig_fisher_curvature, fig_curvatures, fig_natural_gradient, + # new §8 & §10 diagrams + fig_hmm_regime, fig_viterbi_trellis, + fig_std_vs_nat_gradient, fig_lie_group_hierarchy, ] for fn in funcs: print(f" {fn.__name__} ... ", end="", flush=True) diff --git a/docs/source/_static/diagrams/fig_bm_fan.svg b/docs/source/_static/diagrams/fig_bm_fan.svg index 8f3cded..1a164cb 100644 --- a/docs/source/_static/diagrams/fig_bm_fan.svg +++ b/docs/source/_static/diagrams/fig_bm_fan.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:30.202001 + 2026-03-07T13:33:12.904661 image/svg+xml @@ -39,7 +39,7 @@ z - - - + + - - + @@ -1102,7 +1102,7 @@ z - + @@ -1143,7 +1143,7 @@ z - + @@ -1179,7 +1179,7 @@ z - + @@ -1226,7 +1226,7 @@ z - + @@ -1282,7 +1282,7 @@ z - + @@ -1348,12 +1348,12 @@ z - - + @@ -1378,7 +1378,7 @@ z - + @@ -1421,7 +1421,7 @@ z - + @@ -1437,7 +1437,7 @@ z - + @@ -1453,7 +1453,7 @@ z - + @@ -1468,7 +1468,7 @@ z - + @@ -1483,7 +1483,7 @@ z - + @@ -1498,7 +1498,7 @@ z - + @@ -1513,7 +1513,7 @@ z - + @@ -1586,7 +1586,7 @@ L 373.021966 44.562478 L 402.909377 39.865543 L 423.545923 36.744 L 423.545923 36.744 -" clip-path="url(#pd553d71edc)" style="fill: none; stroke-dasharray: 4.44,1.92; stroke-dashoffset: 0; stroke: #2e6be5; stroke-opacity: 0.55; stroke-width: 1.2"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke-dasharray: 4.44,1.92; stroke-dashoffset: 0; stroke: #2e6be5; stroke-opacity: 0.55; stroke-width: 1.2"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke-dasharray: 4.44,1.92; stroke-dashoffset: 0; stroke: #2e6be5; stroke-opacity: 0.55; stroke-width: 1.2"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke: #1f77b4; stroke-opacity: 0.75; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke: #ff7f0e; stroke-opacity: 0.75; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke: #2ca02c; stroke-opacity: 0.75; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke: #d62728; stroke-opacity: 0.75; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke: #9467bd; stroke-opacity: 0.75; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke: #8c564b; stroke-opacity: 0.75; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke: #e377c2; stroke-opacity: 0.75; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke: #7f7f7f; stroke-opacity: 0.75; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke: #bcbd22; stroke-opacity: 0.75; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke: #17becf; stroke-opacity: 0.75; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#p5848ee3cd1)" style="fill: none; stroke-dasharray: 0.8,1.32; stroke-dashoffset: 0; stroke: #888888; stroke-width: 0.8"/> + diff --git a/docs/source/_static/diagrams/fig_curvatures.svg b/docs/source/_static/diagrams/fig_curvatures.svg index dd6428f..5137357 100644 --- a/docs/source/_static/diagrams/fig_curvatures.svg +++ b/docs/source/_static/diagrams/fig_curvatures.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:38.462624 + 2026-03-07T13:33:20.851575 image/svg+xml @@ -99,7 +99,7 @@ L 17.592174 211.591564 L 17.401788 216.41298 L 17.389091 218.021455 L 17.389091 218.021455 -" clip-path="url(#p489dedb766)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #888888; stroke-opacity: 0.35; stroke-width: 1.5"/> +" clip-path="url(#pc12faca17a)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #888888; stroke-opacity: 0.35; stroke-width: 1.5"/> +" clip-path="url(#pc12faca17a)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pc12faca17a)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pc12faca17a)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pc12faca17a)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pc12faca17a)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pc12faca17a)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pc12faca17a)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> @@ -1104,7 +1104,7 @@ z - - - + + @@ -1125,37 +1125,37 @@ z +" clip-path="url(#pa6b947c794)" style="fill: none; stroke: #2e6be5; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pa6b947c794)" style="fill: none; stroke: #2e6be5; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pa6b947c794)" style="fill: none; stroke: #2e6be5; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pa6b947c794)" style="fill: none; stroke: #2e6be5; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pa6b947c794)" style="fill: none; stroke: #2e6be5; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pa6b947c794)" style="fill: none; stroke: #2e6be5; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pa6b947c794)" style="fill: none; stroke: #2e6be5; stroke-width: 1.5; stroke-linecap: square"/> @@ -1412,7 +1412,7 @@ L 500.848391 163.04639 L 498.778994 162.285107 L 496.697264 161.5476 L 494.603404 160.834 -" clip-path="url(#pb330c8043e)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pd41133229d)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pd41133229d)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pd41133229d)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pd41133229d)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pd41133229d)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pd41133229d)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> +" clip-path="url(#pd41133229d)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.75; stroke-width: 1.5; stroke-linecap: square"/> @@ -1950,8 +1950,8 @@ z - - + + @@ -2044,13 +2044,13 @@ z - + - + - + diff --git a/docs/source/_static/diagrams/fig_de_mutation.svg b/docs/source/_static/diagrams/fig_de_mutation.svg index 6f27c46..014659c 100644 --- a/docs/source/_static/diagrams/fig_de_mutation.svg +++ b/docs/source/_static/diagrams/fig_de_mutation.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:29.190935 + 2026-03-07T13:33:11.917745 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -116,7 +116,7 @@ z - + @@ -147,7 +147,7 @@ z - + @@ -162,7 +162,7 @@ z - + @@ -203,7 +203,7 @@ z - + @@ -244,12 +244,12 @@ z - - + @@ -265,7 +265,7 @@ L -3.5 0 - + @@ -281,7 +281,7 @@ L -3.5 0 - + @@ -297,7 +297,7 @@ L -3.5 0 - + @@ -325,7 +325,7 @@ z - + @@ -341,7 +341,7 @@ z - + @@ -357,7 +357,7 @@ z - + @@ -373,7 +373,7 @@ z - + @@ -1021,7 +1021,7 @@ z - - - + + - - + + - - + + - - - + + - + diff --git a/docs/source/_static/diagrams/fig_em_milstein.svg b/docs/source/_static/diagrams/fig_em_milstein.svg index 51b33c8..73e5929 100644 --- a/docs/source/_static/diagrams/fig_em_milstein.svg +++ b/docs/source/_static/diagrams/fig_em_milstein.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:32.056760 + 2026-03-07T13:33:14.707703 image/svg+xml @@ -42,16 +42,16 @@ z +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - - + @@ -144,11 +144,11 @@ z +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -191,11 +191,11 @@ z +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -212,16 +212,16 @@ L 373.671818 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - - + @@ -229,11 +229,11 @@ L 0 2 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -241,11 +241,11 @@ L 62.344724 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -253,11 +253,11 @@ L 115.119474 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -265,11 +265,11 @@ L 141.917362 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -277,11 +277,11 @@ L 160.930766 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -289,11 +289,11 @@ L 175.678708 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -301,11 +301,11 @@ L 187.728654 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -313,11 +313,11 @@ L 197.916738 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -325,11 +325,11 @@ L 206.742058 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -337,11 +337,11 @@ L 214.526542 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -349,11 +349,11 @@ L 267.301292 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -361,11 +361,11 @@ L 294.09918 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -373,11 +373,11 @@ L 313.112584 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -385,11 +385,11 @@ L 327.860526 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -397,11 +397,11 @@ L 339.910472 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -409,11 +409,11 @@ L 350.098556 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -421,11 +421,11 @@ L 358.923876 22.318125 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -652,16 +652,16 @@ z +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - - + @@ -678,11 +678,11 @@ L -3.5 0 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -699,11 +699,11 @@ L 388.89 110.113956 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -720,16 +720,16 @@ L 388.89 38.140432 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - - + @@ -737,11 +737,11 @@ L -2 0 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -749,11 +749,11 @@ L 388.89 219.720906 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -761,11 +761,11 @@ L 388.89 210.728625 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -773,11 +773,11 @@ L 388.89 203.75367 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -785,11 +785,11 @@ L 388.89 198.054716 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -797,11 +797,11 @@ L 388.89 193.23632 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -809,11 +809,11 @@ L 388.89 189.062435 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -821,11 +821,11 @@ L 388.89 185.380808 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -833,11 +833,11 @@ L 388.89 160.42129 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -845,11 +845,11 @@ L 388.89 147.747382 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -857,11 +857,11 @@ L 388.89 138.755101 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -869,11 +869,11 @@ L 388.89 131.780145 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -881,11 +881,11 @@ L 388.89 126.081192 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -893,11 +893,11 @@ L 388.89 121.262796 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -905,11 +905,11 @@ L 388.89 117.088911 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -917,11 +917,11 @@ L 388.89 113.407284 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -929,11 +929,11 @@ L 388.89 88.447766 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -941,11 +941,11 @@ L 388.89 75.773858 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -953,11 +953,11 @@ L 388.89 66.781576 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -965,11 +965,11 @@ L 388.89 59.806621 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -977,11 +977,11 @@ L 388.89 54.107668 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -989,11 +989,11 @@ L 388.89 49.289272 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1001,11 +1001,11 @@ L 388.89 45.115387 +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.3; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1189,9 +1189,9 @@ L 267.301292 57.551792 L 221.49 68.384887 L 175.678708 79.217982 L 69.308182 104.371649 -" clip-path="url(#p4b48a9a7a6)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> - - - - - - - - + + + + + + + @@ -1219,22 +1219,22 @@ L 267.301292 140.358411 L 221.49 162.024601 L 175.678708 183.690791 L 69.308182 233.998125 -" clip-path="url(#p4b48a9a7a6)" style="fill: none; stroke-dasharray: 7.4,3.2; stroke-dashoffset: 0; stroke: #e8850a; stroke-width: 2"/> +" clip-path="url(#p1fe6ec5b45)" style="fill: none; stroke-dasharray: 7.4,3.2; stroke-dashoffset: 0; stroke: #e8850a; stroke-width: 2"/> - - - - - - - - + + + + + + + @@ -1531,7 +1531,7 @@ L 73.09 35.418125 L 83.09 35.418125 " style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> - + @@ -1647,7 +1647,7 @@ L 73.09 50.116563 L 83.09 50.116563 " style="fill: none; stroke-dasharray: 7.4,3.2; stroke-dashoffset: 0; stroke: #e8850a; stroke-width: 2"/> - + @@ -1686,7 +1686,7 @@ L 83.09 50.116563 - + diff --git a/docs/source/_static/diagrams/fig_fisher_curvature.svg b/docs/source/_static/diagrams/fig_fisher_curvature.svg index 8f23932..2f423fe 100644 --- a/docs/source/_static/diagrams/fig_fisher_curvature.svg +++ b/docs/source/_static/diagrams/fig_fisher_curvature.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:38.073865 + 2026-03-07T13:33:20.479192 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -101,7 +101,7 @@ z - + @@ -141,7 +141,7 @@ z - + @@ -171,7 +171,7 @@ z - + @@ -207,7 +207,7 @@ z - + @@ -220,7 +220,7 @@ z - + @@ -233,7 +233,7 @@ z - + @@ -281,12 +281,12 @@ z - - + @@ -330,7 +330,7 @@ z - + @@ -373,7 +373,7 @@ z - + @@ -389,7 +389,7 @@ z - + @@ -405,7 +405,7 @@ z - + @@ -421,7 +421,7 @@ z - + @@ -437,7 +437,7 @@ z - + @@ -453,7 +453,7 @@ z - + @@ -469,7 +469,7 @@ z - + @@ -910,7 +910,7 @@ L 331.344962 231.261943 L 335.794723 252.011417 L 340.150153 273.34825 L 340.150153 273.34825 -" clip-path="url(#p19a86612cd)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#pe404c23e42)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#pe404c23e42)" style="fill: none; stroke: #27ae60; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#pe404c23e42)" style="fill: none; stroke: #e8850a; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#pe404c23e42)" style="fill: none; stroke-dasharray: 0.8,1.32; stroke-dashoffset: 0; stroke: #888888; stroke-width: 0.8"/> + diff --git a/docs/source/_static/diagrams/fig_fokker_planck.svg b/docs/source/_static/diagrams/fig_fokker_planck.svg index 0234e56..86d7b53 100644 --- a/docs/source/_static/diagrams/fig_fokker_planck.svg +++ b/docs/source/_static/diagrams/fig_fokker_planck.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:31.481104 + 2026-03-07T13:33:14.168650 image/svg+xml @@ -39,7 +39,7 @@ z - - - + + - - - + + - - - + + - - + @@ -3715,7 +3715,7 @@ z - + @@ -3744,7 +3744,7 @@ z - + @@ -3783,7 +3783,7 @@ z - + @@ -3830,7 +3830,7 @@ z - + @@ -3864,7 +3864,7 @@ z - + @@ -3929,12 +3929,12 @@ z - - + @@ -3947,7 +3947,7 @@ L -3.5 0 - + @@ -3960,7 +3960,7 @@ L -3.5 0 - + @@ -3973,7 +3973,7 @@ L -3.5 0 - + @@ -3986,7 +3986,7 @@ L -3.5 0 - + @@ -3999,7 +3999,7 @@ L -3.5 0 - + @@ -4012,7 +4012,7 @@ L -3.5 0 - + @@ -4205,7 +4205,7 @@ L 102.146516 223.408082 L 119.930701 223.416 L 407.441705 223.416 L 407.441705 223.416 -" clip-path="url(#pcd2688a453)" style="fill: none; stroke: #d62728; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p98d480943d)" style="fill: none; stroke: #d62728; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p98d480943d)" style="fill: none; stroke: #27ae60; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p98d480943d)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> + diff --git a/docs/source/_static/diagrams/fig_gbm.svg b/docs/source/_static/diagrams/fig_gbm.svg index 04c62dc..6838bd7 100644 --- a/docs/source/_static/diagrams/fig_gbm.svg +++ b/docs/source/_static/diagrams/fig_gbm.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:30.495308 + 2026-03-07T13:33:13.209265 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -91,7 +91,7 @@ z - + @@ -132,7 +132,7 @@ z - + @@ -168,7 +168,7 @@ z - + @@ -215,7 +215,7 @@ z - + @@ -271,7 +271,7 @@ z - + @@ -337,12 +337,12 @@ z - - + @@ -357,7 +357,7 @@ L -3.5 0 - + @@ -372,7 +372,7 @@ L -3.5 0 - + @@ -387,7 +387,7 @@ L -3.5 0 - + @@ -402,7 +402,7 @@ L -3.5 0 - + @@ -417,7 +417,7 @@ L -3.5 0 - + @@ -432,7 +432,7 @@ L -3.5 0 - + @@ -447,7 +447,7 @@ L -3.5 0 - + @@ -506,14 +506,14 @@ L 199.676276 138.090887 L 335.592836 132.254321 L 416.004205 128.694614 L 416.004205 128.694614 -" clip-path="url(#p446dd11d3c)" style="fill: none; stroke-dasharray: 6.66,2.88; stroke-dashoffset: 0; stroke: #e8850a; stroke-width: 1.8"/> +" clip-path="url(#pa63f0609b5)" style="fill: none; stroke-dasharray: 6.66,2.88; stroke-dashoffset: 0; stroke: #e8850a; stroke-width: 1.8"/> +" clip-path="url(#pa63f0609b5)" style="fill: none; stroke-dasharray: 1.5,2.475; stroke-dashoffset: 0; stroke: #27ae60; stroke-width: 1.5"/> +" clip-path="url(#pa63f0609b5)" style="fill: none; stroke: #94c4df; stroke-opacity: 0.7; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#pa63f0609b5)" style="fill: none; stroke: #75b4d8; stroke-opacity: 0.7; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#pa63f0609b5)" style="fill: none; stroke: #5ba3d0; stroke-opacity: 0.7; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#pa63f0609b5)" style="fill: none; stroke: #4191c6; stroke-opacity: 0.7; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#pa63f0609b5)" style="fill: none; stroke: #2e7ebc; stroke-opacity: 0.7; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#pa63f0609b5)" style="fill: none; stroke: #1c6ab0; stroke-opacity: 0.7; stroke-width: 0.9; stroke-linecap: square"/> +" clip-path="url(#pa63f0609b5)" style="fill: none; stroke: #0d57a1; stroke-opacity: 0.7; stroke-width: 0.9; stroke-linecap: square"/> + diff --git a/docs/source/_static/diagrams/fig_hmm_regime.svg b/docs/source/_static/diagrams/fig_hmm_regime.svg new file mode 100644 index 0000000..85ae917 --- /dev/null +++ b/docs/source/_static/diagrams/fig_hmm_regime.svg @@ -0,0 +1,1950 @@ + + + + + + + + 2026-03-07T13:33:21.752214 + image/svg+xml + + + Matplotlib v3.8.4, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/_static/diagrams/fig_ito_correction.svg b/docs/source/_static/diagrams/fig_ito_correction.svg index d8f550e..68bb9a6 100644 --- a/docs/source/_static/diagrams/fig_ito_correction.svg +++ b/docs/source/_static/diagrams/fig_ito_correction.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:30.803941 + 2026-03-07T13:33:13.513833 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -91,7 +91,7 @@ z - + @@ -133,7 +133,7 @@ z - + @@ -164,7 +164,7 @@ z - + @@ -179,7 +179,7 @@ z - + @@ -255,12 +255,12 @@ z - - + @@ -276,7 +276,7 @@ L -3.5 0 - + @@ -292,7 +292,7 @@ L -3.5 0 - + @@ -308,7 +308,7 @@ L -3.5 0 - + @@ -324,7 +324,7 @@ L -3.5 0 - + @@ -340,7 +340,7 @@ L -3.5 0 - + @@ -522,18 +522,18 @@ z +" clip-path="url(#p512eb072cb)" style="fill: none; stroke-dasharray: 7.4,3.2; stroke-dashoffset: 0; stroke: #e8850a; stroke-width: 2"/> +" clip-path="url(#p512eb072cb)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p512eb072cb)" style="fill: none; stroke-dasharray: 0.6,0.99; stroke-dashoffset: 0; stroke: #888888; stroke-width: 0.6"/> + diff --git a/docs/source/_static/diagrams/fig_jump_diffusion.svg b/docs/source/_static/diagrams/fig_jump_diffusion.svg index a6af3a5..e19f6d2 100644 --- a/docs/source/_static/diagrams/fig_jump_diffusion.svg +++ b/docs/source/_static/diagrams/fig_jump_diffusion.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:34.251637 + 2026-03-07T13:33:16.858807 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -91,7 +91,7 @@ z - + @@ -132,7 +132,7 @@ z - + @@ -168,7 +168,7 @@ z - + @@ -215,7 +215,7 @@ z - + @@ -271,7 +271,7 @@ z - + @@ -337,12 +337,12 @@ z - - + @@ -415,7 +415,7 @@ z - + @@ -431,7 +431,7 @@ z - + @@ -447,7 +447,7 @@ z - + @@ -1405,7 +1405,7 @@ L 421.019562 154.837379 L 421.375008 159.835962 L 421.730455 161.602716 L 421.730455 161.602716 -" clip-path="url(#p01cef8a2fd)" style="fill: none; stroke: #2e6be5; stroke-width: 1.3; stroke-linecap: square"/> +" clip-path="url(#p9ed04951ec)" style="fill: none; stroke: #2e6be5; stroke-width: 1.3; stroke-linecap: square"/> - - - + + @@ -2068,7 +2068,7 @@ z - + @@ -2149,7 +2149,7 @@ z - + diff --git a/docs/source/_static/diagrams/fig_kalman_covariance.svg b/docs/source/_static/diagrams/fig_kalman_covariance.svg index 595befc..5e883d6 100644 --- a/docs/source/_static/diagrams/fig_kalman_covariance.svg +++ b/docs/source/_static/diagrams/fig_kalman_covariance.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:35.272395 + 2026-03-07T13:33:17.811206 image/svg+xml @@ -39,7 +39,7 @@ z - - - + + - - + @@ -693,7 +693,7 @@ z - + @@ -733,7 +733,7 @@ z - + @@ -763,7 +763,7 @@ z - + @@ -777,7 +777,7 @@ z - + @@ -817,7 +817,7 @@ z - + @@ -831,7 +831,7 @@ z - + @@ -914,12 +914,12 @@ z - - + @@ -943,7 +943,7 @@ z - + @@ -958,7 +958,7 @@ z - + @@ -994,7 +994,7 @@ z - + @@ -1041,7 +1041,7 @@ z - + @@ -1097,7 +1097,7 @@ z - + @@ -1185,12 +1185,12 @@ L 306.745463 184.837145 L 370.875594 184.927959 L 416.004205 184.939776 L 416.004205 184.939776 -" clip-path="url(#p1ef418d3f3)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p8f6554bfa8)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p8f6554bfa8)" style="fill: none; stroke-dasharray: 5.92,2.56; stroke-dashoffset: 0; stroke: #e8850a; stroke-width: 1.6"/> + diff --git a/docs/source/_static/diagrams/fig_kl_asymmetry.svg b/docs/source/_static/diagrams/fig_kl_asymmetry.svg index 49f5c8b..4605bcc 100644 --- a/docs/source/_static/diagrams/fig_kl_asymmetry.svg +++ b/docs/source/_static/diagrams/fig_kl_asymmetry.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:37.635386 + 2026-03-07T13:33:20.074213 image/svg+xml @@ -39,7 +39,7 @@ z - - - + + - - - + + - - + @@ -3336,7 +3336,7 @@ z - + @@ -3389,7 +3389,7 @@ z - + @@ -3405,7 +3405,7 @@ z - + @@ -3447,7 +3447,7 @@ z - + @@ -3462,7 +3462,7 @@ z - + @@ -3477,7 +3477,7 @@ z - + @@ -3492,7 +3492,7 @@ z - + @@ -3507,7 +3507,7 @@ z - + @@ -3548,12 +3548,12 @@ z - - + @@ -3569,7 +3569,7 @@ L -3.5 0 - + @@ -3585,7 +3585,7 @@ L -3.5 0 - + @@ -3601,7 +3601,7 @@ L -3.5 0 - + @@ -3617,7 +3617,7 @@ L -3.5 0 - + @@ -3633,7 +3633,7 @@ L -3.5 0 - + @@ -3649,7 +3649,7 @@ L -3.5 0 - + @@ -3699,7 +3699,7 @@ z - + @@ -3715,7 +3715,7 @@ z - + @@ -3985,7 +3985,7 @@ L 325.735916 223.530978 L 419.952778 223.536 L 421.730455 223.536 L 421.730455 223.536 -" clip-path="url(#pa09cd1ba4e)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p0aaf5e2aac)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p0aaf5e2aac)" style="fill: none; stroke-dasharray: 7.4,3.2; stroke-dashoffset: 0; stroke: #e8850a; stroke-width: 2"/> + diff --git a/docs/source/_static/diagrams/fig_levy_tails.svg b/docs/source/_static/diagrams/fig_levy_tails.svg index f014f13..23eb832 100644 --- a/docs/source/_static/diagrams/fig_levy_tails.svg +++ b/docs/source/_static/diagrams/fig_levy_tails.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:34.755818 + 2026-03-07T13:33:17.327346 image/svg+xml @@ -42,16 +42,16 @@ z +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - - + @@ -88,11 +88,11 @@ z +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -122,11 +122,11 @@ z +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -166,11 +166,11 @@ z +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -218,11 +218,11 @@ z +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -257,11 +257,11 @@ z +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -518,16 +518,16 @@ z +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - - + @@ -553,11 +553,11 @@ z +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -574,11 +574,11 @@ L 413.16 181.43735 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -595,11 +595,11 @@ L 413.16 144.297544 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -616,11 +616,11 @@ L 413.16 107.157738 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -637,11 +637,11 @@ L 413.16 70.017931 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -657,16 +657,16 @@ L 413.16 32.878125 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - - + @@ -674,11 +674,11 @@ L -2 0 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -686,11 +686,11 @@ L 413.16 237.996772 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -698,11 +698,11 @@ L 413.16 233.356572 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -710,11 +710,11 @@ L 413.16 229.757353 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -722,11 +722,11 @@ L 413.16 226.816576 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -734,11 +734,11 @@ L 413.16 224.330186 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -746,11 +746,11 @@ L 413.16 222.176376 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -758,11 +758,11 @@ L 413.16 220.276581 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -770,11 +770,11 @@ L 413.16 207.396961 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -782,11 +782,11 @@ L 413.16 200.856966 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -794,11 +794,11 @@ L 413.16 196.216765 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -806,11 +806,11 @@ L 413.16 192.617546 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -818,11 +818,11 @@ L 413.16 189.67677 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -830,11 +830,11 @@ L 413.16 187.190379 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -842,11 +842,11 @@ L 413.16 185.03657 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -854,11 +854,11 @@ L 413.16 183.136775 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -866,11 +866,11 @@ L 413.16 170.257155 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -878,11 +878,11 @@ L 413.16 163.717159 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -890,11 +890,11 @@ L 413.16 159.076959 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -902,11 +902,11 @@ L 413.16 155.47774 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -914,11 +914,11 @@ L 413.16 152.536964 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -926,11 +926,11 @@ L 413.16 150.050573 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -938,11 +938,11 @@ L 413.16 147.896763 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -950,11 +950,11 @@ L 413.16 145.996968 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -962,11 +962,11 @@ L 413.16 133.117348 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -974,11 +974,11 @@ L 413.16 126.577353 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -986,11 +986,11 @@ L 413.16 121.937153 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -998,11 +998,11 @@ L 413.16 118.337933 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1010,11 +1010,11 @@ L 413.16 115.397157 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1022,11 +1022,11 @@ L 413.16 112.910767 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1034,11 +1034,11 @@ L 413.16 110.756957 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1046,11 +1046,11 @@ L 413.16 108.857162 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1058,11 +1058,11 @@ L 413.16 95.977542 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1070,11 +1070,11 @@ L 413.16 89.437547 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1082,11 +1082,11 @@ L 413.16 84.797346 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1094,11 +1094,11 @@ L 413.16 81.198127 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1106,11 +1106,11 @@ L 413.16 78.257351 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1118,11 +1118,11 @@ L 413.16 75.77096 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1130,11 +1130,11 @@ L 413.16 73.61715 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1142,11 +1142,11 @@ L 413.16 71.717356 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1154,11 +1154,11 @@ L 413.16 58.837736 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1166,11 +1166,11 @@ L 413.16 52.29774 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1178,11 +1178,11 @@ L 413.16 47.65754 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1190,11 +1190,11 @@ L 413.16 44.058321 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1202,11 +1202,11 @@ L 413.16 41.117545 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1214,11 +1214,11 @@ L 413.16 38.631154 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1226,11 +1226,11 @@ L 413.16 36.477344 +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #b0b0b0; stroke-opacity: 0.25; stroke-width: 0.8; stroke-linecap: square"/> - + @@ -1649,7 +1649,7 @@ L 379.058824 213.715455 L 388.967156 225.255669 L 396.673636 234.478125 L 396.673636 234.478125 -" clip-path="url(#p96b1e01236)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke: #27ae60; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#p8711bdbc2d)" style="fill: none; stroke-dasharray: 7.4,3.2; stroke-dashoffset: 0; stroke: #e8850a; stroke-width: 2"/> + diff --git a/docs/source/_static/diagrams/fig_lie_group_hierarchy.svg b/docs/source/_static/diagrams/fig_lie_group_hierarchy.svg new file mode 100644 index 0000000..670d828 --- /dev/null +++ b/docs/source/_static/diagrams/fig_lie_group_hierarchy.svg @@ -0,0 +1,2183 @@ + + + + + + + + 2026-03-07T13:33:23.130324 + image/svg+xml + + + Matplotlib v3.8.4, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/_static/diagrams/fig_mcmc_energy.svg b/docs/source/_static/diagrams/fig_mcmc_energy.svg index d5780bd..bc52ca8 100644 --- a/docs/source/_static/diagrams/fig_mcmc_energy.svg +++ b/docs/source/_static/diagrams/fig_mcmc_energy.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:35.565718 + 2026-03-07T13:33:18.069715 image/svg+xml @@ -39,7 +39,7 @@ z - - - + + - - + @@ -1299,7 +1299,7 @@ z - + @@ -1339,7 +1339,7 @@ z - + @@ -1375,7 +1375,7 @@ z - + @@ -1388,7 +1388,7 @@ z - + @@ -1426,12 +1426,12 @@ z - - + @@ -1444,7 +1444,7 @@ L -3.5 0 - + @@ -1457,7 +1457,7 @@ L -3.5 0 - + @@ -1470,7 +1470,7 @@ L -3.5 0 - + @@ -1515,7 +1515,7 @@ z - + @@ -1569,7 +1569,7 @@ z - + @@ -1855,7 +1855,7 @@ L 403.683055 91.928758 L 409.018311 79.653572 L 413.167955 69.720744 L 413.167955 69.720744 -" clip-path="url(#pd9423abab1)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#pef680ee904)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> - - - - + + + - - - + + @@ -2416,7 +2416,7 @@ z - + @@ -2459,7 +2459,7 @@ z - + @@ -2485,7 +2485,7 @@ z - + diff --git a/docs/source/_static/diagrams/fig_mcmc_trace.svg b/docs/source/_static/diagrams/fig_mcmc_trace.svg index 6b43bf3..d0a0dff 100644 --- a/docs/source/_static/diagrams/fig_mcmc_trace.svg +++ b/docs/source/_static/diagrams/fig_mcmc_trace.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:37.224477 + 2026-03-07T13:33:19.702883 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -82,7 +82,7 @@ z - + @@ -124,7 +124,7 @@ z - + @@ -156,7 +156,7 @@ z - + @@ -172,7 +172,7 @@ z - + @@ -214,7 +214,7 @@ z - + @@ -230,7 +230,7 @@ z - + @@ -454,12 +454,12 @@ z - - + @@ -501,7 +501,7 @@ z - + @@ -515,7 +515,7 @@ z - + @@ -529,7 +529,7 @@ z - + @@ -543,7 +543,7 @@ z - + @@ -556,7 +556,7 @@ z - + @@ -569,7 +569,7 @@ z - + @@ -582,7 +582,7 @@ z - + @@ -595,7 +595,7 @@ z - + @@ -2489,12 +2489,12 @@ L 296.709385 40.048486 L 296.790313 31.570852 L 296.952169 36.119862 L 296.952169 36.119862 -" clip-path="url(#pb63b8b4f92)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.8; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p939980a4a0)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.8; stroke-width: 0.6; stroke-linecap: square"/> +" clip-path="url(#p939980a4a0)" style="fill: none; stroke-dasharray: 0.7,1.155; stroke-dashoffset: 0; stroke: #888888; stroke-width: 0.7"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#p02dcf46a93)" style="fill: #2e6be5; opacity: 0.5"/> - + @@ -3221,7 +3221,7 @@ z - + @@ -3235,7 +3235,7 @@ z - + @@ -3248,7 +3248,7 @@ z - + @@ -3261,7 +3261,7 @@ z - + @@ -3282,7 +3282,7 @@ z - + @@ -3307,7 +3307,7 @@ z - + @@ -3323,7 +3323,7 @@ z - + @@ -3339,7 +3339,7 @@ z - + @@ -3355,7 +3355,7 @@ z - + @@ -3371,7 +3371,7 @@ z - + @@ -3387,7 +3387,7 @@ z - + @@ -3569,7 +3569,7 @@ L 609.734574 225.516292 L 615.817359 225.745732 L 618.858751 225.800337 L 618.858751 225.800337 -" clip-path="url(#p3395cf4e96)" style="fill: none; stroke: #e8850a; stroke-width: 2.2; stroke-linecap: square"/> +" clip-path="url(#p02dcf46a93)" style="fill: none; stroke: #e8850a; stroke-width: 2.2; stroke-linecap: square"/> + - + diff --git a/docs/source/_static/diagrams/fig_natural_gradient.svg b/docs/source/_static/diagrams/fig_natural_gradient.svg index cd55bc2..7707f42 100644 --- a/docs/source/_static/diagrams/fig_natural_gradient.svg +++ b/docs/source/_static/diagrams/fig_natural_gradient.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:38.912784 + 2026-03-07T13:33:21.320800 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -123,7 +123,7 @@ z - + @@ -180,7 +180,7 @@ z - + @@ -196,7 +196,7 @@ z - + @@ -212,7 +212,7 @@ z - + @@ -227,7 +227,7 @@ z - + @@ -242,7 +242,7 @@ z - + @@ -257,7 +257,7 @@ z - + @@ -272,7 +272,7 @@ z - + @@ -323,12 +323,12 @@ z - - + @@ -344,7 +344,7 @@ L -3.5 0 - + @@ -360,7 +360,7 @@ L -3.5 0 - + @@ -376,7 +376,7 @@ L -3.5 0 - + @@ -392,7 +392,7 @@ L -3.5 0 - + @@ -407,7 +407,7 @@ L -3.5 0 - + @@ -422,7 +422,7 @@ L -3.5 0 - + @@ -437,7 +437,7 @@ L -3.5 0 - + @@ -452,7 +452,7 @@ L -3.5 0 - + @@ -473,7 +473,7 @@ L -3.5 0 - + +" clip-path="url(#pa1f0762d88)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> +" clip-path="url(#pa1f0762d88)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> +" clip-path="url(#pa1f0762d88)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> +" clip-path="url(#pa1f0762d88)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> +" clip-path="url(#pa1f0762d88)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> - +" clip-path="url(#pa1f0762d88)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> + +" clip-path="url(#pa1f0762d88)" style="fill: none; stroke: #2e6be5; stroke-width: 1.8; stroke-linecap: square"/> - - - - - - - + + + + + + @@ -2080,7 +2080,7 @@ z - - - + + @@ -2111,7 +2111,7 @@ z - + @@ -2127,7 +2127,7 @@ z - + @@ -2143,7 +2143,7 @@ z - + @@ -2159,7 +2159,7 @@ z - + @@ -2175,7 +2175,7 @@ z - + @@ -2190,7 +2190,7 @@ z - + @@ -2205,7 +2205,7 @@ z - + @@ -2220,7 +2220,7 @@ z - + @@ -2235,7 +2235,7 @@ z - + @@ -2259,7 +2259,7 @@ z - + @@ -2275,7 +2275,7 @@ z - + @@ -2291,7 +2291,7 @@ z - + @@ -2307,7 +2307,7 @@ z - + @@ -2323,7 +2323,7 @@ z - + @@ -2338,7 +2338,7 @@ z - + @@ -2353,7 +2353,7 @@ z - + @@ -2368,7 +2368,7 @@ z - + @@ -2383,7 +2383,7 @@ z - + @@ -2404,7 +2404,7 @@ z - + +" clip-path="url(#pe39c9128f1)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> +" clip-path="url(#pe39c9128f1)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> +" clip-path="url(#pe39c9128f1)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> +" clip-path="url(#pe39c9128f1)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> +" clip-path="url(#pe39c9128f1)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> +" clip-path="url(#pe39c9128f1)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> - +" clip-path="url(#pe39c9128f1)" style="fill: none; stroke: #888888; stroke-opacity: 0.45; stroke-width: 0.9"/> + +" clip-path="url(#pe39c9128f1)" style="fill: none; stroke: #27ae60; stroke-width: 1.8; stroke-linecap: square"/> - - - - - - + + + + + @@ -4919,17 +4919,17 @@ z - - + + - + - + diff --git a/docs/source/_static/diagrams/fig_ou_loglik.svg b/docs/source/_static/diagrams/fig_ou_loglik.svg index b0d7a5d..468e030 100644 --- a/docs/source/_static/diagrams/fig_ou_loglik.svg +++ b/docs/source/_static/diagrams/fig_ou_loglik.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:33.199313 + 2026-03-07T13:33:15.773450 image/svg+xml @@ -54,7 +54,7 @@ L 316.407237 24.24 L 319.289295 26.672162 L 320.127313 27.397975 z -" clip-path="url(#p64de9fffce)" style="fill: #f2f8fd"/> +" clip-path="url(#p52b8424936)" style="fill: #f2f8fd"/> +" clip-path="url(#p52b8424936)" style="fill: #e8f1fa"/> +" clip-path="url(#p52b8424936)" style="fill: #deebf7"/> +" clip-path="url(#p52b8424936)" style="fill: #d5e5f4"/> +" clip-path="url(#p52b8424936)" style="fill: #cbdef1"/> +" clip-path="url(#p52b8424936)" style="fill: #bed8ec"/> +" clip-path="url(#p52b8424936)" style="fill: #aed1e7"/> +" clip-path="url(#p52b8424936)" style="fill: #9dcae1"/> +" clip-path="url(#p52b8424936)" style="fill: #8abfdd"/> +" clip-path="url(#p52b8424936)" style="fill: #75b4d8"/> +" clip-path="url(#p52b8424936)" style="fill: #63a8d3"/> +" clip-path="url(#p52b8424936)" style="fill: #529dcc"/> +" clip-path="url(#p52b8424936)" style="fill: #4191c6"/> +" clip-path="url(#p52b8424936)" style="fill: #3585bf"/> +" clip-path="url(#p52b8424936)" style="fill: #2777b8"/> +" clip-path="url(#p52b8424936)" style="fill: #1c6ab0"/> +" clip-path="url(#p52b8424936)" style="fill: #125da6"/> +" clip-path="url(#p52b8424936)" style="fill: #08509b"/> +" clip-path="url(#p52b8424936)" style="fill: #084488"/> +" clip-path="url(#p52b8424936)" style="fill: #083674"/> - - + @@ -5832,7 +5832,7 @@ z - + @@ -5872,7 +5872,7 @@ z - + @@ -5908,7 +5908,7 @@ z - + @@ -5921,7 +5921,7 @@ z - + @@ -5934,7 +5934,7 @@ z - + @@ -5979,7 +5979,7 @@ z - + @@ -6033,7 +6033,7 @@ z - + @@ -6149,12 +6149,12 @@ z - - + @@ -6168,7 +6168,7 @@ L -3.5 0 - + @@ -6182,7 +6182,7 @@ L -3.5 0 - + @@ -6196,7 +6196,7 @@ L -3.5 0 - + @@ -6210,7 +6210,7 @@ L -3.5 0 - + @@ -6225,7 +6225,7 @@ L -3.5 0 - + @@ -6262,7 +6262,7 @@ z - + +" clip-path="url(#p52b8424936)" style="fill: none; stroke-dasharray: 2.59,1.12; stroke-dashoffset: 0; stroke: #ffffff; stroke-opacity: 0.55; stroke-width: 0.7"/> +" clip-path="url(#p52b8424936)" style="fill: none; stroke-dasharray: 2.59,1.12; stroke-dashoffset: 0; stroke: #ffffff; stroke-opacity: 0.55; stroke-width: 0.7"/> +" clip-path="url(#p52b8424936)" style="fill: none; stroke-dasharray: 2.59,1.12; stroke-dashoffset: 0; stroke: #ffffff; stroke-opacity: 0.55; stroke-width: 0.7"/> +" clip-path="url(#p52b8424936)" style="fill: none; stroke-dasharray: 2.59,1.12; stroke-dashoffset: 0; stroke: #ffffff; stroke-opacity: 0.55; stroke-width: 0.7"/> +" clip-path="url(#p52b8424936)" style="fill: none; stroke-dasharray: 2.59,1.12; stroke-dashoffset: 0; stroke: #ffffff; stroke-opacity: 0.55; stroke-width: 0.7"/> +" clip-path="url(#p52b8424936)" style="fill: none; stroke-dasharray: 2.59,1.12; stroke-dashoffset: 0; stroke: #ffffff; stroke-opacity: 0.55; stroke-width: 0.7"/> - +" clip-path="url(#p52b8424936)" style="fill: none; stroke-dasharray: 2.59,1.12; stroke-dashoffset: 0; stroke: #ffffff; stroke-opacity: 0.55; stroke-width: 0.7"/> + - - - + + @@ -7614,7 +7614,7 @@ z - + @@ -7690,133 +7690,133 @@ L 352.564688 273.72 L 352.564688 261.246 L 340.090688 261.246 L 340.090688 273.72 -" clip-path="url(#pf25db7ca2d)" style="fill: #f2f8fd"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #f2f8fd"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #e8f1fa"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #deebf7"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #d5e5f4"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #cbdef1"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #bed8ec"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #aed1e7"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #9dcae1"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #8abfdd"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #75b4d8"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #63a8d3"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #529dcc"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #4191c6"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #3585bf"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #2777b8"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #1c6ab0"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #125da6"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #08509b"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #084488"/> +" clip-path="url(#pe3a7327c3f)" style="fill: #083674"/> - - + @@ -7842,7 +7842,7 @@ z - + @@ -7859,7 +7859,7 @@ z - + @@ -7907,7 +7907,7 @@ z - + @@ -7935,7 +7935,7 @@ z - + @@ -7951,7 +7951,7 @@ z - + @@ -7967,7 +7967,7 @@ z - + @@ -8078,10 +8078,10 @@ z - + - + diff --git a/docs/source/_static/diagrams/fig_ou_path.svg b/docs/source/_static/diagrams/fig_ou_path.svg index 48fc5f9..28c4252 100644 --- a/docs/source/_static/diagrams/fig_ou_path.svg +++ b/docs/source/_static/diagrams/fig_ou_path.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:32.455250 + 2026-03-07T13:33:15.077217 image/svg+xml @@ -39,7 +39,7 @@ z - - - + + - - + @@ -4093,7 +4093,7 @@ z - + @@ -4122,7 +4122,7 @@ z - + @@ -4161,7 +4161,7 @@ z - + @@ -4208,7 +4208,7 @@ z - + @@ -4242,7 +4242,7 @@ z - + @@ -4317,12 +4317,12 @@ z - - + @@ -4347,7 +4347,7 @@ z - + @@ -4363,7 +4363,7 @@ z - + @@ -4391,7 +4391,7 @@ z - + @@ -4407,7 +4407,7 @@ z - + @@ -4423,7 +4423,7 @@ z - + @@ -4439,7 +4439,7 @@ z - + @@ -4455,7 +4455,7 @@ z - + @@ -6080,12 +6080,12 @@ L 421.375186 201.217981 L 421.55282 202.718061 L 421.730455 202.383921 L 421.730455 202.383921 -" clip-path="url(#p281a9ef039)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.9; stroke-linecap: square"/> +" clip-path="url(#p1f8ccc08cc)" style="fill: none; stroke: #2e6be5; stroke-opacity: 0.9; stroke-linecap: square"/> +" clip-path="url(#p1f8ccc08cc)" style="fill: none; stroke-dasharray: 6.66,2.88; stroke-dashoffset: 0; stroke: #e8850a; stroke-width: 1.8"/> + diff --git a/docs/source/_static/diagrams/fig_ou_residuals.svg b/docs/source/_static/diagrams/fig_ou_residuals.svg index 5e1e6bc..f9f6e75 100644 --- a/docs/source/_static/diagrams/fig_ou_residuals.svg +++ b/docs/source/_static/diagrams/fig_ou_residuals.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:33.608879 + 2026-03-07T13:33:16.256090 image/svg+xml @@ -43,7 +43,7 @@ L 111.090303 234.912 L 111.090303 221.536 L 104.376762 221.536 z -" clip-path="url(#pd2503bb62f)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> +" clip-path="url(#pbd94ce1168)" style="fill: #2e6be5; opacity: 0.5"/> - - + @@ -344,7 +344,7 @@ z - + @@ -392,7 +392,7 @@ z - + @@ -432,7 +432,7 @@ z - + @@ -462,7 +462,7 @@ z - + @@ -498,7 +498,7 @@ z - + @@ -511,7 +511,7 @@ z - + @@ -524,7 +524,7 @@ z - + @@ -537,7 +537,7 @@ z - + @@ -591,12 +591,12 @@ z - - + @@ -621,7 +621,7 @@ z - + @@ -664,7 +664,7 @@ z - + @@ -680,7 +680,7 @@ z - + @@ -696,7 +696,7 @@ z - + @@ -712,7 +712,7 @@ z - + @@ -728,7 +728,7 @@ z - + @@ -744,7 +744,7 @@ z - + @@ -760,7 +760,7 @@ z - + @@ -1021,7 +1021,7 @@ L 349.125985 234.487815 L 358.287432 234.734249 L 368.466818 234.848823 L 368.466818 234.848823 -" clip-path="url(#pd2503bb62f)" style="fill: none; stroke: #e8850a; stroke-width: 2.2; stroke-linecap: square"/> +" clip-path="url(#pbd94ce1168)" style="fill: none; stroke: #e8850a; stroke-width: 2.2; stroke-linecap: square"/> + diff --git a/docs/source/_static/diagrams/fig_ou_transition.svg b/docs/source/_static/diagrams/fig_ou_transition.svg index 4bf0c4e..cddbcb6 100644 --- a/docs/source/_static/diagrams/fig_ou_transition.svg +++ b/docs/source/_static/diagrams/fig_ou_transition.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:32.779442 + 2026-03-07T13:33:15.379636 image/svg+xml @@ -39,7 +39,7 @@ z - - - + + - - - + + - - - + + - - + @@ -3124,7 +3124,7 @@ z - + @@ -3166,7 +3166,7 @@ z - + @@ -3197,7 +3197,7 @@ z - + @@ -3212,7 +3212,7 @@ z - + @@ -3253,7 +3253,7 @@ z - + @@ -3293,12 +3293,12 @@ z - - + @@ -3313,7 +3313,7 @@ L -3.5 0 - + @@ -3328,7 +3328,7 @@ L -3.5 0 - + @@ -3343,7 +3343,7 @@ L -3.5 0 - + @@ -3358,7 +3358,7 @@ L -3.5 0 - + @@ -3373,7 +3373,7 @@ L -3.5 0 - + @@ -3388,7 +3388,7 @@ L -3.5 0 - + @@ -3437,7 +3437,7 @@ z - + @@ -3616,7 +3616,7 @@ L 355.87184 223.528691 L 409.242217 223.536 L 416.358267 223.536 L 416.358267 223.536 -" clip-path="url(#p9b05fcc7e2)" style="fill: none; stroke: #d62728; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#pbfcd3c9241)" style="fill: none; stroke: #d62728; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#pbfcd3c9241)" style="fill: none; stroke: #27ae60; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#pbfcd3c9241)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#pbfcd3c9241)" style="fill: none; stroke-dasharray: 4.81,2.08; stroke-dashoffset: 0; stroke: #e8850a; stroke-width: 1.3"/> + diff --git a/docs/source/_static/diagrams/fig_picard.svg b/docs/source/_static/diagrams/fig_picard.svg index 109a3c4..0883bf4 100644 --- a/docs/source/_static/diagrams/fig_picard.svg +++ b/docs/source/_static/diagrams/fig_picard.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:31.133645 + 2026-03-07T13:33:13.834745 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -91,7 +91,7 @@ z - + @@ -132,7 +132,7 @@ z - + @@ -168,7 +168,7 @@ z - + @@ -215,7 +215,7 @@ z - + @@ -271,7 +271,7 @@ z - + @@ -302,7 +302,7 @@ z - + @@ -317,7 +317,7 @@ z - + @@ -367,12 +367,12 @@ z - - + @@ -387,7 +387,7 @@ L -3.5 0 - + @@ -429,7 +429,7 @@ z - + @@ -444,7 +444,7 @@ z - + @@ -459,7 +459,7 @@ z - + @@ -508,7 +508,7 @@ z - + @@ -523,7 +523,7 @@ z - + @@ -538,7 +538,7 @@ z - + @@ -553,7 +553,7 @@ z - + @@ -646,13 +646,13 @@ z +" clip-path="url(#p351da5ab96)" style="fill: none; stroke-dasharray: 1.5,2.475; stroke-dashoffset: 0; stroke: #888888; stroke-width: 1.5"/> +" clip-path="url(#p351da5ab96)" style="fill: none; stroke-dasharray: 9.6,2.4,1.5,2.4; stroke-dashoffset: 0; stroke: #d62728; stroke-width: 1.5"/> +" clip-path="url(#p351da5ab96)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #27ae60; stroke-width: 1.5"/> +" clip-path="url(#p351da5ab96)" style="fill: none; stroke: #e8850a; stroke-width: 1.8; stroke-linecap: square"/> +" clip-path="url(#p351da5ab96)" style="fill: none; stroke: #2e6be5; stroke-width: 2.2; stroke-linecap: square"/> + diff --git a/docs/source/_static/diagrams/fig_poisson.svg b/docs/source/_static/diagrams/fig_poisson.svg index 7d7ed84..0614fb6 100644 --- a/docs/source/_static/diagrams/fig_poisson.svg +++ b/docs/source/_static/diagrams/fig_poisson.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:33.945317 + 2026-03-07T13:33:16.569659 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -91,7 +91,7 @@ z - + @@ -133,7 +133,7 @@ z - + @@ -164,7 +164,7 @@ z - + @@ -179,7 +179,7 @@ z - + @@ -220,7 +220,7 @@ z - + @@ -235,7 +235,7 @@ z - + @@ -284,7 +284,7 @@ z - + @@ -299,7 +299,7 @@ z - + @@ -370,12 +370,12 @@ z - - + @@ -388,7 +388,7 @@ L -3.5 0 - + @@ -401,7 +401,7 @@ L -3.5 0 - + @@ -414,7 +414,7 @@ L -3.5 0 - + @@ -427,7 +427,7 @@ L -3.5 0 - + @@ -440,7 +440,7 @@ L -3.5 0 - + @@ -476,57 +476,57 @@ z +" clip-path="url(#p57dd7ccd21)" style="fill: none; stroke: #2e6be5; stroke-width: 2.8"/> +" clip-path="url(#p57dd7ccd21)" style="fill: none; stroke-dasharray: 2,3.3; stroke-dashoffset: 0; stroke: #2e6be5; stroke-width: 2"/> +" clip-path="url(#p57dd7ccd21)" style="fill: none; stroke: #2e6be5; stroke-width: 2.8"/> +" clip-path="url(#p57dd7ccd21)" style="fill: none; stroke-dasharray: 2,3.3; stroke-dashoffset: 0; stroke: #2e6be5; stroke-width: 2"/> +" clip-path="url(#p57dd7ccd21)" style="fill: none; stroke: #2e6be5; stroke-width: 2.8"/> +" clip-path="url(#p57dd7ccd21)" style="fill: none; stroke-dasharray: 2,3.3; stroke-dashoffset: 0; stroke: #2e6be5; stroke-width: 2"/> +" clip-path="url(#p57dd7ccd21)" style="fill: none; stroke: #2e6be5; stroke-width: 2.8"/> +" clip-path="url(#p57dd7ccd21)" style="fill: none; stroke-dasharray: 2,3.3; stroke-dashoffset: 0; stroke: #2e6be5; stroke-width: 2"/> +" clip-path="url(#p57dd7ccd21)" style="fill: none; stroke: #2e6be5; stroke-width: 2.8"/> +" clip-path="url(#p57dd7ccd21)" style="fill: none; stroke-dasharray: 2,3.3; stroke-dashoffset: 0; stroke: #2e6be5; stroke-width: 2"/> +" clip-path="url(#p57dd7ccd21)" style="fill: none; stroke: #2e6be5; stroke-width: 2.8"/> - - - + + - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + diff --git a/docs/source/_static/diagrams/fig_random_walk.svg b/docs/source/_static/diagrams/fig_random_walk.svg index ce84fa5..5b6c234 100644 --- a/docs/source/_static/diagrams/fig_random_walk.svg +++ b/docs/source/_static/diagrams/fig_random_walk.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:29.907235 + 2026-03-07T13:33:12.616712 image/svg+xml @@ -41,12 +41,12 @@ z - - + @@ -91,7 +91,7 @@ z - + @@ -132,7 +132,7 @@ z - + @@ -168,7 +168,7 @@ z - + @@ -215,7 +215,7 @@ z - + @@ -271,7 +271,7 @@ z - + @@ -337,12 +337,12 @@ z - - + @@ -367,7 +367,7 @@ z - + @@ -383,7 +383,7 @@ z - + @@ -399,7 +399,7 @@ z - + @@ -414,7 +414,7 @@ z - + @@ -429,7 +429,7 @@ z - + @@ -444,7 +444,7 @@ z - + @@ -459,7 +459,7 @@ z - + @@ -718,12 +718,12 @@ L 419.524416 200.19 L 423.087201 178.14 L 426.649986 200.19 L 426.649986 200.19 -" clip-path="url(#p4ed1376e72)" style="fill: none; stroke: #2e6be5; stroke-width: 1.4; stroke-linecap: square"/> +" clip-path="url(#pe69f06c934)" style="fill: none; stroke: #2e6be5; stroke-width: 1.4; stroke-linecap: square"/> +" clip-path="url(#pe69f06c934)" style="fill: none; stroke-dasharray: 2.96,1.28; stroke-dashoffset: 0; stroke: #888888; stroke-opacity: 0.6; stroke-width: 0.8"/> + diff --git a/docs/source/_static/diagrams/fig_rastrigin.svg b/docs/source/_static/diagrams/fig_rastrigin.svg index a17b1c4..ab70de4 100644 --- a/docs/source/_static/diagrams/fig_rastrigin.svg +++ b/docs/source/_static/diagrams/fig_rastrigin.svg @@ -6,7 +6,7 @@ - 2026-03-07T11:02:29.611418 + 2026-03-07T13:33:12.326153 image/svg+xml @@ -39,7 +39,7 @@ z - - - + + - - + @@ -1704,7 +1704,7 @@ z - + @@ -1734,7 +1734,7 @@ z - + @@ -1770,7 +1770,7 @@ z - + @@ -1783,7 +1783,7 @@ z - + @@ -1821,12 +1821,12 @@ z - - + @@ -1839,7 +1839,7 @@ L -3.5 0 - + @@ -1879,7 +1879,7 @@ z - + @@ -1893,7 +1893,7 @@ z - + @@ -1907,7 +1907,7 @@ z - + @@ -1921,7 +1921,7 @@ z - + @@ -2225,12 +2225,12 @@ L 411.366215 33.705074 L 412.255054 32.576902 L 413.143892 31.896 L 413.143892 31.896 -" clip-path="url(#pa4e6fc9e59)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#pf1141bd1fb)" style="fill: none; stroke: #2e6be5; stroke-width: 2; stroke-linecap: square"/> +" clip-path="url(#pf1141bd1fb)" style="fill: none; stroke-dasharray: 0.7,1.155; stroke-dashoffset: 0; stroke: #888888; stroke-width: 0.7"/> - - - - - - + + + + + @@ -2890,7 +2890,7 @@ z - - + @@ -2979,7 +2979,7 @@ z - + @@ -3001,14 +3001,14 @@ z - - + + - + diff --git a/docs/source/_static/diagrams/fig_std_vs_nat_gradient.svg b/docs/source/_static/diagrams/fig_std_vs_nat_gradient.svg new file mode 100644 index 0000000..341649d --- /dev/null +++ b/docs/source/_static/diagrams/fig_std_vs_nat_gradient.svg @@ -0,0 +1,1715 @@ + + + + + + + + 2026-03-07T13:33:22.801092 + image/svg+xml + + + Matplotlib v3.8.4, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/_static/diagrams/fig_viterbi_trellis.svg b/docs/source/_static/diagrams/fig_viterbi_trellis.svg new file mode 100644 index 0000000..917a197 --- /dev/null +++ b/docs/source/_static/diagrams/fig_viterbi_trellis.svg @@ -0,0 +1,1551 @@ + + + + + + + + 2026-03-07T13:33:22.449803 + image/svg+xml + + + Matplotlib v3.8.4, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/theory/mathematical_foundations.md b/docs/source/theory/mathematical_foundations.md index bfbc6c4..3a7595b 100644 --- a/docs/source/theory/mathematical_foundations.md +++ b/docs/source/theory/mathematical_foundations.md @@ -1132,26 +1132,12 @@ $Y_t \mid Z_t=k \sim B_k(y)$. **State machine diagram ($K=3$ regimes):** -``` - HMM regime state machine (K = 3) - ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ +```{figure} ../_static/diagrams/fig_hmm_regime.svg +:align: center +:width: 90% - A₁₂ → A₂₃ → - ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ - │ State 1 │──────▶│ State 2 │──────▶│ State 3 │ - │ Bull │◀──────│ Neutral │◀──────│ Bear │ - └─────────────┘ └─────────────┘ └─────────────┘ - ← A₂₁ ← A₃₂ - - Emission B_k(y) = 𝒩(μ_k, σ_k²): - ┌────────┬────────┬────────┬──────────────────┐ - │ State │ μ │ σ │ Character │ - ├────────┼────────┼────────┼──────────────────┤ - │ Bull │ +0.05 │ 0.12 │ high return, low vol │ - │ Neutral│ 0.00 │ 0.18 │ flat, medium vol │ - │ Bear │ -0.08 │ 0.35 │ crash, high vol │ - └────────┴────────┴────────┴──────────────────┘ - (self-transition: A₁₁=0.97, A₂₂=0.97, A₃₃=0.90) +HMM $K=3$ state machine with Bull / Neutral / Bear regimes and Gaussian emission +parameters. Self-transitions $A_{11}=A_{22}=0.97$, $A_{33}=0.90$. ``` ### 8.2 Baum-Welch (EM) @@ -1174,22 +1160,13 @@ iteration monotonically increases $\mathcal{L}(\theta)$ by Jensen's inequality. **Viterbi trellis diagram ($K=3$, $T=4$):** -``` - Viterbi trellis (K=3, T=4) - ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ +```{figure} ../_static/diagrams/fig_viterbi_trellis.svg +:align: center +:width: 82% - State t=1 t=2 t=3 t=4 - - 1 ○─────────▶○─────────▶○─────────▶○ - ╲ ╳ - 2 ○─────────▶●─────────▶●─────────▶○ ● = MAP path - ╲ ╲ ╲ - 3 ○─────────▶○─────────▶○─────────▶○ - - δ_t(k) = max_j [δ_{t−1}(j) · A_jk · B_k(y_t)] - ψ_t(k) = argmax_j ← backtrack pointer - - Traceback: z_4★ ← z_3★ ← z_2★ ← z_1★ via ψ +Viterbi trellis ($K=3$, $T=4$). Filled nodes mark the MAP (most probable) state +sequence; arrows show transition candidates. Backtracking via $\psi_t(k)$ recovers +$z_1^\star o z_4^\star$. ``` **Viterbi (MAP path):** $\delta_t(k) = \max_j \delta_{t-1}(j)A_{jk} \cdot B_k(y_t)$, $O(TK^2)$. @@ -1288,21 +1265,13 @@ The statistical manifold $\mathcal{M} = \{p(\cdot;\theta)\}$ carries the **Standard vs natural gradient:** -``` - Standard vs natural gradient - ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ +```{figure} ../_static/diagrams/fig_std_vs_nat_gradient.svg +:align: center +:width: 88% - Standard: θ_{k+1} = θ_k − η·∇ℒ Natural: θ_{k+1} = θ_k − η·ℐ(θ)^{−1}∇ℒ - ──────────────────────────────────────────── - - ┌────────────────────┐ ┌────────────────────┐ - │ Flat ℝᵈ geometry │ │ Riemannian metric ℐ(θ) │ - │ Ignores curvature │ │ Adapts to geometry │ - │ Slow on ill-cond ℐ │ │ Reparam invariant │ - │ O(κ(ℐ)) iters │ │ O(1) on exp families │ - └────────────────────┘ └────────────────────┘ - - On Gaussian / exponential family: ℐ⁻¹∇ℒ = MLE step → 1 iteration! +Standard versus natural gradient: geometric properties. On exponential families +the natural gradient equals the MLE Newton step, achieving convergence in one +iteration. ``` **Natural gradient (Amari 1998):** @@ -1344,23 +1313,13 @@ linearises the group at the identity. **Matrix Lie group hierarchy:** -``` - Matrix Lie group hierarchy - ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ +```{figure} ../_static/diagrams/fig_lie_group_hierarchy.svg +:align: center +:width: 90% - GL(n,ℝ) ─ all invertible n×n real matrices - │ - ├──▶ SL(n,ℝ) det = 1 - │ - ├──▶ O(n) RᵀR = I (orthogonal) - │ └─▶ SO(n) det = +1 (pure rotations) - │ ↳ portfolio factor rotation, PCA constraints - │ - └──▶ Sp(2n,ℝ) preserves symplectic form ω - ↳ Hamiltonian mechanics, PMP §4.2 / §10.4 - - H(n) Heisenberg ─ upper triangular, 1s on diagonal - ↳ path-signature feature maps +Matrix Lie group hierarchy: subgroup inclusions and their quantitative-finance +applications. $SO(n)$ underpins PCA factor rotation; $\mathrm{Sp}(2n,\mathbb{R})$ +governs Hamiltonian mechanics (PMP §10.4); $H(n)$ drives path-signature features. ``` **Left-invariant control system on $G$:**