Back to Blog
Brokerage

Are Your LPs Really Performing? 8 FIX Execution Quality Metrics Every Broker Should Watch

Noman ChaudharyNoman Chaudhary
April 19, 20266 min read21 views
Are Your LPs Really Performing? 8 FIX Execution Quality Metrics Every Broker Should Watch

Execution quality is one of those topics brokers think they have covered—until a client complains about “platform manipulation,” rejects spike during news, or your best LP quietly becomes your worst.

If you’re connected via FIX (directly or through a bridge/aggregator), you already have the raw data to measure execution quality precisely. The difference is whether you’re tracking the right metrics consistently—and whether your ops/risk team can turn those numbers into routing and counterparty decisions.

1) Fill ratio (and partial-fill ratio)

Fill ratio is the most direct “did we actually execute?” KPI. Track it per LP, per symbol, per session (Asia/London/NY), and split by order type (market, limit, stop) and size bands.

What to measure:

  • Fill ratio = filled orders / submitted orders
  • Partial-fill ratio = partially filled / submitted (important for larger tickets)
  • No-fill rate = expired/canceled/unfilled / submitted (especially for IOC/FOK)

How to use it operationally:

  • A high fill ratio on EUR/USD but low on XAU/USD often signals instrument-specific depth issues.
  • If fill ratio drops only during volatility, it can indicate last look behavior or insufficient credit/limits.
  • Use it to set routing guardrails (e.g., “LP A can quote but not receive >$X notional during NFP windows”).

2) Round-trip time (RTT) and latency distribution (p50/p95/p99)

Average latency hides the real problem: tail latency. A broker can look “fine” at 8ms average while still delivering painful fills at the 99th percentile.

What to measure:

  • RTT from FIX NewOrderSingle (35=D) send time to first relevant ExecutionReport (35=8) response time
  • Percentiles (p50, p95, p99) by LP, symbol, and session

Practical thresholds (contextual, not universal):

  • Retail setups often tolerate 10–50ms end-to-end, but you should still monitor p95/p99 to catch degradation.
  • If p99 balloons while p50 stays stable, suspect network jitter, queueing, throttling, or venue/LP load.

Actionable next step:

  • Store timestamps at each hop you control (platform → bridge/aggregator → FIX gateway). Without hop-level timing, you can’t isolate whether the issue is your infra or the LP.

3) Reject rate (by reject reason and message type)

“Reject rate” is only useful when you can explain why the rejects happen. Track rejects across the full lifecycle: new orders, replaces, cancels, and post-trade.

What to measure:

  • Order reject rate = ExecType=Rejected / submitted
  • Cancel reject rate (often overlooked) = cancel rejects / cancel requests
  • Top reject reasons (map FIX codes/text into normalized categories)

Common broker-relevant reject buckets:

  • Invalid price / off-market (often during fast markets)
  • Insufficient liquidity / size exceeds
  • Trading disabled / symbol status
  • Session/sequence issues (tech instability)
  • Risk/credit limits hit (counterparty or your own risk filters)

Why compliance/ops cares:

  • A rising reject rate can create best execution questions and client disputes. Even in offshore setups, you should document monitoring and remediation processes—check local regulations and get compliance advice for your jurisdiction.

4) Slippage buckets (not just average slippage)

Average slippage is misleading because it blends good and bad outcomes. Brokers should bucket slippage to understand distribution and asymmetry.

What to measure (in pips or basis points):

  • Buckets like: ≤ -1.0, -1.0 to -0.2, -0.2 to 0.0, 0.0 to +0.2, +0.2 to +1.0, ≥ +1.0
  • Split by buy vs sell, order size, symbol, session, volatility regime

How to interpret:

  • If the distribution is heavily skewed toward negative slippage with limited positive slippage, investigate last look, asymmetric execution, or routing rules.
  • If slippage worsens only above certain size bands, it may be a depth/market impact issue—consider slicing, different LP tiers, or internalization rules where appropriate.

5) Quote-to-fill ratio (and “top-of-book hit rate”)

Execution quality isn’t only about orders—it’s about whether the prices you show are actionable. If your bridge/aggregator consumes multi-LP quotes, measure how often the “best” quote actually results in a fill.

What to measure:

  • Quote-to-fill ratio = fills / quotes (or fills / “tradable quote updates”)
  • Top-of-book hit rate = % of fills executed at the best bid/ask available at decision time

Why it matters:

  • A low hit rate can indicate stale quotes, aggressive markups, or LPs that quote tightly but don’t fill (classic “looks good on spread, bad on execution”).

Implementation note:

  • You’ll need consistent quote snapshotting at the moment your SOR/bridge decides where to route, otherwise you can’t fairly attribute.

6) Execution outcome mix (filled vs requoted vs expired vs canceled)

Not all “non-fills” are equal. An LP that times out is different from an LP that rejects quickly—and both are different from client-initiated cancels caused by slow execution.

What to measure:

  • Outcome mix by LP and symbol:
    • Filled
    • Partially filled
    • Rejected
    • Expired/Timed out
    • Canceled (client/system)

How to use it:

  • If timeouts rise, your first step is to validate connectivity and throttling.
  • If client cancels rise during specific windows, your p95/p99 latency likely correlates—pair this metric with RTT percentiles.

7) Last-look indicators (hold time and adverse selection signals)

You can’t always “prove” last look from the outside, but you can monitor patterns that strongly correlate with it.

What to measure:

  • Hold time proxy: time between order arrival at LP and final execution report (where visible)
  • Slippage asymmetry: compare negative vs positive slippage frequency and magnitude
  • Fill probability vs short-term price move: do fills drop when the market moves in the client’s favor?

How to operationalize:

  • Build a simple dashboard: slippage buckets + fill ratio during high-volatility minutes.
  • If an LP shows persistent asymmetry, consider routing adjustments, LP mix diversification, or renegotiating execution terms.

8) Stability and session health (disconnects, sequence gaps, resend storms)

Execution quality collapses fast when FIX sessions are unstable. Brokers often notice the problem only after P&L damage or client complaints.

What to measure:

  • Disconnect frequency and mean time between disconnects
  • Logon/logout anomalies
  • Sequence number gaps and ResendRequest volume
  • Message queue backlog (if your gateway exposes it)

Why it matters for brokers:

  • Session instability increases rejects/timeouts and can create trade integrity issues.
  • It’s also a vendor-management KPI: whether the problem sits with your hosting, bridge, or LP connectivity.

Practical checklist:

  • Alert on p99 RTT spikes and disconnects (they often precede each other).
  • Keep an incident log tying FIX health events to execution KPI deterioration.

The Bottom Line

If you’re not measuring FIX execution quality, you’re effectively managing LPs and routing by anecdote.

Track these 8 metrics consistently (with percentiles and buckets), segment by symbol/session/size, and tie them to routing rules and counterparty reviews.

It’s also the cleanest way to document execution monitoring for client disputes and regulatory expectations—always check local regulations and consult compliance experts where needed.

If you want help instrumenting these KPIs across your bridge, platform, and FIX gateways, start here: /get-started.

Share:TwitterLinkedIn