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 SecurityIDSource symbology (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

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-.core consumer.
  • 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 FOMC 1F..=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, QueueChartWindow chart 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.synthetic service and ores.marketdata.client library designs, IFxSpotFeed interface, 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 / IFxSpotFeed separation, 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::variant index fragility pitfall, and the wrapper struct idiom. Canonical example from ores.trading instruments; applied example from ores.marketdata feed 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 architectureores.qt.api contract, 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.dq entities, 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.org that 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 * Scripts section 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.

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 .org file.

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:

Emacs 29.3 (Org mode 9.6.15)