Quantitative Finance · Book 14 · Technology

Networks, Hardware and Trading Infrastructure

Networks, Hardware and Trading Infrastructure · Technology

12The Asia-Pacific Map

India’s securities regulator received complaints in 2015 that the National Stock Exchange’s colocation facility sent its tick-by-tick data over TCP, member by member, in the order in which members had connected, so that “the first one to connect to the lowest load server would get advantage in terms of receiving the data faster than others”. Its 2019 order described the design in detail and directed the exchange to disgorge 624.89 crore rupees with interest; the appeals tribunal set the disgorgement aside, the regulator appealed, and on 18 September 2026 the Supreme Court allowed a settlement of about 1 492 crore rupees that closed the case. No cable was shorter and no server was faster: the advantage was built into the order in which one computer sent the same message to many.

This chapter maps the Asia-Pacific venues (Tokyo, Hong Kong, Singapore, Sydney, Mumbai) with the method of chapters 10 and 11, and then studies the case: what sequential dissemination does to the time at which each member sees a tick, what a randomiser and a second server change, and why multicast ends the problem. Distances in this region are thousands of kilometres, and several venues do not publish the address of their building, so the site table carries its precision with it.

12.1 Tokyo

JPX runs its co-location in what it calls the JPX Primary Site, where trading participants, information vendors and independent software vendors install their equipment next to the trading systems of the Tokyo Stock Exchange and the Osaka Exchange. JPX does not publish the building’s address; its network, arrownet, reaches the same trading systems from access points outside the site. The site table therefore places Tokyo at city level, which is an error of kilometres (tens of microseconds) and irrelevant at the scale of this map: Tokyo is 2880 km2880\,\mathrm{k}\mathrm{m} from Hong Kong, 9.6 ms9.6\,\mathrm{m}\mathrm{s} of light in vacuum and 14.0 ms14.0\,\mathrm{m}\mathrm{s} in straight fibre.

As of September 2026 — Where the Asia-Pacific venues match

  • Tokyo: JPX’s Primary Site hosts co-location next to the TSE and OSE trading systems; the building is not published (city level).
  • Hong Kong: HKEX’s data centre in Tseung Kwan O Industrial Estate (1 Chun Ying Street) hosts its co-location.
  • Singapore: SGX is moving its primary data centre to a new building, which members may use for co-location, together with its new trading platform, Iris-ST; its secondary data centre is unchanged; mandatory conformance testing runs from January to April 2027 (city level).
  • Sydney: ASX runs its primary markets and post-trade platforms from the Australian Liquidity Centre, at Gore Hill, since February 2012.
  • Mumbai: NSE’s co-location is at its Exchange Plaza site in the Bandra Kurla Complex, with over 200 members on racks and about 100 more through co-location as a service.

12.2 Hong Kong and Singapore

HKEX offers co-location, which it calls hosting services, in its own data centre in the Tseung Kwan O Industrial Estate, on the eastern side of Hong Kong. SGX is in the middle of a larger move. Its questions and answers on Iris-ST, its new trading platform, say that the platform will go live in a newly built primary data centre that members can also use for co-location, with the trading engine in a “2+1” arrangement (a primary and a hot standby in the primary data centre, a third instance at the secondary site). They also answer a question this chapter is about: from co-location, members will be able to receive the ITCH market data both over TCP and over multicast.

FromToGeodesicVacuumFibre
(km)(ms)(ms)
TokyoHong Kong TKO2 880.39.6114.05
Hong Kong TKOSingapore2 577.18.6012.57
TokyoSingapore5 311.017.7225.90
SingaporeSydney ALC6 296.421.0030.71
TokyoSydney ALC7 784.225.9737.96
SingaporeMumbai BKC3 903.313.0219.04
Hong Kong TKOMumbai BKC4 317.314.4021.05
TokyoMumbai BKC6 743.122.4932.88
Table 12.1. Distances and one-way latency floors between the Asia-Pacific sites of Box 12.1. Tokyo and Singapore are placed at city level, the others at street, neighbourhood or district level: errors of a few kilometres, tens of microseconds at most, against floors of milliseconds. Data: nw_asia.pair_rows().

12.3 Sydney

ASX moved its equities trading platform into the Australian Liquidity Centre, a data centre at Gore Hill on Sydney’s North Shore, in February 2012. Its page states the two rules of chapter 9 in one sentence: every customer is given “identical length cross connects” to the trading platform wherever it sits in the building, and the building is carrier-neutral, so that its customers can bring their own networks. Sydney is the most isolated of the region’s centres: 6296 km6296\,\mathrm{k}\mathrm{m} from Singapore (21.0 ms21.0\,\mathrm{m}\mathrm{s} in vacuum) and 7784 km7784\,\mathrm{k}\mathrm{m} from Tokyo. A trading firm in Sydney competes with other firms in the same building for ASX’s own markets, and with nobody nearby for anything else.

The Asia-Pacific venues from computed coordinates, each link labelled with its geodesic distance and light-time in vacuum. An equirectangular projection centred on 5° N, 120° E stretches shapes badly over these distances: it is for drawing only, and every number on the map is computed on the ellipsoid. Data: fig_asia.py on firm.geomap.
Figure 12.1. The Asia-Pacific venues from computed coordinates, each link labelled with its geodesic distance and light-time in vacuum. An equirectangular projection centred on 5° N, 120° E stretches shapes badly over these distances: it is for drawing only, and every number on the map is computed on the ellipsoid. Data: fig_asia.py on firm.geomap.

12.4 Mumbai and the colocation case

Definition 12.1 (Unicast dissemination)

Unicast dissemination is the distribution of market data by sending a separate copy of each message to each recipient, over a connection per recipient (typically TCP), so that one sender transmits the copies one after another.

NSE’s tick-by-tick feed, according to SEBI’s order, was disseminated over TCP from June 2010 in the futures and options segment, and multicast arrived only in April 2014 (November 2014 in the cash market). The order describes the design in two levels. A dissemination centre sent each batch of ticks to the distribution (POP) servers, one after another, in the order in which the servers had logged in that day. Each POP server ran three sender processes, called ports, and each port sent to its own list of members, one after another, in the order in which the members had logged in. A member who logged in first, on a port of a server that had logged in first, was first in both queues; a member on a lightly loaded server, such as a backup server meant for business continuity, had fewer members ahead of it.

The two-level unicast design of NSE’s TCP tick-by-tick feed as SEBI’s 2019 order describes it, schematically: the centre sends to its distribution servers in their login order, each server’s ports send to their members in the members’ login order. Multicast replaces both queues with one copy that the network replicates.
Figure 12.2. The two-level unicast design of NSE’s TCP tick-by-tick feed as SEBI’s 2019 order describes it, schematically: the centre sends to its distribution servers in their login order, each server’s ports send to their members in the members’ login order. Multicast replaces both queues with one copy that the network replicates.

Proposition 12.2 (Sequential unicast)

If the centre spends c0c_0 per copy to a server and a port spends cc per copy to a member (times a factor σs\sigma_s for a slower server ss), the member at login rank rr (r=1,2,…r = 1, 2, \dots) on a port of the server that ranks qq in the centre’s order receives a tick after

t(q,r)=q c0+r c σs+ε,t(q, r) = q\,c_0 + r\,c\,\sigma_s + \varepsilon,

with ε\varepsilon a small random delay. With mm members per port, the median member waits about c m/2c\,m/2 more than the first on the same port, whatever the network.

Proof. The centre’s copies leave one after another, so the qq-th server receives the tick after q c0q\,c_0; the port then sends rr copies before the rr-th member’s. The median rank on a port of mm members is about m/2m/2. ∎

Definition 12.3 (Dissemination fairness)

Dissemination fairness is the property of a market-data distribution that recipients in the same service receive each message at the same time, up to a spread that does not depend on who they are: measured by the spread of receive times for one message and by whether the order of recipients persists from one message to the next.

SEBI’s circular of May 2015 put the rule in regulatory form: exchanges must give co-located members “fair and equal access to facilities and data feeds”, must ensure that they “experience similar latency with respect to exchange provided infrastructure”, and must publish quarterly latency reports. The definition has two parts because the case had two. The spread says how much faster the first recipient is than the last. The persistence says whether it is always the same one: a random order with a large spread gives everyone a turn at being first; a fixed order gives one member every race.

def unicast_us(servers, c_centre=5.0, c_send=10.0, jitter=1.0, rng=None, shuffle=False):
    """Receive time of one tick: the centre's copy to each server in server order, then each
    port's sends in login order. shuffle=True redraws both orders for this tick (a randomiser)."""
    rng = rng or np.random.default_rng(0)
    out = {}
    order = list(range(len(servers)))
    if shuffle:
        rng.shuffle(order)
    for q, i in enumerate(order):
        s = servers[i]
        at_server = (q + 1) * c_centre
        for p, n in enumerate(s.ports):
            ranks = rng.permutation(n) if shuffle else np.arange(n)
            noise = _noise(rng, jitter, n)
            for r in range(n):
                slot = int(ranks[r])
                out[Member(s.name, p, r)] = at_server + (slot + 1) * c_send * s.speed + noise[r]
    return out
Listing 12.1. Two-level unicast dissemination: the centre’s copies to the servers in server order, each port’s copies to its members in login order, and the randomiser that redraws both orders for each tick. code/firm/dissem/firm_dissem.py
Simulation, not a measurement of any venue: mean receive delay of a tick by the member’s login rank on its port, for the four busy servers of the model (three ports of ten members each; 5\, µ s per copy at the centre, 10\, µ s per copy at a port, exponential jitter of mean 1\, µ s; 200 ticks). Each member’s delay is fixed by two login orders. Data: fig_asia.py, nw_asia.rank_curve().
Figure 12.3. Simulation, not a measurement of any venue: mean receive delay of a tick by the member’s login rank on its port, for the four busy servers of the model (three ports of ten members each; 5 µs5\,\text{µ}\mathrm{s} per copy at the centre, 10 µs10\,\text{µ}\mathrm{s} per copy at a port, exponential jitter of mean 1 µs1\,\text{µ}\mathrm{s}; 200 ticks). Each member’s delay is fixed by two login orders. Data: fig_asia.py, nw_asia.rank_curve().

Figure 12.3 and Table 12.2 run the model with parameters chosen for illustration, not taken from the order. Under plain unicast, the first member receives a tick after 16 µs16\,\text{µ}\mathrm{s} and the median member after 66 µs66\,\text{µ}\mathrm{s}; the order is the same tick after tick (a rank correlation of 1.00), so the member who was first on one tick beats the median member on every later one. A randomiser, which the order says NSE had developed in 2011 but not implemented in this feed’s dissemination, redraws the order for every tick: the spread does not change, but the rank correlation falls to 0.07. It still leaves the lightly loaded server: in the model the first member of a randomised tick is usually one of the secondary server’s six, and it beats the median member 88% of the time. Closing the secondary to normal traffic brings that to 51%, a coin toss; multicast shrinks the spread itself from about 108 µs108\,\text{µ}\mathrm{s} to the jitter.

DesignFirstMedianSpreadRankFirst beats
(µs\text{µ}\mathrm{s})(µs\text{µ}\mathrm{s})(µs\text{µ}\mathrm{s})correlationmedian
Unicast, fixed login order16.065.6107.71.00100%
Unicast, randomised15.170.7110.20.0788%
Unicast, randomised, no secondary15.269.0106.90.0151%
Multicast10.010.78.4–50%
Table 12.2. Simulation of four dissemination designs (the parameters of Figure 12.3; 126 members, of whom six on the secondary server, which the fourth design closes): one tick’s first, median and spread of receive times, the rank correlation between consecutive ticks, and how often the member first on one tick beats the median member of that tick over the next 200 ticks, both reacting in 20 µs20\,\text{µ}\mathrm{s} with a standard deviation of 5 µs5\,\text{µ}\mathrm{s}. Data: nw_asia.scenarios().
    out = {}
    for name, kind, shuffle, topo in DESIGNS:
        rng = np.random.default_rng(seed)
        t0 = _tick(kind, shuffle, rng, topo)
        a, b = _first_and_median(t0)
        wins = [fd.race_win(_tick(kind, shuffle, rng, topo), a, b, n=200, seed=k) for k in range(ticks)]
        stab = fd.rank_stability(topo, seed=seed, shuffle=shuffle, **PARAMS) if kind == "u" else None
        out[name] = {**fd.fairness(t0), "stability": stab, "win_first": float(np.mean(wins))}
    return out
Listing 12.2. Each design against the two parts of dissemination fairness: one tick’s spread, and whether the first member stays first. code/networks/12-the-asia-pacific-map/python/nw_asia.py

As of September 2026 — The NSE co-location case

Complaints to SEBI in 2015; SEBI’s order of 30 April 2019 directing NSE to disgorge 624.89 crore rupees with interest at 12% a year from 1 April 2014; the Securities Appellate Tribunal’s later ruling setting the disgorgement aside, which SEBI appealed; SEBI’s acceptance in July 2026 of NSE’s proposals to settle the co-location and dark-fibre matters for about 1 492 crore rupees (about 1 224 crore for co-location); and the Supreme Court’s order of 18 September 2026 allowing the settlement and closing SEBI’s appeals.

The lesson for a trading firm is not only historical. Wherever a venue or a vendor distributes data over one connection per client (a TCP feed, a websocket stream in chapter 20, a cloud relay in chapter 16), the order of the copies is a latency that no cable can fix, and the questions of this section apply: in what order are the copies sent, does the order change, and who sits on the quieter server.

12.5 Onshore China and its restrictions

China’s securities regulator has regulated co-location as a question of fairness. Its Administrative Rules for Program Trading in the Securities Market, issued in May 2024 and in force from 8 October 2024, require an exchange that offers co-location to follow the principles of “safety, fairness and reasonableness” and to allocate the resources fairly, and brokers to keep trading fair between their clients; the exchanges’ accompanying notice singles out for monitoring accounts that reach 300 orders or cancellations a second, or 20 000 in a day. A consultation of April 2023 on trading-server co-location proposed that exchanges manage co-location in dedicated areas and keep the communication latency from those areas to the front-end processors of the core trading system consistent: the equal-cable rule of chapter 9, written as a latency requirement.

Remark 12.4 (What the map leaves out)

The chapter does not place the mainland Chinese exchanges’ buildings on the map: their co-location is reached through brokers, under the rules above, and the site table would carry only a city. Chapters 22 to 26 add venues by asset class, with the same rule: no row without a source, and a precision note when the source gives only a city.

Method 12.5 (Auditing a venue’s dissemination design)

  1. Find out how the feed is delivered in co-location: multicast, unicast (TCP), or both, as SGX will offer on its new platform.
  2. If unicast, ask in what order copies are sent (by login, by connection, randomised per message), how many recipients share a sender, and whether some servers carry fewer recipients.
  3. Measure: timestamp the same messages on several connections and servers (chapter 5), compute the spread and the rank correlation between messages.
  4. Compare with the venue’s published latency reports and fairness commitments; report a persistent order to the venue.

12.6 Tutorial: dissemination order

Goal. Extend the site table to Asia, then simulate unicast and multicast dissemination and measure their fairness. End state: Figures 12.1, 12.3 and 12.4 and Tables 12.1 and 12.2.

  1. Sites. Five rows in data/networks/sites.csv, each with its precision in its name; nw_asia.pair_rows() computes Table 12.1.
  2. Topology. nw_asia.topology(m) builds four servers of three ports of mm members and a secondary server of three ports of two; the costs are in PARAMS.
  3. One tick. firm_dissem.unicast_us (Listing 12.1) and multicast_us give every member’s receive time; fairness summarises them.
  4. Many ticks. rank_stability and race_win measure persistence and its value; scenarios() (Listing 12.2) fills Table 12.2.

What to change next. Give the secondary server the same load as the others; halve the per-copy cost; put 20 members on each port and check Proposition 12.2.

Simulation: one tick’s receive delays, members sorted from first to last, under three designs of . Randomising changes who is where on the curve, not the curve; multicast flattens it. Data: fig_asia.py.
Figure 12.4. Simulation: one tick’s receive delays, members sorted from first to last, under three designs of Table 12.2. Randomising changes who is where on the curve, not the curve; multicast flattens it. Data: fig_asia.py.

12.7 Build: the dissemination model

Purpose. A model of a venue’s market-data distribution, to audit a documented design (chapter 22) and to explain a measured spread between connections.

Interface. firm_dissem: Server(name, ports, speed), Member(server, port, rank), members, unicast_us(servers, c_centre, c_send, jitter, rng, shuffle), multicast_us, fairness, rank_stability, race_win.

Rules. Every cost is a parameter and every output is labelled a simulation; the model reproduces the documented order of sending, not a venue’s measured latency.

Acceptance tests. code/firm/dissem/tests/: receive times by hand for a small topology, multicast flat, a fixed order stable and a randomised one not, and the race probabilities at 0 and 50 microseconds.

Stretch. TCP’s own effects (a slow receiver’s window stalling its port, retransmissions); a switch that replicates multicast port by port.

Sources and further reading

  • SEBI, Order in the matter of NSE colocation, 30 April 2019; SEBI circular CIR/MRD/DP/07/2015 on co-location and proximity hosting, 13 May 2015; Business Standard, 18 September 2026, on the Supreme Court’s order.
  • JPX, connectivity services; HKEX, hosting services; SGX, Iris-ST FAQs (July 2026); ASX, Australian Liquidity Centre; NSE, co-location capacity release (2025).
  • CSRC, Administrative Rules for Program Trading in the Securities Market (Trial), 2024, and the 2023 consultation on trading-server co-location (as summarised by JunHe).

12.8 Exercises

Exercise 12.1 ★

What is the one-way latency floor between Singapore and Sydney in vacuum and in fibre?

Solution

Solution of Exercise 12.1.

Over 6296.4 km6296.4\,\mathrm{k}\mathrm{m}: 21.00 ms21.00\,\mathrm{m}\mathrm{s} in vacuum and 30.71 ms30.71\,\mathrm{m}\mathrm{s} in straight fibre, one way.

Exercise 12.2 ★

Using Proposition 12.2 with c=10 µsc = 10\,\text{µ}\mathrm{s}, how much later than the first member does the tenth member on the same port receive a tick?

Solution

Solution of Exercise 12.2.

Nine copies later: 9×10=90 µs9 \times 10 = 90\,\text{µ}\mathrm{s} (105 against 15 µs15\,\text{µ}\mathrm{s} on the first server’s port, without jitter).

Exercise 12.3 ★

Why does a venue’s unpublished building address matter little for Tokyo–Hong Kong, and a great deal inside a data centre?

Solution

Solution of Exercise 12.3.

Between Tokyo and Hong Kong the floor is 9.6 ms9.6\,\mathrm{m}\mathrm{s}; placing Tokyo within its city moves it by tens of microseconds, under 1%. Inside a data centre the competition is over nanoseconds to microseconds, so a building’s exact position, and within it the cable lengths, decide the race.

Exercise 12.4 ★★

A randomiser redraws the order of copies for every tick. Why does it not reduce the spread, and what does it change?

Solution

Solution of Exercise 12.4.

The sender still sends one copy after another at the same cost, so the first and last copies are as far apart as before; what changes is who receives which copy. A fixed order gives the same member the first copy on every tick; a random one gives each member the first copy on some ticks and the last on others, so no one has a persistent advantage (rank correlation near zero).

Exercise 12.5 ★★

In the model, why does the first member of a randomised tick usually sit on the secondary server?

Solution

Solution of Exercise 12.5.

Its ports have two members each instead of ten, so even in last place in the centre’s order its members receive the tick after 5×5+105 \times 5 + 10 to 5×5+205 \times 5 + 20, that is 35 to 45 µs45\,\text{µ}\mathrm{s}, ahead of most members of busy servers whatever the shuffle. A randomiser removes the advantage of logging in first, not the advantage of being on a quieter server: SEBI’s order treats the secondary servers as a separate issue for that reason.

Exercise 12.6 ★★

SGX will offer ITCH over both TCP and multicast in co-location. Which would you use for a latency-sensitive strategy, and what would you keep the other for?

Solution

Solution of Exercise 12.6.

Multicast for the strategy: every co-located receiver gets the same copy at the same time, up to the switches’ replication and its own cable. TCP for recovery and for places where multicast does not reach (a disaster-recovery site, a remote office); the FAQs say the secondary data centre’s engine is reached over TCP.

Exercise 12.7 ★★★

Coding. Compute the first member’s advantage over the median member for 2, 5, 10 and 20 members per port, and compare with Proposition 12.2.

Solution

Solution of Exercise 12.7.

first_vs_median(m) gives 15.5, 28.5, 50.4 and 100.5 µs100.5\,\text{µ}\mathrm{s} for m=2,5,10,20m = 2, 5, 10, 20, against c m/2=10c\,m/2 = 10, 25, 50 and 100 µs100\,\text{µ}\mathrm{s}. The proposition captures the growth; the small excess at low mm comes from the median member’s server lying later in the centre’s order, a few copies of 5 µs5\,\text{µ}\mathrm{s}.

Exercise 12.8 ★★★

Find the flaw. “All co-located members had cables of the same length, so all received the tick-by-tick feed at the same time.”

Solution

Solution of Exercise 12.8.

Equal cables equalise the path from the server to each member, not the time at which the server sends each member its copy. Under sequential TCP dissemination the tenth member on a port received every tick nine sends after the first, however long its cable.

12.9 Problem: First to Log In

Problem 12.1

Weekend problem — the value of logging in first

A venue sends its tick-by-tick feed over TCP from four distribution servers, each with three ports of mm members, and a lightly loaded secondary server; the centre spends 5 µs5\,\text{µ}\mathrm{s} per copy to a server, a port 10 µs10\,\text{µ}\mathrm{s} per copy to a member. Members react to a tick in 20 µs20\,\text{µ}\mathrm{s} on average (standard deviation 5 µs5\,\text{µ}\mathrm{s}).

Part I — One port.

  1. With m=10m = 10, when do the first and the last member of the first server’s first port receive a tick?
  2. What does the median member of that port wait?
  3. How does that change on the fourth server in the centre’s order?
  4. Which member of the whole topology receives first, and which last?

Part II — The advantage.

  1. From the model, what is the first member’s advantage over the median member for m=2,5,10,20m = 2, 5, 10, 20?
  2. Compare with Proposition 12.2.
  3. How often does the first member beat the median member to the engine, tick after tick?
  4. How large is the advantage against a race decided by a few microseconds (One Quant Book 11)?

Part III — The remedies.

  1. What does a randomiser do to the spread, the rank correlation and the persistent win rate?
  2. What does closing the secondary server to normal traffic add?
  3. What does multicast do?
  4. Which remedy would you ask the venue for, and why?

Part IV — The verdict.

  1. State the named result: the first member’s advantage over the median member with ten members per port, with and without multicast.
  2. Which of the model’s parameters are facts from SEBI’s order, and which are assumptions?
  3. How would you measure the real spread on a venue’s feed?
  4. Why does the 2015 circular ask for similar latency with respect to exchange-provided infrastructure, rather than equal cables?
  5. How does China’s 2023 consultation phrase the same rule?
  6. Where else does one-copy-per-client distribution appear in this book?
  7. What is the difference between a latency advantage from a shorter path and one from a sending order?
  8. In one sentence: why did logging in first matter?
Solution

Solution of Problem 12.1.

Part I.

  1. First after 5+10=15 µs5 + 10 = 15\,\text{µ}\mathrm{s}, last after 5+100=105 µs5 + 100 = 105\,\text{µ}\mathrm{s} (plus jitter).
  2. The fifth and sixth members receive after 55 and 65 µs65\,\text{µ}\mathrm{s}: 60 µs60\,\text{µ}\mathrm{s} on average.
  3. Everything is 3×5=15 µs3 \times 5 = 15\,\text{µ}\mathrm{s} later: 30 for the first member, 120 for the last.
  4. First: the first member on each port of the first server, at 15 µs15\,\text{µ}\mathrm{s}; last: the tenth members of the fourth server, at 120 µs120\,\text{µ}\mathrm{s}.

Part II.

  1. 15.5, 28.5, 50.4 and 100.5 µs100.5\,\text{µ}\mathrm{s}.
  2. Close to c m/2c\,m/2: 10, 25, 50, 100; the excess is the centre’s order.
  3. Every time: 100% in the model, because the order never changes and 50 µs50\,\text{µ}\mathrm{s} dwarfs the reaction noise of 5 µs5\,\text{µ}\mathrm{s}.
  4. Decisive: races for stale quotes are decided by microseconds or less, so a member 50 µs50\,\text{µ}\mathrm{s} ahead wins nearly every one it enters.

Part III.

  1. The spread stays about 110 µs110\,\text{µ}\mathrm{s}; the rank correlation falls from 1.00 to 0.07; the persistent win rate falls only to 88%, because the quieter secondary server keeps its members ahead.
  2. The win rate falls to 51%: no one is persistently first.
  3. The spread falls to the jitter (8.4 µs8.4\,\text{µ}\mathrm{s} at the extremes, 0.7 µs0.7\,\text{µ}\mathrm{s} from first to median) and the win rate to 50%.
  4. Multicast: it removes both the persistence and the spread; the other two only redistribute a spread that remains.

Part IV.

  1. Named result: with ten members per port, the first member receives each tick about 50 µs50\,\text{µ}\mathrm{s} before the median member under sequential unicast, and about 0.7 µs0.7\,\text{µ}\mathrm{s} before under multicast; under unicast with a fixed order it wins every race against the median member.
  2. Facts: the two-level sequential order, three ports per server, login order as the sending order, a lightly loaded secondary server. Assumptions: the per-copy costs, the jitter, ten members per port, the reaction-time model.
  3. Timestamp the same messages on several connections, ports and servers with synchronised clocks (chapters 4 and 5); compute the spread of receive times per message and the rank correlation between messages.
  4. Because what matters is the time at which data reaches each member, which depends on the whole chain (sending order, server load, cables), not on one piece of it.
  5. As a requirement that the communication latency from the dedicated co-location areas to the front-end processors be consistent.
  6. Websocket streams from crypto venues (chapter 20), relays in public clouds (chapter 16), and any vendor fan-out over TCP.
  7. A shorter path is a fact of geography or engineering, open to anyone who pays for it; a sending order is a choice of the sender, which a fair venue must make independent of who the recipient is.
  8. Because the feed sent each tick to members one after another in the order they had connected, so the first to connect saw every tick first.

12.10 Interview questions

Interview question 12.1 ★ developer

What is the difference between unicast and multicast market data, and why do exchanges prefer multicast in co-location?

Solution

Solution of Interview question 12.1.

Unicast sends one copy per recipient over its own connection, one after another; multicast sends one copy to a group address that the network replicates. In co-location multicast gives every receiver the same copy at the same time and costs the venue one send per message, however many receivers.

What the interviewer is looking for: Sequential sends and their order; replication in switches; loss and recovery over a separate unicast channel.

Interview question 12.2 ★ developer, trader

Roughly how far apart are Tokyo, Hong Kong and Singapore in light-time, and what does that mean for cross-market strategies?

Solution

Solution of Interview question 12.2.

Tokyo–Hong Kong about 2900 km2900\,\mathrm{k}\mathrm{m} (9.6 ms9.6\,\mathrm{m}\mathrm{s} in vacuum, 14 ms14\,\mathrm{m}\mathrm{s} in fibre), Hong Kong–Singapore about 2600 km2600\,\mathrm{k}\mathrm{m} (8.6 ms8.6\,\mathrm{m}\mathrm{s}), Tokyo–Singapore about 5300 km5300\,\mathrm{k}\mathrm{m} (17.7 ms17.7\,\mathrm{m}\mathrm{s}). Cross-market strategies there work at millisecond horizons and must choose a home market for each engine.

What the interviewer is looking for: Order of magnitude right; one-way against round trip; the choice of where to put each engine.

Interview question 12.3 ★★ developer

You receive the same TCP feed on two connections and one is consistently 40 microseconds later. How do you find out why?

Solution

Solution of Interview question 12.3.

Check the capture first (both timestamped by synchronised hardware at the same point); then compare the two connections’ servers, ports and login times, and whether the lag is constant (a sending order), grows with bursts (a slow receiver or a queue) or appears after reconnection; reconnect in a different order and see whether the lag moves.

What the interviewer is looking for: Measurement before theory; sending order against queueing; an experiment that separates them.

Interview question 12.4 ★★ trader, researcher

What does “fair access” to market data mean, and how would you test a venue against it?

Solution

Solution of Interview question 12.4.

That every recipient of the same service gets each message at the same time up to a spread that does not depend on who it is. Test it by timestamping the same messages on several connections and checking the spread and whether the order of recipients persists.

What the interviewer is looking for: Both parts: spread and persistence; the venue’s published latency reports; equal conditions within a service tier.

Interview question 12.5 ★★ developer

A vendor streams quotes to clients over websockets from one server. Who receives each update first?

Solution

Solution of Interview question 12.5.

Whoever the server writes to first: usually the order of connection or of an internal list, possibly different per update; the last client waits for all the writes before it, and a slow client can delay the others if the server writes synchronously.

What the interviewer is looking for: Fan-out cost grows with the number of clients; sending order; per-client queues and slow consumers.

Interview question 12.6 ★★★ developer, researcher

Design a market-data distribution for a new venue that cannot favour anyone. What do you measure to prove it?

Solution

Solution of Interview question 12.6.

Multicast in co-location with equal-length cables from one replication point; one service tier per product with published conditions; a unicast recovery channel that is not faster than the multicast; per-message timestamps at every member hand-off, and published statistics of the spread and of the persistence of order.

What the interviewer is looking for: Design and evidence together; the recovery path as a hidden advantage; independent measurement.

Terms defined in this chapter

See all 2333 terms in the glossary