If you subscribe to Kraken's WebSocket v2 ticker channel and leave the options at their defaults, the price you hold for a quiet pair can stay unchanged for minutes.
To be precise about what this is and is not: the connection is fine, other symbols keep updating, and the order book channel keeps delivering. What stops arriving is the ticker update for that symbol. This is a property of what triggers a ticker message, not evidence that the market data itself stopped.
We are describing what we observed in our own implementation with the default subscription, not asserting a fault on the venue's side.
1. What we saw
Our stall monitor watches every symbol in the active universe and raises a warning when the price and both sides of the quote we are holding stay identical for an extended period. On 2026-08-09 it produced these:
| Time (UTC) | Venue | Symbol | No update for |
|---|
| 17:20:20 | Kraken spot | PAXG-USD | 136s |
| 17:25:20 | Kraken spot | PAXG-USD | 436s |
| 19:19:36 | Kraken futures | PF_BCHUSD | 147s |
In each case the values we held were intact and plausible — PAXG-USD sat at 4352.16 with a bid of 4352.15 and an ask of 4352.16. They simply did not change. Both symbols were in the active universe at the time, so a strategy could have been making decisions on a level-1 price that had not been refreshed for minutes.
2. What appears to explain it
The ticker channel accepts an event_trigger option. Under the default, a ticker message is emitted when a trade prints. On a liquid pair that is effectively continuous. On a quiet pair, trades can be minutes apart, and so the ticker is minutes apart — while the book itself may still be moving.
That is a reasonable design: a trade-triggered ticker is exactly what you want if you are tracking last-traded price. It is not what most people assume when they read the field as "the current quote".
3. What we changed
We now subscribe the ticker channel with event_trigger set to bbo, which emits when the best bid or offer changes. After that change, our level-1 freshness tracked the book channel, and the stall warnings stopped appearing for those symbols.
Two related habits we would suggest regardless of venue:
- Subscribe trades without the initial snapshot if you compute per-interval volume. A snapshot of historical trades arriving at subscription time will otherwise be counted into the current interval.
- Keep a freshness monitor independent of the feed. Ours only surfaced this because it compares wall-clock time against last-change time per symbol, rather than trusting that data is arriving.
4. Why this matters more than it looks
A stale value does not raise an error. It produces a number, and the number is wrong in a specific way: it is the last price at which somebody traded, which is exactly the number a naive strategy trusts most. Position sizing, spread filters and stop placement all read it. For a 436-second gap on a symbol in the active universe, that is seven minutes of decisions made on a price that may no longer be available.
Conclusion
Before you trust a level-1 price, find out what makes it update. On the ticker channel we were using, the default trigger is a trade rather than a quote change, and on quiet markets that is the difference between a current price and one that is several minutes old.