# ETH Nextgen Shift Alignment Validation Date: 2026-05-08 ## Purpose Validate whether `EthNextgenMicroLeverageUnitsShifted` is using future data. ## Finding 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. ## Alignment Audit | 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 | ## Freqtrade Full-Range Check Command: ```bash 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 | ## Known Execution Differences 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.