Blog
Blog
The same signal is not the same trade on every exchange. One venue fills cleanly. Another slips through three levels. The chart signal did not change, but the execution context did.
Execution context is the set of market conditions that determine the actual fill: spread, depth, queue, latency, order flow, and venue-specific liquidity. Traders who ignore it turn a signal into a fantasy price.
This is the gap between research and live trading. The model says enter. The venue decides what that entry costs.
The same signal fills differently by venue.
Most backtests treat the signal price as if it were tradable. A candle closes at 100. The strategy enters at 100. The spreadsheet looks clean.
Live trading is messier. If the best ask is 100.05 when your order reaches the exchange, a market buy does not fill at 100. If the ask has only small size and your order is larger, the average fill is worse again. If other traders respond to the same signal first, the book may move before your order arrives.
The signal marks a decision point. It does not guarantee an execution price.
This is why candle-only research breaks down below slower timeframes. The candle records where price went. It does not record whether your size could have filled there.
Crypto pairs with the same symbol are not identical execution environments.
BTC/USDT on one venue can have deeper top-of-book liquidity, tighter spread, and faster quote refresh. Another venue can show similar candles but weaker depth and more fragile liquidity. A strategy that appears venue-neutral in OHLCV data becomes venue-specific once fills matter.
Consider an illustrative setup. A breakout signal fires at the same time on two venues. Venue A has 15 BTC available within 2 basis points on the ask. Venue B has 3 BTC available within 2 basis points and the next levels are thin. A 1 BTC order may fill similarly on both. A 10 BTC order will not.
The signal is shared. The fill is local.
Backtests often apply a fixed slippage assumption: 5 basis points, 10 basis points, or some other neat number. That is convenient. It is also usually false.
Slippage changes with depth, volatility, spread, and order size. It also changes with other participants' behaviour. A market that absorbs 50,000 dollars cleanly at noon may punish the same order during a thin weekend session.
Kyle's Lambda exists because price impact is not constant. It estimates how much price moves per unit of signed order flow. When Lambda rises, the same order size costs more. When Lambda falls, the market absorbs size more easily.
Fixed slippage assumptions hide the exact variable that decides whether a strategy survives live execution.
Depth tells you what is visible. Flow tells you what is active.
If your buy signal fires while sellers are aggressively hitting bids, waiting buyers may get better prices, but market buyers cross into pressure. If your buy signal fires while buyers are already lifting offers, you may pay more because the available asks are being consumed ahead of you.
This is where Order Flow Imbalance helps. It does not guarantee direction. It tells you whether current aggression supports or fights your intended execution.
The same directional signal can therefore have different execution quality depending on immediate flow. A good idea entered into bad flow can become a bad fill.
Latency does not matter only to high-frequency traders. It matters whenever the book changes between decision and arrival.
If your data is stale by 500 milliseconds during a quiet market, little may change. During a fast move, 500 milliseconds is enough for the top of book to disappear. Your system thinks it is crossing one spread. The exchange fills it against a different book.
This is not a moral argument for speed races. Most traders do not need microsecond infrastructure. They do need to know whether their data and execution loop are slow enough to make the observed book unreliable.
The shorter the signal horizon, the more latency belongs in the risk budget.
Free OHLCV data gives you the clean part: historical prices. Execution context lives in the part it omits.
No spread at decision time. No depth at intended size. No order flow before arrival. No venue comparison. No record of whether the book changed between signal and fill.
That is why the problem with free crypto data is not only data cleanliness. It is that the missing fields are exactly the fields needed to estimate live trading cost.
A strategy can be directionally right and still lose money if it pays too much to enter and exit.
Execution context turns an abstract signal into a tradable event.
Before judging a signal, separate signal quality from fill quality. The signal asks whether the trade idea has merit. Execution context asks whether the market will let you express that idea at a tolerable cost.
The risk-aware conclusion is direct: a backtest without venue-specific execution context is not testing the trade you will place. It is testing the price you wish you could get.
Execution context is the live market state around the trade: spread, depth, order flow, venue behavior, and latency between signal and fill. It is what determines whether a good idea can be expressed at an acceptable cost.
Because books differ. Spread, available size, aggressor flow, and update speed are not uniform across exchanges. One venue can absorb the order cleanly while another slips through thin levels.
Because most backtests use price prints without live book conditions. They do not know what depth existed, whether the spread widened, or whether the book changed between signal and order entry. That is why data quality for crypto signals and liquidity before you trade are not side topics. They are part of the trade.