Vary synthetic feed tick frequency stochastically
Table of Contents
This page is a capture in the discarded bucket of the product backlog.
Duplicate, merged into Story: Stochastic tick arrival times for synthetic
feeds: this capture and the older capture independently described the
same idea. This one's concrete grounding — the exact
fx_spot_feed.cpp:64-106 file/line reference, the SQL populate script,
and the link to the task that surfaced it — was merged into the
promoted story's Goal/References; nothing here was lost. Kept only for
its own history.
What
fx_spot_feed::start (projects/ores.synthetic/service/src/fx_spot_feed.cpp:64-106)
ticks at a fixed, deterministic period derived from ticks_per_hour
(hours(1) / ticks_per_hour), sleeping the full period before every
publish including the first. Real market data arrives at irregular,
bursty intervals — quiet stretches punctuated by clusters of updates
around news/liquidity events — not a metronome. Consider making tick
timing itself stochastic for the Realistic archetype (e.g. a Poisson
process with the current ticks_per_hour as its rate parameter, or a
two-state quiet/burst regime), independent of the existing GMM price
mixture, which already varies tick-to-tick magnitude but not timing.
Why
Raised while tuning synthetic_fx_spot_configs_realistic_populate.sql's
tick cadence (see Task: Seed Basic and Realistic dataset bundles) — settled
on a fixed 2-second cadence for now as good enough, but a genuinely
"realistic" feed would vary its arrival timing, not just its price
distribution. Deferred rather than done now to keep that task's scope
contained.
References
projects/ores.synthetic/service/src/fx_spot_feed.cpp:64-106projects/ores.sql/populate/synthetic/synthetic_fx_spot_configs_realistic_populate.sql
See also
- Task: Seed Basic and Realistic dataset bundles
- Story: Stochastic tick arrival times for synthetic feeds — the surviving, promoted story this was merged into.