Regression test for zero-volatility GMM component

Table of Contents

This page is a capture in the next bucket of the product backlog — a pre-sprint idea, not yet pulled into a sprint as a story.

What

Add a unit test for the stochastic process engines covering the zero-volatility case: a gmm_process (and arithmetic_gmm_process) built with a component whose σ = 0 must not abort, and next() must return exactly the component mean (geometric: price *= exp(mean); arithmetic: price += mean). Also cover σ < 0 hitting the same guard. Lives alongside the existing synthetic service tests (projects/ores.synthetic/service/tests/).

Why

σ = 0 ("Flat" profile) previously aborted the synthetic service via a libstdc++ assertion in std::normal_distribution (SIGABRT), surfacing to users only as a NATS timeout. The fix (projects/ores.synthetic/service/src/processes/gmm_process.cpp and arithmetic_gmm_process.cpp) short-circuits σ <= 0 to draw the mean. A regression test locks this behaviour in so it cannot silently regress. Raised in PR #1367 review.

References

  • projects/ores.synthetic/service/src/processes/gmm_process.cpp — σ<=0 guard.
  • projects/ores.synthetic/service/src/processes/arithmetic_gmm_process.cpp — same guard.
  • PR #1367 — review thread that raised this.

See also

Emacs 29.3 (Org mode 9.6.15)