The best ask is not always the cheapest place to buy.
Suppose you want 10,000 shares. Venue B shows the lowest ask at $25.09, but only for 1,000 shares. Venue A has 2,000 at $25.10. Venue C can fill the remaining 7,000 at $25.11 and charges a lower fee.
Sending the whole order to Venue B would not secure $25.09 for all 10,000 shares. Most of the order would remain unfilled, get rejected or need to be routed again after the market had moved.
A smart order router, usually shortened to SOR, handles that problem. It receives a parent order, checks the execution venues available to it, and decides where to send each part. Its decision can include price, available size, fees, latency, fill probability, market impact and the trader’s instructions.
In this example, an urgent router might take:
1,000shares from Venue B at$25.09;2,000shares from Venue A at$25.10;7,000shares from Venue C at$25.11.
The order is filled across three venues. The weighted average price is $25.106, before fees. That is more useful than saying Venue B had the “best price,” because Venue B never had enough shares to complete the trade.
What is smart order routing?
Smart order routing is the automated process of selecting one or more execution destinations for an order.
The router sits between the order source and the venues. The order source might be a trading terminal, an execution management system, an algorithm or a broker’s dealing system. The destinations might include exchanges, alternative trading systems, market makers, dark pools or liquidity providers.
The router’s job is not to predict whether the market will rise or fall. It works with the order it has been given:
- buy or sell;
- instrument;
- quantity;
- order type and limit price;
- time in force;
- permitted venues;
- urgency and other execution rules.
It then turns that parent order into one or more child orders. The router tracks the child orders until they fill, cancel or reject, while keeping the parent order’s total quantity and limit intact.
That last part matters. Splitting an order is easy. Splitting it without overfilling, losing track of cancellations or trading through the limit is the real engineering work.
How a smart order router works
A production router does more than read a list of quotes. It maintains a current view of the market and of its own ability to trade in that market.
1. The router validates the parent order
Before routing, the system checks the order against account permissions and risk controls. The checks can include buying power, position limits, maximum order size, price collars, restricted instruments and permitted destinations.
An order that fails these controls should not reach a venue.
2. It builds a comparable view of the venues
Each venue can publish data in a different format and at a different speed. The router normalizes those feeds into a common view.
For a buy order, it may compare:
- the ask price at each venue;
- the displayed quantity at that price;
- deeper price levels;
- fees for taking liquidity;
- rebates for adding liquidity;
- the age of the quote;
- recent fill and rejection behavior;
- any credit or exposure limit attached to the destination.
Quotes that look identical on a screen may not be equivalent after those factors are included.
3. It scores the available routes
The router applies a policy to the order. An urgent marketable order may prioritize immediate fills. A passive limit order may prioritize price improvement or maker rebates. A large order may avoid displaying its full size in one place.
There is no single universal SOR formula. The scoring logic should reflect the product, market structure, client instruction and execution policy.
4. It creates and sends child orders
The router can send one child order, split the quantity across several destinations, or try venues in sequence.
For example, it might send immediate-or-cancel orders to three venues at once. Each venue must immediately fill what it can and cancel the balance. Another strategy might first try a midpoint venue, wait briefly, and then route the unfilled quantity to displayed markets.
5. It reacts to fills, rejects and changing quotes
Routing does not stop when the first child order leaves the system. Quotes move. Displayed liquidity disappears. A venue can return a partial fill or reject.
The router updates the remaining parent quantity after every response. It then decides whether to keep resting, cancel, reprice or route the balance elsewhere.
6. It reconciles the result
The system joins all child-order events back to the parent order. The final record should show where the order went, what filled, at what price, how long it took and why any quantity remained open.
One order. Three venues. One controlled fill.
The router compares executable cost and available size, then keeps every child fill tied to the original 10,000-share order.
10,000 shares
XYZ common stock
The animation uses the same 10,000-share order as the example above. The important moment is the split. The lowest displayed ask receives only the quantity it can actually fill.
The three fills carry $20.50 in explicit venue fees, bringing the average all-in cost to $25.10805 per share. A possible midpoint fill at $25.095 might improve that result. But waiting for hidden liquidity can cost more if the visible market moves first. The router has to price that trade-off, not just read the book.
Why the lowest displayed price can be the wrong route
Price is the first input most people notice. It is not the whole execution result.
Consider two venues showing the same ask:
| Venue X | Venue Y | |
|---|---|---|
| Displayed ask | $50.00 | $50.00 |
| Displayed size | 5,000 | 5,000 |
| Take fee | $0.0030/share | $0.0010/share |
| Median response time | 0.4 ms | 1.8 ms |
| Recent fill rate at quoted size | 94% | 61% |
Venue Y is cheaper if both venues fill. Venue X has been faster and more reliable. Which one should receive the order depends on urgency and on how costly a missed fill would be.
This is why best execution is wider than the top quote. Under Article 27 of MiFID II, the factors include price, costs, speed, likelihood of execution and settlement, size and nature of the order. The weighting changes with the client and the order.
A router does not prove best execution by having many venue connections. It proves its value through the results it produces consistently.
The inputs that change a routing decision
| Input | Why it changes the route |
|---|---|
| Available quantity | A venue showing one lot at the best price cannot fill a large order there. Displayed size may also disappear before the child order arrives. |
| Fees and rebates | Equal execution prices can produce different net costs. For a resting order, a rebate matters only if the order fills. |
| Latency and quote age | A valid quote can become stale during feed delivery, calculation, network transit or venue processing. |
| Fill probability | Queue position, competing routers and hidden liquidity make the displayed quantity an estimate, not a promise. |
| Market impact | An aggressive order may consume several levels and reveal demand. A passive order may miss the trade while the price moves away. |
| Permissions and credit | The best-looking destination is irrelevant if the account cannot trade there, lacks the order type or has reached its limit. |
I compare the execution price plus the cost of taking liquidity for a marketable order. I also look at recent fill behavior. A low fee attached to a stale quote or poor fill probability is not a cheap route.
Common smart order routing strategies
| Strategy | What the router does | Main trade-off |
|---|---|---|
| Sweep | Sends marketable child orders to several venues, starting with the best all-in prices | Fast, but can consume several price levels |
| Sequential route | Tries one destination, then sends the remainder elsewhere after a response or timeout | Easier quantity control, but the next quote may disappear |
| Passive posting | Rests a limit order where queue position, fees or rebates look favorable | Lower explicit cost, but no guarantee of a fill |
| Midpoint or hidden search | Tries non-displayed liquidity before crossing the public spread | Possible price improvement, but uncertain liquidity and added delay |
| Re-route remainder | Recalculates after a partial fill, reject or cancellation | Adapts to the market, but depends on clean order-state handling |
Smart order routing is not the same as an execution algorithm
The terms are often mixed together because the systems can be connected.
| Component | Question it answers |
|---|---|
| Smart order router | Which destination should receive this quantity now? |
| Execution algorithm | How should the parent order be released over time? |
| Order management system (OMS) | Who owns the order, and what is its current business state? |
| Execution management system (EMS) | How does a trader monitor and control active execution? |
| Matching engine | Which compatible buy and sell orders trade inside one venue? |
| Liquidity aggregator | How are quotes from several sources combined into one view? |
A VWAP algorithm might release 5,000 shares during the next minute. The SOR then decides where those 5,000 shares should go. Once a child order reaches an exchange, the exchange’s matching engine decides whether it trades against an order in that book.
The router chooses between destinations. It does not perform the venue’s matching.
How SOR changes across markets
| Market | What changes in the routing decision |
|---|---|
| Listed equities and ETFs | The same instrument can trade on exchanges and alternative venues. Displayed price, depth and venue fees are central inputs. |
| Options | Fragmented books and multi-leg orders add leg risk. A router may compare a native complex-order book with separate execution of each leg. |
| Foreign exchange | Spot FX is largely OTC. Bilateral credit, last-look behavior, quote hold times, minimum size and rejection patterns can matter as much as the top quote. |
| Cryptoassets | Venue balances, custody, counterparty exposure and network costs can make the displayed best price unusable. |
In FX, the router often works beside a liquidity aggregator and bridge. Our guide to the roles of the liquidity bridge, aggregator and liquidity provider separates those responsibilities.
How to measure whether a router is doing a good job
I would not evaluate a router from one winning trade. I would use a large sample and separate the results by instrument, order type, size, urgency and market conditions.
The useful measures include:
- fill rate: how much of the routed quantity executed;
- time to fill: how long execution took;
- average execution price: weighted across every child fill;
- effective spread: the execution price relative to the market midpoint when the order arrived;
- implementation shortfall: the final result relative to a chosen decision or arrival benchmark;
- price improvement: quantity executed better than the reference quote;
- rejection and cancellation rate: how often routes failed or had to be recovered;
- post-trade markout: where the market moved after each fill;
- venue concentration: whether one destination receives an unusual share of the flow;
- routing overhead: the time spent inside the routing and connectivity stack.
The reference timestamp must be consistent. Measuring one venue against a quote from before the order arrived and another against a quote from after it arrived produces a clean report with a false comparison.
Execution reports also need context. The SEC’s Rule 605 guidance treats receipt time and a consistent quote benchmark as essential to comparable execution-quality statistics. The specific rule applies to the US securities covered by it, but the measurement lesson travels well: timestamp first, compare like with like.
Where smart order routing fails
Stale or incomplete market data
The router is only as current as its inputs. If one venue feed is delayed, its quote may look attractive long after the liquidity has gone.
Slow cancellation handling
A router sends child orders to two venues and decides to cancel one. If the cancellation state is uncertain, sending the full remaining quantity to a third venue can create an overfill.
Production systems need explicit states for pending new orders, pending cancels, partial fills, rejects and late fills.
Optimizing the wrong metric
A router built to maximize maker rebates may produce slow fills and poor markouts. A router built only for speed may cross more spread than necessary.
The metric should match the client instruction. Otherwise the router can perform exactly as designed and still produce the wrong business result.
Ignoring venue behavior
Historical fill rates can become stale. A venue can perform well in liquid large-cap shares and poorly in thin instruments. One global score hides that difference.
Weak parent-child reconciliation
Every execution, cancellation and reject must map back to the correct parent. Reconciliation problems are not cosmetic. They can leave the trading platform, risk system and venue with different views of the open quantity.
No independent review
Routing logic should be tested against actual execution data. A venue ranking hard-coded months ago is not smart simply because the system is automated.
When does a broker need a smart order router?
SOR becomes useful when the same order can reach several genuine execution destinations and the choice changes the result.
A broker may need it when:
- the same instruments trade across several venues;
- client orders regularly exceed the quantity available at the best quote;
- venue fees and fill behavior differ enough to affect execution;
- the broker must apply different routing policies by client or order type;
- manual routing cannot react fast enough;
- execution quality must be measured and reviewed systematically.
It may be unnecessary when all orders go to one counterparty, one managed liquidity source or one exchange. Calling a single fixed connection “smart routing” does not create destination choice.
Technology is only one part of the decision. The broker also needs venue access, market data rights, legal agreements, risk limits, monitoring, reconciliation and an execution policy. A router without those layers is a route selector with an ambitious name.
The point of SOR
Smart order routing exists because a tradable market is rarely represented by one price on one screen.
The router has to answer a more practical question: where can this specific order achieve the best result now, under its limit, urgency and available routes?
For a small order, the answer may be one venue. For a large order, it may be a split across several. For a passive order, it may be better to wait. The quality lies in making that choice consistently, keeping the parent order under control and leaving enough data to explain the result afterward.
