Futures backtesting done right: specs, rollover, tick value, costs
A futures backtest needs five settings that a stock backtest does not: a continuous contract with a chosen rollover method, the correct tick and point value for each contract, per-contract fees plus tick slippage, the exact session and holiday calendar, and an account size built from margin and drawdown. Confirm them in order before you trust the result.
By Soren Huang · Published · updated · Editorial policy
Contents
- What is different about backtesting futures compared with stocks?
- How do you build a continuous contract, and which rollover method should you use?
- How do tick size, tick value and point value change a backtest?
- What pessimistic cost assumptions should a futures backtest use?
- Which session times and holidays does a futures backtest need?
- How should margin set the account size in a futures backtest?
- Checklist: what to confirm before you trust a futures backtest
- Frequently asked questions
What is different about backtesting futures compared with stocks?
Backtesting futures differs from backtesting stocks in five settings: contracts expire and must be joined into one continuous series, prices move in ticks with a fixed money value, positions are held on margin instead of full price, fees and slippage are charged per contract per side, and trading runs in sessions with breaks and early closes. Each needs its own setting.
A stock backtest can skip most of these points because a share has no expiry, costs a known price in full, and trades in one day session. A futures backtest that copies stock settings gets the money scale, the trade count and the drawdown wrong at the same time, and the errors do not cancel out. The table lists what changes.
| Setting | Stocks | Futures |
|---|---|---|
| Expiry | None, one series per share | Monthly or quarterly contracts joined by rollover |
| Price unit | Cents per share | Ticks with a fixed money value per contract |
| Capital | Full price of the shares | Margin deposit per contract |
| Costs | Per share or per order | Commission and exchange fees per contract per side, plus tick slippage |
| Hours | One day session | Near 24-hour sessions with a daily break, holidays and early closes |
How do you build a continuous contract, and which rollover method should you use?
A continuous contract is one price series made by joining the individual expiries end to end, and the method you choose to join them decides whether the price jump at each roll shows up in your result as a fake trade. Rollover is the moment you stop using the expiring contract and start using the next one.
The problem is simple. On the roll day the old contract may trade at one price and the new contract at another, because the new contract carries different financing and dividend expectations until its own expiry. If you just glue the two series together, the chart shows a step on the roll day that nobody could have traded. A breakout rule sees a breakout, a stop sees a stop hit, and the backtest books a profit or loss that never existed.
Three joining methods are in common use, and each one keeps a different thing true:
- Unadjusted. Real traded prices, with the gap left in. Useful for checking what price was really on the screen, not for running rules across the roll.
- Difference-adjusted (also called back-adjusted). All older prices are shifted up or down by the size of each gap. Point differences stay correct, so stops and targets measured in points or ticks are right. Price levels from years ago no longer match history and can even go below zero on long series.
- Ratio-adjusted. Older prices are multiplied by the ratio between the two contracts at each roll. Percent moves stay correct; point moves are only approximate.
Roll timing is the second choice. The two usual rules are a fixed number of days before expiry, or the day when daily volume (or open interest) moves to the next contract. The volume rule matches what most traders actually do; the fixed-day rule is easier to reproduce. Whichever you pick, use the same rule for the whole history and write it down next to the result.
Two more points keep the roll honest. First, a position held across a roll costs an extra round trip in real trading, because you close the old contract and open the new one. An adjusted series hides this, so add one round-trip cost for every roll the strategy holds through. Second, the size and direction of the gaps come from the market's term structure; the article on backwardation, contango and roll gaps in continuous backtests explains why the gap can be positive in one year and negative in the next.
How do tick size, tick value and point value change a backtest?
Tick size, tick value and point value set the money scale of every number in the report, so one wrong value scales every profit, loss and slippage figure by the same wrong factor. Tick size is the smallest price step a contract can move. Tick value is the money one tick is worth for one contract. Point value is the money one full point is worth, which equals tick value divided by tick size.
The three numbers are a chain. Once you know two of them, the third follows, and the profit of any trade follows from the point value and the number of points captured.
The values differ a lot between contracts, and between the full-size and micro versions of the same index. The futures contract calculator shows tick size, tick value and point value for common contracts and works out the profit or loss of a trade from them. Exchanges can change these specifications, so the exchange's contract page is the final reference. The following values are from the CME Group and TAIFEX contract specifications as of this writing:
| Contract | Tick size | Tick value | Point value |
|---|---|---|---|
| E-mini S&P 500 (ES) | 0.25 index points | US$12.50 | US$50 |
| Micro E-mini S&P 500 (MES) | 0.25 index points | US$1.25 | US$5 |
| E-mini Nasdaq-100 (NQ) | 0.25 index points | US$5 | US$20 |
| TAIEX futures (TX) | 1 index point | NT$200 | NT$200 |
| Mini-TAIEX futures (MTX) | 1 index point | NT$50 | NT$50 |
Three things go wrong when the values are off. The net profit and the drawdown are scaled, so a strategy can look safe or dangerous for no real reason. Slippage entered as a number of ticks becomes the wrong amount of money. And any position sizing that depends on a money stop picks the wrong number of contracts. Check the values once per contract, and check them again when you switch between the full-size and the micro contract, because the ratio between the two is not always ten.
What pessimistic cost assumptions should a futures backtest use?
A futures backtest should charge commission plus exchange and clearing fees per contract per side, add at least one tick of slippage per side for liquid contracts and more for thin ones, and then be rerun with double slippage to see how much of the edge survives. Slippage is the difference between the price the backtest assumed and the price a real order would have filled at.
Work through the costs in this order:
- Take your broker's commission per contract per side and add the exchange and clearing fees for that contract. Both are charged on entry and on exit.
- Add slippage in ticks per side. One tick is a reasonable floor for liquid index futures traded with market or stop orders during the main session. Use more for the night session, for thin contracts and for entries at the open or around scheduled news.
- Convert the total into money with the tick value, so you get one round-trip cost per contract.
- Compare that round-trip cost with the gross average trade. A gross average trade that is only a little above the cost leaves nothing when fills are worse than planned.
- Rerun with double slippage. If the result turns negative, the strategy depends on cheap execution rather than on price movement.
Hypothetical example
A strategy on one contract shows a gross average trade of $60. Commission and exchange fees are $2.50 per side, so $5 per round trip. The contract has a tick value of $12.50, and one tick of slippage per side costs $25 per round trip. The net average trade is $60 − $5 − $25 = $30. With double slippage the trade costs $55 and only $5 is left. Half of the edge is gone under normal assumptions, and almost all of it under pessimistic ones.
Costs belong in the search, not in a final check. If candidates are ranked without costs, the ranking favours strategies with many small trades, and most of them fail once costs are added. AlphaPrime (Valynox) evaluates each candidate with fees, slippage and next-bar execution as part of its backtesting settings, so the ranking already reflects what you could trade. The Learn article on trading costs in backtests and the average trade goes deeper into estimating slippage from your own fills.
Which session times and holidays does a futures backtest need?
A futures backtest needs three calendar facts: which session the strategy trades, which bar is the first and the last of that session, and the time zone the data is stamped in. Most index futures trade close to 24 hours with a short daily break, and exchange holidays and early closes cut some days short.
Take CME Group equity index futures as an example. They trade from Sunday evening to Friday afternoon, with a daily maintenance break from 4:00 p.m. to 5:00 p.m. Central Time. The US cash stock market trades from 8:30 a.m. to 3:00 p.m. Central Time, so a "day session" strategy on these contracts uses only that window inside a much longer trading day. TAIEX futures on TAIFEX split differently: a day session from 8:45 a.m. to 1:45 p.m. and a night session from 3:00 p.m. to 5:00 a.m. the next morning, Taiwan time. Exchanges can change these hours, so confirm them on the exchange's contract page or in the futures market hours tool, which shows them in your own time zone.
Three checks avoid the most common session errors:
- Session choice. Decide whether the strategy trades the day session, the night session or both, and build the bars from exactly those hours. A daily bar that includes the overnight session has a different open, high and low from a daily bar of the cash hours.
- First and last bar. Know whether your data stamps a bar with its open time or its close time. An "exit at session close" rule placed on the wrong stamp exits one bar early or holds overnight by mistake.
- Time zone and calendar. Data can be stamped in exchange time, in UTC or in your local time. For a trader in Taiwan, US Central Time is 14 hours behind in winter and 13 hours behind in US summer time, so a fixed-clock rule drifts twice a year unless the data is in exchange time. Holidays and early closes should come from the exchange calendar, so that a short day is not treated as a day with missing data; the stock market holidays tool lists exchange holidays and early closes so you can compare them with the days in your data.
How should margin set the account size in a futures backtest?
The account size in a futures backtest should be built from the margin per contract plus the worst historical drawdown with a buffer, because the same strategy shows a very different drawdown percentage depending on the account size you assume. Margin is the deposit the exchange requires to hold one contract; it is a fraction of the contract's full value, not its price.
Think of margin as the rent for a seat, not the price of the house. The seat gets you into the trade, but the losses are measured on the full house. A stock backtest can start from the money paid for the shares. A futures backtest has no such natural starting point, so you must choose one, and the choice decides every percentage in the report.
One formula is enough:
Account size = margin per contract × contracts + worst drawdown × buffer
Here "margin per contract" is the exchange's initial margin for one contract, "contracts" is the number you plan to trade, "worst drawdown" is the largest peak-to-trough loss in the backtest in money, and "buffer" is a multiplier above one that allows the next drawdown to be worse than the worst one seen so far. Many traders use 1.5 to 2 as the buffer.
Hypothetical example
A one-contract strategy needs $6,000 of margin and had a worst drawdown of $4,000 in the backtest. With an account of $10,000 the drawdown is 40 percent, and at the bottom of it the account holds exactly the margin, with no room for the next losing trade. With an account of $20,000 the same drawdown is 20 percent and a buffer of $10,000 remains above the margin. Nothing about the strategy changed; only the starting number did.
Exchanges raise margins in volatile periods, often exactly when the drawdown is happening. A backtest that sizes the account from today's margin with no buffer would have forced a cut in contracts in the past, which the equity curve does not show. Using the same account size rule for every strategy you compare also keeps the drawdown percentages comparable; otherwise the strategy with the most generous assumption always looks the safest.
Checklist: what to confirm before you trust a futures backtest
Confirm the seven settings below in this order, because each one depends on the one before it, and a futures backtest that passes all seven is ready for walk-forward validation. Checking slippage before the tick value, for example, means checking a number that will change as soon as the tick value is corrected.
- Contract specifications from the exchange's contract page: expiry months, tick size, point value, trading hours. Note the date you checked them.
- Continuous contract method and roll dates: difference-adjusted for tick-based rules, ratio-adjusted for percent-based rules, one roll rule for the whole history, one extra round-trip cost per roll held.
- Tick size, tick value and point value entered for the exact contract tested, with the micro and full-size values not mixed up.
- Commission, exchange fees and slippage per contract per side, with a double-slippage rerun and a comparison against the gross average trade.
- Session times, time zone and holidays: the session the strategy trades, the first and last bar, the stamp convention of the data, and the exchange holiday and early-close calendar.
- Next-bar execution: a rule that decides on the close of a bar fills at the open of the next bar, never at the close it was looking at.
- Account size from margin plus a drawdown buffer, the same rule for every strategy you compare.
When all seven hold, the single backtest is as honest as a single backtest can be. It still measures how the rules fitted the past. The next step is walk-forward analysis, which tunes on one window and tests on the next, so the result comes from data the tuning did not see. A futures backtest built on these seven settings is then judged in AlphaPrime's strategy validation, with walk-forward windows and thresholds you set, on data the tuning never touched.
What this means if you use AlphaPrime: fees, slippage, sessions and next-bar execution are research settings you enter before a search, and AlphaPrime applies them to every candidate it evaluates; the continuous contract comes from your own bar data and the account-size rule is yours to apply to the report, so the strategies that reach the databank were already judged under the cost and session assumptions you would trade with.
Frequently asked questions
Which rollover method is best for a futures backtest?
It depends on how the strategy measures distance. Rules with stops and targets in ticks or points work correctly on a difference-adjusted series, because point differences are preserved across the roll. Rules in percent work correctly on a ratio-adjusted series. Use the unadjusted series only to check what price was really on the screen on a given day.
What is tick value, and why does it matter in a backtest?
Tick value is the money one tick is worth for one contract, where a tick is the smallest price step the contract can move. The backtest multiplies every price move by this value to get money, so a wrong tick value scales every profit, loss and slippage figure by the same wrong factor. Check it on the exchange's contract page for the exact contract you test, because the full-size and micro versions differ.
How much slippage should I assume for futures?
Start with one tick per side for liquid index futures traded with market or stop orders during the main session. Use more for the night session, for thin contracts and for entries at the open or around scheduled news. Then rerun the backtest with double slippage; a strategy that only works with the lower figure depends on execution, not on price movement.
Can I backtest futures for free?
Several charting platforms include a strategy tester at no cost, and a spreadsheet can test a simple rule on daily bars. The settings matter more than the tool: continuous contract method, tick and point value, per-contract costs, session hours and account size must be set correctly in any of them. A free test with the wrong tick value or no roll handling tells you less than nothing, because it looks like a result.
Do I need to include the night session in a futures backtest?
Only if the strategy trades it. A day-session strategy should be tested on bars from the day session alone, with the first and last bar set exactly. A strategy that holds overnight needs the full session, because gaps at the daily break and the Monday open then become part of its risk and should appear in the drawdown.

