Skip to content
All insights The financial data layer

Market data quality is a model problem

Gaps, stale ticks and vendor restatements don't crash an AI system. They make it confidently wrong. Here is how we catch quality issues before the model does.

4 min read #data#quality#validation
Financial services professionals working through an AI initiative

Teams treat market data quality as an infrastructure concern, something the plumbing handles before the interesting work starts. Then a model trained on that data starts producing numbers nobody can defend, and the post-mortem traces back to a stale tick or a feed that disagreed with another feed. The quality issue was never separate from the model. It was the model’s input, and a model only knows what its input told it.

This matters more for AI/ML than for a dashboard a human reads. A person glancing at a price chart will notice a spike that goes to zero and back. A gradient-boosted model will fit it. Silent quality problems don’t announce themselves as errors; they get learned, weighted, and turned into confident output. That is the failure mode worth most of your attention.

The shapes that bad market data takes

Market and reference data arrives broken in a small number of recognisable ways, and it helps to name them rather than treat each incident as a surprise:

  • Gaps. A symbol stops printing for an interval. The pipeline doesn’t error, it just has fewer rows, and a feature that averages over a window quietly averages over the wrong window.
  • Stale ticks. The same price repeats because the feed went quiet, not because the market did. Volatility features collapse toward zero exactly when the market is least calm.
  • Outliers. A fat-fingered print, a decimal shift, a test message that leaked into the production feed. One value of 1,400 where 14 was meant moves a mean and ruins a normalisation.
  • Timezone and calendar mismatches. One feed timestamps in exchange-local time, another in UTC. A holiday calendar is off by one market. Bars line up by index but not by reality, and you have lookahead leakage you can’t see.
  • Vendor restatements. A provider corrects history after the fact. The value you trained on last month is not the value the feed returns today, so your training set and your live data describe different pasts.
  • Conflicting values across feeds. Two vendors quote the same instrument and disagree on the close. Whichever one your join happened to pick becomes ground truth by accident.

Vendor restatements deserve a second look because they are the quietest of the lot. A correction with no vintage attached doesn’t break anything visible. It just means a backtest run today no longer matches the one you ran when you signed off the model, and you have no record of why. If you don’t capture the value as it stood on each date, point-in-time correctness is gone, and with it any honest claim about what the model would have known.

Validation, reconciliation, alerting

The work splits into three jobs that reinforce each other.

Data validation is a set of rules that run on every batch, before anything downstream sees it. Some are cheap and absolute: prices are positive, timestamps fall inside trading hours for the right calendar, no duplicate keys. Others are statistical. Outlier detection here is less about a clever algorithm and more about choosing a baseline that fits the instrument. A liquid large-cap and a thinly traded bond need different bands, and a return that is six standard deviations from a rolling window is worth holding for review even when it turns out to be real. The rule should quarantine, not silently drop, because a discarded outlier you can’t inspect is its own kind of data loss.

Reconciliation is comparing sources that should agree and recording where they don’t. When two feeds disagree on a close, you want a logged decision about which one wins and why, not an arbitrary join order. The same applies across time: today’s restated history reconciled against the vintage you stored means a restatement becomes an event you can see, with an audit trail, rather than a number that shifted under you.

Alerting is what turns all of this from a one-time cleanup into something that holds. A gap that appears mid-week, a feed that goes stale for an hour, a reconciliation break that crosses a threshold, each should page someone or open a ticket. Validation you don’t watch decays. The point is to learn about a quality problem from your own checks, before it has been learned by a model and shown to someone who acted on it.

None of this is glamorous, and most of it never reaches a slide. It is also the difference between a model you can put in front of a risk committee and one you quietly hope nobody questions. If the AI is producing confident answers, the first thing worth trusting is the data underneath, and the only way to trust it is to have checked.

Working on something similar?

Tell us about your data and the workflow around it, and we will give you a straight read.

Book a 30-min intro call