May 12, 2025

Partial Fills and the Fragility of Assumptions

Execution Without Closure

Execution doesn’t break in obvious ways. It fractures quietly — not when the order fails, but when it only half-succeeds. Partial fills seem benign. They register as progress. The trade is open. Something has executed. But the moment a system treats that outcome as complete, structure degrades. What follows often isn’t a loss in the traditional sense — it’s a mismatch between intent and position, invisible until too late.

In manual trading, the trader sees the fill size and adapts. In automated logic, the system assumes execution has occurred — or that it hasn’t. It doesn’t negotiate half-states well. Most routing scripts, position trackers, and conditional sequences rely on binary outcomes. Either the take-profit was filled, or it wasn’t. Either the stop triggered, or it’s still active. But exchanges don’t operate in absolutes. Orders fill in increments, especially under pressure, and platform APIs surface those events in different ways — sometimes as events, sometimes as states, often with delay.

On Binance, fill status updates propagate with speed under normal load. But during volatility spikes, especially in high-turnover pairs, fill notifications may lag behind book events. A take-profit marked as filled in the UI may still be completing on the backend. Reduce-only flags do not always protect in this context, particularly if the trader or the system has attached additional logic downstream. Bybit handles partial fills with more transparency in its derivatives engine, where execution reports are surfaced at the trade level, not just the order. But even there, timing gaps between fill confirmation and cancellation trigger can create edge cases.

Where Logic Breaks Without Failing

One of the more fragile assumptions in structured trading is that an order, once placed, is either active or not — and that a filled order is no longer a factor. Partial fills break this model. A stop-limit order that triggers partially, then stalls, leaves a remainder that still acts on price. A trailing stop that executes in stages may recalculate the trail based on reduced size, unintentionally tightening the condition for the next leg. These are not bugs. They’re the result of treating size as atomic when it’s divisible by design.

This creates operational drift. A position that was meant to close at a specific level now spans multiple layers of intent. Part of it is gone. Part of it lingers. Any attached logic — new orders, hedges, collateral movement — references a state that no longer reflects reality. Some systems compensate with reconciliation steps: they poll balances, match trade IDs, compare notional deltas. But most trading frontends and a surprising number of backends still assume execution is discrete.

In slow books, partial fills are expected. The trader sizes accordingly, tolerates the wait, and monitors residual risk. In fast books, partial fills are structural — they occur not from illiquidity, but from contention. When too many orders meet too few price levels, matching engines resolve them in sequence. A limit order inside the spread might fill 60% in the first pass, then stagnate as new liquidity disappears. If attached stop logic references the full original size, it now operates against a position that no longer exists in full.

Position Ghosts and False Resolution

This mismatch creates exposure where the system believes none remains. And exposure that isn’t visible is the kind that survives checks.

The only reliable method of handling partial fills is to assume they are likely, and that all downstream logic must operate on confirmed size, not intended size. This requires granular access to execution reports, careful state tracking, and layered cancellation logic that treats every remaining lot as independently active until explicitly cleared. It also requires accepting that no platform provides perfect atomicity under load.

What fails is not the order. It’s the assumption that execution equals resolution. Partial fills don’t break trades — they dissolve the boundary between what was planned and what actually exists. That’s where fragility lives. Not in what the system can’t see, but in what it falsely believes it already has.

About Axon Trade

Axon Trade provides advanced trading infrastructure for institutional and professional traders, offering high-performance FIX API connectivity, real-time market data, and smart order execution solutions. With a focus on low-latency trading and risk-aware decision-making, Axon Trade enables seamless access to multiple digital asset exchanges through a unified API.

Explore Axon Trade’s solutions:

Contact Us for more info.