USD/JPY: adding rate gaps, event timing and economic surprise to a neural network did not create an edge
After gold, I repeated the same walk-forward test on USD/JPY, and then added what a trader would expect to matter most for this pair: the US-Japan rate gap, the time to scheduled events, and the surprise (actual minus forecast) of each economic release. The criteria were again written down before the run. The result: no edge was found, and the extra inputs did not help.
Setup
- M5 USDJPY history aggregated to H1, 2010 to 2026. Entry at the close of an H1 bar, stop 1.5 x ATR, target 3 x ATR, at most 72 hours, cost 0.5 pip.
- Test years 2015 to 2025, each trained only on the years before it.
- Inputs: (a) price features only; (b) plus the US 2-year yield, the US-Japan rate gap (both lagged one business day), and the hours to and since the next US payrolls, FOMC and Bank of Japan events.
Result for (a) and (b), 11 test years
| Inputs | Method | Trades | Mean per trade | Positive years |
|---|---|---|---|---|
| price only | LightGBM | 3,682 | -0.002R | 7 of 11 |
| price only | neural network | 1,892 | -0.023R | 4 of 11 |
| price + rates + events | LightGBM | 3,926 | -0.020R | 5 of 11 |
| price + rates + events | neural network | 2,832 | -0.024R | 7 of 11 |
| above the 200 bar average, buy | rule | 3,206 | +0.011R | 5 of 11 |
Adding the surprise
The calendar of my terminal has forecast values only from 2017, so this part used the test years 2020 to 2025. Surprise = actual minus forecast, divided by the standard deviation of the earlier surprises of the same indicator (only past releases), signed by the direction the calendar gives for the currency. Two things went wrong at first and are worth knowing: the calendar times were UTC+2 all year while my price data follow New York time, so they differ by one hour during US daylight saving (I found it because payrolls came out at 14:30 in 130 cases and 15:30 in 72), and event dates have to be checked, not assumed (event days had 1.2 to 1.4 times the normal daily range, so the dates were right).
| Inputs | LightGBM | Neural network |
|---|---|---|
| A price only | -0.077R | -0.039R |
| B + rates + event times | -0.113R | -0.062R |
| C + surprise | -0.118R | -0.020R |
None passed, and C was not better than B. A simple check explains it: after an H1 bar that contains a large US surprise, the sign of the surprise predicted the next 1, 3, 6 and 12 hours with a hit rate of 0.49 to 0.50 (3,699 bars). The market has priced the news by the time the bar closes.
Limits
- One setup. The rate data are daily, there are no interventions (too few cases), and no tick data.
- A reaction to the news in the first seconds or minutes would need tick data and fast execution, which is a different kind of project.
Past data only; nothing here is a forecast or advice.


