Story: Rework the market data feeds into a market data service with adapters — the remaining work
Table of Contents
This page documents a story in Sprint 30, carried unfinished from Sprint 29 at close. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
1. Goal
ores.marketdata owns the catalogue, the mapping, the ingest path, routing and metering. Adapters, including the simulator, publish vendor-id ticks over NATS and answer a demand set. Every simulated feed belongs to the system tenant and the system party, a party takes a provider by subscription, and no part of the system behaves differently because a source is simulated.
2. Status
| Field | Value |
|---|---|
| State | BACKLOG |
| Parent sprint | Sprint 30 |
| Now | Not yet started. Split from Rework the market data feeds into a market data service with adapters — the remaining work, which closed in sprint 29 with its done tasks. |
| Waiting on | Nothing. |
| Next | Triage into a sprint. |
| Last touched | 2026-11-08 |
3. Acceptance
- The catalogue holds providers, sources with a kind, vendor instruments and mappings, installed by a system bundle.
- An adapter announces itself, answers a demand set, publishes vendor-id ticks and sends a heartbeat, and the service maps, checks, stores and delivers them.
- A party holds a subscription with rights and one route per provider, and a source switch is audited and effective-dated.
- The simulator is an adapter under ores.marketdata.synthetic, its generators belong to the system tenant and system party, and no subject, table or constraint carries a mark of the simulator.
- Usage events, rate cards, rating and allocation give each party a bill, and a simulated source gives a shadow bill.
- The screens and the shell follow the architecture pages, and a scenario shows a development party on a simulated source and a prelive party on a live source side by side.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Add a replay adapter | BACKLOG | Add an adapter that replays recorded vendor ticks as a source of kind replay. | ||
| Build the curve blueprint screens | DONE | 2026-10-28 | 2026-11-08 | Implement the signed-off prototype with the standard record infrastructure. |
| Build the market data service screens | BACKLOG | Build the catalogue, subscriptions and routes, usage and cost, and source status screens, and retire the bindings screen. | ||
| Check a development party and a prelive party side by side | BACKLOG | Write and run a scenario with one party routed to the simulated source and one to the live-kind source, both running. | ||
| Draw the prototypes and wireframes for the new journeys | BACKLOG | Draw the wireframes and prototypes for the subscriptions, sources and offer-a-collection journeys. | ||
| Refresh the simulator adapters when the catalogue changes | BACKLOG | The simulator builds its adapters once, at start. A new simulated source needs a restart. | ||
| Remove the marks of the simulator from names, subjects and constraints | BACKLOG | Remove the synthetic prefix, subjects, constraints and screen marks so that nothing in the system depends on the simulator. | ||
| Rename the simulator component to ores.marketdata.synthetic | BACKLOG | Rename the synthetic component to ores.marketdata.synthetic, with the codegen identity, the paths and the namespaces. | ||
| Repair the baseline drift the gate reports | DONE | 2026-11-08 | Commodity, workflow and reporting merges left generated artefacts, seeded permissions and pgTAP expectations stale. | |
| Rework the shell commands for the market data service | BACKLOG | Add shell commands for the catalogue, subscriptions, routes, sources and usage, and move the simulator commands. | ||
| Split trade generation into ores.trading.synthetic | BACKLOG | Move the trade generators out of ores.synthetic into ores.trading.synthetic. | ||
| Store one tick for each source | BACKLOG | Write each tick once under the system tenant, point the per-party series at it, and remove the ingest's routes read. | ||
| Write the vendor tickers of the curve pillars | BACKLOG | Give each rate curve pillar of Bloomberg and LSEG a vendor id, so the native simulator can serve curves. |
5. Decisions
- Split from Rework the market data feeds into a market data service with adapters — the remaining work on 2026-11-08 at sprint 29 close. The acceptance above is copied from that story; its done tasks are recorded there.
- Reviewed on 2026-11-08 at sprint 30 start. Eight sensitivity ladder tasks moved to Build the sensitivity ladders, because they are report work and not the market data service. PR #3769 modelled the tick table and did not deliver Store one tick for each source, so that task stays open.