Skip to main content

YU14-listed-equity-options architecture

Listed equity options trade on the inherited crossing limit-order book as ordinary securities: an option contract is its unpadded OCC symbol with a two-sided book, so registration, quoting, crossing, partial fills, and cancels reuse every YU13 path unchanged. Symbol registration derives the contract multiplier (100 for OCC option symbols, 1 otherwise) deterministically from the committed ticker and installs it in the risk state; every notional the risk gate computes multiplies by it, and the format-3 snapshot carries it per security with fail-closed restore. Underlying, strike, expiry, call/put, counterparty, and currency stay out of the consensus log: they are reference data, derived from the identifier or joined by accountId at extract time.

  • Inherits architectural baseline from: YU13-limit-order-book
  • Generated from: system/architecture.model.json
  • Canonical flows: architecture.md

Architecture Diagram​

Node Catalog​

NodeKindLabelNotes
counterpartyexternalFIX + REST counterpartiesTwo-sided order flow in equities and listed options; option orders name the contract by its unpadded OCC symbol.
gatewayserviceFIX/REST gateway tierInherited unchanged: terminates sessions, screens admission, forwards through the cluster client. /seed registers option chains exactly as equity tickers; the SBE ticker field is 32 bytes so OCC symbols fit.
cluster_clientserviceAeron Cluster clientForwards SBE ingress (including OCC-symbol registrations) to the current leader and receives committed egress acks.
consensusserviceAeron Cluster consensus (leader + followers)Raft majority replicates one committed input log; the committed SymbolRegister ticker is the sole in-log source of instrument identity.
registrationserviceSymbol registration + OccSymbolCold path: assigns the deterministic securityId and derives the contract multiplier as a pure function of the committed ticker; OCC option symbol yields 100, anything else 1; identically on every member and replay.
risk_gateserviceBlpRiskState (multiplier-aware)Dense per-security contractMultiplier beside the inherited control rows. Reserve, market-trade, executed-exposure, and concentration math all compute quantity x price x multiplier; overflow rejects ORDER_NOTIONAL.
matching_engineserviceMatchingEngine + LimitBook (unchanged)The YU13 crossing book verbatim: an option contract is a securityId with a two-sided book; price-time priority, partial fills, market-cancel, and cancel semantics are instrument-agnostic.
snapshot_storestoreCluster snapshots + per-pod log PVCFormat 3: the security record carries the contract multiplier; restore fails closed on multiplier < 1 or a non-3 format. All other records byte-identical to YU13.
egressqueueCommitted output egressInherited unchanged: both-side fills, trades, positions; option fills are ordinary security outputs keyed by OCC ticker.
reference_datastoreReference data (instruments + counterparties)instruments.csv: type/underlying/strike/expiry/callPut/multiplier/currency, every derivable column a pure function of the OCC ticker. counterparties.csv: accountId to counterpartyId/nettingSetId/currency.
risk_extractexternalRisk-engine positions extractJoins positions to counterparty by accountId and to instrument attributes by ticker; notional is derived as quantity x last price x multiplier; agreeing with in-cluster accounting by construction.
natsqueueNATS + CQRS read modelInherited distribution: /trades bridge, trade-processor, MariaDB, position/blotter feeds; option rows flow as ordinary securities.