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
CME Rulebook Chapter 256 defines 6M as a dated MXN/USD futures contract. Contract identity and expiry therefore belong in every record.
A specified signal may improve a specified outcome under specified conditions. That possibility is what the experiment is allowed to reject.
“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.
| Layer | Required evidence | Fail-closed condition |
|---|---|---|
| Source | Provider, dataset name, entitlement, retrieval time, schema/version and checksum | Unknown provenance or silently revised file |
| Instrument | 6M product code, delivery month, venue and trade date | Generic symbol cannot be mapped to an expiry |
| Trades | Exchange timestamp, price, quantity and sequence or correction fields available in the feed | Missing interval is treated as zero activity |
| Quotes | Bid, ask, displayed quantity, update time and book depth appropriate to the fill model | Close price is assumed executable |
| Derived bars | Timezone, boundaries, inclusion rule, missing-record policy and source-row lineage | Vendor bar cannot be reconstructed |
| Transformations | Bad-tick, duplicate, session, roll and adjustment code with version hash | Manual 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.
Ingest expiries
Keep every eligible dated contract intact, including volume and quote evidence around migration.
Choose ex ante
Use only information available then—for example, a prior-day participation rule—to select the active expiry.
Model the roll
Close and reopen at executable prices, with two spreads, slippage, fees and any missed or partial fill.
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.
Eligible
Correct contract, clean data, allowed session, no exclusion active.
Observed
All inputs have arrived and the bar or event window is complete.
Signaled
Frozen comparison operators and thresholds evaluate true.
Submitted
Declared latency and order type determine when the order reaches the market.
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 × contracts−non-overlapping dollar costsSide 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.
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.
| Record | Must publish | Reject when |
|---|---|---|
| Question registry | Primary claim, baseline, metric, direction, horizon, family size | Claim was chosen after outcome review |
| Data manifest | Files, checksums, schema, fields, gaps, corrections, dated contracts | Any order cannot be traced to source data |
| Temporal manifest | UTC rules, trade date, event versions, joins, availability lag | Future or same-date-late information leaks in |
| Execution manifest | Order type, size, latency, queue assumptions, costs, rolls | Fill requires evidence absent from the feed |
| Validation manifest | Partitions, purges, locks, holdout access log, all variants | Holdout was reused after modification |
| Decision | Accept, limited/experimental, or reject with reason | Required evidence is replaced by inference |
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
- CME Rulebook Chapter 256: Mexican Peso/U.S. Dollar futures for contract identity, dated delivery, trading-unit context and termination rules.
- CME Group 2026 FX Product Guide and the current Mexican Peso contract-specification page for current product and quotation context. Detailed mechanics remain owned by this site’s canonical 6M specification article.
- CME DataMine historical-data catalog and CME Market by Order FAQ for distinctions among trade, top-of-book, depth and order-level evidence. No market dataset was purchased or retrieved for this page.
- CME Group trading-hours and holiday notices for schedule-version controls.
- Banco de México 2026 publication calendar, INEGI 2026 release calendar, Federal Reserve FOMC calendars, BLS release calendar, and BEA release schedule for event-control design.
- NIST/SEMATECH introduction to time-series analysis for temporal dependence and validation context.
- CFTC advisory on commodity trading systems and hypothetical performance for simulation and hindsight limitations.
Sources and methods were reviewed August 13, 2026. This page is unsponsored editorial analysis and presents a research protocol, not original market results.