# Freqtrade Validation Date: 2026-05-08 ## Data Checks Commands: ```bash 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: ```bash 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.