freqtrade-validation.md 3.6 KB

Freqtrade Validation

Date: 2026-05-08

Data Checks

Commands:

rtk uv run python scripts/validate_data_pipeline.py --symbols BTC-USDT-SWAP,ETH-USDT-SWAP --bars 5m,15m --fetch-latest
rtk uv run python scripts/validate_external_backtest.py --symbol BTC-USDT-SWAP --bar 15m --limit 50000 --trend-sma 240 --rsi-long-threshold 2.0 --rsi-short-threshold 101.0 --exit-rsi 55.0

Results:

Symbol Bar Rows First UTC Last UTC Unexpected intervals Live mismatches
BTC-USDT-SWAP 5m 672525 2019-12-16 06:05 2026-05-08 09:45 0 0
BTC-USDT-SWAP 15m 224172 2019-12-16 06:00 2026-05-08 08:45 0 0
ETH-USDT-SWAP 5m 670006 2019-12-25 00:00 2026-05-08 09:45 0 0
ETH-USDT-SWAP 15m 223332 2019-12-25 00:00 2026-05-08 08:45 0 0

The internal RSI2 implementation matched backtesting.py on the same BTC 15m data and execution model:

Rows Internal trades External trades Internal final equity External final equity Final equity diff
50000 222 222 19962.777451 19962.777247 0.000204

Freqtrade Setup

Freqtrade can read the exported OKX futures JSON files, but OKX market loading through ccxt/aiohttp did not use environment proxy variables by default. freqtrade/config-okx-futures.json now sets httpsProxy explicitly in both ccxt_config and ccxt_async_config.

Export commands:

rtk uv run python scripts/export_freqtrade_data.py --symbol BTC-USDT-SWAP --bar 5m
rtk uv run python scripts/export_freqtrade_data.py --symbol ETH-USDT-SWAP --bar 5m
rtk uv run python scripts/export_freqtrade_data.py --symbol BTC-USDT-SWAP --bar 15m
rtk uv run python scripts/export_freqtrade_data.py --symbol ETH-USDT-SWAP --bar 15m

Freqtrade Backtests

Timerange: 20240101-20260508

Fee: 0.0004

Strategy Pair Trades Total return CAGR Max drawdown Win rate Profit factor Notes
BtcRsi2Guarded BTC/USDT:USDT 365 0.05% 0.02% 0.21% 63.0% 1.04 Framework-check only; low edge under freqtrade sizing.
EthFocusedInformativeDry ETH/USDT:USDT 508 -0.95% -0.41% 0.95% 43.3% 0.70 Reject for live use.
EthNextgenMicroSignalStream ETH/USDT:USDT 119 0.02% 0.01% 0.13% 37.8% 1.03 Signal-only stream, mostly flat after fees.
EthNextgenMicroLeverageUnits ETH/USDT:USDT 119 0.44% 0.19% 13.21% 37.8% 1.01 Uses position units; poor risk/reward.
EthNextgenMicroLeverageUnitsShifted ETH/USDT:USDT 119 34.02% 13.27% 10.08% 65.5% 1.77 Best freqtrade confirmation; depends on one-bar shifted signal alignment.

Full-range shifted retest after timestamp fix:

Strategy Pair Timerange Trades Total return CAGR Max drawdown Win rate Profit factor
EthNextgenMicroLeverageUnitsShifted ETH/USDT:USDT 20191230-20260508 271 153.90% 15.78% 10.08% 67.2% 1.92

Constraints

The current long-short fusion strategy is not directly representable as one ordinary freqtrade strategy because it is portfolio-level weighted return composition across multiple long and short components. Freqtrade is useful here for leg-level and execution-framework checks, not as a full replacement for the portfolio combiner.

See reports/eth-nextgen-shift-alignment-validation.md for the one-bar shifted signal alignment audit. The shift is valid for reproducing next-open entries. Freqtrade still cannot exactly reproduce same-candle stop/take exits from the custom research engine.