# Rotation strategy expansion Run command: `rtk .venv/bin/python scripts/search_expansion_rotation.py --years 8.0 --top 30` Output files: - `reports/strategy-expansion/rotation-total.csv` - `reports/strategy-expansion/rotation-top.csv` - `reports/strategy-expansion/rotation-horizons.csv` - `reports/strategy-expansion/rotation-monthly.csv` - `reports/strategy-expansion/rotation-report.md` Cost model: 0.04% one-way taker fee, charged on leveraged notional at each portfolio weight change. Universe: BTC-USDT-SWAP, ETH-USDT-SWAP, SOL-USDT-SWAP OKX perpetual swaps when the aligned history is long enough for that candidate; otherwise the row records the BTC/ETH universe used. BTC/ETH use local 15m cache aggregated upward; SOL uses OKX historical candles in memory. ## Top candidates | strategy | family | bar | universe | total_return | annualized_return | max_drawdown | calmar | trades | win_rate | profit_factor | turnover_per_year | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | trend_basket | 1h | BTC-USDT-SWAP,ETH-USDT-SWAP | 538.709 | 1.68871 | 0.709661 | 2.37959 | 45 | 0.466667 | 13.7268 | 8.80418 | | trend_basket-1h-lb720-tr720-bt2880-rb72-top2-mm0.000-bm0.000-vw336-vc0.0550 | trend_basket | 1h | BTC-USDT-SWAP,ETH-USDT-SWAP | 730.936 | 1.82062 | 0.776544 | 2.34452 | 82 | 0.402439 | 6.58668 | 18.5517 | | trend_basket-1h-lb720-tr720-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | trend_basket | 1h | BTC-USDT-SWAP,ETH-USDT-SWAP | 541.984 | 1.69126 | 0.749116 | 2.25768 | 51 | 0.45098 | 6.43727 | 11.7913 | | dual_momentum-1h-lb336-tr1440-bt2880-rb168-top1-mm0.000-bm0.000-vw336-vc0.0550 | dual_momentum | 1h | BTC-USDT-SWAP,ETH-USDT-SWAP | 371.3 | 1.53623 | 0.697804 | 2.20153 | 63 | 0.47619 | 3.58535 | 19.6522 | | trend_basket-1h-lb336-tr1440-bt2880-rb168-top1-mm0.000-bm0.000-vw336-vc0.0550 | trend_basket | 1h | BTC-USDT-SWAP,ETH-USDT-SWAP | 371.3 | 1.53623 | 0.697804 | 2.20153 | 63 | 0.47619 | 3.58535 | 19.6522 | | trend_basket-1h-lb720-tr720-bt2880-rb168-top2-mm0.030-bm0.000-vw336-vc0.0550 | trend_basket | 1h | BTC-USDT-SWAP,ETH-USDT-SWAP | 458.052 | 1.62115 | 0.749116 | 2.16408 | 51 | 0.45098 | 6.06826 | 11.7913 | | dual_momentum-1h-lb336-tr720-bt2880-rb168-top1-mm0.000-bm0.000-vw336-vc0.0550 | dual_momentum | 1h | BTC-USDT-SWAP,ETH-USDT-SWAP | 430.998 | 1.59623 | 0.740396 | 2.15592 | 64 | 0.5 | 3.69885 | 19.9666 | | trend_basket-1h-lb336-tr720-bt2880-rb168-top1-mm0.000-bm0.000-vw336-vc0.0550 | trend_basket | 1h | BTC-USDT-SWAP,ETH-USDT-SWAP | 430.998 | 1.59623 | 0.740396 | 2.15592 | 64 | 0.5 | 3.69885 | 19.9666 | | trend_basket-1d-lb60-tr200-bt200-rb14-top2-mm0.030-bm0.000-vw30-vc0.0550 | trend_basket | 1d | BTC-USDT-SWAP,ETH-USDT-SWAP | 407.634 | 1.57429 | 0.732167 | 2.15018 | 18 | 0.722222 | 71.224 | 3.61698 | | trend_basket-1d-lb60-tr120-bt200-rb14-top2-mm0.030-bm0.000-vw30-vc0.0550 | trend_basket | 1d | BTC-USDT-SWAP,ETH-USDT-SWAP | 380.446 | 1.54657 | 0.732167 | 2.11232 | 18 | 0.722222 | 70.9803 | 3.61698 | ## Recent horizons for top 3 | strategy | horizon | start | end | total_return | annualized_return | max_drawdown | calmar | | --- | --- | --- | --- | --- | --- | --- | --- | | trend_basket-1h-lb720-tr720-bt2880-rb72-top2-mm0.000-bm0.000-vw336-vc0.0550 | 3y | 2023-05-03 | 2026-05-03 | 18.9123 | 1.70798 | 0.609238 | 2.80347 | | trend_basket-1h-lb720-tr720-bt2880-rb72-top2-mm0.000-bm0.000-vw336-vc0.0550 | 1y | 2025-05-03 | 2026-05-03 | 1.19043 | 1.19043 | 0.589079 | 2.02083 | | trend_basket-1h-lb720-tr720-bt2880-rb72-top2-mm0.000-bm0.000-vw336-vc0.0550 | 6m | 2025-11-03 | 2026-05-03 | 0.0237875 | 0.0485494 | 0.165559 | 0.293245 | | trend_basket-1h-lb720-tr720-bt2880-rb72-top2-mm0.000-bm0.000-vw336-vc0.0550 | 3m | 2026-02-03 | 2026-05-03 | 0.0237875 | 0.101214 | 0.165559 | 0.611348 | | trend_basket-1h-lb720-tr720-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 3y | 2023-05-03 | 2026-05-03 | 15.2525 | 1.53088 | 0.6277 | 2.43887 | | trend_basket-1h-lb720-tr720-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 1y | 2025-05-03 | 2026-05-03 | 2.78912 | 2.78912 | 0.46875 | 5.95012 | | trend_basket-1h-lb720-tr720-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 6m | 2025-11-03 | 2026-05-03 | -0.0327779 | -0.064998 | 0.165559 | -0.392597 | | trend_basket-1h-lb720-tr720-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 3m | 2026-02-03 | 2026-05-03 | -0.0327779 | -0.12775 | 0.165559 | -0.771625 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 3y | 2023-05-03 | 2026-05-03 | 13.7541 | 1.45065 | 0.602232 | 2.4088 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 1y | 2025-05-03 | 2026-05-03 | 1.6016 | 1.6016 | 0.503456 | 3.18122 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 6m | 2025-11-03 | 2026-05-03 | -0.0327779 | -0.064998 | 0.165559 | -0.392597 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 3m | 2026-02-03 | 2026-05-03 | -0.0327779 | -0.12775 | 0.165559 | -0.771625 | ## Monthly returns for top 3 | strategy | month | start_equity | end_equity | return | | --- | --- | --- | --- | --- | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2023-06 | 339806 | 324411 | -0.0453066 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2023-07 | 324411 | 291883 | -0.100266 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2023-08 | 291883 | 291883 | 0 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2023-09 | 291883 | 291883 | 0 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2023-10 | 291883 | 525146 | 0.799165 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2023-11 | 525146 | 691496 | 0.316769 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2023-12 | 691496 | 920681 | 0.331433 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-01 | 920681 | 918043 | -0.00286537 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-02 | 918043 | 1.45185e+06 | 0.581465 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-03 | 1.45185e+06 | 1.85149e+06 | 0.27526 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-04 | 1.85149e+06 | 1.42842e+06 | -0.228504 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-05 | 1.42842e+06 | 1.55591e+06 | 0.0892553 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-06 | 1.55591e+06 | 1.32816e+06 | -0.146376 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-07 | 1.32816e+06 | 1.25811e+06 | -0.0527403 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-08 | 1.25811e+06 | 1.2579e+06 | -0.000170837 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-09 | 1.2579e+06 | 1.27393e+06 | 0.0127437 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-10 | 1.27393e+06 | 1.15308e+06 | -0.0948649 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-11 | 1.15308e+06 | 3.0629e+06 | 1.65628 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2024-12 | 3.0629e+06 | 2.29529e+06 | -0.250616 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-01 | 2.29529e+06 | 2.30079e+06 | 0.00239955 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-02 | 2.30079e+06 | 1.90393e+06 | -0.17249 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-03 | 1.90393e+06 | 1.90393e+06 | 0 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-04 | 1.90393e+06 | 1.93601e+06 | 0.0168482 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-05 | 1.93601e+06 | 3.67651e+06 | 0.899017 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-06 | 3.67651e+06 | 3.59567e+06 | -0.021989 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-07 | 3.59567e+06 | 6.04754e+06 | 0.681895 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-08 | 6.04754e+06 | 7.27856e+06 | 0.203558 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-09 | 7.27856e+06 | 7.27856e+06 | 0 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-10 | 7.27856e+06 | 5.57999e+06 | -0.233366 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-11 | 5.57999e+06 | 5.57999e+06 | 0 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2025-12 | 5.57999e+06 | 5.57999e+06 | 0 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2026-01 | 5.57999e+06 | 5.57999e+06 | 0 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2026-02 | 5.57999e+06 | 5.57999e+06 | 0 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2026-03 | 5.57999e+06 | 5.57999e+06 | 0 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2026-04 | 5.57999e+06 | 4.93296e+06 | -0.115956 | | trend_basket-1h-lb720-tr1440-bt2880-rb168-top2-mm0.000-bm0.000-vw336-vc0.0550 | 2026-05 | 4.93296e+06 | 5.39709e+06 | 0.094088 |