Date: 2026-05-08
Validate whether EthNextgenMicroLeverageUnitsShifted is using future data.
The one-bar shift is valid for entry timing.
The research trade file records entry_time as the actual fill candle. All 277 netted research trades have entry_price equal to the ETH 15m candle open at entry_time. The underlying research loops set a pending entry after evaluating candle t, then open the position on candle t+1 at the open. Freqtrade also fills an entry signal on the next candle open, so placing the signal at entry_time - 15m reproduces the same fill time without using the fill candle's close.
| Scope | Trades | Entry matches open | Exit matches open | Non-open exits | Same-bar entry/exit | Entry minus 15m exists | Exit minus 15m exists |
|---|---|---|---|---|---|---|---|
| Full | 277 | 277 | 233 | 44 | 5 | 277 | 277 |
| 2024-2026 | 121 | 121 | 109 | 12 | 1 | 121 | 121 |
Command:
rtk uvx --from freqtrade freqtrade backtesting --config freqtrade/config-okx-futures.json --userdir freqtrade/user_data --strategy EthNextgenMicroLeverageUnitsShifted --timeframe 15m --timerange 20191230-20260508 --pairs ETH/USDT:USDT --export none --fee 0.0004 --cache none
Result:
| Trades | Total return | CAGR | Max drawdown | Win rate | Profit factor |
|---|---|---|---|---|---|
| 271 | 153.90% | 15.78% | 10.08% | 67.2% | 1.92 |
Freqtrade does not exactly reproduce the research trade list:
| Research netted trades | Freqtrade trades | Missing in freqtrade | Extra in freqtrade |
|---|---|---|---|
| 277 | 271 | 6 | 0 |
Missing research trades:
| Source | Side | Entry time | Exit time | Reason |
|---|---|---|---|---|
| micro | long | 2021-05-24 15:30 UTC | 2021-05-24 15:30 UTC | Same-candle take profit |
| micro | long | 2022-01-26 14:30 UTC | 2022-01-26 14:30 UTC | Same-candle stop loss |
| micro | long | 2022-01-29 20:45 UTC | 2022-01-29 20:45 UTC | Same-candle stop loss |
| micro | long | 2022-05-17 13:45 UTC | 2022-05-17 13:45 UTC | Same-candle stop loss |
| micro | short | 2024-05-10 14:45 UTC | 2024-05-10 14:45 UTC | Same-candle take profit |
| nextgen | long | 2025-07-03 00:00 UTC | 2025-07-03 00:45 UTC | Rejected by single-open-trade execution constraint |
The shifted freqtrade check is therefore a strong timing sanity check, not an exact replacement for the custom research engine. The remaining mismatch is explained by execution model limits, not by future data access.