Conditional-Venue Invitation / Firm-Up Race Slippage Playbook

2026-04-08 · finance

Conditional-Venue Invitation / Firm-Up Race Slippage Playbook

Date: 2026-04-08
Category: research
Scope: Modeling the slippage tax from treating dark / conditional invitations like deterministic fill opportunities instead of latency-sensitive race conditions with duplicated liquidity, venue-specific priority, and hold-time opportunity cost

Why this matters

Conditional liquidity feels wonderfully cheap right up until it starts lying to your scheduler.

On paper, the story is attractive:

The trap is that an invitation is not a fill. It is not even a firm executable resting state in the same sense as a lit passive order. It is a time-sensitive branch:

That creates a distinct slippage regime:

The expensive mistake is usually not:

“we forgot conditional venues can miss.”

It is this:

“we treated an invite like soft completion, rather than as a stochastic option with decay, overlap, and opportunity cost.”

Once that confusion enters the scheduler, everything downstream bends the wrong way:


Failure mode in one line

The strategy receives one or more conditional invitations, overestimates their probability of becoming a timely useful fill, delays competing execution paths, then pays slippage when the firm-up race fails or completes too late.


Market-structure facts that matter operationally

1) Conditional interest is not the same thing as a firm resting order

Public venue descriptions make the boundary explicit:

Operational meaning:

your model needs at least two stages, not one:

  1. invite arrival, and
  2. invite conversion to usable fill.

If those are collapsed into a single event, fill probability will be overstated and delay cost understated.

2) Conditional venues reduce displayed footprint, but create race conditions

BestEx Research’s 2024 conditional-order analysis is the most practical public statistic here:

That means a large share of conditional opportunities are not independent observations. They are clustered manifestations of the same latent liquidity event.

If your venue model credits each invitation equally, it will confuse duplicated liquidity with incremental liquidity.

3) First-arrival logic and short-wait logic can both fail

BestEx’s discussion also highlights the central implementation dilemma:

So the problem is not just venue ranking. It is a joint policy over:

4) Venue rules are heterogeneous, which breaks one-size-fits-all invite handling

Public venue guides and Form ATS-N-era summaries make clear that dark venues differ materially in:

So “invite quality” is not portable across venues. An invite from venue A and an invite from venue B may represent very different realities:

5) Conditional opportunity competes with lit opportunity in real time

A conditional invite does not exist in a vacuum. While your stack is:

three clocks continue to run:

So even a non-fill has cost. That cost is not merely “missed block liquidity.” It is also:

6) Unique liquidity matters more than gross invitation count

A venue that sends many invitations is not necessarily valuable. If most of its invitations arrive in the same cluster as other venues, it may be contributing little unique optionality.

The right question is not:

“Which venue sends more invites?”

It is:

“Which venue adds fill opportunities I would not have gotten anyway, net of hold-time cost?”

7) Minimum fill size changes the economics, not just the average execution size

Conditional venues often support MES / minimum quantity style constraints. That is not a cosmetic parameter. It changes:

An MES that is too low increases noise and potential information leakage. An MES that is too high can turn the conditional stack into an elegant machine for missing trades.

8) Semi-manual or OMS-integrated workflows can create hidden latency regimes

Some conditional ecosystems historically relied on desktop alerts, blotter sweeps, or OMS-assisted firm-up workflows. Even when the execution is automated today, desks often have residual architectural asymmetry:

If you pool all of that together into one venue-level conversion rate, you will average away the real branch that matters.


Observable signatures

1) Invitation volume looks healthy, but realized conditional completion is poor

You see lots of conditional activity in logs:

but parent-level completion from the conditional stack is consistently underwhelming.

That often means the system is measuring contact, not usable liquidity.

2) Simultaneous invite clusters frequently end with no fill anywhere

This is the cleanest race-condition smell. If several venues invite within a tight window and nothing executes despite apparent two-sided interest, your policy is likely losing coordination races.

3) Lit catch-up cost spikes after conditional hold episodes

Look for sequences like:

That is the core hold-time tax.

4) Venue win rates look good in isolation but bad in cluster-conditioned analysis

A venue may appear strong when measured on raw fill rate, yet perform poorly when you evaluate only cases where multiple venues invited at once.

That usually means the venue is good at showing up, not good at winning.

5) Fill quality worsens with longer firm-up latency

Conditional fills that arrive after longer decision / response delay often have worse economics:

6) Parent deadlines are quietly consumed by dark indecision

The stack may look disciplined because it is not crossing the spread immediately. In reality it may be spending scarce deadline budget on repeated conditional maybes.

7) Large minimum quantities produce beautiful dashboards and ugly opportunity loss

A desk can talk itself into feeling safe because average fill size rises. But if reachable liquidity collapses and catch-up aggression rises later, the MES policy is too ambitious for the regime.


Mechanical path to slippage

Step 1) The strategy posts conditional interest across several venues

This is rational and often desirable. The point is to source block liquidity without advertising full intent.

Step 2) One or more invitations arrive

The invites may be:

Step 3) The scheduler implicitly gives the invite too much credit

Common hidden assumptions:

That is where the branch usually becomes mispriced.

Step 4) The strategy commits, waits, or reorders other routes

Examples:

Step 5) The race resolves badly

Possible bad outcomes:

Step 6) The parent re-enters the lit market behind schedule

Now the true slippage appears:

Step 7) TCA blames “market conditions” instead of the conditional decision policy

If the system does not explicitly attribute hold-time and race-loss cost, the desk learns the wrong lesson. It thinks:

In reality, the scheduler may have overpaid for optionality that was mostly duplicated and decayed too quickly.


Core model

Treat conditional execution as a stochastic option-pricing problem with overlap.

At minimum, model four layers separately.

1) Invite arrival model

Estimate:

conditioned on:

This layer measures contact frequency, not value.

2) Invite-cluster / duplication model

Given an invite, estimate:

This is the layer many desks skip. Without it, raw invite count creates a false sense of optionality.

3) Firm-up conversion model

For each candidate venue and wait policy, estimate:

This layer should be conditioned on cluster context:

4) Hold-time opportunity-cost model

Estimate the expected cost of delaying or suppressing alternate execution while the conditional branch is alive.

This is often the missing term. A useful mental decomposition is:

Expected conditional decision cost = fill-path cost + race-failure / no-fill cost + hold-time lit drift cost + deadline compression cost - spread saved when the conditional fill succeeds usefully

If your model has no explicit hold-time term, it will overuse conditional waiting in the exact regimes where it should be ruthless.


Features worth logging

You cannot fix this branch with fill data alone. Log the full invitation decision process.

Invitation and cluster features

Decision-latency features

Market-state features

Outcome features

Architecture features


Highest-risk situations

1) Block-seeking flow sprayed across many conditional venues

The more venues you contact, the more duplicated-liquidity and coordination-race risk you create.

2) Fast markets where waiting is expensive

When spreads, imbalance, or short-horizon drift are unstable, even a brief conditional hold can become costly.

3) Deadline-sensitive parent orders

If the parent already has little slack, the scheduler should be much less willing to spend time on ambiguous conditional optionality.

4) Names with fragmented dark liquidity but low unique-liquidity share

Some symbols generate plenty of invites that are mostly the same opportunity wearing different venue badges.

5) MES policies set by habit rather than regime

A fixed minimum quantity across all symbols and urgency states is almost guaranteed to be wrong somewhere.

6) Venue comparisons based on gross fills rather than cluster-conditioned wins

This can systematically overroute to venues that are noisy participants in races rather than genuine sources of unique block liquidity.


Regime state machine

SEARCHING

Trigger:

Actions:

SINGLE_INVITE_CANDIDATE

Trigger:

Actions:

CLUSTERED_INVITES

Trigger:

Actions:

FIRMUP_PENDING

Trigger:

Actions:

RACE_AMBIGUOUS

Trigger:

Actions:

MISSED_CROSS_RECOVERY

Trigger:

Actions:

DELAYED_FILL_LOW_VALUE

Trigger:

Actions:

SAFE_COMPLETED

Trigger:

Actions:


Control rules that actually help

1) Never give invitation credit as completion credit

An invite is an option, not progress. Do not let parent-completion logic relax just because an invitation arrived.

2) Score venues on unique liquidity and cluster-conditioned win rate

Raw invite rate and raw fill rate are both misleading. A strong venue is one that either:

3) Make the wait window regime-aware and tiny by default

If you ever wait for more invite information, make that wait depend on:

A static “wait a few milliseconds” policy is usually just superstition with a config file.

4) Keep lit routing partly alive unless the conditional edge is clear

Do not fully freeze alternate execution paths for weak conditional signals. Preserve some ability to keep schedule risk under control.

5) Measure delayed fills against a value budget, not only execution success

A fill that arrives after the parent already lost timing value is not the same as an on-time fill. Model that difference explicitly.

6) Tune MES using total economic value, not average fill size

The right MES is the one that maximizes:

not the one that produces the prettiest average conditional print size.

7) Separate venue policy from architecture latency

Do not punish a venue for your own slow path, and do not reward a venue simply because one workflow variant reaches it faster.

8) Attribute race-loss cost explicitly in TCA

If a missed conditional race merely disappears into generic implementation shortfall, the policy will never improve.


TCA / KPI layer

Track these explicitly.

The big reporting rule:

evaluate conditional venues both:

  1. unconditionally, and
  2. conditional on cluster context.

Otherwise you will systematically overrate duplicated-liquidity venues.


Validation approach

1) Reconstruct invitation clusters from raw timestamps

Use a small configurable window such as 10–50 ms depending on your stack and data quality. Then analyze outcomes by:

2) Run counterfactual policy replay

Compare at least:

3) Evaluate on economic value, not just dark fill rate

A higher dark fill rate can still be worse if it requires too much hold time or produces low-value delayed fills.

4) Stratify by urgency and deadline slack

A policy that helps patient block flow can be disastrous for deadline-constrained flow. Do not average those together.

5) Learn venue priors at the cluster level

Estimate which venues tend to:

6) Measure post-hold lit re-entry cost

This is where many models undercount the tax. Explicitly compare lit execution after failed conditional episodes against baseline lit execution without the hold.


Common anti-patterns

1) Counting invitations as evidence of additive liquidity

Multiple invites in a 20 ms burst are often one opportunity, not many.

2) Ranking venues by raw fill rate alone

That rewards duplicated-liquidity venues and ignores race context.

3) Optimizing only on average conditional fill size

Large average fills can hide severe opportunity loss and delayed catch-up cost.

4) Treating no-fill as zero-information

A failed firm-up is highly informative about:

5) Using one wait policy for all names and regimes

The correct waiting tolerance in a sleepy mega-cap midday is not the correct waiting tolerance near a stressed close.

6) Blending different workflow latencies into one venue score

If one path is automated and another is human- or OMS-mediated, one venue-level average will tell you almost nothing useful.


Minimal implementation sketch

  1. Log every invite with high-precision timestamps and cluster IDs.
  2. Build a cluster detector to separate unique from duplicated opportunities.
  3. Train venue-level conversion models conditioned on cluster context and response latency.
  4. Add a hold-time opportunity-cost model tied to spread drift, deadline slack, and urgency.
  5. Replace raw invite-count venue ranking with expected-value ranking:
    • saved spread if fill succeeds in time,
    • minus probability-weighted hold and race-loss costs.
  6. Update TCA so missed races and delayed fills are first-class categories, not generic noise.

Bottom line

Conditional venues are valuable precisely because they let you search for large hidden liquidity without fully exposing intent. But that benefit comes with a specific modeling obligation:

an invite is an expiring option, not a soft fill.

If the execution stack forgets that, it will:

So the correct question is not:

“Did the venue invite us?”

It is:

“Given cluster overlap, response latency, venue rules, and current urgency, what is the expected economic value of acting on this invite relative to keeping the lit path alive?”

That is the difference between a conditional stack that genuinely sources block liquidity and one that merely manufactures stylish excuses for being late.


References