eth-nextgen-shift-alignment-validation.md 2.5 KB

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:

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.