HFT & Advanced Concepts
Chapter: 6.5 High-Frequency Trading & Advanced Concepts Time limit: 90 minutes Total marks: 60 Instructions: Answer ALL three questions. Show full derivations, code, and reasoning. Calculators permitted. Where code is requested, pseudo-Python is acceptable but must be logically complete.
Question 1 — Latency Arbitrage & Colocation Physics (20 marks)
A latency arbitrageur observes a price update on Exchange A (in New Jersey) and wishes to trade the same instrument on Exchange B (in Chicago), a great-circle distance of 1180 km away. The signal travels through fibre-optic cable with refractive index ; speed of light in vacuum m/s.
(a) Compute the one-way theoretical minimum propagation latency through the fibre. Compare it to the vacuum/near-vacuum latency achievable by a microwave line-of-sight network (assume , treat as vacuum). Give the time advantage in microseconds. (6)
(b) The fibre route is not straight — it is 15% longer than great-circle due to right-of-way constraints. Recompute the fibre latency and the total microwave advantage (one-way). (4)
(c) A competitor colocates its server inside Exchange B's datacentre, reducing its "last-mile" processing + local-network latency from to , while you use standard Direct Market Access (DMA) at . Assuming both of you receive the Exchange A signal simultaneously via the same microwave feed, model the total race time for each and determine who wins and by how much. State the two distinct latency components each trader is optimising. (5)
(d) Explain, with reference to the physics above, why regulators and exchanges introduced speed bumps (e.g., IEX's 350 µs coiled-fibre delay). Argue whether a fixed speed bump neutralises latency arbitrage of the type in (c). (5)
Question 2 — Execution Algorithms: VWAP vs TWAP vs POV (22 marks)
An institution must buy 600,000 shares over a 6-interval trading window. The predicted market volume and prices per interval are:
| Interval | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Market volume (k shares) | 200 | 400 | 800 | 600 | 300 | 200 |
| Price ($) | 50.0 | 50.2 | 50.5 | 50.3 | 50.1 | 50.0 |
(a) Compute the schedule (shares per interval) for a TWAP algorithm and for a VWAP algorithm (proportional to predicted volume). (5)
(b) Compute the average execution price achieved by each algorithm (ignore market impact; fills at ). Then compute the interval-VWAP benchmark . Which algo tracks the benchmark exactly, and why? (6)
(c) A POV (Percentage of Volume) algorithm targets participation rate of realised volume. Realised volumes turn out to be 1.2× the predicted in every interval. Compute the shares POV executes each interval and the total. Does POV complete the 600k order? If not, describe precisely how a POV algorithm handles the residual and the associated risk. (6)
(d) Write pseudo-code for a POV executor that, per interval, (i) reads realised volume, (ii) caps the child order at , (iii) tracks remaining quantity, and (iv) forces completion in the final interval. Comment on why (iv) reintroduces market-impact risk. (5)
Question 3 — Market Making, Flash Crashes & Circuit Breakers (18 marks)
(a) A market maker quotes a two-sided market with a spread of 4 cents on a 0.0002 per share traded (one-sided volume = round-trip volume). Compute net daily P&L. (6)
(b) During a flash crash, liquidity evaporates. Model, using a simple limit-order-book depletion argument, why an aggressive sell market order of size walks the book: given book depth shares available at each price level spaced apart, express the average fill price as a function of and show that vanishing depth () causes unbounded price impact. (6)
(c) A market-wide circuit breaker (Level 1) triggers at a 7% decline from the prior close and halts trading for 15 minutes. On a stock closing at $40.00, compute the Level 1 trigger price. Then argue, referencing the 2010 Flash Crash, whether single-stock Limit Up-Limit Down (LULD) bands or market-wide breakers better prevent HFT-driven cascade, and state one failure mode of each. (6)
End of paper.
Answer keyMark scheme & solutions
Question 1
(a) Speed in fibre m/s. Fibre latency s . (2) Microwave (vacuum) : s . (2) Advantage ms. (2) Why: microwave travels ~straight line at near-c; fibre both slows light (n) and is straight here for the comparison.
(b) Fibre path km. s . (2) Microwave advantage ms. (2) Why: physical routing overhead compounds the refractive slowdown.
(c) Both receive signal simultaneously, so propagation cancels; only last-mile differs.
- Colocated: .
- DMA: . Colocated trader wins by . (3) Two components each optimises: (1) propagation latency (network distance — solved by microwave/colo proximity) and (2) processing/last-mile latency (order gateway + local switching — solved by colocation inside the matching-engine datacentre). (2)
(d) Speed bumps add a fixed, deterministic delay to incoming orders so that a marginally faster trader cannot pick off stale quotes (latency arbitrage against slow market makers). (2) Rationale: level playing field, protect resting liquidity, reduce "picking off." (1) A fixed speed bump applied equally does not neutralise the (c)-type race, because it adds the same 350 µs to both traders — the 220 µs relative advantage persists; the winner is unchanged. (2) (Speed bumps only help when asymmetric — e.g., applied to aggressive orders but not to the market maker's cancels, as in IEX's design protecting the pegged midpoint.)
Question 2
(a) Total ; 6 intervals. TWAP = equal: shares per interval. (2) VWAP proportional to . k. Fraction :
- (3) (sum = 600,000 ✓)
(b) TWAP avg price . (2) VWAP avg price with : k. . (2) VWAP algo achieves exactly ; it tracks the benchmark exactly because it weights each interval's fill in the same proportion as market volume, so the achieved price = volume-weighted benchmark by construction. TWAP () differs because equal weighting under-buys in high-volume/high-price intervals. (2)
(c) POV: child , , realised . So child (in k shares):
- k
- k
- k
- k
- k
- k Total k shares. (3) POV executes only 450,000, leaving 150,000 residual — it does NOT complete. (1) Handling: POV is volume-driven, not deadline-driven — if volume is insufficient it under-fills. Options: (i) leave order incomplete (participation constraint honoured), or (ii) increase / switch to aggressive completion near close. Risk: forcing completion raises participation → higher market impact and signalling; leaving residual → timing/opportunity risk (unfilled at target). (2)
(d) Pseudo-code: (3 for correct logic, 2 for part iv commentary)
def pov_execute(total_qty, rho, intervals):
remaining = total_qty
for i, iv in enumerate(intervals):
realised_vol = read_realised_volume(iv) # (i)
cap = int(rho * realised_vol) # (ii)
if i == len(intervals) - 1: # (iv) final interval
child = remaining # force completion
else:
child = min(cap, remaining)
send_order(child, iv.price)
remaining -= child # (iii) track remaining
if remaining <= 0:
break
return remainingCommentary on (iv): forcing child = remaining in the last interval can demand a quantity far exceeding , so the order becomes a large fraction of available liquidity — market impact spikes (walks the book), and the forced aggression reveals urgency, worsening execution price. This is the fundamental impact-vs-completion trade-off. (2)
Question 3
(a) Gross spread revenue: half-spread captured per round trip. Round-trip volume 8,000,000 shares. Interpretation: capturing half the 4¢ spread () per share of round-trip flow. Gross = 8{,}000{,}000 \times 0.02 = \160{,}000= 0.35 \times 160000 = $56{,}000= 0.0002 \times 8{,}000{,}000 = $1{,}600. Net P&L = 160000 - 56000 + 1600 = $105{,}600$. (2)
(b) Market order size consumes book levels. With depth per level and spacing , filling needs levels. Prices paid: (buy; symmetric for sell walking down). Average fill price for a sell walking down from : With : impact . (4) As (liquidity evaporates in a flash crash), impact — price impact is unbounded, i.e., the order walks arbitrarily far down the book (this is how the 2010 Flash Crash saw prices hit stub quotes near $0.01). (2)
(c) Level 1 trigger = 40.00 \times (1 - 0.07) = 40.00 \times 0.93 = \37.20$. (2) Argument: LULD bands (single-stock, e.g. ±5–10% over a rolling 5-min window) prevent individual runaway prints and stub quotes — directly addresses the 2010 mechanism where individual stocks printed at absurd prices while the index moved modestly. Market-wide breakers halt the whole market on aggregate index decline. (2)
- LULD failure mode: fragmented liquidity / momentum can push a stock repeatedly to band edges causing many short halts ("limit state" cycling), harming price discovery; also inconsistent bands across venues.
- Market-wide breaker failure mode: too coarse — a single-stock or ETF cascade (as in 2010) may not breach the aggregate index threshold, so the market-wide breaker never fires while individual names collapse. (2)
[
{"claim":"Fibre one-way latency for 1180km at n=1.47 is ~5782 microseconds","code":"c=Rational(3,1)*10**8; n=Rational(147,100); v=c/n; t=Rational(118,100)*10**6 / v; result = abs(float(t)*1e6 - 5782) < 2"},
{"claim":"Microwave advantage with 15pct longer fibre is ~2717 microseconds","code":"c=3.0e8; n=1.47; v=c/n; d=1.15*1.18e6; tf=d/v; tmw=1.18e6/c; adv=(tf-tmw)*1e6; result = abs(adv-2717) < 3"},
{"claim":"VWAP achieved price equals market VWAP 50.276","code":"V=[200,400,800,600,300,200]; P=[50.0,50.2,50.5,50.3,50.1,50.0]; vwap=sum(v*p for v,p in zip(V,P))/sum(V); result = abs(vwap-50.276) < 1e-6"},
{"claim":"TWAP average price is 50.18333","code":"P=[50.0,50.2,50.5,50.3,50.1,50.0]; twap=sum(P)/len(P); result = abs(twap-50.183333)<1e-4"},
{"claim":"POV total executed at 0.18 factor is 450000 shares, residual 150000","code":"V=[200,400,800,600,300,200]; ex=sum(0.18*v for v in V)*1000; result = abs(ex-450000)<1e-6 and abs((600000-ex)-150000)<1e-6"},
{"claim":"Market maker net daily P&L is 105600 dollars","code":"gross=8000000*0.02; adv=0.35*gross; rebate=0.0002*8000000; net=gross-adv+rebate; result = abs(net-105600)<1e-6"},
{"claim":"Level 1 circuit breaker trigger price on 40.00 is 37.20","code":"trig=40.00*(1-0.07); result = abs(trig-37.20)<1e-9"}
]