Skip to main content

Dated contracts · chronology · executable evidence

6M Backtesting: Build a Reproducible Futures Test

Imagine two continuous 6M charts built from the same dated contracts. At one roll, one vendor adds the price gap backward; another splices unadjusted closes. The same rule now sees a trend in one history and a reversal in the other. Before asking whether a strategy worked, a researcher has to decide which history was actually testable.

Instrument
Dated 6M
Clock
UTC ordered
Costs
Order-level
Original findings
None

Research question

Write the Claim Before Querying the Data

A backtest should begin with one decision and one outcome, not a chart pattern found after scanning. A complete question names the information set, decision timestamp, eligible contracts, holding rule, sizing rule, comparison, costs, and rejection threshold.

Example protocol statement—not a result

Test whether a past-only rule, evaluated at a declared 6M bar close and executed no earlier than the next executable quote, improves a risk-matched naive baseline after fees, spread and slippage across chronological validation and a sealed final holdout.

Primary outcome
Predeclared net metric
Comparison
Risk-matched baseline
Decision time
Explicit timestamp
Failure allowed
Yes
Fact

CME Rulebook Chapter 256 defines 6M as a dated MXN/USD futures contract. Contract identity and expiry therefore belong in every record.

Hypothesis

A specified signal may improve a specified outcome under specified conditions. That possibility is what the experiment is allowed to reject.

Prohibited shortcut

“The chart looked profitable” is not a result when the rule, sample, roll treatment, costs, or alternatives changed after outcomes were visible.

Audit trail before bars

Data Lineage Starts With Dated Contracts

The research table should be traceable back to source records. A vendor symbol such as “6M continuous” is not sufficient lineage. Preserve the exchange product, delivery month, source dataset, file version, timestamp semantics, corrections, and every transformation.

LayerRequired evidenceFail-closed condition
SourceProvider, dataset name, entitlement, retrieval time, schema/version and checksumUnknown provenance or silently revised file
Instrument6M product code, delivery month, venue and trade dateGeneric symbol cannot be mapped to an expiry
TradesExchange timestamp, price, quantity and sequence or correction fields available in the feedMissing interval is treated as zero activity
QuotesBid, ask, displayed quantity, update time and book depth appropriate to the fill modelClose price is assumed executable
Derived barsTimezone, boundaries, inclusion rule, missing-record policy and source-row lineageVendor bar cannot be reconstructed
TransformationsBad-tick, duplicate, session, roll and adjustment code with version hashManual cleanup has no retained log

CME DataMine lists distinct end-of-day, time-and-sales, top-of-book, depth and Market by Order products. Those datasets do not contain interchangeable evidence. This page did not purchase, download, or analyze any of them.

Two decisions, one frozen policy

Separate the Tradeable Roll From the Analytical Adjustment

The day a strategy changes contracts is an execution decision. The way a chart removes or preserves the price gap is an analytical decision. Store both, because a back-adjusted level can support return analysis while remaining impossible to trade.

01

Ingest expiries

Keep every eligible dated contract intact, including volume and quote evidence around migration.

02

Choose ex ante

Use only information available then—for example, a prior-day participation rule—to select the active expiry.

03

Model the roll

Close and reopen at executable prices, with two spreads, slippage, fees and any missed or partial fill.

04

Build views

Create adjusted analysis series separately and retain the mapping back to actual fills.

Clock policy

Order events in UTC

Preserve the exchange timestamp, CME trade date, local civil time and resolved UTC offset. Convert scheduled Banxico, Mexican, and U.S. releases from the contemporaneous published timezone; never apply today’s offset backward across history.

Calendar policy

Version holidays and event timestamps

CME holiday schedules can change and should be captured as dated research inputs. Event lists also require official release records, not a present-day calendar pasted over old samples.

Information available then

Translate the Thesis Into Timestamped State Changes

Every input needs an availability time, every branch needs an objective condition, and every action needs a delay and order instruction. A daily macro value released after the futures decision cannot be joined to that same decision merely because both rows share a date.

1

Eligible

Correct contract, clean data, allowed session, no exclusion active.

2

Observed

All inputs have arrived and the bar or event window is complete.

3

Signaled

Frozen comparison operators and thresholds evaluate true.

4

Submitted

Declared latency and order type determine when the order reaches the market.

5

Resolved

Fill, partial, cancellation, exit and remaining inventory are recorded.

  • Freeze feature lookbacks and warm-up. Incomplete history must produce ineligible, not a shorter lookback chosen silently.
  • Define collisions. State what happens when entry, stop, target and roll instructions share a bar and sequence is unknown.
  • Keep sizing past-only. Volatility, covariance and loss-budget estimates use only observations available before the order.
  • Log no-trade outcomes. Missing book data, event exclusions and failed market-quality gates belong in the denominator.

From signal to fill

Charge the Price the Strategy Could Have Paid

Commission is only one cost. A defensible simulation distinguishes the decision price from the arrival quote, the fill from both, and the exit from all three. Use the canonical 6M contract-specification guide for current tick arithmetic rather than duplicating mechanics here.

side × (exit fill − entry fill) × 500,000 × contractsnon-overlapping dollar costs

Side convention: use +1 for a long and −1 for a short. Entry and exit fills already include the spread and any modeled slippage, so subtract only fees, roll transaction costs, or other dollar charges not already embedded in those fills.

Marketable order

Cross the live book

Walk declared size through available depth. Stress latency, missing updates and worse tail fills; displayed quantity can cancel before arrival.

Passive order

Earn only actual fills

Model queue rules with evidence the feed supports. A touched limit is not automatically filled, and an unfilled winner remains an unfilled order.

Stop order

Trigger is not fill

Gap and fast-market paths can execute beyond the trigger. The same adverse mechanics apply during exits and risk controls.

Cost stress

Test survival, not precision

Raise spread, slippage, latency and missed-fill assumptions together. A result that survives only the optimistic point estimate is not accepted.

Chronology is a control

Develop Early, Validate Later, Open the Final Holdout Once

Random row shuffling breaks time order, leaks persistent regimes across partitions, and can place overlapping outcomes on both sides. Use chronological blocks with purge or embargo rules long enough to separate overlapping labels, trades, and feature windows.

Development

Define data cleaning, candidate rules, baseline, metrics, cost model and limited parameter grid.

Validation

Evaluate the frozen family on later dates; use it for one documented selection, not repeated rescue.

Lock

Seal code hash, inputs, exclusions, parameters, roll rules, costs and acceptance thresholds.

Final holdout

Open once. Any post-result change retires that holdout and requires a genuinely untouched replacement.

Hypothetical performance boundary

The CFTC’s advisory on commodity trading systems warns that hypothetical results can benefit from hindsight and do not reproduce actual trading. Backtest output remains simulated evidence even after careful validation.

Tests designed to destroy the claim

A Candidate Must Survive Reasonable Alternate Histories

Robustness is not retuning until profitability returns. Predeclare a small set of economically plausible alternatives and show the entire matrix, including failures, sample attrition, uncertainty, and the number of candidates tried.

Data

Reject a splice artifact

  • Second source where licensing permits
  • Adjacent bar boundaries
  • Alternate bad-tick policy
  • Two ex-ante roll rules

Market state

Reject one-regime dependence

  • Early versus late years
  • Event versus non-event dates
  • Volatility and liquidity states
  • Roll-proximate versus ordinary dates

Implementation

Reject fragile execution

  • Wider cost schedule
  • Delayed arrival
  • Reduced displayed depth
  • Missed and partial fills

NIST’s time-series guidance treats time dependence as part of the analysis. Report effect sizes, tail outcomes and block-aware uncertainty; a trade count alone does not provide independent observations.

Ending artifact

Reproducibility Record and Fail-Closed Acceptance

A result is eligible for review only when another analyst can reconstruct the tested information set and every simulated order. Blank required fields fail the record; they do not become estimated facts.

RecordMust publishReject when
Question registryPrimary claim, baseline, metric, direction, horizon, family sizeClaim was chosen after outcome review
Data manifestFiles, checksums, schema, fields, gaps, corrections, dated contractsAny order cannot be traced to source data
Temporal manifestUTC rules, trade date, event versions, joins, availability lagFuture or same-date-late information leaks in
Execution manifestOrder type, size, latency, queue assumptions, costs, rollsFill requires evidence absent from the feed
Validation manifestPartitions, purges, locks, holdout access log, all variantsHoldout was reused after modification
DecisionAccept, limited/experimental, or reject with reasonRequired evidence is replaced by inference
Research status as of August 13, 2026

No original backtest is reported. This article reports no original 6M sample, strategy test, fill simulation, performance statistic, season, regime, or trading edge. It supplies a protocol for producing evidence. Until a sealed study passes every required field above, the conclusion is not tested.

Sources, methods and editorial disclosure — reviewed August 13, 2026

Sources and methods were reviewed August 13, 2026. This page is unsponsored editorial analysis and presents a research protocol, not original market results.