ores.marketdata.core

Table of Contents

1. Diagram

ores.marketdata.core component diagram

Figure 1: ores.marketdata.core

2. Summary

ores.marketdata.core manages market data for ORE Studio: time series of market observations (prices, rates, fixings), series metadata, and import from external sources. It exposes NATS handlers for querying and importing market data, and provides the data used by ores.reporting.core when constructing ORE market data files for risk runs.

3. Inputs

  • NATS request messages for market series, observation, and fixing queries.
  • External market data imported via import_service (CSV, API feeds).
  • PostgreSQL connections to ores_marketdata_* tables.

4. Outputs

  • Market series, observation, and fixing records persisted to the ores_marketdata schema.
  • NATS response messages returned to callers.

5. Entry points

  • include/ores.marketdata.core/messaging/registrar.hpp — registers handlers.
  • include/ores.marketdata.core/service/ — series, observation, fixing, import services.

6. Dependencies

  • ores.marketdata.api — shared domain types and NATS protocol schemas.
  • ores.dq, ores.iam.core, soci, nats.c.

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

find_package(magic_enum CONFIG REQUIRED)

target_link_libraries(${lib_target_name}
    PUBLIC
        ores.marketdata.api.lib
        ores.ore.core.lib
    PRIVATE
        ores.dq.api.lib
        ores.history.core.lib
        ores.refdata.api.lib
        ores.refdata.core.lib
        ores.service.lib
        ores.storage.core.lib
        ores.nats.lib
        ores.database.lib
        ores.utility.lib
        ores.security.lib
        faker-cxx::faker-cxx
        magic_enum::magic_enum
        Boost::boost)
target_link_libraries(${tests_target_name}
    PRIVATE
        ${lib_target_name}
        ores.utility.lib
        ores.testing.lib
        ores.logging.lib
        ores.eventing.api.lib
        ores.eventing.core.lib
        ores.refdata.api.lib
        ores.refdata.core.lib
        ores.iam.api.lib
        ores.iam.core.lib
        ores.inbox.api.lib
        ores.inbox.core.lib
        ores.nats.lib
        ores.service.lib
        ores.security.lib
        ores.storage.core.lib
        Catch2::Catch2
        faker-cxx::faker-cxx
        ores.openssl_cleanup
        Threads::Threads)

# This suite carries the whole-corpus import walk. It writes every market
# payload under external/ore/examples, which takes several minutes and keeps
# the database busy throughout. It runs alone, because beside another suite it
# slows that suite's database reads enough to expose a race of its own. It
# needs a budget well above the default, which the walk has outgrown. The
# properties are set at the end of the directory, once the test exists.
cmake_language(DEFER CALL set_tests_properties ${tests_target_name}
    PROPERTIES RUN_SERIAL TRUE TIMEOUT 3600)

Emacs 29.3 (Org mode 9.6.15)