A backtest can use a real announcement and real prices yet still give a strategy information it could not have had. The mistake is often in the clock or the data version, before any performance calculation begins.
This Read the Reaction lesson asks how to reconstruct a news-based decision without look-ahead bias: using later information in an earlier decision. Our news-versus-technical comparison explains the approaches. Here, “news trading” means responding to an announcement or catalyst, rather than institutional event-driven strategies such as merger arbitrage.
Keep the release as it existed then
A figure downloaded today may differ from the figure first published. The U.S. Bureau of Labor Statistics describes revisions that incorporate later reports and other updates. Revised data can be appropriate for studying the economy while being unavailable to a trader at the original release.
The St. Louis Fed’s ALFRED explanation describes archived data vintages: versions associated with different dates. Its real-time-period documentation distinguishes what is known today from what was known in an earlier period. Those date-based records do not establish when your feed received a message to the millisecond; that requires separate evidence.
For an original hypothetical example, suppose a fictional economic reading is first released at 3.2%, against a forecast snapshot of 3.0% saved before publication. A test labels this +0.2 percentage points above forecast. A later revision to 2.9% would instead produce −0.1 percentage points if substituted into that old row. That reverses the classification by leaking later information, not by correcting what the trader knew.
Preserve the forecast’s source, collection time and definition too. “Surprise” is relative to that recorded benchmark; it is not automatically good news for a token or a prediction of price direction. Store edited headlines as new versions rather than silently replacing the original text.
Separate publication from receipt and action
Continue on an invented trading day, with a fictional token quoted in USD on one fictional spot venue. For timing only, assume a predeclared test buys two tokens when the first-released reading strictly exceeds the saved forecast. This is a teaching rule, not an economic recommendation. All clocks below are assumed synchronized in UTC.
| UTC time | Event |
|---|---|
| 12:00:00.000 | Release published |
| 12:00:02.000 | Collector receives it |
| 12:00:02.100 | Decision completes |
| 12:00:02.300 | Order reaches venue |
The assumed delay is 2.000 seconds for delivery, 0.100 seconds for processing and 0.200 seconds for routing: 2.300 seconds from publication to order arrival. The test cannot place this order at the publication time merely because its historical calendar contains that timestamp.
In actual research, document clock offsets, timezone conversions, timestamp precision and whether a field means publication, receipt or a later update. When receipt logs are missing, use explicit delay scenarios and label the limitation. Missing evidence is not evidence of zero latency.
Use a price eligible after the order arrives
Suppose the best ask was 100.00 USD at 11:59:59.900, before publication. At the modeled arrival time of 12:00:02.300, assume an accessible ask of 100.60 with five tokens available, and immediate full execution of the two-token order at that price. These invented matching assumptions simplify the calculation; a displayed quote alone does not guarantee a real fill.
The modeled entry costs 2 × 100.60 = 201.20 USD, before fees. Assigning the earlier 100.00 quote would record 200.00 and understate entry cost by 1.20 USD. The earlier quote cannot justify that fill. A real order might later receive 100.00, but it would need separate eligible execution evidence.
Include spread, available quantity and fees in the execution model. Do not subtract the same spread or slippage again if already represented in the simulated fill. Our liquidity lesson separates a price reference from executable size. This exercise compares entry costs only; it contains no exit, return or profitability claim.
Put technical confirmation on the same clock
If the rule also requires a completed one-minute candle covering 12:00 up to, but not including, 12:01 UTC, the decision cannot be complete at 12:00:02.100. It must wait for the interval to end and for the completed data to arrive. Processing and order routing come afterward.
Moving the decision later while retaining the old 100.60 fill repeats the timing error unless a new eligible quote supports it. Likewise, a candle labeled 12:00 does not make its eventual close available at 12:00. See our timeframe lesson for that distinction.
Backtrader’s documented execution model illustrates one convention: a standard market order generated from an examined bar uses the next bar’s open. That is a simulator assumption, not proof that a live order can fill there. Check the engine’s settings and data resolution rather than assuming “next bar” solves every latency or liquidity problem.
Freeze the experiment before reading the winners
Write the event-selection rule, surprise definition, technical condition, delays, position size, exit logic and costs before comparing results. An event-only rule and a rule requiring technical confirmation are different experiments. Each must use prices eligible under its own timing.
Use a predefined event list rather than keeping only releases followed by large moves. Preserve exclusions and their reasons, including missing data or untradeable markets. Fit any thresholds on a development period, then keep them fixed for a later evaluation period. A plausible narrative and a tidy timeline still do not demonstrate an edge.
For slower or uncertain receipt, test stated alternatives instead of choosing the delay that gives the best historical result. This is sensitivity analysis of assumptions, not a reconstruction of unrecorded fills.
Make one decision reconstructable
For each candidate event, save:
- The original release, version and publication timestamp.
- The pre-release forecast snapshot and exact comparison rule.
- Receipt time and the latest availability time of every required input.
- Decision and order-arrival times, with the delay assumptions identified.
- Eligible quote or trade evidence, quantity, fees and the eventual result or reason no trade occurred.
Our backtests and live results guide explains how to assess the resulting evidence. Start by reconstructing one decision without borrowing from the future. Then evaluate the complete predefined sample, including failed setups and missed fills.
Educational only, not financial advice. Every event, reading, time and price in the worked example is hypothetical. Correct chronology improves the integrity of a test; it does not guarantee trading profits.