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.

Detail

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.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:

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:

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.

ores.fpml

FpML processing infrastructure — parsing, validating, and serialising financial product XML. The FpML schema defines every instrument family; ores.fpml translates between FpML XML and ORE Studio internal types.

Sub-component Role Dependencies
ores.fpml FpML XML parsing, validation, serialisation ores.utility

Related documents:

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.fpml
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:

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:

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:

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 Shared synthetic data types and ores.nats protocol
ores.synthetic.core Scenario generation, curve/surface synthesis ores.synthetic.api, ores.database, ores.marketdata.api
ores.synthetic.service Thin ores.nats entrypoint ores.synthetic.core, ores.nats

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.

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

ores.scheduler

Task scheduling for compute jobs — wraps pg_cron to schedule 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 pg_cron integration, schedule management ores.scheduler.api, ores.database
ores.scheduler.service Thin ores.nats entrypoint ores.scheduler.core, ores.nats

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.

ores.analytics

Risk analytics results and aggregation — NPV, sensitivities, Greeks, and scenario analysis. Consumes ores.reporting output and provides the query layer for the analytics UI.

Sub-component Role Dependencies
ores.analytics.api Shared analytics types and ores.nats protocol
ores.analytics.core NPV, sensitivity, scenario aggregation ores.analytics.api, ores.database, ores.refdata.api
ores.analytics.service Thin ores.nats entrypoint ores.analytics.core, ores.nats

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. See Workspace design for how workspaces scope workflow execution.

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

See also

Emacs 29.3 (Org mode 9.6.15)