ores.synthetic.api
Table of Contents
2. Summary
ores.synthetic.api defines the types and the NATS protocol of the
synthetic data component. All nine entities (folder, fx_spot_generation_config,
gmm_component, ir_curve_generation_config,
ir_curve_generation_config_process_parameter_value, ir_curve_template_entry,
market_data_generation_config, yield_curve_process_parameter_definition,
yield_curve_process_type) are code-generated from the entity models in
modeling/. The facet also carries the feed classes that generate synthetic
market data (fx_spot_feed, ir_curve_feed), the feed factory, and the IR curve
template resolver.
3. Inputs
- Entity models:
modeling/ores.synthetic.{entity}.org, each bound to a variability profile. Codegen generates the domain types, table and JSON I/O, the per-entity test data generators, the changed-event types, and the NATS protocol headers from them. - Hand-written code: the feed classes, the template resolver, and the catalog
generation types from the component's original purpose
(
synthetic_catalog.hppand kin). The organisation generator that stood beside them is gone: what it built – parties, counterparties, business units, portfolios, books and contacts for a tenant – is not supported any more, and synthetic tenants and parties are their own work when they return.
4. Outputs
- Domain headers for the nine entities, with JSON and table I/O.
- Per-entity data generators used by tests and seeds.
- NATS protocol headers for entity CRUD and history, feed configuration and
control, simulation, and preview requests, including the shared
simulate_paths_common.hppbounds both simulate requests alias. - Feed classes that produce synthetic FX spot rates and IR curves.
5. Entry points
include/ores.synthetic.api/domain/— entity, enum, and validation headers.include/ores.synthetic.api/messaging/— NATS protocol message headers.include/ores.synthetic.api/eventing/— per-entity changed-event types.include/ores.synthetic.api/feeds/— feed classes and the template resolver.include/ores.synthetic.api/generators/— per-entity data generators.
6. Dependencies
Public, because the domain and protocol headers name their types:
ores.marketdata.api— thei_feedinterface and the market tick.ores.refdata.api,ores.iam.api,ores.dq.api,ores.analytics.quant— types the generated entities and the feed classes carry.ores.database— the context the IR template resolver reads reference data through.ores.eventing.api— entity change event types.ores.nats,ores.platform.
Private:
ores.marketdata.clientandores.marketdata.core— the fixing reads an FX feed starts from.ores.refdata.core— the reference data the IR resolver resolves.ores.utility— UUID and timestamp helpers.
The facet cannot depend on ores.synthetic.core, because core links api.
Anything that reads a synthetic repository therefore lives in the service
facet.
7. Build dependencies
What the shared profile cannot know, declared here rather than hand-edited into the generated build file. Each block is spliced into its generated file after the profile's baseline.
8. See also
- ores.synthetic.core — repositories, services, and NATS handlers.
- ores.synthetic Messaging Reference — full NATS subject and message catalogue.
9. Test dependencies
The suites link what the profile cannot know about.
target_link_libraries(${lib_target_name}
PUBLIC
ores.analytics.quant.lib
ores.dq.api.lib
ores.iam.api.lib
ores.refdata.api.lib
ores.eventing.api.lib
ores.platform.lib
ores.nats.lib
ores.marketdata.api.lib
ores.database.lib
PRIVATE
ores.utility.lib
ores.marketdata.client.lib
ores.marketdata.core.lib
ores.refdata.core.lib
faker-cxx::faker-cxx
libfort::fort)
target_link_libraries(${lib_target_name} PRIVATE ores.codec.pch)
target_link_libraries(${tests_target_name}
PRIVATE
ores.synthetic.api.lib
ores.marketdata.core.lib
ores.utility.lib
ores.testing.lib
faker-cxx::faker-cxx
Catch2::Catch2
Threads::Threads)
