One service owns market data between the vendors and the parties
Table of Contents
1. Summary
ores.marketdata is the market data service. It sits between the suppliers of
market data and the parties that consume it. A supplier has sessions, a session
is one configured adapter, and a feed binds a publisher to a session and a
service. The service subscribes to the adapters, maps their ids to internal
items, checks quality, stores the quote series, delivers ticks to the parties,
and records what each party used. No party reads an adapter. No adapter knows a
party.
This is how Murex and Calypso work. A market data server owns the vendor connections. The rest of the system reads the server and cannot tell which vendor, which environment or which simulator produced a value.
2. Detail
2.1. What the service owns
- The catalogue: publishers, suppliers, sessions, feeds, vendor instruments and mappings. See Every source belongs to a provider in the catalogue.
- The ingest path from tick to stored observation. See The ingest loop and the one pipeline.
- Routing: which feed serves which party and publisher. See A party routes to exactly one source for each provider.
- Quote series, composites and their rules. See A quote series is keyed by item, provider and party and A composite attributes its use to the providers of its inputs.
- Entitlement and metering. See Usage is recorded as events and priced later.
2.2. What sits outside the service
- Adapters. Each is a separate NATS service. See An adapter and the service meet at four messages.
- The simulator, which is one adapter plus its authoring tools. See The simulator is one adapter plus the tools that author its generators.
- Consumers: pricing, risk, reports and screens. They read the party stream or the store.
2.3. The components
Figure 1: The market data service with its adapters and consumers.
Source: market_data_components.puml. Regenerate with
plantuml -tpng doc/knowledge/architecture/market_data_components.puml.
2.4. The rule that keeps the design honest
The service treats every source in the same way. A source has a kind, and the
kind is data that a person can read. No code path in the service, in a
consumer or in an adapter contract changes because the kind is
simulated. See No code path may behave differently because a source is simulated.
3. See also
- Market Data Architecture — the structure note that orders this cluster.
- A live and a simulated source differ only inside the adapter — completes: how a live adapter and the simulator differ.
- The ingest loop and the one pipeline — completes: what the service does with a tick.