Knowledge
Table of Contents
Durable, cross-cutting knowledge that outlives any sprint. Each entry is a single-topic page — a definition, a convention, an explanation of how some piece of the system works — that other documents can link to without restating it. If you find yourself explaining the same concept in two places, that concept belongs here.
Knowledge is grouped by topic; jump to the section that fits what you are looking for. The external/ subfolder contains pure reference docs about systems and concepts ORE Studio does not own. For user-facing documentation see ORE Studio Manuals.
Domain
Finance concepts the codebase relies on, grouped by topic.
Currency
- Currency — hub note: the money/currency/cash foundation, ISO 4217 and currency lifecycle, and the distinct currency roles (functional, presentation, transaction/denominated, aggregation, settlement, premium, book currencies) a book or trade carries, plus the sweep/reval mechanics that reconcile between them.
FX and market data conventions
- Currency pairs — hub note for currency pairs as reference data: naming, deliverability, quoting, classification, and entity fields.
- Cross-rates matrix (CRM) — hub note for the FX cross-rates matrix: the
no-arbitrage spanning-tree of driver/derived spot rates that lives in
ores.marketdata. Companion to the Currency pairs hub above. - Volatility — the generic concept: dispersion of returns, variance vs standard deviation, annualisation, historical/realised vs implied volatility, and the Black-Scholes sigma parameter — foundational for the three volatility pages below.
- FX Volatility Surface — pillar quoting (ATM/RR/STR), delta conventions, smile models (SABR, BS, spline), and cross-time interpolation.
- External market data identifiers — a comparative analysis of five schemes: RIC, Bloomberg ticker, the ORE canonical/quote key, MDDL, and FIX — origin, ownership, formal specification status, and pros/cons/limitations, independent of any particular consumer of the schemes.
- Market Data Identifier — ORE Studio's own concrete identifier
scheme (
series_type/metric/qualifier[/point_id]), the two-level subscription model (generation config vs client subscription), and the mapping from ORE key to NATS tick subject (lowercase,/→., e.g.marketdata.v1.tick.fx.rate.eur.usd). - Market Data Definition Language (MDDL) — FISD/SIIA's XML-based market data description language, version history (1.0 through the final 3.0-beta), and current status (contributed into ISO 20022/FIX rather than continued as a standalone dialect).
- Financial Information eXchange (FIX) Protocol — the FIX Trading
Community's actively-maintained wire protocol and message dictionary,
its Market Data message family, and
SecurityIDSourcesymbology (which explicitly names RIC and Bloomberg as member schemes). - oresmd: ORE Studio Market Data URI — a proposed canonical,
structured RFC 3986 URI (
oresmd://<asset_class>/<entity>?...) covering every asset class, with deterministic projection rules into ORE's index name, curve key, and quote key, closing the tenor-index and curve-role gaps. - Market Data Requirements and Resolution — hub note for how a logical need for market data (a requirement) resolves into a concrete item drawn from the market data universe: requirements, identifiers, configuration/resolution, dependency closure, snapshotting, and filtering, framed throughout in terms of sets and a running DNS analogy.
- Covered Interest Parity and FX Forward Pricing — why FX forward rates are fully determined by the spot rate and IR curves, the arbitrage argument, the QuantLib discount-factor formula, and why synthetic data generation must derive forwards analytically.
- Vol surface no-arbitrage conditions — the three conditions a vol surface must satisfy (calendar-spread, butterfly, put-call parity), how QuantLib detects violations, and why the frozen-pool method matters for synthetic data generation.
- Volatility clustering and GARCH models — what vol clustering is, GARCH(1,1) as a recurrence relation, GJR-GARCH's leverage effect, and how this family relates to QuantLib's Heston model.
- Probability measures: P (real-world) and Q (risk-neutral) — what each measure is, why both exist, which one QuantLib and ORE use in which context, and why GMM synthetic data lives in P while option pricers require Q.
Rates and curves
- Interest Rate Curves — day-count conventions, discount factors, and bootstrapping for rate curves.
- Interest Rate Curve Families — hub note for how a currency's curves compose beyond a single curve: funding/projection families, multi-curve build order, storage grouping, the review UI, and onshore/offshore namespacing.
- Term Structures and Tenors — hub note for scalar/tenor/term-structure concepts: tenor labels, horizon date, date rolling, IMM dates, and broken dates/turn points.
- Fed Funds Average Swap Convexity — why arithmetic-average FFAS pillars inject a convexity bias relative to compounded OIS at the long end of a Fed Funds curve, and why naive bootstrapping mis-prices it.
- Business Centre — the FpML business centre: a 4-character code identifying a financial trading location's holiday calendar, coding-scheme scoping, and its use as a book's rates centre.
Calendars and reference data
- Calendars, Holidays and Events — hub note for calendar reference data: the Diary/Effects architectural split, Template/Instance recurrence, holiday calendar administration, and calendar-anchored events with a time point.
Risk, valuation and reporting
- ORE model configuration — how ORE Studio configures the pricing / risk models we hand to ORE.
- Pricing Configuration — named, versioned bundles of valuation settings: model mapping, smile surfaces, Greeks, layered overrides.
- Risk Reporting — market risk and trading desk reporting: report definitions, measures, Greek sets, classification taxonomy, EOD batch set.
- P&L Attribution — attribution identity, Bump and Reset/Run, trade activity categories, market data bucketing, time component, and EOD sign-off.
- Compute Engine — distributed computation for valuation and reporting: run configurations, compute jobs, orchestration, chunking, environments, and lifecycle.
Trading and front office
- Trade Blotter — primary front-office screen: deal grid, deal actions, entry form, STP panel, dynamic books, and cross-screen navigation.
- Book — hub note for the trading book: classification, the book/portfolio distinction, dynamic books, book groups and rates centres, lifecycle, ledger connection, and access and permissions.
- Business Unit — the FpML BusinessUnit type and the self-referencing organisational hierarchy built on it: business centre and aggregation currency as properties of a unit, distinct from the unrelated cost-centre accounting axis.
- Sweep — hub note for the general cash-centralisation concept and the two distinct sweep types built on it, Spot Sweep and Ledger Sweep.
- FRTB trading book / banking book boundary — the Basel III/IV regulatory classification: intent-based assignment, presumptive lists, trading desk structure, capital treatment, switching restrictions.
Data quality
- Data quality — the standard DQ-6 dimensions as we apply them inside ores.dq.core.
Synthetic data generation (methodology)
- Synthetic market data generation: approach — definitive approach for generating a consistent, arbitrage-free, evolvable synthetic market data environment covering all ORE-supported asset classes: chosen method per asset class, cross-asset constraint equations, P/Q-measure bridge, time evolution strategy, UI requirements, phased implementation roadmap.
- Stochastic Processes — hub note for the random processes behind ores.analytics.quant's generators: the Wiener process and Ito's lemma foundations, the two unbounded price processes (arithmetic/geometric Brownian motion), and the four mean-reverting short-rate processes (Ornstein-Uhlenbeck, Vasicek, Hull-White, CIR).
Architecture
How the codebase is put together.
- Component architecture — api/core/service split, facet placement, CMake dependency chain, and scaffold profiles.
- Anatomy of a Service — every layer of a NATS service (registry, IAM, certs, controller, runner, authentication) with a stand-up checklist.
- Service Bootstrap Phases — Phase 1 (wire and subscribe every subject) vs. Phase 2 (mint tokens, warm caches — anything that calls a subject, including the service's own), worked through IAM's party_cache.
- Where should an entity-mirror cache live? — placement rule for the
nats-event-cache facet's cached_by target: the entity's own producer never
caches itself, a single specific consumer gets the cache in its own
component (party_cache in ores.iam.core), multiple UI-layer consumers share
a thin *.client component instead of duplicating. Covers cached_by's
component.subcomponent dotted form for targeting a non-
.coreconsumer. - How does a Qt client cache stay fresh? — the GUI-tier counterpart to the entity-mirror cache above: ChangeReasonCache/BadgeCache subscribe to NATS change events via ClientManager and reload on receipt, re-subscribing on every login/reconnect. Contrasts the two tiers (concurrency model, auth, partitioning, protocol) and explains why the server-side facet is the wrong tool for a Qt-side cache.
- Entity-composed registrars — the meta-pattern of a top-level transport registrar delegating to per-entity sub-registrars, with a per-transport instance section (NATS, HTTP) linking to the codegen archetypes.
- Market Data Architecture — producers, the marketdata authority (subscribe → persist → remap), feed configs, and source-independent consumers.
- Tenor and Curve Bootstrapping Architecture — the end-to-end code
model of the tenor machinery: the refdata tenor vocabulary (labels,
conventions, anchors, schedules), the calendar/event store
(
calendar_event,diary_entry_types), how a tenor label resolves to a date (tenor_resolution.cpp,ANCHOR_OFFSET/SCHEDULE_STEP), and the bootstrap chain (configs → pillars → republish resolver → engine), including the FOMC1F..=nF= worked example. - ores.marketdata infrastructure inventory — inventory of the existing
market data stack across all tiers: DB schema and entities (
market_series,market_observation,market_fixing), FX spot encoding, tenant/workspace scoping, NATS request-reply subjects, Qt list windows,QueueChartWindowchart pattern, ORE CSV format, service registry entry, and CMake build conventions. Reference for the FX spot synthetic data PoC. - FX spot synthetic data PoC: architecture — architecture design for the FX
spot PoC vertical slice: gap analysis against the existing stack, new
ores.syntheticservice andores.marketdata.clientlibrary designs,IFxSpotFeedinterface, per-tick data flow, new NATS subjects, chart window and config dialog designs, 8 open design questions, and recommended 8-step implementation order. Gates implementation. - Synthetic market data generators — architecture and specification of the generator
library:
IStochasticProcess/IFxSpotFeedseparation, all 12 process types (5 deterministic + 7 stochastic) with mathematical specifications, per-process RNG design, ring-buffer pre-generation, QuantLib vs standalone analysis, and performance design for 50–100 concurrent high-frequency FX feeds. - Polymorphic types over NATS — how to transport inheritance-like data
structures (instrument variants, feed config params) over NATS using RFL: the
type-specific subject pattern, discriminator-on-containing-entity convention,
two-phase dispatch for read paths that cannot know the type upfront, the RFL
std::variantindex fragility pitfall, and the wrapper struct idiom. Canonical example fromores.tradinginstruments; applied example fromores.marketdatafeed config parameters. - CMake setup — preset menu, output directory layout, the conventions every component build follows.
- CI workflows and local checks — every PR-gating check, its fate (local / GitHub / retired), and the change-classification rules the submit-PR skills use.
- Entity lifecycle — layer ordering, type mappings, and service conventions for creating a full-stack entity.
- Qt plugin architecture —
ores.qt.apicontract, IPlugin lifecycle, the two-phase menu-building sequence. - Qt entity patterns — ClientModel, list window, detail dialog, history dialog, and async-fetch patterns.
- Badge system wiring — DB-driven pill badges:
ores.dqentities, SQL population,BadgeCache, and delegate wiring. - C++ code style: clang-format configuration — literate source for
.clang-format; every setting documented with rationale and examples. - Qt menu and toolbar patterns — plugin registration,
on_login()menu wiring, and MDI window toolbar construction. - CLI entity patterns — options structs, parser layout, and command-dispatch conventions.
- Shell entity patterns — REPL command registration, message-based communication, and operation shapes.
- HTTP entity patterns — REST route structure, handler skeleton, and CRUD conventions.
- Wt entity patterns — list widget, detail dialog, and application-integration patterns.
- SQL entity schema patterns — naming conventions, idempotency patterns, and entity-type catalogue.
- Unit test conventions — Catch2 file structure, naming, test-case shape, generators, database helpers.
- Code review checklist — the categorised checks both PR-delta and full-component reviews apply.
- Component documentation guide — how to write a
component_overview.orgthat passes audit. - PlantUML class diagram conventions — styling for component and system class diagrams.
- PlantUML ER diagram conventions — styling for the SQL schema ER diagram.
- PostgreSQL architecture — schema layout, roles, session settings, bitemporal design, extensions, and key utility functions.
- Time and timestamps — bitemporality,
TIMESTAMPTZ,db_timestamp,time_point, UTC standard, and the conversion layer. - Temporal composite entity versioning: target state — child writes bumping a parent's version, as-of composition of parent + children, and the SQL/codegen/Qt enforcement plan.
Tooling
Developer tools, scripts, and automation that support the build, test, and documentation workflows. These are not user-facing features — they are the instruments contributors reach for to get work done.
- Developer scripts — inventory of the standalone scripts in
scripts/, grouped by purpose (metrics/reporting, validation, documentation generation, utilities), with a description of each script and notes on companion Python/shell pairs. - ores.compass — the Python repository compass: temporal orientation, semantic doc search, and agile scaffolding over the org-roam graph. Primary quality-of-life aid for both human contributors and LLM agents.
- ores.codegen — Python + Mustache code generator producing SQL, C++, and v2 org documents from JSON models.
- ores.lisp — Emacs Lisp developer tooling: dashboard, database browser, shell integration, and org-roam export pipeline.
- ores.sql — PostgreSQL schema, migration scripts, role provisioning, and
database lifecycle management. See the
* Scriptssection in the component overview for the full script inventory.
UI
How ORE Studio's surfaces look and feel.
- UI design principles — the Jony Ive-level rulebook: design direction, typography, colour, spacing, depth, motion.
- Icon guidelines — the visual-language catalogue (Fluent UI System Icons) grouped by semantic category.
Security
Authentication, authorisation, and tenancy.
- Identity and Access Management — how IAM is realised in ores.iam.core: tenants, accounts, roles, permissions.
- Role-Based Access Control — the RBAC model that backs IAM: roles compose permissions, the assignment graph.
Documentation tooling
The tools ORE Studio uses to author, publish, and navigate its documentation.
- Emacs — editor overview, our developer setup, and the CMake build
targets (
deploy_site,deploy_manual,deploy_skills,deploy_settings) that Emacs batch scripts drive. - org-roam — how the knowledge graph is built, how id-links resolve across the static site, and the non-obvious hacks that make it work in CI.
- Zettelkasten — the atomic-note method that motivates the graph structure
and id-link discipline across every
.orgfile.
External reference
Concepts and systems we don't own — captured here so other docs can link to them without restating. See the external knowledge index for the full list, or jump direct:
- Open Source Risk Engine (ORE) — the upstream risk-analytics library ORE Studio wraps.
- QuantLib — the open-source quantitative-finance library ORE itself builds on.
- Financial Products Markup Language (FpML) — industry XML standard for representing financial products.
- Coding schemes — FpML mechanism for restricting fields to a known set of values.
- Standing settlement instructions — SSIs and how they flow through the trading lifecycle.
- PostgreSQL Row-Level Security — what RLS is at the database level, before we describe how we use it.
- Shared library symbol visibility — visibility annotations and hidden-by-default policy at the compiler / linker level.