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.