Market-Data Schema Version Drift Book-State Corruption Slippage Playbook

2026-04-06 · finance

Market-Data Schema Version Drift Book-State Corruption Slippage Playbook

Date: 2026-04-06
Category: research (trading infrastructure / market data / execution)

Why this matters

A nasty execution tax lives between "feed is up" and "book is correct."

When an exchange extends a binary market-data protocol, most desks focus on the obvious failure mode: parser crashes. But the more expensive mode is usually partial compatibility:

That turns into slippage through stale queue estimates, wrong microprice, bad venue ranking, late cancel/replace decisions, and false confidence in liquidity that was never actually there.


Failure mode in one line

The feed did not go down; your decoder silently fell one schema version behind reality, so execution decisions were made from a plausible-looking but wrong market state.


Why this failure is common in modern feeds

Across exchange protocols, backward compatibility often means "new data gets appended", not "old clients are safe to ignore upgrades forever."

Three practical patterns matter:

  1. SBE-style versioning

    • Public SBE guidance says templates stay backward compatible only when new optional fields are appended at the end of a block or repeating group.
    • Decoders are expected to honor actingVersion and blockLength and return null/default behavior for extension fields absent in older payloads.
  2. Venue-specific appended extensions

    • CME MDP 3.0 explicitly documents appended vs non-appended template extension.
    • In appended extension cases, Template ID may stay the same while schema version changes, so a decoder that keys only on template ID can keep running while still misunderstanding payload structure.
  3. Direct-feed message growth conventions

    • Public PITCH-style specs commonly state that messages are only grown by appending data to the end.
    • That protects well-written decoders, but badly written ones can still mis-handle offsets, enums, optional tails, or repeating-group traversal.

The operational trap is obvious in hindsight: "compatible" at the protocol layer does not mean "economically harmless" at the strategy layer.


What actually breaks in production

1) Root-block extension ignored, downstream feature vector goes stale

The parser keeps decoding the old prefix correctly but never consumes newly appended fields.

Result:

2) Repeating-group traversal drifts

If decoder position management is brittle, an appended field in a repeating group can poison traversal of later entries.

Result:

3) New enum values leak through old assumptions

SBE guidance explicitly allows new enum values to propagate to older decoders under version-aware handling. If the application layer treats "unknown" as impossible, it often maps to:

Result:

4) Parser survives but validator/model contract breaks

The transport decoder may be correct while downstream code expects a fixed field set or invariant ordering.

Result:

5) A/B feed or primary/recovery paths disagree on schema rollout

One path is upgraded first, the other later.

Result:


Observable signatures

1) Market-data "healthy" but execution quality worsens

2) Book-shape anomalies without corresponding transport alarms

3) Feature null/default spikes

4) Primary vs shadow decoder divergence

5) Failover-dependent slippage


Slippage decomposition

Define:

Then a useful operational approximation is:

IS_drift(t) ≈ P_partial(t) * (C_queue(E_book) + C_route(E_feat)) + drift_cost(τ_detect) + C_catchup(t)

Interpretation:

This is why schema drift often shows up as a slippage hump rather than a clean outage.


Highest-risk change types

Appended body extension with unchanged template identifier

This is especially dangerous because everything appears stable unless you explicitly monitor schema version.

Repeating-group extension

Most fragile path for hand-rolled decoders and downstream reconstruction.

New enum / state values

Technically compatible, economically dangerous.

New message types that should affect local state but are ignored

The parser may skip them successfully while the book logic silently loses information.

Semantic re-interpretation without binary breakage

Field width may remain stable while meaning, valid range, or routing relevance changes.


Where the slippage comes from

1) Queue-position illusion

Local book understates replenishment ahead of you or misses depletion behind you.

You think:

Reality:

2) Microprice / imbalance corruption

A small decode miss in depth or side tags can distort imbalance-derived features.

Result:

3) Venue ranking drift

If one venue feed is semantically stale, smart routing overvalues or undervalues that venue.

Result:

4) Regime misclassification

Unknown enums or unparsed status fields can hide auctions, halts, collars, or special liquidity states.

Result:


Practical feature set for detection

Protocol / parser layer

Book-integrity layer

Model / routing layer


Control policy: treat schema as live risk, not static config

1) Version every decoded decision

Every order decision should be reproducible with:

If you cannot attach these, you cannot prove whether slippage came from the market or your parser.

2) Run dual decoders during cutovers

For any venue schema change:

3) Separate transport health from semantic health

Green network metrics are necessary but insufficient. A feed should be marked degraded when:

4) Fail closed on critical unknown states

If new enums or message types affect market phase, order eligibility, or quote semantics:

5) Maintain schema cutover calendar as an execution input

Exchange protocol releases belong in the same operational calendar as index rebalances, halts, and corporate actions.


Regime state machine

NORMAL

COMPATIBLE_BUT_UNVERIFIED

Trigger:

Actions:

SEMANTIC_DEGRADED

Trigger:

Actions:

VENUE_QUARANTINED

Trigger:

Actions:

REJOIN

Trigger:

Actions:


Incident runbook

  1. Check venue release notes / protocol notices first

    • If a schema launch happened today, assume semantic drift before inventing alpha explanations.
  2. Compare primary vs shadow decoder on affected symbols

    • book checksum,
    • top-of-book parity,
    • per-level depth,
    • feature vector diffs.
  3. Inspect unknowns

    • enum growth,
    • unhandled message types,
    • tail bytes skipped,
    • unexpected block lengths.
  4. Bucket slippage by message family / venue phase

    • continuous,
    • auction,
    • reopen,
    • special condition states.
  5. Quarantine before retuning

    • do not "fix" by making the strategy more aggressive against a possibly corrupted book.
  6. Replay raw packets with both decoders

    • produce exact earliest divergence timestamp,
    • tie it to first execution degradation window.
  7. Only after semantic integrity is restored, reopen router weights

    • otherwise you risk turning a parser problem into a market-impact problem.

Minimal implementation checklist


Desk-level takeaway

Market-data schema drift is one of those failures that fools smart teams because the system is not obviously broken.

The feed is up. Sequence numbers move. Parsers do not crash. But the strategy is now trading against a counterfeit local reality.

That is exactly the kind of bug that leaks bps for hours before anyone pages the right team.

If you measure semantic integrity as seriously as packet integrity, schema launches stop being mysterious slippage days and become routine operational events.


Sources / further reading