Futures trading mechanics
Futures slippage: measure the cost of a different fill price
Compare fills with a stated reference, then separate their price effect from commissions and fees.
State the reference price before measuring slippage
Futures slippage is the difference between a reference price you expected to trade at and the price actually filled. A higher buy price or lower sell price is adverse; a lower buy price or higher sell price is favorable. Express that difference in ticks, then multiply by the contract’s tick value and filled quantity.

The reference matters. You might use the best ask for a buy, the best bid for a sell, or a strategy’s decision price at a recorded time. A last-trade print, current quote and stop trigger are different observations. Record which one you used rather than calling every gap from the chart price the same execution cost.
| Side | Adverse price difference | Dollar effect |
|---|---|---|
| Buy | Average fill − reference | Difference ÷ tick size × tick value × filled contracts |
| Sell | Reference − average fill | Difference ÷ tick size × tick value × filled contracts |
Sources: CME: market, limit and protected stop instructions · CME: liquidity and cost-to-trade methodology
Weight partial fills by their quantities
Suppose you buy three Micro E-mini S&P 500 (MES) contracts using 6,000.25 as the reference. MES moves in 0.25-point ticks worth $1.25 each, or $5 per point per contract. The following fills are hypothetical, not observed results or a forecast.
The weighted average is (1 × 6,000.25 + 2 × 6,000.75) ÷ 3 = 6,000.5833… . That is 1⅓ ticks worse than the reference on average. Individual MES executions use valid tick prices; an average across different fills need not land on a tick.
Total adverse slippage is 1⅓ × $1.25 × 3 = $5.00. Adding each fill’s dollar difference reaches the same result. If only two of the three contracts had filled, calculate on those two and record the unfilled quantity separately.
| Filled contracts | Fill price | Ticks above reference | Adverse dollar effect |
|---|---|---|---|
| 1 | 6,000.25 | 0 | $0.00 |
| 2 | 6,000.75 | 2 | $5.00 |
| Total: 3 | Average: 6,000.5833… | Average: 1⅓ | $5.00 |
Sources: CME: Micro E-mini multipliers and MES tick value · NinjaTrader: order states, average price and remaining quantity
Do not subtract slippage twice from actual P&L
Continue the example with a sell reference of 6,004.00 and all three exit fills at 6,003.75. The exit is one tick worse, costing another $1.25 × 3 = $3.75. Combined entry and exit slippage is $8.75.
Trading at both reference prices would have produced (6,004.00 − 6,000.25) × $5 × 3 = $56.25 before fees. The actual fills produce $47.50 before fees: $56.25 − $8.75. Slippage is already reflected in that $47.50; subtracting it again would double-count it.
If an illustrative all-in commission and exchange-fee charge were $0.75 per contract per side, the round-trip charge would be 3 × 2 × $0.75 = $4.50, leaving $43.00. This is an assumed fee for arithmetic, not Boxcar or broker pricing. Check which charges your report’s P&L already includes before deducting them.
Sources: CME: Micro E-mini multipliers and MES tick value · NinjaTrader: individual executions and export fields
Separate the spread from movement after your decision
Suppose the quote is 6,000.00 bid and 6,000.25 ask, and the last trade was 6,000.00. Buying at 6,000.25 is zero slippage against that ask, but a 0.25-point difference against the last trade. The same fill can therefore produce different reported slippage without either calculation being arithmetically wrong. Label the benchmark so spread cost is not added again when it is already included.
Available quantity can change between your decision and execution. A larger order may need more than one price level; CME’s liquidity methodology accounts for deeper asks when the requested quantity is unavailable at the best ask. A narrow spread alone does not establish the cost of filling your whole order.
A limit order caps the worst permitted price, but it may fill partly or remain unfilled. A stop’s trigger is not a guaranteed exit price. CME protection ranges can also restrict execution. Compare these trade-offs in the order-types guide; replacing a market order with a limit order does not guarantee that a position closes.
Sources: CME: liquidity and cost-to-trade methodology · CME: market, limit and protected stop instructions
Reconstruct an unexpected fill from execution records
Keep the contract month, account, buy/sell action, order ID, order type, submission time, reference quote and its timestamp, and every fill’s time, quantity and price. NinjaTrader Desktop’s Orders tab separates filled quantity, remaining quantity and average price; its Executions tab lists individual fills and supports export.
Compare like conditions when reviewing several orders: the same reference convention, contract, order size and session. If you did not retain the quote at submission, a later chart cannot establish exactly what was available then. Record the reference as unavailable rather than manufacture a precise slippage number.
At Boxcar, evaluation and simulated-funded orders use virtual funds and do not enter live markets. Their fills do not establish execution quality or queue position for a live account. Live trading requires Boxcar’s express designation and a separate written agreement; keep simulated and live observations separate.
Sources: NinjaTrader: order states, average price and remaining quantity · NinjaTrader: individual executions and export fields · Boxcar: simulated and live account stages