---
title: "Fragmentation and Routing"
book: "Microstructure and Execution"
subject: quant
language: en
chapter: 8
exercises: 8
source: https://one-course.com/books/quant/10/en/chapter/8-fragmentation-and-routing
---

# Chapter 8 — Fragmentation and Routing

An order to buy 5 000 shares at the best offer finds 1 200 on the venue it was sent to. The other 3 800 at that price sit on four other venues, and by the time a second order reaches them some have gone. A stock that trades in many places has many order books and no single one of them is the market: the market is a view assembled from all of them, late by the time the data takes to travel, and different for every trader who assembles it. This chapter builds that view in the exchange simulator from three venues, compares the consolidated feed with the venues’ own feeds, counts [locked](#def-mx-fragmentation-and-routing-locked) and [crossed markets](#def-mx-fragmentation-and-routing-locked), and asks which venue’s quotes the price is discovered in.

## 8.1 Many venues, one stock

**Definition 8.1 (Market fragmentation).**

*Market fragmentation* is the trading of one security on several venues at once, each with its own order book, rules and participants, so that the liquidity at any price is split among them.

In the United States a stock can trade on every exchange, on alternative trading systems and with wholesalers; in Europe on its primary market, multilateral trading facilities and systematic internalisers (One Quant Book 1, chapters 4, 9 and 11). Fragmentation lets venues compete on fees, speed and order types and gives traders choices; it also splits liquidity and makes every order a routing decision. The evidence on its net effect is mixed: O’Hara and Ye (2011) found that US stocks with more fragmented trading had lower transaction costs, faster executions and prices closer to a random walk, at the cost of more short-term volatility; Degryse, de Jong and van Kervel (2015) separated visible fragmentation from dark trading in European stocks.

The chapter’s market has three venues, A, B and C, each with a background flow from `firm.tape`. The three flows share one efficient price $P^\ast$, but their traders see it at different times: at once on A, two seconds late on B and ten seconds late on C, and B and C have less activity (70% and 45% of A’s rates). The later venues stand for places where quotes are updated by slower participants. An arbitrageur with 20-microsecond direct feeds from all three takes both sides whenever the consolidated book is [crossed](#def-mx-fragmentation-and-routing-locked), and a consolidated feed ([Figure 8.1](#fig-mx-fragmentation-and-routing-views)) publishes the national best bid and offer (NBBO) half a millisecond after each venue’s update. Over one simulated hour the displayed size at the best offer is split 38%, 30% and 32% across A, B and C on average: an order sent to one venue finds about a third of the size at the price.

![Two views of one market. A trader with direct feeds builds the best prices from each venue’s own data; the consolidated feed receives every venue’s top of book, computes the NBBO and publishes it later. Delays are the simulation’s.](https://one-course.com/images/onecourse/chapters/quant-10/mx-fragmentation-and-routing/fig-d27551d312b9.svg)

***Figure 8.1.** Two views of one market. A trader with direct feeds builds the best prices from each venue’s own data; the consolidated feed receives every venue’s top of book, computes the NBBO and publishes it later. Delays are the simulation’s.*

## 8.2 Consolidated and direct views of the market

A securities information processor collects each venue’s quotes and trades and publishes the NBBO; a trader who subscribes to the venues’ direct feeds builds the same NBBO earlier (One Quant Book 1, chapter 9). `firm.consolidated` rebuilds both views from the venues’ tops of book, with Book 1’s `firm_nbbo` (a quote enters only from one round lot), and `firm.exchsim` now runs a live consolidated feed whose NBBO agents receive (`SipConfig`, `Agent.on_nbbo`).

With a half-millisecond feed, the two views differ 0.0098% of the time in the simulated hour: the direct NBBO’s price changes 0.44 times a second, and each change is seen late for half a millisecond. The share grows with the delay: 0.002% at 50 microseconds, 0.018% at one millisecond, 0.084% at five, 0.33% at twenty and 1.5% at a hundred ([Figure 8.2](#fig-mx-fragmentation-and-routing-delay)), below the product of the change rate and the delay because changes come in bursts. Time shares hide what matters. At the moment of a trade the views differ much more often, because trades follow quote changes: the consolidated NBBO just before a trade was stale for 18.5% of the hour’s trades, nearly all of them the arbitrageur’s, which fire within 40 microseconds of the change that triggers them; for the background’s trades the share is 0.02%. Ding, Hanna and Hendershott (2014) measured the real gap: in very active stocks the consolidated and direct NBBOs disagree several times a second, for one to two milliseconds each time.

![How often a consolidated view disagrees with the direct one, against its delay, on the simulated three-venue hour. The dashed line assumes isolated price changes; changes that arrive in bursts overlap and are missed together. Data: mx_frag.study.](https://one-course.com/images/onecourse/chapters/quant-10/mx-fragmentation-and-routing/fig-45cfd7e06b94.svg)

***Figure 8.2.** How often a consolidated view disagrees with the direct one, against its delay, on the simulated three-venue hour. The dashed line assumes isolated price changes; changes that arrive in bursts overlap and are missed together. Data: `mx_frag.study`.*

## 8.3 Protected quotes, locked and crossed markets

**Definition 8.2 (Protected quote).**

A *protected quote* is a displayed best bid or offer that other trading venues may not trade through: an order executed elsewhere at a worse price must first take it, or be routed to it. In the United States it is the protected quotation of Rule 611 (One Quant Book 1, chapter 9); in the simulator and in `firm_nbbo`, a quote of at least one round lot.

**Definition 8.3 (Locked and crossed markets).**

The market is *locked* when the best bid on one venue equals the best offer on another, and *crossed* when it is higher. Neither can happen within one book, whose [matching engine](https://one-course.com/books/quant/10/en/chapter/1-the-limit-order-book#def-mx-the-limit-order-book-engine) would trade the two; across venues each book sees only itself.

A [crossed market](#def-mx-fragmentation-and-routing-locked) is a free trade for whoever takes both sides; a lock is not (there is nothing to earn at equal prices, before fees), but it tells routers two different things about the price. US rules keep both rare: venues must not display quotes that lock or cross [protected quotes](#def-mx-fragmentation-and-routing-protected) elsewhere, and routers must not trade through [protected quotes](#def-mx-fragmentation-and-routing-protected). The simulator’s venues have no such rule, which shows what it prevents.

```python
    def on_start(self, ctx):
        self.names = {s.venue: s.name.split("@")[-1] for s in ctx.sessions}     # venue index -> venue name

    def on_book(self, ctx, locate, top):
        if ctx.now_ns < self.wait_until:
            return
        best_b, best_a = None, None
        for (vi, _loc), bk in ctx.books.items():
            b, bq, a, aq = bk.top()
            if b is not None and (best_b is None or b > best_b[0]):
                best_b = (b, bq, vi)
            if a is not None and (best_a is None or a < best_a[0]):
                best_a = (a, aq, vi)
        if best_b and best_a and best_b[0] > best_a[0]:
            q = min(best_b[1], best_a[1], self.max_qty)
            ctx.send(Order(side="B", qty=q, price=best_a[0], tif="I", venue=self.names[best_a[2]]))
            ctx.send(Order(side="S", qty=q, price=best_b[0], tif="I", venue=self.names[best_b[2]]))
            self.wait_until = ctx.now_ns + 1_000_000
```

***Listing 8.1.** The cross-venue arbitrageur: the consolidated book from its own direct feeds, and both sides of any cross taken at once. code/microstructure/08-fragmentation-and-routing/python/mx_frag.py*

Without the arbitrageur, the three-venue market is [locked](#def-mx-fragmentation-and-routing-locked) 34.4% of the hour and [crossed](#def-mx-fragmentation-and-routing-locked) 10.0%, in 69 episodes with a median of 4.8 seconds: the late venue’s quotes sit on the wrong side of the others’ until its traders learn the new price. The arbitrageur removes the crosses, 565 of them with a median life of 41 microseconds, and the [crossed](#def-mx-fragmentation-and-routing-locked) share falls to 0.07%, but it leaves the locks, which rise to 42.6% with a median of 0.44 seconds. It trades 1 410 times, mostly against C’s stale quotes: C’s volume rises from 128 100 to 230 900 shares. Taking a quote that is late to learn the price is latency arbitrage (Book 11, chapter 9); Bartlett and McCrary (2019) measured with microsecond timestamps how often traders were hurt by the consolidated feed’s delay.

**As of September 2026 — Order protection under review.**

On June 11, 2026 the SEC proposed to rescind Rule 611 of Regulation NMS, the trade-through prohibition, and Rule 610(e), the restrictions on locking and crossing quotations, with a 60-day comment period after publication in the Federal Register. The simulated market without either rule shows one side of the question: locks and crosses are left to arbitrageurs, who remove the crosses in microseconds and the locks not at all.

## 8.4 Latency between venues

The consolidated feed is late because data travel: from each venue to the processor, through the computation of the NBBO, and out again. A trader co-located with every venue and subscribed to their direct feeds sees each change sooner by the whole difference. The difference is not a matter for fast traders only. A router that sends an order to the venue the consolidated feed shows at the best sends it to a price that may have left; a marketable order checked against a stale NBBO may trade through a better price that the router could not see, or miss one. Routing (chapter 18) starts from a view of the market, and the view has an age: every NBBO a router uses should carry the time it reflects.

## 8.5 Where is the price discovered?

**Definition 8.4 (Price discovery).**

*Price discovery* is the process by which new information is incorporated into prices. When one security trades in several markets, their prices share a common efficient price and the question is which market’s quotes move it first.

The venues’ prices $p_{j,t}$ are cointegrated: each is the common efficient price plus a stationary error, so the differences $p_{1,t}-p_{j,t}$ are stationary (One Quant Book 4, chapter 20). A vector error-correction model captures both the short-run dynamics and the pull back to one price:

$$
\Delta p_t=\alpha\,\beta' p_{t-1}+\sum_{k=1}^{L}\Gamma_k\,\Delta p_{t-k}+e_t,\qquad \operatorname{Var}(e_t)=\Omega,
$$

with $\beta'p_{t-1}$ the $n-1$ price differences. The permanent effect of an innovation on the common price is $\psi e_t$, with $\psi$ the common row of the long-run impact matrix, $\psi\propto\alpha_\perp'$ normalised by $\alpha_\perp'(I-\sum_k\Gamma_k)\iota$.

**Definition 8.5 (Information share).**

The *information share* of a market (Hasbrouck, 1995) is its innovations’ proportional contribution to the variance of the innovation in the common efficient price: with $F$ the lower Cholesky factor of $\Omega$, $\mathrm{IS}_j=([\psi F]_j)^2/(\psi\Omega\psi')$. The Cholesky factor depends on the order of the markets when their innovations are correlated, so the shares are reported as bounds over the orderings.

**Definition 8.6 (Component share).**

The *component share* of a market (Gonzalo and Granger, 1995) is its weight in the common permanent component, $\mathrm{CS}_j=\alpha_{\perp,j}/\sum_k\alpha_{\perp,k}$: large for a market that does not adjust to the others, which is to say for one that leads.

```python
def information_shares(p, lags: int = 5) -> dict:
    m = vecm(p, lags)
    alpha, omega = m["alpha"], m["omega"]
    n = alpha.shape[0]
    _, _, vt = np.linalg.svd(alpha.T)          # alpha_perp spans the null space of alpha'
    a_perp = vt[-1]
    gamma1 = np.eye(n) - sum(m["gammas"])
    psi = a_perp / (a_perp @ gamma1 @ np.ones(n))
    lo, hi = np.full(n, np.inf), np.full(n, -np.inf)
    for perm in itertools.permutations(range(n)):
        idx = list(perm)
        f = np.linalg.cholesky(omega[np.ix_(idx, idx)])
        share = (psi[idx] @ f) ** 2 / (psi @ omega @ psi)
        for k, j in enumerate(idx):
            lo[j], hi[j] = min(lo[j], share[k]), max(hi[j], share[k])
    cs = a_perp / a_perp.sum()
    return {"is_low": lo, "is_high": hi, "is_mid": 0.5 * (lo + hi),
            "component_share": cs, "psi": psi}
```

***Listing 8.2.** Information shares, bounded over the orderings, and component shares from the error-correction model. code/firm/consolidated/firm_consolidated.py*

On the three simulated venues, with mid-quotes sampled every second and five lags, venue A’s [information share](#def-mx-fragmentation-and-routing-is) lies between 0.63 and 0.79, B’s between 0.19 and 0.34, C’s between 0.01 and 0.04 ([Figure 8.3](#fig-mx-fragmentation-and-routing-shares)); with twenty lags, 0.53 to 0.69, 0.30 to 0.45 and 0 to 0.02. The [component shares](#def-mx-fragmentation-and-routing-cs) are 0.75, 0.44 and $-0.20$: the second measure agrees on the leader and shows its known weakness, a negative share for a market that overshoots the adjustment. Hasbrouck’s own application found a median share of 92.7% for the New York Stock Exchange in the thirty Dow stocks.

The measures need the leader’s head start to be visible at the sampling interval. With delays of 0.2 and 1 second instead of 2 and 10, the same estimates put B first (0.37 to 0.59) and A second (0.23 to 0.44): the venues’ quotes take longer than the delays to follow $P^\ast$, and their own noise decides the ranking. A share of volume is not a share of [price discovery](#def-mx-fragmentation-and-routing-discovery) either: C’s volume nearly doubled with the arbitrageur while its [information share](#def-mx-fragmentation-and-routing-is) stayed near zero.

![Price discovery on three simulated venues: information-share bounds (bars) and component shares, from one-second mid-quotes and five lags. With delays large enough to be seen at the sampling interval, both measures find the venue that learns first; with short delays they do not. Data: mx_frag.study.](https://one-course.com/images/onecourse/chapters/quant-10/mx-fragmentation-and-routing/fig-17de1f4aa158.svg)

***Figure 8.3.** [Price discovery](#def-mx-fragmentation-and-routing-discovery) on three simulated venues: information-share bounds (bars) and [component shares](#def-mx-fragmentation-and-routing-cs), from one-second mid-quotes and five lags. With delays large enough to be seen at the sampling interval, both measures find the venue that learns first; with short delays they do not. Data: `mx_frag.study`.*

## 8.6 Tutorial: where is the price found?

**Goal.** Build a three-venue market with a consolidated feed, compare the two views, and measure [price discovery](#def-mx-fragmentation-and-routing-discovery). **End state:** Figures [8.2](#fig-mx-fragmentation-and-routing-delay) and [8.3](#fig-mx-fragmentation-and-routing-shares) and the numbers of sections 1 to 5.

1. **Market.** `mx_frag.market(seconds, seed, arb, sip_ns, lags)` : three `TapeBackground` s on one efficient path ( `v_path` ), the `Arbitrageur` , and `Simulator(…, sip=SipConfig(default_ns=sip_ns))` .
2. **Views.** `views(res)` : each venue’s tops, the direct NBBO ( `firm_consolidated.nbbo_events` ) and the published feed ( `res.sip(1)` ).
3. **Disagreement.** `disagreement(direct, delayed, lo, hi)` for delays from 50 microseconds to 100 milliseconds; `locked_crossed` with and without the arbitrageur.
4. **Discovery.** `information_shares(mids(tops, grid), lags)` for two sets of delays; draw with `fig_frag.py` .

**What to change next.** Give the arbitrageur a 1-millisecond feed and watch the [crossed](#def-mx-fragmentation-and-routing-locked) share and C’s volume; add a rule that reprices orders which would lock or cross another venue’s [protected quote](#def-mx-fragmentation-and-routing-protected), and measure the locks again.

## 8.7 Build: the consolidated market

**Purpose.** One market from many venues: the view every router (chapter 18), transaction-cost benchmark (chapter 19) and Book 11 cross-venue strategy starts from, and the price-discovery measures.

**Interface.** `nbbo_events(tops, delays, round_lot)`, `sample`, `disagreement`, `locked_crossed`; `vecm(p, lags)`, `information_shares(p, lags)`. In `firm.exchsim`: `SipConfig`, `Result.sip`, `Agent.on_nbbo`, `ctx.nbbo`, `ctx.direct_nbbo`, `TapeBackground(v_path=…)`.

**Rules.** The NBBO by Book 1’s `firm_nbbo` (round lots only); a delayed view shifts each venue’s updates by its delay; cointegrating vectors $p_1-p_j$ imposed; information-share bounds over all orderings.

**Acceptance tests.** `code/firm/consolidated/tests/`: a hand-made NBBO with a lock, a delayed view and an odd lot; [information shares](#def-mx-fragmentation-and-routing-is) that find the leader among three simulated prices lagged by zero, one and three steps. `code/firm/exchsim/tests/`: the consolidated feed’s publication and delivery times and the direct view.

**Stretch.** Johansen estimation of the cointegrating vectors; the modified [information shares](#def-mx-fragmentation-and-routing-is) that remove the ordering problem; per-venue SIP delays from geography.

Sources and further reading

- J. Hasbrouck, “One security, many markets: determining the contributions to price discovery”, *Journal of Finance* 50(4), 1995.
- J. Gonzalo and C. Granger, “Estimation of common long-memory components in cointegrated systems”, *Journal of Business and Economic Statistics* 13(1), 1995.
- M. O’Hara and M. Ye, “Is market fragmentation harming market quality?”, *Journal of Financial Economics* 100(3), 2011.
- S. Ding, J. Hanna and T. Hendershott, “How slow is the NBBO? A comparison with direct exchange feeds”, *Financial Review* 49(2), 2014.
- H. Degryse, F. de Jong and V. van Kervel, “The impact of dark trading and visible fragmentation on market quality”, *Review of Finance* 19(4), 2015.
- R. P. Bartlett and J. McCrary, “How rigged are stock markets? Evidence from microsecond timestamps”, *Journal of Financial Markets* 45, 2019.
- U.S. Securities and Exchange Commission, *The Trade-Through Rule and Locked and Crossed Markets* , proposal, Release 34-105655, 2026.

## 8.8 Exercises

**Exercise 8.1 ★.**

Four venues quote: V1 10.00 for 300 and 10.02 for 200; V2 10.01 for 500 and 10.03 for 100; V3 10.01 for 50 and 10.02 for 400; V4 9.99 for 1 000 and 10.02 for 1 000. With round lots of 100, what is the NBBO, with sizes?

**Solution of Exercise 8.1.**

Bid 10.01 for 500 (V2; V3’s 50 shares are an odd lot, not protected); offer 10.02 for 1 600 (V1 200, V3 400, V4 1 000).

**Exercise 8.2 ★.**

Venue A bids 10.02 and venue B offers at 10.02; later A bids 10.03. Name the two states of the market, and say what an arbitrageur can do in each.

**Solution of Exercise 8.2.**

[Locked](#def-mx-fragmentation-and-routing-locked), then [crossed](#def-mx-fragmentation-and-routing-locked). In the lock there is nothing to earn at equal prices, before fees; in the cross an arbitrageur buys on B at 10.02 and sells on A at 10.03, one cent a share, if both quotes are still there when its orders arrive.

**Exercise 8.3 ★.**

A stock’s NBBO price changes 500 times a second and the consolidated feed is one millisecond late. At most what share of the time can the two views differ? What is the same bound for the simulated hour at half a millisecond, and why is the measured share below it?

**Solution of Exercise 8.3.**

Each change is seen one millisecond late, so at most $500\times0.001=50\%$ of the time. The simulated bound is $0.44\times0.0005=0.022\%$; the measured 0.0098% is lower because changes come in bursts whose late windows overlap.

**Exercise 8.4 ★★.**

Two markets have $\psi=(0.6,0.4)$ and $\Omega=\begin{pmatrix}1&0.5\\0.5&1\end{pmatrix}$. Compute the information-share bounds of each.

**Solution of Exercise 8.4.**

$\psi\Omega\psi'=0.76$. Ordering (1, 2): $\psi F=(0.8,\,0.346)$, shares 0.842 and 0.158. Ordering (2, 1): shares 0.645 for market 2 and 0.355 for market 1. Bounds: market 1 between 0.355 and 0.842, market 2 between 0.158 and 0.645.

**Exercise 8.5 ★★.**

In a two-market error-correction model with $z_{t-1}=p_{1,t-1}-p_{2,t-1}$ the adjustment coefficients are $\alpha=(-0.2,0.3)'$. Find $\alpha_\perp$ and the [component shares](#def-mx-fragmentation-and-routing-cs). Which market leads?

**Solution of Exercise 8.5.**

$\alpha_\perp\propto(0.3,0.2)$, since $\alpha'\alpha_\perp=-0.06+0.06=0$. [Component shares](#def-mx-fragmentation-and-routing-cs) 0.6 and 0.4: market 1 adjusts less to the gap and leads.

**Exercise 8.6 ★★.**

Venue C’s [component share](#def-mx-fragmentation-and-routing-cs) is $-0.20$. How can a share be negative, and what does it say about C’s prices?

**Solution of Exercise 8.6.**

[Component shares](#def-mx-fragmentation-and-routing-cs) are normalised weights of $\alpha_\perp$ and nothing forces the entries to share a sign. A negative weight comes from a market whose adjustment coefficient has the sign of a market that overshoots: C’s quotes, ten seconds late, move after the others and by more than the gap, so the common component loads against them. The [information share](#def-mx-fragmentation-and-routing-is), a variance share, cannot be negative.

**Exercise 8.7 ★★★.**

*Coding.* Rerun `market` with delays of 0, 0.2 and 1 second and estimate the [information shares](#def-mx-fragmentation-and-routing-is) from one-second mid-quotes with five lags. Which venue comes first, and why is the answer not the design’s?

**Solution of Exercise 8.7.**

One-second mids and five lags give B 0.37 to 0.59, A 0.23 to 0.44, C 0.13 to 0.28: B comes first. The delays of 0.2 and 1 second are shorter than the time each venue’s quotes take to follow $P^\ast$ (seconds to tens of seconds in `firm.tape`), so the head start is lost in each venue’s own quote noise; with delays of 2 and 10 seconds A is found. Finer sampling helps only if the quotes react faster than the sampling interval.

**Exercise 8.8 ★★★.**

*Find the flaw.* “Venue C’s volume nearly doubled this month, so it now contributes much more to [price discovery](#def-mx-fragmentation-and-routing-discovery).”

**Solution of Exercise 8.8.**

Volume is not [price discovery](#def-mx-fragmentation-and-routing-discovery). In the simulation C’s volume rose from 128 100 to 230 900 shares when an arbitrageur began trading against its stale quotes, while its [information share](#def-mx-fragmentation-and-routing-is) stayed between 0.01 and 0.04: the extra volume was other traders taking C’s late prices. Estimate [information shares](#def-mx-fragmentation-and-routing-is) before and after, not volume shares.

## 8.9 Problem: Where Is the Price Found?

**Problem 8.1.**

Weekend problem — where is the price found?

A regulator asks whether a three-venue market needs a consolidated feed, an order protection rule and a ban on locks. Build the market and answer with numbers.

**Part I — The market.**

1. Define [market fragmentation](#def-mx-fragmentation-and-routing-fragmentation) , and state one benefit and one cost.
2. Describe the simulated venues and how their traders learn $P^\ast$ .
3. How is the displayed size at the best offer split across the venues?
4. What did O’Hara and Ye find about fragmented US stocks?

**Part II — Two views.**

5. How does the consolidated feed build and publish the NBBO?
6. What share of the hour do the direct and consolidated views differ with a half-millisecond feed, and how does it grow with the delay?
7. What share of trades met a stale consolidated NBBO, and whose trades were they?
8. What did Ding, Hanna and Hendershott measure in real markets?

**Part III — Locks and crosses.**

9. Define [locked](#def-mx-fragmentation-and-routing-locked) and [crossed markets](#def-mx-fragmentation-and-routing-locked) .
10. Give the [locked](#def-mx-fragmentation-and-routing-locked) and [crossed](#def-mx-fragmentation-and-routing-locked) shares without the arbitrageur.
11. What does the arbitrageur change, and what does it leave?
12. Whose quotes does it trade against, and what is that trade called?
13. What did the SEC propose in June 2026?

**Part IV — Discovery and the verdict.**

14. Write the error-correction model and the [information share](#def-mx-fragmentation-and-routing-is) .
15. Give the information-share bounds and [component shares](#def-mx-fragmentation-and-routing-cs) of the three venues.
16. Why do the bounds differ from one ordering to another?
17. What happens with delays of 0.2 and 1 second, and why?
18. State the *named result* : the [information shares](#def-mx-fragmentation-and-routing-is) of the three simulated venues, and the share of time the direct-feed and consolidated best prices differ, against the consolidated feed’s delay.
19. Does volume share measure [price discovery](#def-mx-fragmentation-and-routing-discovery) ? Use venue C.
20. In one sentence: where is the price found?

**Solution of Problem 8.1.**

**1.** One security trading on several venues at once; competition on fees, speed and features, against split liquidity and routing. **2.** Three `firm.tape` flows on one efficient price, seen at once on A, 2 seconds late on B, 10 on C, with 70% and 45% of A’s activity on B and C. **3.** 38%, 30% and 32% on A, B and C, time-weighted. **4.** Lower transaction costs and faster executions, more short-term volatility, prices closer to a random walk. **5.** Each venue’s top of book reaches it after 0.5 ms; it computes the NBBO from round-lot quotes and publishes 20 microseconds later. **6.** 0.0098%; 0.002% at 50 microseconds, 0.018% at 1 ms, 0.084% at 5, 0.33% at 20, 1.5% at 100. **7.** 18.5% of trades, nearly all the arbitrageur’s; 0.02% of the background’s. **8.** Dislocations several times a second in very active stocks, lasting one to two milliseconds. **9.** Best bid on one venue equal to ([locked](#def-mx-fragmentation-and-routing-locked)) or above ([crossed](#def-mx-fragmentation-and-routing-locked)) the best offer on another. **10.** [Locked](#def-mx-fragmentation-and-routing-locked) 34.4% and [crossed](#def-mx-fragmentation-and-routing-locked) 10.0% of the hour; 69 [crossed](#def-mx-fragmentation-and-routing-locked) episodes with a median of 4.8 seconds. **11.** It removes crosses (565 episodes, median 41 microseconds, 0.07% of the time) and leaves locks (42.6%, median 0.44 seconds). **12.** Mostly C’s stale quotes (C’s volume from 128 100 to 230 900): latency arbitrage. **13.** To rescind Rule 611 and Rule 610(e), with a 60-day comment period. **14.** $\Delta p_t=\alpha\beta'p_{t-1}+\sum\Gamma_k\Delta p_{t-k}+e_t$; $\mathrm{IS}_j=([\psi F]_j)^2/(\psi\Omega\psi')$. **15.** A 0.63–0.79, B 0.19–0.34, C 0.01–0.04; [component shares](#def-mx-fragmentation-and-routing-cs) 0.75, 0.44 and $-0.20$. **16.** The venues’ innovations are correlated; the Cholesky factor attributes the common part to whichever market comes first. **17.** B first (0.37–0.59), A second (0.23–0.44): the delays are shorter than the quotes’ own reaction time and are lost in noise. **18.** *Named result*: with delays of 0, 2 and 10 seconds the [information shares](#def-mx-fragmentation-and-routing-is) are 0.63–0.79, 0.19–0.34 and 0.01–0.04 ([component shares](#def-mx-fragmentation-and-routing-cs) 0.75, 0.44, $-0.20$); the direct and consolidated best prices differ 0.002% of the time at a 50-microsecond delay, 0.0098% at half a millisecond, 0.084% at 5 ms and 1.5% at 100 ms, and at 18.5% of trades, those of the fast arbitrageur. **19.** No: C’s volume nearly doubled with the arbitrageur while its [information share](#def-mx-fragmentation-and-routing-is) stayed near zero. **20.** On the venue whose traders learn first, and in the arbitrageur’s orders that carry it to the others.

## 8.10 Interview questions

**Interview question 8.1 ★ trader.**

What is the NBBO, who computes it, and why might your own view of it differ?

**Solution of Interview question 8.1.**

The best bid and best offer across protected quotations of all venues, computed by the securities information processor from the venues’ data; a trader with direct feeds computes it earlier and with its own timing, so the two differ whenever a change has not yet reached the processor.

*What the interviewer is looking for: [Protected quotes](#def-mx-fragmentation-and-routing-protected); processor; latency.*

**Interview question 8.2 ★★ trader.**

What is a [locked market](#def-mx-fragmentation-and-routing-locked), and why would a venue refuse to display a locking order?

**Solution of Interview question 8.2.**

A bid on one venue equal to the offer on another. US rules forbid displaying quotes that lock [protected quotes](#def-mx-fragmentation-and-routing-protected) elsewhere; a venue reprices or rejects the order (or routes it to take the quote) because a lock sends contradictory signals and invites routing loops.

*What the interviewer is looking for: Definition; the rule; repricing.*

**Interview question 8.3 ★★ researcher.**

How do you measure which of two venues leads [price discovery](#def-mx-fragmentation-and-routing-discovery)? What can go wrong?

**Solution of Interview question 8.3.**

Hasbrouck [information shares](#def-mx-fragmentation-and-routing-is) and Gonzalo–Granger [component shares](#def-mx-fragmentation-and-routing-cs) from a vector error-correction model on synchronised quotes. Pitfalls: wide bounds when innovations are correlated (sample finer), a lead shorter than the sampling interval, stale quotes, and mistaking volume for discovery.

*What the interviewer is looking for: VECM; bounds; sampling frequency.*

**Interview question 8.4 ★★ developer.**

You build a consolidated book from five direct feeds. What does each entry need besides price and size, and why?

**Solution of Interview question 8.4.**

The venue, the venue’s timestamp and my receive timestamp, the sequence number, and whether the quote is protected (round lot, displayed); I need them to know how old each price is, to detect gaps, and to route to what is really there.

*What the interviewer is looking for: Timestamps; sequence; staleness.*

**Interview question 8.5 ★★ researcher.**

Is fragmentation good or bad for market quality? What evidence would you look for?

**Solution of Interview question 8.5.**

Both effects exist: competition lowers fees and spreads, splitting liquidity raises search and routing costs. Look at matched stocks or natural experiments (new venue entry, rule changes) and compare spreads, depth across venues, volatility and price efficiency.

*What the interviewer is looking for: Mechanisms on both sides; identification.*

**Interview question 8.6 ★★★ trader, researcher.**

The consolidated feed is half a millisecond behind the direct feeds. Who is hurt, how much, and how would you measure it?

**Solution of Interview question 8.6.**

Anyone whose order or quote is checked or priced against the stale view: resting quotes on slow venues picked off by fast traders, marketable orders routed to prices that have gone. Measure fills and mark-outs of trades that occur while the two views differ, as Bartlett and McCrary did with microsecond timestamps, and the share of trades with a stale consolidated NBBO.

*What the interviewer is looking for: Who bears it; a measurement at trade times.*
