Story: GMM improvements: tidy up synthetic data generation loose ends

Table of Contents

This page documents a story in Sprint 22. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

Goal

Tidy up loose ends left over from the GMM-based synthetic market data generation work (FX spot PoC and its config UI): give the preview charts readable axes, make each GMM component's PDF visible alongside the combined mixture PDF, and close the gap on stochastic process "component tools" that were designed but never implemented — Ornstein-Uhlenbeck in particular.

Status

Field Value
State DONE
Parent sprint Sprint 22
Now Done — all three tasks closed.
Waiting on Nothing.
Next Raise a PR.
Last touched 2026-07-03

Acceptance

  • Live Return Distribution Preview and Live Sample Price Paths Preview charts (FX Rate → Price behaviour tab) have labelled X and Y axes.
  • The Live Return Distribution Preview renders each GMM component's individual PDF plus the combined mixture PDF, with the combined curve in a visually distinct colour.
  • The other stochastic process types catalogued in Synthetic market data generators are reviewed against what is actually implemented; gaps are either implemented or explicitly scoped out with rationale.
  • Ornstein-Uhlenbeck (mean-reverting) is implemented as a synthetic process, matching the design already recorded in Synthetic market data generators and FX spot synthetic data PoC: architecture (synthetic_ou), or the decision to defer it is recorded with rationale.

Tasks

Task State Start End Description
Add X/Y axis labels to GMM preview charts DONE 2026-07-02 2026-07-02 Add labelled X and Y axes to the Live Return Distribution Preview and Live Sample Price Paths Preview charts on the FX Rate Price behaviour tab.
Display per-component and combined GMM PDFs DONE 2026-07-02 2026-07-02 Render each GMM component's own PDF curve on the Live Return Distribution Preview, plus the combined mixture PDF in a distinct colour.
Review stochastic process component tools; implement Ornstein-Uhlenbeck DONE   2026-07-03 Review catalogued vs implemented stochastic process types and close the gap, prioritising the designed-but-unimplemented Ornstein-Uhlenbeck (mean-reverting) process.

Decisions

  • Ornstein-Uhlenbeck reuses the existing GMM component fields (weight = κ, volatility σ field = σ, initial price = θ) rather than adding new persisted columns or protocol fields, since OU is a single-regime process (3 scalars) rather than a K-component mixture. This follows the same precedent already set by the "arithmetic" engine, which reuses the same %-suffixed μ/σ fields for absolute price increments via a warning banner rather than relabelling fields.
  • Jump/Poisson processes and cross-rate correlation matrices were reviewed and left explicitly out of scope for this story — both are already flagged to users as "planned, not wired to anything" in the FxSpotRateEditor "Component Tools" disclosure panel, so the gap was visible, not silently dropped.

Out of scope

  • New persisted schema/protocol fields dedicated to Ornstein-Uhlenbeck parameters (see Decisions — reused existing GMM fields instead).
  • Jump/Poisson processes and cross-rate correlation matrices (already tracked as planned in the "Component Tools" panel).

Emacs 29.3 (Org mode 9.6.15)