Skip to content
Course contents
Why live results disappoint

Why retail cannot win on speed

Some strategies live or die on being milliseconds faster than everyone else, and that is a race retail traders structurally cannot win, because professional firms co-locate their machines beside the exchange. This chapter explains latency and co-location honestly, and draws the practical conclusion: do not build strategies whose edge is speed.

8 min readChapter 20 of 28
What you will learn
  • Explain latency and co-location and why they decide speed-based strategies
  • Recognise that retail infrastructure cannot compete on latency with professional firms
  • Choose strategy types whose edge does not depend on speed

There is a kind of trading that is a pure race: whoever sees a price change and reacts first wins, and everyone else loses. This is the world of high-frequency trading, and it is worth understanding for one reason above all, so that you never try to compete in it. Retail traders lose the speed race before it starts, not because they are less clever, but because of physics and money. This chapter explains why, and what to do about it: pick a different race.

Latency, and the professional's advantage

Some strategies live or die on milliseconds, a race retail cannot win because professional firms co-locate beside the exchange, so do not build an edge out of speed.
Some strategies live or die on milliseconds, a race retail cannot win because professional firms co-locate beside the exchange, so do not build an edge out of speed.

Latency is the time between something happening in the market and your program being able to act on it. Every step adds delay: your code deciding, the signal travelling over the internet to your broker, the broker passing it to the exchange, and the exchange sending a confirmation back. Add them up.

ExampleWhere the milliseconds go: retail versus a co-located professionalch20/latency_budget.py
# Where the milliseconds go for a retail order, versus a co-located professional
# whose server sits in the same building as the exchange. All figures are
# illustrative, meant to show the ORDER of magnitude, not exact values.
retail = {
    "your code decides":            5,
    "home internet to the broker":  30,
    "broker forwards to exchange":   5,
    "exchange matches, ack returns": 40,
}
colocated_ms = 0.2       # a co-located server: sub-millisecond round trip

retail_total = sum(retail.values())
print("Retail order, illustrative latency budget:")
for step, ms in retail.items():
    print(f"  {step:<32} {ms:>4} ms")
print(f"  {'TOTAL':<32} {retail_total:>4} ms")

print(f"\nCo-located professional round trip: about {colocated_ms} ms")
print(f"The professional is roughly {retail_total / colocated_ms:.0f} times faster.")
print("If a strategy's edge is being fastest, retail cannot win that race.")
print("Choose strategies whose edge does not depend on speed.")
Output
Retail order, illustrative latency budget:
  your code decides                   5 ms
  home internet to the broker        30 ms
  broker forwards to exchange         5 ms
  exchange matches, ack returns      40 ms
  TOTAL                              80 ms

Co-located professional round trip: about 0.2 ms
The professional is roughly 400 times faster.
If a strategy's edge is being fastest, retail cannot win that race.
Choose strategies whose edge does not depend on speed.

The illustrative budget shows a retail order taking on the order of 80 milliseconds round trip, most of it just the internet journey from a home connection. Now consider the professional. High-frequency firms pay to place their servers in the same building as the exchange's matching engine, a practice called co-location, so their signal travels metres instead of hundreds of kilometres. Their round trip is a fraction of a millisecond. In the example the professional is roughly 400 times faster, and the real gap can be larger. In a race decided by microseconds, being hundreds of times slower is not a disadvantage you can train away. It is a wall.

Do not enter a race you cannot win

The lesson is not to feel bad about this; it is to refuse the race. Any strategy whose edge is being faster than other participants, reacting to news in milliseconds, picking off quotes that have not yet updated, arbitraging tiny price differences before they close, is a strategy where you are the slow money, the one the fast firms make their profit from. Choose strategies where speed is irrelevant: ones that hold for hours, days, or weeks, that act on the close rather than the tick, that would work just as well if your order arrived a second or a minute late. There are many such strategies, and they are the only kind a retail algo trader should consider. The edge, if you have one, must come from a better idea held patiently, never from a faster finger.

What to carry forward

Latency is the delay between a market event and your reaction, and a retail setup is structurally slow, tens of milliseconds against the fraction of a millisecond a co-located professional achieves, hundreds of times the gap. You cannot close it with cleverness or effort, so do not enter any strategy that is really a speed race: news reactions, quote-picking, tiny arbitrages. Choose strategies whose edge is a patient idea that survives a slow fill, held over hours or days, acting on the close. The next chapter turns to a cost you can measure precisely and that automation quietly multiplies: the trading costs themselves, and the limit they place on how much you can trade.