Guides · 11 min read

A Stale Feed Looks Exactly Like a Calm Market: Monitoring Trading Infrastructure in Real Time

The VisualHFT Infrastructure Monitoring dashboard running live: feed message rates and sparklines moving, network latency percentiles refreshing, the CPU gauge redrawing, and the order-book event and latency counters changing

A market-data feed that stops does not raise an error.

Every number downstream of it, your book, your signals, your risk, is computed from messages that arrived. When messages stop arriving, those numbers do not go wrong. They go stale, and a stale number looks exactly like a calm market. Nothing throws. Nothing turns red. The dashboard shows a quiet book, and quiet books are common.

That is the defining property of trading-infrastructure failure: it almost never announces itself as an infrastructure failure. It arrives disguised as a market observation, and the instinctive read is the wrong one.

The VisualHFT Infrastructure Monitoring dashboard running live: feed rates, sparklines, network percentiles and the order-book counters all changing at once

Six monitoring plugins on one screen, live: feed health per watched pair, network path quality, host counters, and the exchange-side latency and event counters.

Four failures that wear a disguise

The quiet book that is not quiet. The feed slows and then stops. There is no exception to catch, because a socket that delivers nothing is not an error condition, it is just a socket delivering nothing. Meanwhile every study you run keeps computing on the last messages it received. If nobody is measuring inter-message silence, the first person to notice is usually the one asking why the last hour of fills does not match the book they were watching.

The latency with two suspects. A venue starts looking slow. Feed rates sag, the book ages. The problem is that a venue publishing late and a network path degrading produce the same symptom on every consumer you have, and the two have completely different responses: one is a venue problem you report, the other is a network problem you fix. Without a measurement that separates them, the argument about which one it is takes longer than either fix.

The book that is wrong rather than slow. A dropped delta, a frame applied out of order, a resync that never finished. The book in memory stops being a faithful picture of the venue, and everything computed from it is now confidently wrong rather than stale. The tell is momentary impossibility, a best bid above a best ask, and it is invisible unless something is counting exactly that.

The overnight host failure. Memory creeping up, a disk quietly filling, a CPU pinned by something that is not you. These are slow, monotonic, and completely visible hours before they become an outage. They are also the failures most often diagnosed in the morning as “the venue was slow last night,” because host symptoms surface first as latency.

The common thread: in every case the infrastructure question and the market question share a symptom. The job of infrastructure monitoring on a trading desk is not to collect metrics. It is to separate those two questions fast.

The useful split: which side of the wire

The first triage question is not what broke. It is which side of the wire did it break on: the machines you run, or the venue connection you consume. Everything below follows from making that split measurable.

Measure feed liveness against a learned baseline

A raw message rate is not enough, because “normal” differs by venue, symbol, and hour. The useful signals are relative:

  • A burst is the current one-second rate exceeding a multiple of a rolling baseline, an exponential moving average over a configurable window (60 seconds by default, multiplier 3.0). One detail matters more than it looks: the comparison runs against the previous average, before the current sample is folded in, so a single large tick cannot raise the baseline enough to hide itself.
  • A gap is inter-message silence exceeding a threshold (5 seconds by default). The higher-value signal is the warning at half that threshold: “approaching a gap” is the earliest moment you can tell a feed is slowing down, and it arrives before the gap does. That is the state worth alerting on.

Three Data Feeds Monitoring cards updating live: each message rate changing every second, the sparklines advancing, and the fleet strip holding at three healthy feeds and no gaps

Watching feeds side by side is what makes the diagnosis fast. Every card runs on the same machine, the same link, the same process. When one venue gaps while its neighbours keep moving, you have already ruled out your host, your network, and your build. That elimination is the whole point of a fleet view.

Measure the path itself, in percentiles of real probes

When a venue looks slow, the second suspect is the route to it. The measurement that settles it is active probing of the hop that actually matters to you, your exchange gateway or your colocated box, with the arithmetic done carefully: every individual probe round trip goes into the rolling window, and P50, P95 and P99 are computed over those raw samples. A single bad round trip inside a cycle shows up in P99 instead of being averaged away before it is measured. Jitter is tracked as an RFC 3550 moving average, loss as the percentage of a cycle’s probes that never came back, and TCP retransmits are read from the far end of the link.

A Network Performance card updating live: the P50 latency figure and its trend line refreshing each cycle, with the P50, P95, P99 and jitter figures changing underneath while packet loss holds at zero

The signature to learn: P99 rising while P50 holds flat is intermittent loss, not a route shift. Check packet loss and jitter before concluding the path got longer. And loss is usually a precursor rather than an event, which is why a rule on Packet Loss crossing 1% earns its keep.

Measure latency on the venue’s clock

Everything you decide is based on a book that was true a moment ago. Market-data latency is how long ago: the age of the book in front of you, measured against the venue’s own event timestamp carried in the stream, not against anything the receiving side measures about itself. Where a venue’s feed publishes no event timestamp, no market-latency figure is produced for it at all; nothing is fabricated from the local clock. And when no new sample arrives, the counter holds its last reading rather than spiking, so a briefly static figure means “no new sample”, not a stalled feed.

Two consequences are worth internalising. The figure includes the offset between your clock and the venue’s, so two venues that are genuinely equidistant can read differently, and a venue whose clock runs ahead of yours reads a flat 1µs. That flat reading means clock skew, not “instant”. Both effects point the same way: judge market latency as a trend against that venue’s own normal range, never as an absolute to compare across venues.

Read it alongside two companions and the ambiguity collapses:

Market latencyPing (REST round trip)Network P99Read it as
UpFlatFlatThe venue is publishing late. Nothing on your side to fix
UpUpUpYour path degraded. The venue is probably fine
UpFlatP99 up, P50 flatIntermittent loss. Check packet loss and jitter

The Market Latencies Stats counters updating live: market latency refreshing against the venue's clock and Ping reporting its REST round trip

Ping deserves one caveat: it is an HTTPS round trip to the venue’s REST endpoint, a different path from the market-data socket. Ping steady while market latency climbs means the market-data side specifically is falling behind. That asymmetry is information.

Measure what kind of messages, not just how many

A healthy message rate can still carry a broken book. Splitting the stream by event type answers questions a raw rate cannot:

  • Heavy adds and cancels with trades near zero is a market quoting at you rather than dealing with you.
  • Top-of-book changes collapsing while adds and cancels hold means the churn moved away from the touch.
  • A crossed book, best bid above best ask, is not a market condition you trade. On a single venue it means the book in memory is momentarily impossible: a dropped delta, an out-of-order frame, an unfinished resync. It is the one counter where any sustained reading at all is a correctness problem, which makes it the easiest alert you will ever write: greater than zero.

The Market Event Stats counters updating live against Kraken BTC/USD: adds, cancels, trades and top-of-book figures changing every interval

Watch the host with the same glance

The overnight failure is the cheapest one to prevent, precisely because it is slow. CPU, memory, disk, network, threads, IOPS and uptime per monitored server, Windows or Linux, local or remote, on the same screen as the feeds, means “is it the box?” gets ruled in or out in seconds instead of being the hypothesis you test last.

A Performance Counters card for a monitored server updating live: the CPU ring redrawing as load moves and the thread and IOPS figures changing each refresh

The highest-value rule on a trading host is also the least glamorous: memory usage crossing 90%, disk usage crossing 90%, wired to whatever pages you. It is the only rule that fires while you are not watching, which is exactly when this class of failure happens.

Alert on it, do not stare at it

None of this works as a screen someone is supposed to keep looking at. Every measurement above needs to feed a rule engine: when a metric crosses a condition, then raise an alert or POST to an endpoint. Two features separate rules that page usefully from rules that cry wolf: a time window, so “above the line” becomes “above the line for ten seconds” and one bad probe cycle pages nobody, and a per-action cooldown, so a flapping condition does not flood the endpoint on the other side.

This is what VisualHFT ships as one dashboard

Everything above is a description of VisualHFT’s Infrastructure Monitoring dashboard: a built-in layout hosting six study plugins, included in the installer and unlocked by a Core plan. Nothing extra to buy, nothing extra to install.

PluginWhat it watches
Data Feeds MonitoringPer-feed message rate, burst, gap and health for many venue and symbol pairs at once
Network Performance MonitoringICMP or SSH path quality per remote host: latency percentiles, loss, jitter, retransmits, bandwidth
Performance Counters Remote ServersCPU, memory, disk, network, threads, IOPS and uptime on each server you add
Market Event StatsOrder-book event rates: adds, updates, cancels, trades, top-of-book changes, crossed books
Market Latencies StatsMarket-data, execution and ping latency for a venue
Market Operational RatiosReconnections and connector errors for a venue

Two of the six watch your machines; four watch the venue connection. That is the which-side-of-the-wire split, built into the layout.

The full VisualHFT Infrastructure Monitoring dashboard: the three counter groups on the left, and the feed, network and server panels in the centre

Every metric the six plugins produce, feed gap durations, latency percentiles, host memory, crossed-book counts, is published to VisualHFT’s trigger engine, where a rule is a when (metric, operator, threshold, optional time window) and a then (in-app alert, or a REST POST whose body template substitutes placeholders — the rule name, condition, metric, value, threshold and timestamp — before it is sent). The starting rules we suggest for an infrastructure desk:

WhenWhy
Gap Duration Sec crosses above 5 on your primary feedKnow the moment a feed goes quiet
Latency P99 above your critical threshold for 10 secondsPath degradation, not a single bad probe
Packet Loss crosses above 1Loss is a precursor, not an event
Memory Usage crosses above 90 on the trading hostThe classic overnight failure
Recon greater than 0A venue is dropping your session

The trigger rule editor with the plugin picker open, listing Data Feeds Monitoring, Network Performance and Performance Counters alongside the other running studies

One workflow this enables deserves its own mention: qualifying a venue before you route to it. Connect the venue, add its pairs to the feed monitor, point the counter groups at it, and watch fifteen minutes of active hours for five things: a feed card that holds healthy without touching zero, a stable market-latency spread, reconnections and errors that stay flat, a crossed-book counter that never reports, and a trade counter that is actually non-zero. A book with quotes and no prints is not a venue you have finished testing.

The full write-up lives in the documentation, with every measurement defined, the settings and their accepted ranges, per-venue coverage notes, and the diagnostic playbook for each of the situations above:

Monitor your trading infrastructure

#VisualHFT #infrastructure-monitoring #market-data #feed-health #latency #network-performance #alerting #electronic-trading