Stop partial fills from breaking your automated futures strategy. Master fill logic to keep your risk controls and position sizing perfectly in sync.

Partial fill handling in automated futures trading happens when your order only gets partially executed at your requested price. A partial fill means you intended to buy or sell a set number of contracts, but only some filled. This guide covers how partial fills occur, why they matter for automated systems, and how to configure your fill logic and order management rules to handle them without manual intervention.
A partial fill occurs when only a portion of your order executes at the exchange. If you send a limit order to buy 4 ES contracts at 5,450.00, but only 2 contracts fill before the price moves away, you have a partial fill. The remaining 2 contracts sit unfilled or get canceled, depending on your order type and time-in-force settings.
Partial Fill: An order execution where fewer contracts fill than the total quantity submitted. In futures, this typically happens with limit orders when available liquidity at your price is insufficient to complete the full order.
Market orders rarely produce partial fills because they take whatever price is available. Limit orders are where the problem shows up. Your automated trading system submits an order at a specific price, and the matching engine at CME or another exchange fills what it can from the available order book depth. If 2 contracts are offered at your price but you wanted 4, you get 2 and the rest waits [1].
For manual traders, partial fills are annoying but manageable. You see the partial, decide what to do, and act. For an automated futures trading system, partial fills create a real problem. The system expected a full position. It got half. Now every downstream rule tied to that position, your stop-loss placement, your profit target, your position sizing math, is potentially wrong.
Partial fills happen because of a mismatch between your order size and available liquidity at your price level. Several specific conditions make them more common in automated futures trading.
Low-liquidity sessions. ES futures average roughly 1.5 million contracts daily during regular trading hours (RTH), but overnight (ETH) volume drops significantly [2]. If your automated system trades during the Asian or early European session, the order book is thinner. A 4-lot order that fills instantly at 9:45 AM ET might only partially fill at 2:00 AM ET.
Larger order sizes. Trading 1-2 contracts on ES or NQ rarely produces partial fills during RTH. Once you scale to 5, 10, or 20 contracts, you start consuming visible liquidity at a single price level. Thinner contracts like CL or GC have less depth, so partial fills show up at smaller sizes.
Fast-moving markets. During FOMC announcements, CPI releases, or NFP reports, liquidity evaporates momentarily. The order book thins out as market makers pull their quotes. Your automation fires an order at the exact moment when available contracts at your price are scarce.
Order Book Depth: The number of resting buy and sell orders at each price level on the exchange. Deeper order books mean more contracts available to fill your order at a given price. Shallow depth increases partial fill risk.
Order type matters. Limit orders are the primary source of partial fills. Stop-limit orders can also produce them once triggered. Market orders and stop-market orders generally fill completely, but at potentially worse prices. This is the core tradeoff: limit orders give you price control but risk partial fills, while market orders give you execution certainty but no price control.
Your automated system needs predefined rules for what happens when a partial fill occurs. Without them, you end up with orphaned positions, mismatched stops, or unintended risk exposure. Here are the main approaches traders use.
Keep the filled contracts and cancel the unfilled remainder. Your system then adjusts stop-loss and take-profit orders to match the actual position size. If you got 2 of 4 contracts, your stop covers 2 contracts, not 4. This approach works well when getting some exposure is better than none, but your automation rules need to scale protective orders dynamically.
Cancel the unfilled portion and resubmit the entire remaining quantity at the current market price or an adjusted limit price. This works when you need the full position size for your strategy math to hold. The risk is that the retry also partially fills, creating a loop. Set a maximum retry count (2-3 attempts) to prevent runaway order submissions.
If the partial fill is too small to be worth managing, cancel the remaining order and flatten the partial position. This makes sense when a 1-lot fill on a strategy designed for 4 lots creates a risk/reward ratio that doesn't justify the trade. The cost is a small loss from the round-trip on the partial.
Fill logic determines how your automated system responds to different execution outcomes. The right configuration depends on your strategy type, position size, and the instruments you trade.
Fill Logic: The programmed rules within an automated trading system that define how to process order execution confirmations, including full fills, partial fills, and rejections. Good fill logic prevents position sizing errors and orphaned orders.
Scalping depends on getting the full position at a specific price. A partial fill on a scalp changes the math enough that the trade may not be worth taking. Many scalpers configure their systems to cancel unfilled portions after 3-5 seconds and flatten the partial if less than 75% filled. The potential profit on a 2-tick scalp with 1 contract instead of 4 rarely justifies the risk.
Longer-hold strategies have more room to absorb partial fills. If you're targeting 20+ points on ES, getting 3 of 4 contracts still produces a meaningful trade. Configure your system to accept partials above a minimum threshold (50% of intended size) and scale your protective orders accordingly. You can also set the system to work the remaining contracts at a slightly wider limit price.
Bracket orders (entry + stop + target) get complicated with partial fills. If your entry partially fills, both the stop and target quantities must match the actual fill, not the intended fill. An automated trading system that sends a 4-lot stop when only 2 contracts filled creates an accidental short position when the stop triggers. This is one of the most common partial fill mistakes in automation.
Strategy TypeMinimum Fill ThresholdRecommended Action on PartialWait TimeScalping (1-5 min)75%+Cancel remainder, flatten if under threshold3-5 secondsDay Trading (intraday)50%+Accept partial, adjust brackets10-30 secondsSwing Trading25%+Accept partial, work remainder1-5 minutesMulti-leg Spread100%Cancel all legs if any partial5-10 seconds
Partial fills can quietly break your risk management if your system doesn't account for them. The downstream effects touch position sizing, daily loss limits, and trade-level risk calculations.
Position sizing errors. If your system calculates risk based on intended position size but only partial fills, your actual risk-per-trade drops below your target. That sounds like a good thing, but it skews your position sizing rules and reduces expected returns proportionally. Over hundreds of trades, consistently getting 60% fills when expecting 100% changes your strategy's performance profile.
Stop-loss mismatches. This is the dangerous one. Your system places an entry for 4 NQ contracts. 2 fill. If the stop-loss order still references 4 contracts, triggering it creates a net short position of 2 contracts instead of a flat position. On NQ, where each point is $20 per contract, an unintended 2-lot short can rack up losses fast.
Daily loss limit calculations. If your automation tracks daily P&L to enforce a daily loss limit, partial fills need to register correctly. An order intended as 4 lots that fills as 2 should report P&L based on 2 contracts, not 4. Prop firm traders face extra risk here since a miscalculated daily loss could trigger an account violation.
How to protect against these issues:
You can't fix what you can't see. Tracking partial fill frequency and impact tells you whether your order management approach works or needs adjustment.
Log every partial fill event with these data points: timestamp, instrument, intended quantity, filled quantity, fill price, time to fill, session (RTH vs. ETH), and market conditions (normal, pre-event, post-event). After 50-100 trades, patterns emerge. You might discover that 80% of your partial fills happen during the first 5 minutes of RTH, or that GC partial fills cluster around London open.
Platforms like ClearEdge Trading provide performance tracking that can log execution details including fill status. If your platform doesn't track this automatically, build a simple spreadsheet that captures fill ratios per trade. A healthy partial fill rate for limit orders in liquid markets during RTH is under 5% of orders. If you're seeing 15-20%, either your limit prices are too aggressive or you're trading during thin conditions.
For system monitoring, set alerts for partial fill events that exceed your threshold. If your system gets three consecutive partial fills, that's a signal that liquidity conditions have changed and you may want to pause automation or switch to market orders temporarily.
Rarely, but yes. In extremely thin markets or during flash events, a market order for a large quantity might sweep through multiple price levels without finding enough contracts at any single level. For standard-size orders on ES or NQ during RTH, market orders almost always fill completely.
If your entry partially fills, the stop-loss and take-profit quantities must match the actual fill. A system that doesn't adjust bracket quantities risks creating unintended positions when protective orders trigger. Always derive bracket quantities from the confirmed fill amount.
Market orders eliminate partial fill risk but introduce slippage risk. The right choice depends on your strategy. Scalpers who need exact entry prices may prefer limits and accept partial fill risk. Trend followers who care more about being in the trade may prefer market orders.
Partial fills can cause position sizing miscounts that affect daily loss limit calculations or max position size compliance. If your prop firm limits you to 2 contracts and a partial fill leaves an orphaned stop for more than your actual position, triggering it could violate rules. Reconcile positions after every fill event.
For limit orders on liquid contracts like ES and NQ during regular trading hours, a partial fill rate under 5% of total orders is normal. Rates above 10-15% suggest your limit prices are too far from the current market or you're trading during low-liquidity windows. Track your rate over at least 100 orders to get meaningful data.
Partial fill handling is one of those details in automated futures trading that doesn't seem important until it breaks your risk controls or leaves you with an unintended position. Every automated trading system that uses limit orders needs explicit rules for partial fills covering minimum fill thresholds, bracket order adjustments, retry logic, and position reconciliation.
Build your partial fill rules, test them in paper trading, and track fill ratios over time. For a broader look at order management and automation fundamentals, read our complete guide to automated futures trading.
Want to dig deeper? Read our complete guide to automated futures trading for more detailed setup instructions and strategies.
Disclaimer: This article is for educational purposes only. It is not trading advice. ClearEdge Trading executes trades based on your rules; it does not provide signals or recommendations.
Risk Warning: Futures trading involves substantial risk. You could lose more than your initial investment. Past performance does not guarantee future results. Only trade with capital you can afford to lose.
CFTC RULE 4.41: Hypothetical results have limitations and do not represent actual trading.
By: ClearEdge Trading Team | About
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Block quote
Ordered list
Unordered list
Bold text
Emphasis
Superscript
Subscript
Every week, we break down real strategies from traders with 100+ years of combined experience, so you can skip the line and trade without emotion.
