Market Data Hygiene Part 2: Cross-Validation and Contextual Analysis
8 minutes read (2129 words)
May 10th, 2026

Statistical outlier detection catches the obvious errors—bad prints, extreme returns, stale data. But many data quality problems look perfectly normal in isolation. They only reveal themselves when you check context: related instruments, time of day, venue characteristics, or alternative data sources.
Here's a real example: we once saw a backtest generate phantom alpha from a data vendor's SPY feed that was 200ms behind the ES futures feed. The strategy "predicted" SPY moves that had already happened in futures. Every individual data point looked fine. The cross-asset check caught it in minutes.
This is Part 2 of our three-part series on market data hygiene:
- Part 1: Statistical Methods for Detecting Bad Data: Point anomaly detection and systematic error identification
- Part 2 (this post): Cross-asset validation, time-based patterns, venue considerations, and multi-source triangulation
- Part 3: Reference Data and Historical Integrity: Corporate actions, point-in-time correctness, and building a validation framework
Cross-Asset Validation
Single-asset analysis misses errors that cross-asset comparison catches immediately.
ETF vs Constituents
If SPY moves 2% but its largest constituents (AAPL, MSFT, AMZN, GOOGL, NVDA) are flat, something is wrong. Those five stocks are ~25% of the index. Either:
- The SPY data is erroneous
- The constituent data is stale
- There's a timing/synchronization issue
The concept is simple: compute implied NAV from constituents and compare to traded ETF prices. Deviations beyond creation/redemption arbitrage bounds suggest data problems. But the implementation has real operational complexity:
Weights must be point-in-time. ETFs rebalance periodically. Using current weights to compute historical implied NAV produces spurious divergences. You need the constituent weights as of each historical date—data that isn't always easy to obtain or maintain.
Timing mismatches matter. ETFs trade continuously, but official NAV is computed once daily at market close. Intraday ETF prices can deviate from implied NAV due to supply/demand dynamics, not data errors. Compare like to like: either both intraday (using iNAV if available) or both end-of-day.
Arbitrage bounds are wider than you might expect. Creation/redemption costs, including transaction costs across dozens or hundreds of constituents, typically run 0.5-1% for broad-market ETFs. A 50 bps ETF/NAV deviation on SPY might be within normal bounds, not a data error. Meanwhile, an emerging markets ETF like VWO can legitimately deviate 1-2% due to timing differences between US and local market closes. Tighter bounds apply to highly liquid domestic ETFs; wider bounds for international or less liquid products.
Corporate actions create legitimate divergence. If a constituent splits mid-day but the ETF's basket hasn't been updated yet, implied NAV will diverge from ETF price even with perfect data. You need corporate action awareness to avoid false positives.
The heuristic remains valuable, but it's a consistency check that requires context, not a simple threshold test.
ADRs vs Local Shares
American Depositary Receipts (ADRs) should track their underlying local shares (adjusted for FX and ratio). Large deviations suggest:
- Stale data on one side
- Missing corporate action adjustment
- FX rate data errors
- Data error
The FX adjustment is critical and often overlooked. An ADR priced in USD must be compared to the local share converted at the concurrent exchange rate. Using stale FX rates introduces spurious deviations.
Futures vs Spot
Futures prices relate to spot via cost-of-carry. Deviations from fair value beyond typical basis variation may indicate data issues on one leg.
For equity index futures, fair value is approximately: F = S × e^((r-d)×t), where r is the risk-free rate, d is the dividend yield, and t is time to expiration. Deviations of more than a few basis points (outside of ex-dividend periods) warrant investigation.
Cross-Listed Securities
Securities listed on multiple exchanges should trade at similar prices (within arbitrage bounds). Persistent large deviations indicate data quality issues.
Cross-asset validation is one of the most powerful—and most underutilized—data quality techniques. It's also one of the most maintenance-intensive. It requires maintaining relationship mappings (ETF to constituents, ADR to local, etc.) that change over time as ETFs rebalance, ADR ratios adjust, and corporate actions restructure relationships. These mappings go stale if not maintained. Our platform helps automate the consistency checks, but someone still needs to maintain the reference data that powers them.
Time-Based Patterns
Market data has strong time-of-day and calendar effects. Knowing what's normal helps identify what's not.
Trading Session Awareness
- Pre-market and after-hours: Wider spreads, lower volume, more erratic prices are normal. A 50 bps spread on AAPL at 7 AM isn't an error—it's just pre-market. Don't flag legitimate thin-market behavior as anomalies.
- Market open: The first minutes have elevated volatility due to price discovery. A 1% move in the first 30 seconds that would be anomalous at 2 PM is completely normal at 9:31 AM.
- Market close: The closing auction can produce prints 20-30 bps away from continuous trading prices, especially on rebalance days. These are legitimate, not errors.
- Lunch hour: Lower liquidity in some markets. A stock that normally updates every 100ms going quiet for 2-3 seconds at 12:30 PM isn't necessarily stale—it's just lunch.
Your anomaly detection thresholds should vary by time of day, or at least by session (pre-market, regular hours, after-hours).
Exchange Calendar Considerations
- Holidays: Exchanges close; missing data is expected. But what about partial holidays? Early closes?
- Index rebalances: Elevated volume and price impact around rebalance dates. Don't flag as anomalous.
- Options expiration: Unusual activity in underlyings, particularly near strikes with high open interest.
- Futures roll dates: Liquidity shifts between contracts. What looks like a gap may be a contract switch.
Circuit Breakers and Halts
Exchanges halt trading under various conditions. A gap in your data might be:
- A data feed problem (bad)
- A legitimate trading halt (expected—but you need metadata to know)
You need halt/resume event data to distinguish these cases.
Our platform integrates exchange calendar data, halt/resume events, and session metadata to help contextualize gaps. But calendar data itself requires maintenance—early closes, special sessions, and exchange rule changes happen throughout the year. And even with good metadata, edge cases require judgment: is this gap a halt, a feed issue, or a legitimate quiet period in a thinly traded instrument?
Venue-Specific Considerations
The US equity market alone comprises 16+ exchanges and 30+ dark pools. Each venue has its own characteristics, and treating them as interchangeable causes data quality problems.
Tick Size and Price Increment Rules
Different venues—and different instruments—have different tick sizes:
- Most US equities trade in penny increments, but sub-penny trading is allowed in some contexts
- Options have different tick sizes at different strike prices
- Futures tick sizes vary by contract
- International markets have entirely different conventions
A price that's valid on one venue may be invalid on another. A trade at $10.123 is impossible on a penny-tick exchange but legitimate in a sub-penny dark pool. Your validation logic must be venue-aware.
Odd-Lot Handling
Different venues report odd-lots (trades smaller than a round lot, typically 100 shares) differently:
- Some exchanges report odd-lots to the tape; others don't
- Some data vendors include odd-lots in VWAP calculations; others exclude them
- Odd-lot trades may not update the NBBO, creating apparent trades outside the quoted spread
If you're comparing volume across sources, odd-lot handling differences can explain discrepancies that aren't really errors.
Auction Mechanics
Opening and closing auctions have different rules than continuous trading:
- Auction prices can gap significantly from prior continuous trading
- Auction trades may print at prices that would be invalid during continuous trading
- Different exchanges have different auction mechanisms and timing
A large price deviation at 9:30:00 or 16:00:00 is often a legitimate auction print, not a bad data point.
Latency and Dissemination
Different venues have different latency characteristics:
- Co-located direct feeds are fastest
- SIP (Securities Information Processor) consolidated tape is slower by design
- Some venues batch quotes for dissemination; others send immediately
If you're comparing data across venues, timing differences can create apparent discrepancies. A quote that looks stale may simply be from a slower feed.
Message Ordering
Under load, some feeds deliver messages out of order. A trade that appears to occur before its triggering quote may indicate:
- A feed-specific ordering issue
- Timestamp precision limitations
- Actual latency differences between trade and quote reporting
Understanding your venues' specific behaviors helps distinguish data errors from venue characteristics.
Multi-Source Triangulation
When you have data from multiple vendors, you can cross-check them. But this introduces its own challenges.
Timestamp Alignment
Different sources have different timestamping conventions:
- Exchange timestamp vs receipt timestamp
- Microsecond vs millisecond precision
- Timezone handling
You can't compare sources if you can't align them temporally. Ensure you're comparing like to like—either both using exchange timestamps or both using receipt timestamps, at consistent precision.
Consolidation Differences
Different vendors consolidate multi-venue data differently:
- Which venues are included?
- How are trades matched to quotes?
- How are auctions handled?
- Are odd-lots included?
What looks like a discrepancy may be a difference in methodology. Document your vendors' consolidation rules and account for known differences.
When Sources Disagree
If Bloomberg and Refinitiv show different prices, who's right? The honest answer: sometimes you genuinely can't tell. We've spent hours debugging discrepancies only to conclude "both are defensible interpretations of ambiguous exchange data." Here are heuristics, along with their limitations:
Compare to exchange official data. This sounds authoritative, but exchange feeds can have their own delays and errors. "Official" doesn't mean "always correct"—it means "what the exchange published." If the exchange published an error, the official data is officially wrong.
Look at which source has more supporting context. More trades or tighter spreads suggest more robust data—but not always. A source might show more trades because it includes a small venue with poor execution quality and frequent bad prints. Volume alone doesn't indicate accuracy.
Check which aligns better with related instruments. If one source's SPY price is consistent with SPY futures and QQQ, that's supporting evidence—but this can mask systematic errors. If a vendor's entire equity feed has a timing offset, all their instruments will be internally consistent but wrong relative to reality.
Consider source-specific known issues. Every vendor has quirks. Some handle auctions poorly. Some have delays on specific exchanges. Some mishandle corporate actions. Knowing your vendors' failure modes helps—but requires experience and documentation that's rarely comprehensive.
The uncomfortable truth: Sometimes neither source is definitively right. When you can't determine ground truth, the correct response is to flag the period as uncertain rather than arbitrarily pick a winner. Downstream systems should know when they're operating on disputed data.
Building Context-Aware Validation
Effective data hygiene combines statistical methods from Part 1 with contextual awareness:
Layer cross-asset checks on top of single-asset checks. An instrument that passes outlier detection might still fail cross-asset validation.
Make your thresholds time-aware. What's anomalous at 2 PM is normal at 9:30 AM. Build session awareness into your detection logic.
Know your venues. Different tick sizes, auction mechanics, and dissemination latencies explain many apparent discrepancies.
Triangulate when possible, but know the limits. Multiple sources help, but they can all be wrong in correlated ways.
Our platform integrates these contextual checks into a unified framework—but the framework requires ongoing attention. Thresholds need tuning as market behavior changes. Reference data needs updating as relationships evolve. And flagged anomalies need human review to separate real errors from legitimate unusual events.
This is the real value of systematization: not eliminating the work, but changing its nature. Without a platform, your team spends time on detection—manually checking feeds, comparing sources, investigating why a backtest looks wrong. With systematic checks in place, they spend time on refinement—improving thresholds, expanding coverage, building institutional knowledge about your specific data quirks. The former is reactive and repetitive; the latter compounds over time.
Summary
This post covered contextual methods for validating market data:
- Cross-asset validation: ETF/constituent comparison, ADR/local, futures/spot—with operational complexities
- Time-based patterns: Session awareness, calendar effects, halts and circuit breakers
- Venue considerations: Tick sizes, odd-lots, auctions, latency, message ordering
- Multi-source triangulation: Alignment challenges, consolidation differences, disagreement handling
In Part 3, we'll cover reference data dependencies (corporate actions, index membership) and point-in-time correctness—the structural issues that cause data to be internally consistent but historically wrong.
If you need help building contextual data quality checks into your infrastructure, contact us.