Slippage & Partial Fills in Automated Trading
Learn how slippage and partial fills affect automated trading, then use limit controls, spread filters, timers, and paper trading to manage execution risk.
Marketing
Bottom Line
- Slippage is the difference between the signal price and the actual fill price, such as a $0.08 unfavorable slippage on a $50.00 stock buy order filling at $50.08.
- Partial fills occur when only part of an order executes, such as buying 35 out of 100 shares due to limited liquidity, affecting position sizing and strategy risk.
- Options often have wide bid-ask spreads, like a $0.30 spread on an option quoted at $1.00 bid and $1.30 ask, impacting execution costs and strategy performance.
- Futures markets can reprice rapidly during events, affecting order execution, with liquidity potentially disappearing between signal and execution.
- Limit orders set price boundaries for execution, reducing exposure to unfavorable fills but risking partial or no fills if liquidity is insufficient at the specified price.
A strategy can be right about direction and still lose money because its orders are filled at worse prices than expected, only partly executed, or completed after the opportunity has changed. In slippage partial fills automated trading, execution is not a minor operational detail, it is a core source of real-world performance risk. A backtest may assume instant fills at a clean midpoint, while live markets impose bid-ask spreads, changing liquidity, queue priority, latency, and sudden price movement.
This article explains why slippage occurs, how partial fills can distort position sizing and exit logic, and why these issues become especially important for fast-moving options, thinly traded contracts, and automated strategies that submit multiple linked orders. You will learn practical controls for setting limit prices, filtering wide spreads, handling fill timeouts, managing unfilled remainders, and preventing an intended trade from becoming an unintended exposure.
You will also see how paper trading and execution-aware testing can expose weaknesses before capital is at risk, helping turn a promising signal into a strategy that can survive actual market conditions.
What Slippage and Partial Fills Mean in Automated Trading
Slippage Is the Difference Between the Signal Price and the Fill Price
Slippage is the difference between the price implied by a trading signal and the actual price at which the broker executes the order. An alert may trigger when a stock trades at $50.00, but a market buy order may fill at $50.08. That $0.08 difference is unfavorable slippage for a long entry. Conversely, an order can occasionally receive a better-than-expected fill, such as a $49.96 execution after a $50.00 buy signal. That is favorable slippage.
Strategy planning should assume that slippage will usually be unfavorable. A backtest that enters exactly at the bar close, breakout level, or indicator value can overstate live performance if it does not account for the price actually available when the order reaches the market. The effect is especially important for short-term strategies, tight stop losses, high-turnover systems, and options contracts with modest volume.
- Fast-moving markets: Prices can move materially between signal generation and execution, particularly around news, market opens, earnings, and major economic releases.
- Thin liquidity: Fewer resting orders near the current price can force an order to execute at less favorable price levels.
- Wide bid-ask spreads: A buy order generally interacts with the ask, while a sell order generally interacts with the bid. A wide spread creates an immediate execution cost even when the underlying price is stable.
For example, an options signal may appear when a contract is quoted $2.00 bid and $2.20 ask. A backtest using a $2.10 midpoint may look reasonable, but an immediate buy may fill closer to $2.20. If the position is later sold near the bid, the spread alone can materially reduce the trade's realized return.
Partial Fills Occur When Available Liquidity Does Not Cover the Entire Order
A partial fill occurs when only part of an order's requested quantity executes at that time. If an automated strategy submits an order to buy 100 shares and only 35 shares are available at the executable price, the broker may fill 35 shares while the remaining 65 shares remain unfilled, are filled later, or do not fill at all, depending on the order instructions and market conditions.
Partial fills are common when order size is large relative to available liquidity, when trading less-liquid stocks or options contracts, or when attempting to trade near a specific price. An order for 20 option contracts may encounter only five contracts offered at the current ask, with additional contracts available at progressively higher prices.
A partial fill is not necessarily an error. It is a normal execution outcome. Strategy design and testing should account for the possibility that the actual position size differs from the requested size, especially when sizing trades with Percent of equity or Risk percent.1 Traders should also evaluate whether reduced size, delayed fills, or unfilled exits would change the strategy's risk profile.
Signal Quality and Execution Quality Are Different Measurements
A profitable backtest signal does not guarantee an equivalent live result. Signal quality measures whether the entry and exit logic identifies useful market opportunities. Execution quality measures how closely actual fills match the assumptions used by that logic.
A strategy can correctly identify a breakout and still underperform in live trading if the entry fills above the expected level, the exit fills below the expected level, a limit order does not fill, or only part of the intended position executes. These differences can turn a small modeled profit into a small realized loss, particularly when the strategy targets modest moves.
Automation delivers instructions consistently after a qualifying signal, but market conditions and broker routing determine whether, when, and at what price the order fills. Test assumptions should therefore include realistic bid-ask spreads, estimated unfavorable slippage, incomplete fills, and missed trades rather than treating every signal price as a guaranteed execution price.
Why Options and Futures Are Especially Sensitive
Options Can Have Wide Spreads and Uneven Liquidity
Options often have materially wider bid-ask spreads than highly liquid stocks or major futures contracts. Liquidity is not uniform across an options chain: it can vary sharply by expiration, strike, moneyness, time of day, and current market conditions.2 A near-the-money contract expiring this week may trade actively, while a farther out-of-the-money strike or a longer-dated expiration may have limited displayed size and a much wider spread.
This matters because the price shown by an alert is not necessarily the price available for execution. For example, an option quoted at a $1.00 bid and $1.30 ask has a $0.30 spread. A buy order that fills near $1.30 can appear substantially worse than an alert based on a last trade near $1.15, even if the underlying stock has barely moved. The difference may reflect the spread and available liquidity, not a dramatic change in the contract's theoretical value.
- Review bid-ask spreads and displayed size for the specific expiration and strike your automation will trade.
- Avoid assuming that liquidity in one strike applies to every contract in the chain.
- Be especially cautious near the open, near expiration, and during volatility events, when option quotes can widen or update unevenly.
Futures Can Move Quickly Around Active Market Events
Futures markets can reprice rapidly during active sessions, market opens, scheduled economic releases, and abrupt changes in order flow. A signal may be generated at one price, but the available bid or offer can change before the order reaches the market. This is particularly relevant in contracts reacting to reports such as employment data, inflation releases, central-bank decisions, or inventory figures.
Speed does not eliminate slippage. Even when an automated order is submitted promptly, liquidity can disappear or shift between the alert and execution. A futures contract may show several contracts available at one price when the signal occurs, then show fewer contracts or a different price moments later as other market participants trade against that liquidity.
Before automating a futures strategy, account for both the contract's normal spread and its expected depth at your intended trading time. A quantity that is reasonable in a highly active index future during regular hours may be less reliable in a thinner contract or during quieter overnight periods. Treat event-driven trading as a separate execution condition rather than assuming ordinary-session fills will continue during a release.
Larger Quantities Can Increase Fill Risk
Order size directly affects the likelihood of a complete fill. A one-contract options order or a single futures contract may execute easily when sufficient liquidity is available, while a larger order may consume the displayed size and leave the remainder waiting for additional liquidity. If the market moves before the rest executes, the result can be a partial fill, a worse average fill price, or both.
The trade-off is practical: reducing quantity can improve the probability that the full order executes near the available market, while increasing quantity raises the chance that only part of the order can be filled at that price. This risk is greater in less-active options contracts, thinner futures markets, and quieter trading periods.
- Test automation with quantities that reflect planned live trading size, not only minimal test orders.
- Compare results across different sessions, including quieter periods and active market opens.
- Do not assume a strategy that fills consistently at one contract will scale proportionally to five, ten, or more contracts.
Use Limit and Stop Limit Orders to Define Price Boundaries
Use Limit Orders When Price Control Matters Most
A Limit order sets a hard price boundary for execution. For a purchase, it specifies the maximum price you will pay. For a sale, it specifies the minimum price you will accept. The order can fill at the limit price or a better price, but it should not execute beyond that boundary.
This makes Limit orders useful when the expected edge depends on entering within a narrow price range. The trade-off is direct: a Limit order can reduce exposure to unfavorable fills, but it may receive no fill or only a partial fill if available liquidity at the specified price is insufficient.
For example, assume an options trader receives an automated entry signal while a contract is quoted at a $2.00 bid and $2.40 ask. A marketable order may fill near the ask, or worse if the quote changes before execution. If the strategy's projected profit depends on an entry near $2.15, the trader may use a Buy Limit order at $2.15 rather than accept an unknown fill during a wide-spread period. The consequence is that the option may not trade down to $2.15, and the automated strategy may miss the position entirely.
- Use a Buy Limit price that reflects the highest entry price at which the setup remains valid.
- Use a Sell Limit price that reflects the lowest acceptable exit price after fees, spread, and expected slippage.
- Plan for partial fills, especially in thin options contracts or during rapid price changes.
- Do not assume that a displayed bid or ask represents enough available size to fill the entire order.
Use Stop Limit Orders When a Trigger and Price Limit Are Both Needed
A Stop Limit order combines two controls: a trigger condition and a limit price. Once the stop price is reached, the order becomes a Limit order with the specified price boundary. This is useful when an automated strategy needs confirmation from price movement, but still cannot accept entry beyond a defined level.
The central execution risk is that the market may move through the stop price and then continue beyond the limit price before sufficient liquidity is available. In that case, the order can remain unfilled or partially filled after activation.
For example, a futures breakout strategy may identify a long entry above 5,000.00. The trader could use a Stop Limit order with a stop price at 5,000.00 and a limit price at 5,002.00. If the futures contract trades through 5,000.00, the order activates. If price is still available at 5,002.00 or below, the position can be entered. If the market immediately gaps to 5,004.00, the order may not fill, preventing an entry at a price that exceeds the strategy's predefined boundary.
A Stop Limit order therefore controls price, not certainty of participation. It should not be treated as a guarantee that a triggered breakout or protective exit will be executed.
Choose the Order Type Based on the Strategy's Real Priority
Select the order type according to the failure that causes the most damage to the strategy. Prioritize participation when missing the trade is more harmful than receiving a somewhat worse fill. Prioritize price control when an unfavorable fill removes the expected reward-to-risk profile or invalidates the trade premise.
No order type eliminates execution risk. Marketable orders can fill at unfavorable prices. Limit orders can be missed. Stop Limit orders can trigger and remain unfilled. Any of these orders can be partially filled when the available liquidity does not support the requested quantity at acceptable prices.
Before automation goes live, document the expected response to each execution outcome:
- Missed fill: Does the strategy cancel the setup, wait for a new signal, or permit a later entry?
- Partial fill: Is the smaller position acceptable, and how will associated exits be managed?
- Unfavorable fill: At what price does the trade no longer meet its expected risk or profit criteria?
These decisions should be defined before the signal is sent, not improvised after a volatile market produces an incomplete execution.
Reduce Execution Risk With Spread Filters and Timers
Use the Bid-Ask Spread Filter to Avoid Poor Liquidity Conditions
The bid-ask spread is the difference between the highest price currently offered by buyers, the bid, and the lowest price currently requested by sellers, the ask. A narrow spread generally indicates better liquidity and a lower immediate execution cost. A wide spread increases the likelihood that an order fills at a price meaningfully worse than the market price used by the strategy.
Use the Bid-Ask Spread Filter to prevent an automated entry when the current spread exceeds the maximum you consider acceptable. This is particularly important for options, thinly traded stocks, and instruments that experience intermittent liquidity.
- For a liquid stock trading near $100, a $0.02 spread may be acceptable for a short-term strategy.
- For an option contract quoted at $2.00 bid and $2.40 ask, the $0.40 spread represents 20% of the bid price before the position has moved in your favor.
- If an options strategy targets a $0.25 move in the contract, entering through a $0.40 spread can consume more than the expected opportunity. Skipping that entry is often preferable to accepting a fill that makes the target unrealistic.
Set the filter relative to the instrument, expected holding period, and strategy target. A spread that is tolerable for a multi-day position may be unacceptable for an intraday signal targeting a small premium move.
Use the Reject After Timer to Avoid Stale Entry Attempts
An alert represents a trade decision at a specific point in time. If the market moves substantially after the original signal, the conditions that justified the entry may no longer exist. A breakout may have already extended, an option premium may have repriced, or the underlying may have reversed through the intended entry area.
The Reject After timer rejects an order when it is no longer timely within the window you choose. This limits the risk of acting on an alert that arrives or is processed after the strategy's valid entry period has passed.
Set this timer according to the lifespan of the signal, not as a universal setting across all automations. For example, a one-minute momentum entry may only remain valid for a short window, while a daily trend-following signal may remain relevant longer. The appropriate setting depends on how quickly the market premise can change after the signal is generated.
Use the Cancel After Timer to Limit How Long an Order Remains Open
A Limit or Stop Limit order can remain unfilled while the market evolves. Although these order types provide price control, an order that remains open too long can become disconnected from the original setup. A limit order intended to buy a pullback may fill later during a breakdown, while a stop limit order may fill after volatility has changed the expected risk and reward.
The Cancel After timer cancels an order that has remained open beyond its intended opportunity window. This can be preferable to receiving a delayed fill after the market has moved away from the conditions that triggered the trade.
Use a shorter cancellation window for intraday momentum, breakout, and options premium strategies where timing is central to the thesis. Use a longer window only when the setup is designed to remain valid through normal price fluctuations. Review canceled orders alongside partial fills to determine whether the timer, limit price, or signal logic needs adjustment.
Build Webhook Alerts That Match Your Execution Plan
Keep Alert Details Aligned With the Intended Trade
Automation is most reliable when every webhook alert contains the information required to identify the instrument and define the intended position. An alert that leaves size, exits, or contract selection ambiguous forces the execution workflow to operate without the constraints used in the underlying strategy.
Use the documented webhook fields consistently:
- ticker: identifies the underlying symbol or intended instrument reference.
- action: specifies the trade instruction, such as entering or exiting a position.
- quantity: states the intended number of shares, contracts, or units.
- takeProfit: defines the strategy's planned profit-taking level.
- stopLoss: defines the strategy's planned loss limit.
- expiration: identifies the intended options expiration for an options workflow.
For example, if a strategy is designed to buy two contracts of a specific option exposure with a predefined maximum loss and profit target, the alert should transmit that planned quantity and those original exit levels.3 Do not widen a stopLoss, reduce a takeProfit, or alter size reactively because a prior fill was worse than expected. Those changes convert an execution problem into an untested strategy change. Slippage should be evaluated against the strategy's predefined risk assumptions, not used as a reason to rewrite the risk plan after entry.
Treat Expiration as an Important Options Instruction
For options alerts, expiration is not a cosmetic detail. It helps identify the intended options contract within an alert-based workflow. A strategy targeting a weekly expiration can have materially different execution characteristics from the same strategy targeting a monthly expiration, even when the underlying ticker and directional thesis are identical.
Liquidity, quoted spreads, open interest, and the frequency of price changes can vary substantially across expirations. Near-dated contracts may have different spread behavior than longer-dated contracts, and contracts around scheduled events may trade differently from otherwise similar contracts. If the strategy's entry logic is built around a particular expiration-selection method, test that same method before deployment.
Use Paper trading to validate the alert structure and expiration-selection approach, but avoid testing one expiration convention and deploying another. A paper workflow that uses a liquid monthly contract does not provide a useful execution comparison for a live strategy that will target short-dated weekly contracts.
Plan for Missed and Partial Execution Before Sending Alerts
A webhook alert expresses intent, but market conditions determine whether the intended order can be completed at an acceptable price and within the desired time window. Define the strategy response before live deployment, particularly for instruments with wider spreads or intermittent liquidity.
- What should the strategy do if an entry is not filled within its intended time window?
- Is a partial position acceptable for the strategy's risk plan?
If a partial position is acceptable, determine in advance whether the takeProfit and stopLoss remain valid for the reduced size and how subsequent alerts should treat that open exposure. If it is not acceptable, the strategy needs a predefined rule for avoiding unintended follow-on entries or exits. These are execution-design decisions, not post-trade judgments to make after an unexpected fill result.
Test Slippage and Partial-Fill Scenarios in Paper Trading
Run Paper Trading With the Exact Live Workflow
Use Paper trading with the same workflow you intend to deploy live. Keep the alert source, ticker selection process, quantity, order type, spread filter, Reject After timer, and Cancel After timer identical. If the live plan is to send a Stop Limit order for 200 shares only when the spread is below a defined threshold, test that exact sequence rather than a simplified version using one share or a marketable order.
Changing several settings at once makes execution analysis unreliable. For example, if paper results differ from live results after you change order type, quantity, ticker universe, and Cancel After timer, there is no clear way to determine whether the difference came from liquidity, order priority, price protection, or cancellation timing. Change one variable only after establishing a baseline.
Use a structured test period that includes more than one market condition:
- Normal mid-session trading, when spreads and volume are relatively stable.
- The market open, when prices can move quickly and displayed liquidity can change between alert creation and order arrival.
- Low-liquidity periods, including midday trading or instruments with wider quoted spreads.
- Higher-volatility sessions, such as major economic releases, earnings-related activity, or broad market reversals.
Review Slippage and Partial Fills Trade by Trade
Do not rely on average slippage alone. An average of $0.02 per share may appear acceptable while a small number of fills incur $0.20 or more of adverse movement. Those outlier trades can materially change realized performance, particularly for short-duration strategies with modest profit targets.
For each trade, compare the intended entry or exit price with the actual fill price, using the direction of the trade to determine whether the difference was adverse. Also record whether the order was fully filled, partially filled, canceled, or left unfilled when the Reject After timer or Cancel After timer elapsed.
- Group results by instrument or ticker.
- Separate opening, midday, and closing sessions.
- Compare long and short trade directions.
- Compare Limit and Stop Limit orders independently.
- Review results by spread condition at the time the alert was generated.
Look for concentration rather than only overall averages. If most poor fills occur in the first 10 minutes after the open or during recurring low-liquidity windows, the issue may be predictable enough to address through the strategy’s trading schedule or spread filter.
Stress-Test Realistic Execution Conditions
Test when spreads are narrow and when they are wider. A strategy that performs well when a ticker has a one-cent spread may produce more partial fills, missed entries, or unfavorable execution when the spread widens. Test the quantities you expect to trade live, not only the smallest possible size. A 10-share order may fill immediately while a 500-share order receives only a partial fill at the intended price.
Compare Limit and Stop Limit orders under the same alerts, quantities, and spread conditions. Document the trade-off explicitly: a tighter Limit or Stop Limit price can improve execution quality when filled, but it can also increase missed entries and incomplete fills. A wider price allowance may improve fill probability while increasing potential slippage. The appropriate choice should be based on measured results across realistic market conditions, not a single favorable paper-trading session.
Create a Practical Slippage and Partial-Fill Workflow
Set Execution Rules Before Deploying the Strategy
Define execution constraints before a strategy sends its first live alert. For each entry setup, select an order type that matches the strategy’s tolerance for price movement:
- Limit orders are appropriate when the strategy requires a known maximum entry price. They can reduce adverse slippage, but they may remain unfilled when the market moves away.
- Stop Limit orders are appropriate when an entry should occur only after a trigger price is reached, while still enforcing a maximum acceptable fill price.
Set a bid-ask spread threshold that is proportionate to the trade’s expected edge. For example, a short-duration options trade targeting a $0.30 premium move should not routinely accept a $0.20-wide spread. The spread can consume too much of the expected profit before the underlying has moved. Define the maximum spread in advance rather than making exceptions after an alert arrives.
Also establish timer windows that reflect the lifespan of the signal. Use Reject After to prevent an order from being accepted after the signal has become stale. Use Cancel After to remove an unfilled or partially filled order after the setup window has expired. A five-minute breakout signal and a multi-hour trend-following signal should not use the same timer values.
Use a Simple Options Execution Example
Assume a TradingView or TrendSpider alert identifies a bullish options opportunity.4 The option is quoted at $1.00 bid and $1.35 ask, but the strategy’s predefined maximum spread is $0.15. Entering at the ask would immediately create a meaningful execution disadvantage.
A bid-ask spread filter can prevent the entry under those conditions instead of forcing a fill at an unfavorable price. This is a valid outcome: a missed trade is often preferable to a trade whose expected value has been materially damaged by spread and slippage.
If the spread later narrows to $1.10 bid and $1.20 ask, the strategy can submit a Limit order at its acceptable entry price. A Cancel After timer keeps the order associated with the original setup. For example, if the alert is intended to capture an opening-range move, canceling the order after several minutes avoids filling an option after the underlying has already changed character.
Use a Simple Futures Execution Example
Consider a TrendSpider or TradingView breakout alert during a rapid futures move. A Stop Limit order can define both the breakout trigger and the highest acceptable entry price. For example, a strategy may trigger above 5,000.00 but allow a fill only through 5,001.50.
If price gaps from 5,000.00 to 5,003.00, the order may not fill. That is not necessarily a failure. When the additional entry price would distort the stop distance, reward-to-risk profile, or planned position sizing, avoiding the fill can preserve the strategy’s intended risk parameters.
Review and Refine After Every Test Cycle
Use Paper trading to evaluate execution outcomes before committing capital. Track missed orders, partial fills, completed fills, and slippage reported for each trade. Separate results by instrument, session, order type, and market condition where possible.
- Change only one or two execution settings per test cycle.
- Measure whether tighter limits reduce slippage at the cost of more missed entries.
- Review whether timer windows are canceling valid orders or allowing stale orders to fill.
Move to live trading only after paper results demonstrate that the strategy remains viable with realistic spreads, partial fills, missed entries, and slippage.
Frequently Asked Questions
What is slippage in automated trading?
Slippage is the difference between the price implied by a trading signal and the actual price at which an order fills. TradersPost reports slippage on each trade so you can review real execution results rather than relying only on backtest assumptions. Slippage often increases in fast-moving markets, during low-liquidity periods, and when bid-ask spreads are wide.5 Monitoring it helps determine whether a strategy remains viable under live trading conditions.
Can TradersPost automatically compensate for slippage?
No. TradersPost does not automatically compensate for slippage because actual fills depend on current market conditions and broker execution. You can manage execution risk by using Limit or Stop Limit orders, enabling a bid-ask spread filter, and setting Reject After or Cancel After timers. Before trading live, use Paper trading to measure observed slippage and confirm that your strategy can tolerate realistic execution outcomes.6
Why do partial fills happen with options and futures?
Partial fills occur when there is not enough available liquidity to fill your entire order at the requested price. They are more common for options and futures contracts with wide spreads, low trading activity, larger order quantities, or rapidly changing prices. A partial fill may leave part of your intended position unfilled or pending. Test realistic order sizes and execution settings in TradersPost Paper trading before deploying an automated strategy live.
Should I use a Limit order or a Stop Limit order for automated trading?
Use a Limit order when controlling the maximum buy price or minimum sell price is your primary concern. Use a Stop Limit order when an alert must first reach a trigger price while still respecting a defined execution-price boundary. Both order types can produce missed trades or partial fills if the market moves away from your limit price. Choose based on whether price control or trade participation is more important for your strategy.
How can TradingView or TrendSpider alerts help manage execution risk?
TradingView or TrendSpider alerts can send webhook instructions to TradersPost with fields such as ticker, action, quantity, takeProfit, stopLoss, and expiration. However, an alert alone does not control execution quality. Pair alerts with deliberate TradersPost settings, including your order type, bid-ask spread filter, Reject After setting, and Cancel After timer. Test the complete alert-to-order workflow in Paper trading first to identify slippage, fill quality, and partial-fill behavior.
Conclusion
Slippage and partial fills are not edge cases in automated trading, they are execution realities that can materially change strategy performance. Market conditions, liquidity, order type, spread, and timing all influence whether an order fills at the expected price, fills only partially, or remains open. A backtest can identify opportunity, but only realistic execution testing can show whether that opportunity survives live-market friction.
Take the next step with TradersPost Paper Trading. Connect your TradingView or TrendSpider alerts, test Limit and Stop Limit orders, apply spread filters and timers, and review per-trade slippage and partial-fill outcomes before committing capital. When your automation performs consistently under realistic conditions, you can move to live trading with greater confidence. Start testing your execution workflow today and build a more durable automated strategy.
References
1 TradersPost Docs, Position Sizing
2 TradersPost Docs, Options Trading
3 TradersPost Docs, Webhooks
4 TradersPost Docs, TradingView Signal Source
5 TradersPost Docs, Order Behavior
6 TradersPost Docs, Paper Trading