A Late PriceIs Not Slow.It Is Wrong.
Market data is not a stream of numbers. It is a record of who observed what, about which instrument, at which moment and in what order — and a value that cannot answer those questions is unusable, however accurate it is.
Next Step / Technical Discovery
- Attributable to where it was observed
- Event time and receive time both kept
- Missing messages become visible states
- One qualified view, to every consumer
Where this system fits
A market-data system sits between the sources that publish observations and everything that acts on them, deciding what may be published, how current it is, and who may receive it.
- The shape each source arrives in, and what its silence means.
- The stored history a published value joins, and how it is asked for.
- The latency and availability budgets the path is measured against.
- Data licences, redistribution rights and vendor terms belong to the client.
- A value has a window. Outside it, accuracy is not the question.
- Every published value names the source that produced it.
Why a correct number is not enough
- 01
Two sources, one symbol, two instruments
A ticker means one thing on one venue and another elsewhere. Both feeds are right; whatever merged them without resolving identity is not.
- 02
Connected, and no longer current
The socket is open and the last message was four minutes ago. Nothing is broken enough to alert on, and everything downstream believes it.
- 03
The gap nobody noticed
One message never arrived. Everything built afterwards rests on an incomplete stream, and it surfaces when somebody compares two records.
- 04
Two consumers, two answers
Charting shows one value and the risk screen another, both reading one platform. Nothing records which qualified view either actually received.
Actors and boundaries
Market-data source
Publishes observations on its own protocol, schedule and conventions.
Nothing inward. Their terms govern what may be received and passed on.
Feed handler
Speaks one source's protocol and turns it into platform events.
One per source. Connection state, sequence tracking and the receive timestamp live here.
Instrument master
States which instrument a symbol denotes, on which venue, from when.
Owned here. A symbol resolves to one instrument, or the event is not published.
Market-data platform
Normalises, qualifies, distributes, and retains what each consumer was sent.
All of it: source attribution, instrument identity, timestamp policy, sequence state, the normalised event, its qualification and the distribution record.
Trading or risk consumer
Acts on current market state, and needs telling when it is not.
Outward. One qualified view, in the shape each asks for. What they do with it is theirs.
Entitlement owner
Holds the vendor agreements and decides who may see which data.
Outward. The platform enforces an entitlement it is given. It does not grant one.
The path to a published value
Six steps between arriving and being fit to act on. The first pass only: gaps, replays and corrections are behaviour, further down.
- 01
Two clocks, not one
The source's event time is kept and the platform stamps its own beside it. The distance between them is worth measuring.
- 02
Which instrument, on which venue
A symbol resolves against the instrument master before anything else touches the event. Unresolved means unpublished, not best guess.
- 03
A gap is a state, not a silence
Position in that source's stream is tracked, so a missing message is something the system holds, not something nobody sees.
- 04
One shape across sources
Precision, convention and field meaning are made consistent, and the original form is kept so a decision can be re-derived.
- 05
Judged before anybody sees it
Current, stale, or not fit to publish. Most systems leave this to the consumer, which is how one screen disagrees with another.
- 06
A commitment, not an ending
One qualified view leaves for every consumer and what each received is recorded. A correction appends, naming what it supersedes.
Buy the feed, buy the normalisation, or own it
Three ways to get market data into a business. How many sources, and how many things read them, decides.
- Shortest. One library, straight into the consumer.
- Short. One integration, and the normalising is already done.
- Longest. Identity and qualification exist before anything reads them.
- Each vendor's symbology, and their disagreements, become yours.
- Theirs, applied consistently. You inherit their mapping decisions.
- Yours, so two sources describing one instrument say so.
- Re-implemented wherever data happens to be used.
- Largely theirs, at whatever granularity their product offers.
- Enforced where data leaves; a permission change lands once.
- Whatever each vendor offers, with no shared record.
- Their history, in their shape, while they keep it.
- One published history, so a correction reaches everything that read it.
- One source, one or two consumers, nothing to prove afterwards.
- Breadth matters more than owning identity, and their coverage fits.
- Several sources, or consumers that must not disagree with each other.
When it fails
Five conditions a feed produces on ordinary days. None is answered by publishing anyway.
- A message in the sequence never arrived
The next message's position does not follow the last one the handler recorded.
Publication for that instrument marks itself incomplete and recovery starts from a snapshot. The last qualified value stays readable.
- The connection is healthy and the values have stopped
Time since the last event passes the window set for that source and instrument.
It is republished as stale with its age attached, not withdrawn. What stale means is the consumer's decision, not the platform's.
- Two sources give different values for one instrument
Both resolve to the same instrument and differ beyond the tolerance set for it.
A precedence rule decides what publishes and both values are kept. Where none fits, an operator chooses and the choice is recorded.
- A symbol starts denoting a different instrument
The instrument master gains an effective date, and events either side of it resolve differently.
Each event resolves against the mapping in force when it was observed, never today's. Republished history says which mapping produced it.
- A consumer cannot keep up with what is published
The position a consumer has acknowledged falls further behind the published one.
It receives current state rather than every step it missed, and is told so. Needing every event is a different arrangement, agreed beforehand.
What you own afterwards
- Source, instrument and both timestamps travel with the value, so a disagreement between two screens has an answer.
- Stale and incomplete are things the system publishes about itself, not conditions inferred from a chart that stopped moving.
- One qualified view leaves the platform and what each consumer received is retained, so a claim that a screen showed otherwise is checkable.
- Who may receive which data is a property of distribution, not a check repeated in every application that displays a value.
Related pages
Trading Platforms
The system that holds client trading state, order lifecycle and execution records together, and keeps position and exposure current while the market moves.
Data Engineering
The layer between operational records and everyone who depends on them — definitions with owners, lineage that reconstructs, and corrections that stay explainable.
Bring two feeds that disagree about one instrument, a gap nobody noticed until the close, or a value that was right when sent and useless when it landed.