Skip to content
70% OFF Black Friday Sale Biggest Indicator Sale of the Year. 163 left Get QuantZee →
Back to Blog
BacktestingFutures TradingTrading Software

Best Backtesting Software for Futures: Rollover, Session Windows and Tick Data Decide It

By Rajeev Gupta · · 14 min read
A laptop showing a rising candlestick chart next to a futures checklist card listing strategy testing, performance analysis, risk management and optimization

Educational Disclaimer: This is educational content for informational purposes only. It is not investment advice. Trading involves significant risk of loss, and past backtested or live performance does not guarantee future results. Do your own research and consult a licensed financial advisor before making any trading decision.


Search "best backtesting software for futures" and you get the same three or four roundups. They rank ten platforms on interface, pricing and how many indicators ship out of the box. We read through the current versions of three of those roundups while putting this page together. All three share the same gap: none of them talks about contract rollover. Not a paragraph. Not a footnote. For a stock trader that gap is survivable. For a futures trader it can be the difference between a backtest that means something and one that doesn't. Rollover method, session window and data resolution move the equity curve more than the choice of platform ever will.

This page is organized around the four axes that decide whether a futures backtest is trustworthy. First, how the platform stitches a continuous series across expiries. Second, which session window it tests against. Third, whether it uses settlement or last price for daily bars. Fourth, whether its data resolution can actually support the fills the strategy claims. We'll also walk through a reconciliation test you can run yourself on any two platforms, to measure how much they disagree. We'll close with a short selection matrix built on those four axes instead of on screenshots.

Why rollover is the first question, not an afterthought

A futures contract expires. A backtest that runs for three years can't run on one contract. It has to splice together a sequence of contracts (the front-month chain) into one continuous series. There's more than one way to do that splice, and the method you pick changes the data underneath every rule you test.

Three methods dominate in practice.

Calendar or volume-triggered roll. The series switches to the next contract on a fixed date before expiry, or the day volume crosses over to the next contract. Per the exchange's own contract specifications, open-interest crossover is the convention most desks actually trade around for index and rate futures. It tracks where liquidity has genuinely moved, rather than using an arbitrary calendar cutoff.

Open-interest-triggered roll. A variant that watches open interest specifically rather than volume. The two methods produce different roll dates in most contract months, sometimes by a week or more. A platform that doesn't document which one it uses leaves you guessing at a variable that shifts near every expiry.

Back-adjusted versus unadjusted stitching. This is the one that actually breaks strategies. Back-adjustment shifts every historical price by the gap at each roll date, so the chart looks continuous with no jumps. Unadjusted stitching leaves that gap visible as a vertical jump on the chart. Back-adjustment looks cleaner and is what most charting platforms default to. But it means every historical price level in your dataset has shifted away from what actually traded that day.

A worked illustration: why a shifted price level breaks absolute-price rules

Here's the mechanic, with numbers. Say a contract traded at 4,500 on a given day three years back, on an unadjusted series. A back-adjusted series covering the same history, after a dozen expiries' worth of roll-gap adjustments, might show that same day's price as 4,350 or 4,680. The adjustment compounds with every roll. Its direction and size depend on whether the market was in contango or backwardation at each roll date.

Now put a percentage-based stop on both series — say a 2% stop below entry. Percentage stops scale with the entry price, and the entry price itself has moved between the two series. So the stop lands at a different absolute level in each, even though the percentage math is identical.

A fixed-point stop is worse. A 50-point stop is 50 points on either series. But a rule written as "exit when price crosses below 4,400" will trigger on different days depending on which stitching method produced that 4,400 level in the first place. On the unadjusted series that number might be a real historical low from three years ago. On the back-adjusted series it might correspond to nothing that ever actually traded. In our experience auditing strategies like this, the rule itself never changes between the two runs. Only the price history underneath it does, and that's enough to flip the result.

The fix is structural, not cosmetic. Any rule stated in absolute price terms — support and resistance levels, fixed stop prices, round-number targets — needs testing on the same stitching convention it will trade against live. Ideally, validate it on both back-adjusted and unadjusted series, to see how much the result depends on that one choice.

Session windows: you may be testing a different instrument than you think

Nearly all major index futures trade close to 23 hours a day, five days a week. That covers a regular session and an extended overnight session. A backtest that includes the full near-24-hour window, and one that restricts to the regular day session (roughly 9:30am to 4:00pm Eastern for US index futures), are not two settings on the same test. They are two different instruments. Volatility, gap behavior and fill characteristics around the open all differ between them.

Most backtesting platforms don't surface which window they default to. You find it in the data documentation, if at all — rarely in the marketing copy. A strategy that looks mediocre on the full 23-hour window can look excellent on the regular session alone, simply because the overnight session's thinner liquidity and wider spreads get excluded from both the signal and the cost calculation. Before trusting any futures backtest, confirm in writing which session window generated it. Then re-run the same rule on the other window as a sensitivity check.

Settlement price versus last-traded price: a silent bias in daily bars

Every futures exchange publishes an official daily settlement price. It's computed by a defined procedure, often a volume-weighted average over a closing window, per the exchange's own settlement rules. That settlement price is almost never identical to the last trade printed before the session closed. For index futures the gap is usually small. For thinner contracts it can run several ticks.

A backtest built on daily bars, where the "close" field is actually the last-traded price, then executed live against a system that marks positions to the official settlement price, carries a bias that doesn't show up anywhere in the backtest report. The backtest never saw the number live trading actually uses. If your strategy enters or exits on a daily close signal, confirm which close field your data vendor is giving you. This one data-field choice has quietly inflated more futures backtests than any slippage assumption we've seen.

Data resolution and fill realism

A strategy that claims to fill at a touched limit price can't be validated on daily or even hourly bar data. Neither can a strategy that depends on intrabar sequencing — did the high happen before the low on that five-minute bar? Bar data tells you a range traded. It doesn't tell you the path price took to get there, and for a limit-order strategy the path is the whole question.

Three resolution tiers matter in practice, and each one supports a different class of claim.

Daily bars support swing-style, end-of-day signal strategies only. Any claim about intraday fills on daily data is unverifiable by construction.

One-minute bars support most intraday signal-and-market-order strategies reasonably well. They still only approximate limit fills — a bar whose range touches your limit price doesn't guarantee a fill, because the volume at that exact price inside the bar is unknown.

Tick-level data is the only resolution that can honestly validate a limit or stop fill claim, because it preserves the actual sequence of trades. It's also the most expensive and slowest to backtest at scale. That's exactly why most retail platforms quietly default to one-minute or bar-level data without volunteering the limitation.

Before trusting a fill-rate number from any platform, check its documentation for which resolution generated that specific test. "We support tick data" in a features list doesn't mean the test you ran actually used it.

Cost modelling specific to futures

Futures costs don't work like equity costs. A platform built for stocks first tends to carry that assumption into its futures mode without flagging it. Three components need separate treatment.

Per-contract commission. Futures commissions are quoted per contract, not as a percentage of notional. A $2.50 round-turn commission on a contract worth $200,000 of notional exposure is a very different cost ratio than that same $2.50 on a contract worth $20,000. A percentage-based cost model applied to futures notional misstates this every time.

Exchange and clearing fees. These sit on top of the broker's commission and vary by exchange and contract. They're small per trade, but they compound across hundreds of trades a year in an active strategy. A platform that bundles them into one flat "cost per trade" figure hides how that number actually scales with trade frequency.

Tick value. Every futures contract has a defined tick size and a dollar value per tick, per the exchange's own contract specifications. A strategy's P&L in "points" only converts to dollars correctly if the platform applies that contract's real tick value, and the value differs by contract. A platform that hardcodes one multiplier across all futures products will misreport P&L on anything other than the single contract it was tuned for.

A percentage-based cost model — the default in most retail backtesting software, because it was built for equities first — misrepresents all three of these. If a platform doesn't let you set a flat per-contract commission plus a separate tick-value field, treat its futures cost numbers as approximate at best.

A tool-selection matrix built on these axes

Rather than rank vendors by interface, here's what to check in each platform's own documentation before trusting a single futures number out of it. What roll method does the continuous series use by default, and can it be changed? Is the series back-adjusted or unadjusted, and can you toggle between them? Which session window is the default, and is that disclosed anywhere other than a data appendix buried three clicks deep? Does the daily close field use official settlement or last trade? What's the finest data resolution actually available for the specific contract you trade? Can you set a flat per-contract commission and a contract-specific tick value, separate from any percentage-based fee model?

A platform that answers all six clearly, in its own documentation, is one you can trust with a futures backtest. A platform that answers zero of them — which describes most of the general-purpose roundup entries — is one where every futures number it produces needs independent verification before you act on it.

The reconciliation test: measuring disagreement, not accuracy

Here's a test setup you can run yourself on any two candidate platforms. It's the single most useful five minutes we recommend to anyone comparing futures tools. Take one simple rule — a moving-average crossover is fine, nothing fancy. Run it on both platforms, matching the roll method, session window and commission structure as closely as the two platforms allow. Then look at where the trade counts, entry dates or P&L diverge.

In our experience walking traders through this exercise, the divergence almost never comes from a bug. It comes from one of the four variables above being set differently by default — a different roll trigger, a different session window, a different settlement field. Once you align those variables, the gap narrows substantially. Treat whatever gap remains after alignment as your measurement error for that pair of platforms, and size your confidence in either platform's output accordingly. We're not claiming either platform is more accurate here. This is a reconciliation method, not a benchmark result, and we haven't published a strategy outcome on this page because that isn't what this test is for.

Regulatory context: why these mechanics matter beyond the backtest

Futures markets carry margin, settlement and reporting rules that don't apply to stocks, and those rules are exactly why the four axes above exist in the first place. According to the CFTC, futures contracts settle daily against an official price and positions are marked to market every trading day — which is the regulatory reason a backtest that ignores settlement price versus last price is measuring something different from what actually happens to your account overnight. Per the National Futures Association, retail futures brokers are required to disclose margin and fee structures per contract, not as a blanket percentage — the same per-contract logic that a sound futures backtest has to apply to commissions and tick value. Neither source discusses backtesting software directly. Both explain why the mechanics in this page aren't platform trivia; they reflect how futures actually clear and settle.

What this means before you commit to a platform

None of this is an argument against any specific vendor. The three roundups we reviewed while researching this page are useful for comparing interface, pricing tiers and general usability, and they do that job reasonably well. The gap is narrower and more specific. Futures contracts carry four structural quirks — rollover, session window, settlement field and resolution-dependent fill realism — that a stock-first backtesting tool was never built to surface. A generic "best backtesting software" roundup, written to cover every asset class at once, has little reason to develop any of them in depth.

If you already have a strategy idea mapped out, our backtest-vs-live mismatch breakdown covers the broader set of reasons a backtest and live account diverge. The futures items above are the sharpest version of that general problem. If you're earlier in the process and want a walkthrough of getting a signal into a backtest in the first place, see how to backtest a TradingView indicator. If slippage or OHLCV field definitions are unfamiliar terms, the slippage glossary entry and the OHLCV data glossary entry are short, specific references rather than general explainers.

Quantzee's own toolkit is built around making assumptions like these visible, rather than hidden behind a single "run backtest" button. If you're stress-testing a futures strategy before risking real capital, our stress-testing checklist walks through the same category of hidden-assumption risk from the strategy side rather than the data-vendor side.

Frequently Asked Questions

New to index setups and not sure what to backtest first? Start with the rules in our index intraday trading strategy guide, then test them in the platform you choose.

Why does rollover method matter more for futures than for stocks?
Stocks don't expire, so a stock backtest runs on one continuous price series by default. A futures backtest has to splice a chain of expiring contracts together, and the splice method (calendar roll, open-interest roll, back-adjusted or unadjusted) changes the historical price levels in the dataset itself — which can silently break any rule stated in absolute price terms.
What's the difference between back-adjusted and unadjusted futures data?
Back-adjusted data shifts historical prices at each roll date so the chart has no visible gap, which looks cleaner but moves every price level away from what actually traded. Unadjusted data leaves the roll-date gap visible, preserving the real historical prices but creating a jump in the chart at every expiry.
Does session window really change backtest results for index futures?
Yes. Most index futures trade close to 23 hours a day across a regular session and an extended overnight session. Testing only the regular session excludes overnight volatility and gaps from both the signal and the cost calculation, which can materially change win rate and drawdown versus the full near-24-hour window.
Should I use settlement price or last-traded price for daily futures bars?
Match whichever one your live execution will be marked against. Clearing and margin calculations typically use the exchange's official settlement price, so a daily-bar backtest built on last-traded price can carry a systematic bias versus how the position is actually valued live.
Can I validate limit-order fills on one-minute bar data?
Only approximately. One-minute bars show the price range traded in that minute but not the sequence of trades inside it, so a bar whose range touches your limit price doesn't guarantee that volume actually traded at that exact level. Tick-level data is the resolution that can genuinely confirm a limit fill.
What should I check in a futures backtesting platform's documentation before trusting its numbers?
Check six things in writing: default roll method and whether it's adjustable, back-adjusted versus unadjusted toggle, default session window, whether daily closes use settlement or last trade, the finest data resolution actually available for your contract, and whether commissions are modelled per-contract with a contract-specific tick value rather than as a flat percentage.

This page is a methodology reference based on exchange contract specifications and a reading of current vendor documentation, not a ranked product review. Quantzee is analytical software, not investment advice — nothing here is a recommendation to buy, sell or trade any specific contract. Every number in a historical backtest is a measurement on a fixed, already-known sample; past performance on that sample does not predict future results. Paper trade any strategy on your chosen platform's actual roll method, session window and data resolution before risking real capital.

FAQ

Frequently Asked Questions

Stocks don't expire, so a stock backtest runs on one continuous price series by default. A futures backtest has to splice a chain of expiring contracts together, and the splice method (calendar roll, open-interest roll, back-adjusted or unadjusted) changes the historical price levels in the dataset itself — which can silently break any rule stated in absolute price terms.

Put It Into Practice

Try Quantzee's AI-Powered Indicators

Non-repainting signals, real-time alerts, all markets.

Get Quantzee
Rajeev Gupta, Founder & CEO of Quantzee

Written By

Rajeev Gupta

Founder & CEO, Quantzee

Rajeev Gupta is a Commerce Graduate with a Masters in Business Administration (Finance), and has been trading the markets since 1997. He previously worked with Religare Securities Limited as Head – Private Client Group until 2006, after which he started his own broking firm. He went on to found and lead Quantzee, where his focus has stayed on quantitative trading strategies — volatility dynamics, intraday price behavior, and regime-aware signal design. Every indicator in the Quantzee suite is derived from the methodology he uses in his own live trading account.