Story: Hotfix: stochastic process statistical tests fail on macOS CI
Table of Contents
This page documents a story in Sprint 25. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
1. Goal
Two Monte Carlo statistical tests in ores.analytics.quant fail on
macOS CI: the Black-Karasinski sample-variance check and the HJM
drift-mean check assert tolerances tighter than the tests' own
standard error. std::normal_distribution is implementation-defined,
so the same mt19937 seeds produce a different draw sequence under
libc++ (macOS) than under libstdc++ (Linux), and the macOS draws land
just outside the bounds. The fix widens the tolerances to multi-sigma
bounds so the tests pass on every platform while still rejecting
genuine model errors.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 25 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-08-12 |
3. Acceptance
- ores.analytics.quant tests pass on Linux, macOS, and Windows CI.
- Statistical assertions still bound genuine deviations (tolerances at or above ~3 sigma of the estimator's standard error).
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Scaffold story: Hotfix: stochastic process statistical tests fail on macOS CI | DONE | 2026-08-12 | 2026-08-12 | Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR. |
| Implement Hotfix: stochastic process statistical tests fail on macOS CI | DONE | 2026-08-12 | 2026-08-12 | Initial task for: Hotfix: stochastic process statistical tests fail on macOS CI |
5. Decisions
- Widen test tolerances rather than replace
std::normal_distributionwith a platform-independent generator: test-only, minimal hotfix scope; the per-platform draws remain statistically valid samples. - BK variance epsilon 1.5e-2 (~4.7 sigma at 200000 paths), matching the sibling Gaussian-OU moments test in the same file.
- HJM drift margins 1e-2 (>= 3.2 sigma at the noisiest leg). Per-rate margins declined at review: a drift-formula error and the standard error of each mean both scale with the rate's volatility, so detection sensitivity is leg-independent in sigma units.