STUDENT WYCKOFFElliott Wave

Blog and practice / Tools

Continuous futures: why the historical chart changes

Separate a contract’s price move from the gap between expiries, then test what an additive history adjustment preserves.

Student Wyckoff editorial teamPublished Intermediate

A continuous futures chart joins observations from different contracts. Before counting waves, record the exact symbol, expiry and joining method: a shared market name does not establish identical price history.

One market, different contracts

In our invented example, the old contract is 100 and the new contract 103 at the same reference time. These are different series. Placing 103 immediately after the old 100 creates a gap of 3; it does not measure a move of one unchanged contract between those observations.

The provider chooses when and how to switch. Keep its method description and the setting used for the export. A continuous series should not be treated as a separate contract with executable historical prices.

What adding the difference changes

Illustrate an additive adjustment by adding 103−100=3 to earlier prices. The old 99 becomes 102 and 100 becomes 103. A subsequent new-contract price of 104 moves by 1 from its reference 103; the raw comparison 104−100=4 includes the join.

The difference between the two old prices stays 1, but their returns differ: 100/99−1=1/99 versus 103/102−1=1/102. Additive adjustment does not preserve percentage returns and large shifts can produce nonpositive historical prices. This illustrates one method, not a universal provider rule.

Our own teaching example; all figures are hypothetical.

103 − 100 = 3; 99 + 3 = 102; 104 − 103 = 1; 100/99 − 1 = 1/99 ≠ 1/102 = 103/102 − 1

Our hypothetical prices around one contract switch
ObservationContractRaw priceAfter shift
Before switchOld99102
Reference timeOld100103
Same timeNew103103
Next observationNew104104

Preserve the inputs before analysis

Record provider, exact expiry or continuous symbol, interval, time zone, extraction time, roll date and adjustment mode. Align those fields before comparing two files; a different historical representation alone does not demonstrate a calculation defect.

This table is not trade profit, roll cost or commission: it contains no executions or cash multiplier. Use your own permitted data. Elliott does not execute exchange orders or promise automatic futures adjustment.

At the reference time old is 200 and new 196; earlier old was 198 and the next new price is 195. Find the offset and the new-contract move.

The offset is −4: earlier 198 becomes 194 and reference 200 becomes 196. The next move is 195−196=−1; the raw 195−200=−5 includes the contract difference.

Real ES December 2026: historical cutoff and the 25 October snapshot

Use the specific E-mini S&P 500 December 2026 contract, provider symbol ESZ26.CME, quoted in index points in USD, with Yahoo timezone America/New_York. It is not ES=F or a separately tradable continuous series. We retain 17 daily rows for 1–23 October. At the 9 October historical cutoff C=7859.75; only earlier 1–8 October rows define U7897.50,L7672.75. C is inside. The 6 October H7897.50 is locally checkable after the 7th under the one-neighbor-each-side rule. The first later C<L is 7659.75 on the 23rd; none earlier in the saved continuation. This is a retrospectively selected fragment, not a forecast published on the 9th.

As prepared on 25 October 2026, the last bar is the 23rd: O7706.25,H7714.25,L7648.50,C7659.75. The prior 1–22 October range is also [7672.75,7897.50]; C is 13 index points below L. This is provider Close, not a claimed official CME settlement or a guaranteed fill. Later completed bars can return inside, close above 7897.50 or below 7672.75 as separate price branches. Full wave type, degree and subdivisions remain unresolved. For futures, declare the model and exception convention rather than mechanically importing cash-market restrictions; a diagonal has its own requirements. A changed expiry or joining method requires rechecking all old anchors: matching final C does not make histories identical. No signals, trades or returns are calculated here. For an ordinary-impulse hypothesis separately check wave two retracing less than 100% of one, three exceeding one and not being shortest against 1/5, and internal 5–3–5–3–5. For wave-four overlap EWI separately discusses rare short-term futures extremes; that is no permission to rescue any failed count. P0…P5 are unassigned here, so the complete structural test is not passed.

Original diagram from retained real OHLC. Gray marks rows after the 9 October replay cutoff, unavailable at that cutoff. Dashed U/L use only earlier bars, excluding the cutoff bar. One candle is one source row; nontrading dates were not filled. Wave roles remain unresolved.ESZ26.CME · index points; contract currency USD · 2026-10-01–2026-10-237618.627721.547824.467927.38U=7897.50L=7672.752026-10-012026-10-082026-10-162026-10-23C(2026-10-09)=7859.75 · C state: inside [L,U]
Original diagram from retained real OHLC. Gray marks rows after the 9 October replay cutoff, unavailable at that cutoff. Dashed U/L use only earlier bars, excluding the cutoff bar. One candle is one source row; nontrading dates were not filled. Wave roles remain unresolved.
InstrumentCurrencyDateOHLCVAvailability relative to cutoff
ESZ26.CMEUSD2026-10-017719.507767.757672.757724.002214495through cutoff inclusive
ESZ26.CMEUSD2026-10-027724.007810.257723.257777.251859407through cutoff inclusive
ESZ26.CMEUSD2026-10-057781.507847.507760.257826.251359089through cutoff inclusive
ESZ26.CMEUSD2026-10-067831.757897.507829.007874.001262330through cutoff inclusive
ESZ26.CMEUSD2026-10-077881.507884.507815.757852.751399667through cutoff inclusive
ESZ26.CMEUSD2026-10-087850.757858.257783.007816.251700014through cutoff inclusive
ESZ26.CMEUSD2026-10-097820.507870.507817.007859.751130030through cutoff inclusive
ESZ26.CMEUSD2026-10-127873.007887.007846.257858.00927661later data separately
ESZ26.CMEUSD2026-10-137855.507864.007834.507855.751192792later data separately
ESZ26.CMEUSD2026-10-147856.257879.757741.007770.252063500later data separately
ESZ26.CMEUSD2026-10-157768.257801.757717.257791.001909800later data separately
ESZ26.CMEUSD2026-10-167788.757809.507676.007704.252380698later data separately
ESZ26.CMEUSD2026-10-197679.507773.257677.007734.501740657later data separately
ESZ26.CMEUSD2026-10-207740.757791.507704.507755.251718580later data separately
ESZ26.CMEUSD2026-10-217785.007812.257751.007800.251680253later data separately
ESZ26.CMEUSD2026-10-227797.007798.757676.757704.502274209later data separately
ESZ26.CMEUSD2026-10-237706.257714.257648.507659.752274209later data separately

Can ESZ26.CME be replaced with a continuous symbol while retaining all old wave boundaries just because the latest Close matches?

No. First reconcile contracts, roll dates, session, source and full-history adjustment. Today’s 7659.75 does not establish identical earlier series.

Sources

Sources checked: 2026-10-21

This material and its translations were prepared with AI assistance. Educational calculations were checked programmatically. Sources explain concepts; examples and files were created for this article.

Related reading

Next step

Before importing into Pro, check your own permitted CSV and record provider, contract and adjustment assumptions. The guide helps inspect the file; it does not promise an exchange feed or automatic rolling.

Review the CSV file →

futures · continuous series · data quality