Why execution quality matters
Pricing is half the story. The other half is whether you actually get the price when you click. Good execution means high fill probability, minimal slippage, no games with re-quotes, and transparent routing to liquidity providers (LPs). Poor execution quietly taxes your strategy—especially for short hold times and high turnover.
Key metrics (and healthy ranges)
| Metric | What it is | What’s healthy | Red flags |
|---|---|---|---|
| Fill ratio | Percent of orders executed at the requested or better price. | > 95% on liquid FX majors outside news. | < 90% during normal hours; unexplained spikes. |
| Positive/negative slippage | Difference (in pips) between requested price and executed price. | Symmetric over time, small |mean| (< 0.1–0.2 pips). | Only negative slippage pattern; big tails around news without disclosure. |
| Re-quotes | Broker rejects your price and shows a new one. | Near-zero on market orders; low on limits that become marketable. | Frequent re-quotes at favorable prices (asymmetric). |
| Partial fills | Only part of your size gets executed; remainder filled at next price(s). | Rare/modest on majors < 2–5 lots; transparent aggregation. | Chronic partials on tiny sizes; no LP depth explanation. |
| Rejects/invalids | Orders rejected for “off quotes”, “trade context busy”, etc. | < 0.5% and tied to real volatility/server load. | Spikes with no status page or incident report. |
| Time-to-fill | Latency from click to confirmation. | < 150 ms to matching engine (non-co-located retail); steady jitter. | High variance or seconds-long stalls off-news. |
Last-look: what it is and why you should care
Last-look gives a liquidity provider a short window (tens of milliseconds) to accept or reject a trade after you hit their quote. It exists to protect LPs from stale quotes and toxic flow, but it can also be used to selectively reject trades that would be unprofitable to the LP. That makes your fills look worse than the quoted spread suggests.
- Transparent version: LP discloses last-look hold times, rejection reasons, and applies symmetric logic (accepts price-improving hits).
- Problematic version: Hidden hold times, asymmetric rejections, and consistent negative slippage patterns.
How LPs and routing affect your fills
Retail brokers can be:
- A-book (agency/STP/ECN): Route most or all flow to LPs. Your fill quality depends on LP diversity, last-look policies, and smart order routing.
- B-book (market making): Broker internalizes flow. Fill quality depends on broker’s risk engine and internal pricing; can be excellent, but conflicts must be managed.
- Hybrid: Mix of both. Some brokers “profile” flow; different routing for scalpers vs swing traders. Look for policy disclosure.
Re-quotes, invalid prices & partial fills
Re-quotes happen when the price has moved outside your broker’s tolerance (“deviation”) before your order hits the matching engine. Valid in fast markets—but chronic re-quotes at favorable prices are a red flag.
- Limit orders that become marketable should fill at the limit or better. If you routinely get worse, examine slippage settings and logs.
- Partial fills on small sizes suggest poor LP depth or aggressive throttles. Ask about minimum quote sizes and aggregation.
- “Off quotes”/“trade context busy” errors often reflect platform/server saturation. Check broker status pages and your ping.
What the T&Cs often hide
- “Best efforts” execution: Gives wide discretion to slip/route your orders in “abnormal conditions”—sometimes broadly defined.
- “No duty to provide best execution” on non-exchange products: Read how they define “fair and reasonable” pricing.
- Wide “abusive trading” clauses: Can include latency arbitrage, news trading, or even “patterned scalping.” Could be used to re-price or cancel fills.
- “Symmetric slippage not guaranteed”: If only negative slippage is possible, your costs will exceed quoted spreads.
- “Internalization at our discretion”: Hybrid models are fine—lack of disclosure isn’t.
DIY tests you can run this week
- Ping & path: Run continuous pings to the trade server. Look for stable latency and low jitter. Big swings = potential fill variance.
- Micro-lot probe: Place small market and limit orders at different times of day on a major (e.g., EURUSD). Log request price, fill price, time-to-fill, and status. Do 100–200 samples.
- Slippage symmetry: Histogram your slippage (in pips). Over quiet periods, mean should be near zero with a reasonably symmetric shape.
- News control: Repeat tests during scheduled releases to compare behavior. Expect wider tails—but you want disclosed widening, not hidden rejects.
- Partial fill check: Try 1–3 lots on majors. Chronic partials at these sizes suggest shallow LPs or throttling.
Interpreting your results (simple decision tree)
- Fill ratio ≥ 95%, symmetric slip ≤ 0.2 pips, re-quotes ≈ 0: Execution quality is solid.
- Good fills but consistent negative slippage: Suspect last-look asymmetry or markup timing—ask for slippage policy & stats.
- Frequent re-quotes + off-news rejects: Platform/server bottlenecks or aggressive price tolerance. Raise deviation setting or change broker.
- Chronic partials on majors ≤ 3 lots: LP depth/routing issue—ask about LP roster and minimum quote sizes.
ECN vs. RAW vs. Standard: execution angle
- RAW/ECN: Tighter visible spreads + commission. Execution depends on LP mix & last-look. Often better for high-turnover strategies.
- Standard: Wider all-in spread, often fewer re-quotes for casual flow; but hidden markups can mask real costs during moves.
- Pro tip: Compare effective spread after slippage and commission across account types—on your own logs, not screenshots.
Checklist to grill your broker
- Do you publish monthly execution stats (fill ratio, average slippage, rejection reasons) by symbol and session?
- How many tier-1 LPs are in your pool? Do you apply last-look? What are the hold times and acceptance criteria?
- Is positive slippage passed through to clients? Are stop/limit order protections symmetric?
- What are your standard price tolerances and maximum slippage for marketable limits?
- Do you internalize flow? Under what conditions do you switch routing (hybrid model)?
- What are your incident response and status disclosures (uptime, outages, maintenance windows)?
Glossary (fast)
- Fill ratio: % of orders executed (vs. rejected/expired).
- Slippage: Executed – requested price (pips). Positive = price improvement.
- Re-quote: Platform requests you accept a new price.
- Partial fill: Less than full size is executed; remainder works again.
- Last-look: LP approval window to accept/reject after hit.
- LP (Liquidity Provider): Bank, non-bank market maker, or prime broker quoting two-sided prices.
Comments (0)