Recent Market Adaptation Exploration
Command: rtk .venv/bin/python /home/lxy/okx-codex-trader/scripts/explore_recent_market_adaptation.py --output-dir reports/recent-market-adaptation
Scope: local OKX ETH/BTC 15m candle cache only. No live executor changes, no deployment, no orders.
Cost model: 0.0021 roundtrip cost on margin, leverage 3x.
Recent 90d/30d Style
| window |
start |
end |
eth_return |
btc_return |
eth_annualized_vol |
eth_btc_corr_15m |
| 90d |
2026-02-18 07:45 |
2026-05-19 07:45 |
0.0609073 |
0.133805 |
0.572804 |
0.903771 |
| 30d |
2026-04-19 07:45 |
2026-05-19 07:45 |
-0.0754671 |
0.0263767 |
0.403581 |
0.881614 |
Fixed Strategy Set
| name |
description |
kind |
| btc-lead-momentum |
Trade ETH in the direction of BTC 2h momentum when ETH confirms over 1h; fixed stop, take-profit, or 4h max hold. |
btc_lead |
| eth-compression-breakout |
Trade ETH 15m close breakouts from a compressed 12h range; fixed stop, take-profit, or 6h max hold. |
breakout |
| eth-btc-relative-weakness-short |
Short ETH when BTC is rising over 6h while ETH/BTC keeps falling; fixed stop, take-profit, or 6h max hold. |
relative_weak |
| recent-style-router |
Use prior 30d ETH-vs-BTC relative return and prior 90d volatility: relative weakness routes short, trend/high-vol routes breakout, otherwise BTC lead momentum. |
router |
Summary
| strategy |
total_return |
annualized_return |
max_drawdown |
calmar |
trades |
trades_per_30d |
win_rate |
profit_factor |
min_recent_return |
| eth-btc-relative-weakness-short |
-0.987701 |
-0.496836 |
0.988504 |
-0.502614 |
1381 |
17.7255 |
0.362781 |
0.803357 |
-0.0594292 |
| eth-compression-breakout |
-0.964564 |
-0.40642 |
0.983576 |
-0.413207 |
2421 |
31.0742 |
0.389095 |
0.934415 |
-0.118006 |
| recent-style-router |
-0.984214 |
-0.476837 |
0.993726 |
-0.479848 |
3106 |
39.8663 |
0.400193 |
0.929745 |
-0.534382 |
| btc-lead-momentum |
-1 |
-0.972461 |
1 |
-0.972461 |
10024 |
128.661 |
0.393256 |
0.852771 |
-0.630581 |
Required Horizons
| strategy |
horizon |
total_return |
annualized_return |
max_drawdown |
calmar |
trades |
trades_per_30d |
win_rate |
profit_factor |
| btc-lead-momentum |
full |
-1 |
-0.972461 |
1 |
-0.972461 |
10024 |
128.661 |
0.393256 |
0.852771 |
| btc-lead-momentum |
3y |
-0.998987 |
-0.899346 |
0.999209 |
-0.900058 |
3381 |
92.5456 |
0.403431 |
0.865364 |
| btc-lead-momentum |
1y |
-0.73913 |
-0.73913 |
0.909946 |
-0.812278 |
1103 |
90.6575 |
0.417044 |
0.929291 |
| btc-lead-momentum |
6m |
-0.882988 |
-0.986787 |
0.909946 |
-1.08444 |
666 |
110.387 |
0.378378 |
0.784272 |
| btc-lead-momentum |
3m |
-0.630581 |
-0.98316 |
0.755634 |
-1.30111 |
313 |
105.506 |
0.380192 |
0.782875 |
| btc-lead-momentum |
30d |
-0.218277 |
-0.950019 |
0.325273 |
-2.92068 |
65 |
65 |
0.353846 |
0.716142 |
| btc-lead-momentum |
14d |
0.123449 |
19.7968 |
0.0675722 |
292.972 |
23 |
49.2857 |
0.521739 |
1.7148 |
| eth-btc-relative-weakness-short |
full |
-0.987701 |
-0.496836 |
0.988504 |
-0.502614 |
1381 |
17.7255 |
0.362781 |
0.803357 |
| eth-btc-relative-weakness-short |
3y |
-0.80442 |
-0.419249 |
0.81719 |
-0.513037 |
502 |
13.7409 |
0.374502 |
0.792944 |
| eth-btc-relative-weakness-short |
1y |
-0.230067 |
-0.230067 |
0.33152 |
-0.693976 |
82 |
6.73973 |
0.365854 |
0.80587 |
| eth-btc-relative-weakness-short |
6m |
-0.227862 |
-0.406353 |
0.278277 |
-1.46025 |
34 |
5.63536 |
0.294118 |
0.551067 |
| eth-btc-relative-weakness-short |
3m |
-0.0594292 |
-0.222187 |
0.120842 |
-1.83866 |
10 |
3.37079 |
0.3 |
0.641106 |
| eth-btc-relative-weakness-short |
30d |
0.0343372 |
0.507959 |
0 |
0 |
1 |
1 |
1 |
0 |
| eth-btc-relative-weakness-short |
14d |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
| eth-compression-breakout |
full |
-0.964564 |
-0.40642 |
0.983576 |
-0.413207 |
2421 |
31.0742 |
0.389095 |
0.934415 |
| eth-compression-breakout |
3y |
-0.935489 |
-0.598603 |
0.955744 |
-0.626322 |
1055 |
28.8777 |
0.370616 |
0.839236 |
| eth-compression-breakout |
1y |
-0.280402 |
-0.280402 |
0.48275 |
-0.580843 |
330 |
27.1233 |
0.4 |
0.957288 |
| eth-compression-breakout |
6m |
-0.00459422 |
-0.00924296 |
0.303046 |
-0.0305001 |
162 |
26.8508 |
0.41358 |
1.02929 |
| eth-compression-breakout |
3m |
0.302412 |
1.95527 |
0.231692 |
8.4391 |
86 |
28.9888 |
0.453488 |
1.3238 |
| eth-compression-breakout |
30d |
-0.108164 |
-0.75161 |
0.231692 |
-3.244 |
24 |
24 |
0.291667 |
0.597434 |
| eth-compression-breakout |
14d |
-0.118006 |
-0.962137 |
0.190244 |
-5.0574 |
13 |
27.8571 |
0.230769 |
0.417558 |
| recent-style-router |
full |
-0.984214 |
-0.476837 |
0.993726 |
-0.479848 |
3106 |
39.8663 |
0.400193 |
0.929745 |
| recent-style-router |
3y |
-0.975833 |
-0.710556 |
0.981325 |
-0.724078 |
1449 |
39.6624 |
0.389234 |
0.829114 |
| recent-style-router |
1y |
-0.717535 |
-0.717535 |
0.762582 |
-0.940928 |
541 |
44.4658 |
0.397412 |
0.846596 |
| recent-style-router |
6m |
-0.753109 |
-0.940442 |
0.762582 |
-1.23323 |
335 |
55.5249 |
0.361194 |
0.716265 |
| recent-style-router |
3m |
-0.534382 |
-0.956494 |
0.590076 |
-1.62097 |
188 |
63.3708 |
0.356383 |
0.724072 |
| recent-style-router |
30d |
-0.189946 |
-0.922924 |
0.195932 |
-4.71042 |
23 |
23 |
0.217391 |
0.37093 |
| recent-style-router |
14d |
-0.0513333 |
-0.746883 |
0.0513333 |
-14.5497 |
2 |
4.28571 |
0 |
0 |
Router Regime Split
| regime |
routed_kind |
trades |
avg_trade_return |
sum_trade_return |
| btc_lead_momentum |
btc_lead |
1422 |
-0.0015164 |
-2.15632 |
| relative_weakness_short |
relative_weak |
228 |
-0.00157439 |
-0.358961 |
| trend_or_high_vol_breakout |
breakout |
1456 |
-0.000305147 |
-0.444293 |
Output Files
reports/recent-market-adaptation/recent-style.csv
reports/recent-market-adaptation/strategy-summary.csv
reports/recent-market-adaptation/strategy-horizons.csv
reports/recent-market-adaptation/strategy-trades.csv
reports/recent-market-adaptation/router-regime-split.csv
reports/recent-market-adaptation/summary.json
reports/recent-market-adaptation/report.md