System Model: Domain Layer

Table of Contents

This page is part of the System Model. Domain is the reason ORE Studio exists — everything else is infrastructure supporting what lives here. Each domain component is a self-contained vertical that speaks ores.nats to every other vertical; none depends on any application component. To add new domain types, see the Domain Type Creator skill. To understand how tenants and parties are isolated at the messaging layer, see NATS multi-tenancy and multi-party design.

1. Detail

1.1. ores.refdata

Reference data — currencies, countries, coding schemes, FpML taxonomy, and market conventions. The foundational data set that all other domain services read; it is always a dependency, never a dependent.

Sub-component Role Dependencies
ores.refdata.api Shared reference data types and ores.nats protocol —
ores.refdata.client Consumer-side helpers: FX rate formatting, convention tenant cache ores.refdata.api, ores.eventing, ores.nats
ores.refdata.core CRUD, validation, coding scheme resolution ores.refdata.api, ores.database
ores.refdata.service Thin ores.nats entrypoint ores.refdata.core, ores.nats

Related documents:

1.2. ores.iam

Identity and access management — account lifecycle, login with password/scrypt/SSO, session tracking with geolocation, and role-based authorisation. Multi-tenancy (tenant isolation) and multi-party (party-scoped data access) are both enforced here before any domain request is processed.

Sub-component Role Dependencies
ores.iam.api Shared IAM types and ores.nats protocol —
ores.iam.client ores.nats client for IAM — login, session, RBAC ores.iam.api, ores.nats
ores.iam.core Account lifecycle, RBAC, session management ores.iam.api, ores.database, ores.security
ores.iam.service Thin ores.nats entrypoint ores.iam.core, ores.nats

Related documents:

1.3. ores.dq

Data quality — provenance, validation metadata, change management, and DQ-6 governance. Owns the publish-from-dq cross-service write pattern: target services expose <service>.v1.<entity>.publish-from-dq subjects so DQ can initiate writes without violating service table isolation.

Sub-component Role Dependencies
ores.dq.api Shared DQ types and ores.nats protocol —
ores.dq.core DQ rules, provenance tracking, governance ores.dq.api, ores.database
ores.dq.service Thin ores.nats entrypoint ores.dq.core, ores.nats

Related documents:

  • Data Quality — DQ-6 governance model, provenance design, and the publish-from-dq pattern.

1.4. ores.ore

Sub-component Role Dependencies
ores.ore.api Shared ORE types and ores.nats protocol —
ores.ore.core ORE XML parsing, domain type conversion ores.ore.api, ores.database
ores.ore.service Thin ores.nats entrypoint ores.ore.core, ores.nats

ORE XML import/export — converts between Open Source Risk Engine XML format and ORE Studio domain types. The bridge between the ORE Engine computation layer and ORE Studio's domain model.

Related documents:

1.5. ores.trading

Trade booking and lifecycle — FSM-enforced trade status transitions, portfolio and book management, and trade blotters. Every trade enters the system through ores.trading.core and is tracked through its full lifecycle from booking to settlement.

Sub-component Role Dependencies
ores.trading.api Shared trade types and ores.nats protocol —
ores.trading.core Trade FSM, portfolio/book management ores.trading.api, ores.database, ores.refdata.api
ores.trading.service Thin ores.nats entrypoint ores.trading.core, ores.nats

Related documents:

1.6. ores.marketdata

Market data — series, observations, fixings, yield curves, and volatility surfaces. The data that flows into ORE Engine scenarios: curve shapes, vol surfaces, and fixing histories.

Sub-component Role Dependencies
ores.marketdata.api Shared market data types and ores.nats protocol ores.refdata.api
ores.marketdata.core Series, observations, curve/surface storage ores.marketdata.api, ores.database
ores.marketdata.service Thin ores.nats entrypoint ores.marketdata.core, ores.nats

Related documents:

1.7. ores.synthetic

Synthetic market data and scenario generation for stress testing and demo environments. Produces complete, internally consistent market data sets without requiring real market feeds.

Sub-component Role Dependencies
ores.synthetic.api Domain types, generators, feed implementations, and ores.nats protocol ores.marketdata.api
ores.synthetic.core Repositories, CRUD services, NATS handlers, and history providers ores.synthetic.api, ores.database, ores.marketdata.api
ores.synthetic.service NATS entrypoint, feed control plane, and change-event publishing ores.synthetic.core, ores.nats

1.8. ores.assets

Sub-component Role Dependencies
ores.assets.api Shared asset types and ores.nats protocol —
ores.assets.core Asset CRUD, tagging, hierarchical storage ores.assets.api, ores.database
ores.assets.service Thin ores.nats entrypoint ores.assets.core, ores.nats

Binary asset storage with hierarchical tagging and CRUD management. Stores images, attachments, and other binary content associated with domain entities.

1.9. ores.storage

File storage abstractions — local filesystem paths and HTTP-based remote storage. Used by the compute layer to stage ORE Engine input and output files between runs.

Sub-component Role Dependencies
ores.storage File staging abstraction for compute jobs ores.database, ores.nats

1.10. ores.scheduler

Task scheduling for compute jobs — an in-process timer loop schedules ORE scenario runs and report generation at defined intervals or calendar times.

Sub-component Role Dependencies
ores.scheduler.api Shared scheduler types and ores.nats protocol —
ores.scheduler.core Timer loop, schedule management ores.scheduler.api, ores.database
ores.scheduler.service Thin ores.nats entrypoint ores.scheduler.core, ores.nats

1.11. ores.reporting

Report execution and result persistence — runs ORE Engine output through configured report definitions and stores the results for retrieval by the analytics and UI layers.

Sub-component Role Dependencies
ores.reporting.api Shared reporting types and ores.nats protocol —
ores.reporting.core Report definition, execution, result storage ores.reporting.api, ores.database, ores.refdata.api
ores.reporting.service Thin ores.nats entrypoint ores.reporting.core, ores.nats

Related documents:

  • Risk Reporting — report execution design and the relationship between report definitions and ORE output.
  • P&L Attribution — how P&L reports are structured and attributed.

1.12. ores.analytics

Pricing model configuration and quantitative math: the pricing engine type registry, model configurations, product-to-engine mappings and their normalised parameters, plus the dependency-light math library the domain uses for CRM topology and stochastic price processes.

Sub-component Role Dependencies
ores.analytics.api Shared analytics types and ores.nats protocol —
ores.analytics.core Pricing model configuration — engine types, model types and product parameters ores.analytics.api, ores.database, ores.refdata.api
ores.analytics.service Thin ores.nats entrypoint ores.analytics.core, ores.nats
ores.analytics.quant Dependency-light quant math: CRM spanning-tree topology, derived-rate engine, stochastic price processes Boost, immer; no database, NATS or refdata coupling

1.13. ores.workflow

Workflow management for multi-step compute pipelines — tracks pipeline state, retries failed steps, and signals completion. Works with ores.scheduler and ores.compute to orchestrate end-to-end valuation runs.

Sub-component Role Dependencies
ores.workflow.api Shared workflow types and ores.nats protocol —
ores.workflow.core Pipeline state machine, step tracking, retry ores.workflow.api, ores.database
ores.workflow.service Thin ores.nats entrypoint ores.workflow.core, ores.nats

2. See also

Emacs 29.3 (Org mode 9.6.15)