Futures trading charts: contracts, continuous series, sessions
Free futures charts differ because sites pick different contracts, roll rules, adjustment methods, sessions and closing prices. Know all five before you trust a chart for research, and test on a series you built and checked yourself.
By Soren Huang · Published · updated · Editorial policy
Contents
- Why do free futures charts show different prices for the same market?
- What is the difference between a single-contract chart and a continuous chart?
- Why does a continuous chart jump on roll day?
- Back-adjusted or unadjusted: which series should you backtest?
- How do session settings change the daily bar?
- Why is a chart for reading not clean data for testing?
- How do you check two chart sources against each other?
- How do you catch a roll problem after a backtest?
- Frequently asked questions
Why do free futures charts show different prices for the same market?
Free futures charts differ because each site makes five choices: which contract month to show, how to stitch expiring contracts into one continuous series, whether to adjust old prices, which trading session builds the daily bar, and whether the daily close is the last trade or the settlement price. Check all five before you use a chart for research.
None of these choices is wrong. Each one answers a different question. A chart built to read today's price action can still be a poor series for a backtest. Think of two maps of the same city. One shows the subway, the other shows the streets. Both are correct, but you cannot drive with the subway map.
| Choice the chart site makes | Typical options | What changes on the chart |
|---|---|---|
| Contract | One contract month, or a continuous series | Price level, history length, gaps |
| Roll rule | Fixed days before expiry, or when volume or open interest moves | Date of the jump between contracts |
| Adjustment | None, back-adjusted by difference, back-adjusted by ratio | All prices before each roll |
| Session | Full electronic session, or regular (day) session only | Open, high, low and close of every daily bar |
| Daily close | Last trade, or exchange settlement price | The close, and every indicator built on it |
What is the difference between a single-contract chart and a continuous chart?
A single-contract chart shows one real contract that expires, and a continuous chart joins several contracts into one long series that no trader ever held as one position.
A futures contract is an agreement for one delivery or expiry month. E-mini S&P 500 futures (ES), for example, list quarterly contracts in March, June, September and December. Exchanges label months with letter codes: H for March, M for June, U for September and Z for December. So "ESH" means the March contract.
The front month is the contract nearest to expiry, which is usually the most traded one. A single-contract chart is a chart of one contract month from its first trade to its expiry. Its prices are real, but its history is short. Its early months also have little volume, because traders are still in the older contract.
A continuous chart is a series that shows the front month until a chosen roll date and then switches to the next contract. It gives you years of history in one series, which is what most research needs. The price you pay for that history is the switch itself.
Why does a continuous chart jump on roll day?
A continuous chart jumps on roll day because two contract months trade at different prices at the same moment, so switching from one to the other creates a gap that the market never made.
The roll is the move from the expiring contract to the next one. The two contracts differ in price because of interest rates, dividends, storage costs or expectations, depending on the market. On a stock index future the difference may be small. On commodity futures charts, such as crude oil or natural gas, it can be large. That is because nearby and later delivery months can trade far apart.
Sites also roll on different dates. Some switch a fixed number of days before expiry. Others switch when the next contract's volume or open interest passes the front month's. Two sites can show the same market with the gap on different days. Between those days they show different prices.
Back-adjusted or unadjusted: which series should you backtest?
For most backtests that calculate profit in points or ticks, a back-adjusted series is the better choice. Unadjusted series are useful when a rule depends on the real price level.
A back-adjusted series is a continuous series in which every price before a roll is shifted by the roll gap, so the join is smooth. The difference method is the most common. It adds the gap to all earlier prices:
adjusted old price = original old price + (new contract price − old contract price at the roll)
In words: take the price gap between the two contracts on roll day, and add it to every bar before that day. Repeat this for every earlier roll. Some sites use a ratio instead. They multiply old prices by the price ratio of the two contracts, which keeps percentage moves intact.
Hypothetical example
On roll day the expiring contract closes at 4,000 and the next contract trades at 4,020. An unadjusted continuous chart jumps 20 points. A strategy that is long across that day books +20 points it never earned. At $50 per point, that is $1,000 of profit that exists only on the chart. A difference-adjusted series adds 20 to every earlier price, so a past bar at 3,900 now reads 3,920. The jump disappears, and a 50-point move on that old bar is still 50 points.
| Series | What it keeps correct | What it distorts | Good for |
|---|---|---|---|
| Unadjusted | Real historical price levels | Fake jumps at every roll, which trigger stops and signals and create fake profit or loss | Rules based on real levels (round numbers, old highs); comparing with a printed quote |
| Back-adjusted (difference) | Point and tick moves, so trade profit in money | Old price levels; percentage changes; long histories can even turn negative | Most backtests that calculate profit per trade |
| Back-adjusted (ratio) | Percentage moves | Point moves, so trade profit in money on old bars | Rules based on percent returns over long histories |
One more effect surprises many traders. A back-adjusted history changes after every new roll, because all past prices shift again. A chart you saved last quarter and the same chart today will show different old prices, and neither one is wrong.
How do session settings change the daily bar?
The session setting decides which hours go into each bar. So the same market can have different daily opens, highs, lows and closes on two sites, even with the same contract and roll.
A trading session is the set of hours a bar is built from. Many futures trade almost around the clock on electronic platforms. CME equity index futures, for example, trade nearly 24 hours on weekdays with a short daily break. A chart can build its daily bar from the full electronic session. It can also use only the regular day session, which roughly follows the hours of the underlying cash market.
Taiwan index futures show the same issue clearly. TAIFEX runs a regular session from 08:45 to 13:45 Taiwan time and an after-hours session from 15:00 to 05:00 the next morning. TAIFEX counts the after-hours session as part of the next trading day. So a full-session daily bar for Tuesday starts on Monday afternoon. A day-session chart ignores those hours completely. For a deeper look, see night sessions in futures backtests.
Three session details change the bars you see:
- Session hours. A full-session bar includes overnight highs and lows. A day-session bar opens with a gap whenever the market moved overnight. Indicators built on daily ranges, such as the Average True Range (ATR), give different values from each version.
- Where the day starts. Exchanges start the trading day at a set evening or afternoon time. A site that cuts days at midnight in your local time zone, or in UTC, splits the session differently. Some sites also show a small extra Sunday bar.
- Which close. Many exchanges publish a daily settlement price, set by a rule that is often based on trading in a short window near the end of the regular session. One site's "close" may be that settlement price, and another's may be the last trade.
Session hours and contract rules belong to the exchange, and exchanges can change them. Confirm them on the exchange's contract page. The free futures market hours tool shows sessions by exchange in your own time zone.
Why is a chart for reading not clean data for testing?
A chart for reading only has to look right today. Data for testing has to be correct on every bar, and the same each time you rerun the test. Free charts are built for the first job, not the second.
A free futures chart may hide its roll rule. It may change its adjustment without notice or fill missing bars by copying the last price. It may show delayed prices, or offer only a short history that you cannot export. None of this matters when you glance at a trend. It matters a lot when a backtest makes thousands of decisions, because every bad bar is a possible fake trade. The guide to backtest data quality covers gaps, bad ticks and time zones in depth. The steps below focus on the chart-specific checks.
How do you check two chart sources against each other?
- Write down the definition. For each source, note the contract or continuous method, the roll rule, the adjustment, the session and the time zone. If a source does not say, treat its series as unknown.
- Compare a few daily closes with the exchange. Pick several dates and compare each source's close with the exchange's published settlement price for that contract. A small difference that changes from day to day usually means "last trade versus settlement". The same fixed offset on every date between two rolls usually means the source is back-adjusted. Large random differences point to a data problem.
- Find the roll dates. On an unadjusted series, look for one-bar jumps near each expiry. Two sources that jump on different days use different roll rules.
- Count bars per day. On intraday data, every normal day should have the same number of bars for the session you chose. Short days should only appear on holidays and early closes.
- Compare one week bar by bar. Line up one week of intraday bars from both sources. If the highs and lows match but the times are shifted by whole hours, the difference is the time zone, not the price.
- Check the volume. Some continuous series show only the front contract's volume, and others add all months together. Volume-based rules react to this choice.
One practical habit removes many of these problems. Keep intraday bars, and build daily bars yourself from the session you chose. Then the session definition is yours and does not depend on a website's default. AlphaPrime (Valynox) is built around this kind of control. Its backtesting lets you set the data resolution and the trading sessions, and each strategy is evaluated with fees, slippage and next-bar execution.
How do you catch a roll problem after a backtest?
Look at the trades closest to roll dates. If they hold much of a strategy's profit or loss, the series, not the strategy, may be producing the result.
Sort the trade list by result and look at the largest winners and losers. Compare their dates with the roll calendar. A trade that earned a full roll gap in one bar on an unadjusted series is a fake trade. A strategy whose best months all contain a roll needs a second test on a back-adjusted series before you believe it.
AlphaPrime's Performance Report shows the individual trades, the equity curve, the drawdown and periodic performance. You can check whether jumps in the equity curve line up with roll dates.
What this means if you use AlphaPrime: the series you load decides what every backtest measures, so define the contract, roll, adjustment and session first. Then use the trade list to confirm that roll days are not driving the results.
Frequently asked questions
Are free futures charts good enough for backtesting?
Free futures charts are useful for reading price action, but they often hide their roll rule, adjustment method and session settings. Many also limit history or exports. For backtesting, use a series whose definition you know and have checked against the exchange's settlement prices.
What does "continuous contract" mean on a futures chart?
A continuous contract is a series that shows the front month and switches to the next contract month at a roll date. It gives long history in one chart. Unless it is back-adjusted, it contains price jumps at each roll that no trader earned.
Why does my back-adjusted chart show different old prices than last month?
Back-adjusting shifts all past prices by each new roll gap. After every roll, the whole history moves again. Price moves between bars stay the same, but the old price levels change, so older screenshots no longer match.
Should I backtest on the day session or the full session?
Test on the session you will actually trade. If your strategy only trades during the day, a day-session series avoids overnight bars you would never act on. If you hold or trade overnight, the full session shows the highs, lows and gaps your positions would face.
Why is the daily close different on two futures chart sites?
One site may use the exchange's daily settlement price and another the last traded price, and the two can differ. One site may also show a back-adjusted series, which shifts every old close by the roll gaps. The sites may also cut the trading day at different times or use different contracts around a roll, so compare a few dates with the exchange's published settlement to find the cause.
What AlphaPrime does here
AlphaPrime's backtesting uses the data resolution and trading sessions you set, with fees, slippage and next-bar execution in every evaluation. The Performance Report shows equity, drawdown and individual trades, so you can check results around roll dates.

