regime_detectorFix aplicado: ATR_PCT_VOLATILE antes era fixo em 2.5% (calibrado
para 15m/1h). Em 1d BTC ATR% típico é 3-5% — classificava 97.4% dos
dias como "volatile" → StormIA abstava de tudo.
Novo threshold por TF: - 15m: 1.5% - 1h: 2.5% - 4h: 4.0% - 1d: 6.0% ← era 2.5% - 1w: 10.0%
Plus: _detect_w1_bias agora passa interval="1w" ao regime detector.
| Símbolo | Vencedor | Return | N | WR | Expectancy |
|---|---|---|---|---|---|
| BTCUSDT | bollinger_reversion | +8.3% | 5 | 40% | +1.66% |
| ETHUSDT | stormia_full_engine 🥇 | +10.6% | 24 | 33% | +0.44% |
| XRPUSDT | ifr2_with_mm200 | +7.0% | 20 | 50% | +0.35% |
Vencedor global novo: stormia_full_engine em ETH com +10.6% —
maior return absoluto de toda a matriz. R:R médio 3:1 (+3.9% win vs
-1.3% loss). O engine multi-TF mostrou edge real quando o regime fica
estável.
| BTCUSDT | ETHUSDT | XRPUSDT | |
|---|---|---|---|
| Antes (threshold fixo 2.5%) | 0 trades | 0 trades | 0 trades |
| Depois (TF-aware) | 24 trades, -14.2% | 24 trades, +10.6% 🥇 | 18 trades, -5.8% |
| strategy | n | wr | avg_win | avg_loss | expectancy | return | sharpe | max_dd | fees |
|---|---|---|---|---|---|---|---|---|---|
| bollinger_reversion | 5 | 40% | +7.75% | -2.39% | +1.662% | +8.3% | +0.68 | -0.4% | $0.38 |
| legacy_rules | 0 | — | — | — | — | — | — | — | — |
| breakout | 0 | — | — | — | — | — | — | — | — |
| bollinger_breakout | 0 | — | — | — | — | — | — | — | — |
| stochastic | 0 | — | — | — | — | — | — | — | — |
| ifr2_pure | 65 | 35% | +1.85% | -1.13% | -0.077% | -5.0% | -0.44 | -0.5% | $4.86 |
| ifr2_with_mm200 | 33 | 33% | +1.85% | -1.12% | -0.128% | -4.2% | -0.52 | -0.4% | $2.47 |
| stormia_full_engine | 24 | 21% | +2.61% | -1.43% | -0.590% | -14.2% | -1.33 | -0.8% | $1.79 |
| pullback | 11 | 27% | +5.14% | -6.49% | -3.322% | -36.5% | -1.86 | -2.4% | $0.82 |
| strategy | n | wr | avg_win | avg_loss | expectancy | return | sharpe | max_dd | fees |
|---|---|---|---|---|---|---|---|---|---|
| stormia_full_engine 🥇 | 24 | 33% | +3.90% | -1.29% | +0.441% | +10.6% | +0.54 | -0.5% | $1.80 |
| ifr2_with_mm200 | 35 | 40% | +1.85% | -1.15% | +0.050% | +1.8% | +0.20 | -0.4% | $2.62 |
| ifr2_pure | 67 | 39% | +1.85% | -1.15% | +0.014% | +0.9% | +0.08 | -0.8% | $5.01 |
| legacy_rules | 0 | — | — | — | — | — | — | — | — |
| breakout | 0 | — | — | — | — | — | — | — | — |
| bollinger_breakout | 0 | — | — | — | — | — | — | — | — |
| stochastic | 0 | — | — | — | — | — | — | — | — |
| bollinger_reversion | 8 | 12% | +5.87% | -4.61% | -3.300% | -26.4% | -2.03 | -1.6% | $0.60 |
| pullback | 8 | 25% | +12.52% | -8.61% | -3.327% | -26.6% | -0.95 | -2.0% | $0.60 |
| strategy | n | wr | avg_win | avg_loss | expectancy | return | sharpe | max_dd | fees |
|---|---|---|---|---|---|---|---|---|---|
| ifr2_with_mm200 | 20 | 50% | +1.85% | -1.15% | +0.350% | +7.0% | +1.04 | -0.2% | $1.50 |
| ifr2_pure | 62 | 39% | +1.85% | -1.15% | +0.011% | +0.7% | +0.06 | -0.4% | $4.64 |
| legacy_rules | 0 | — | — | — | — | — | — | — | — |
| breakout | 0 | — | — | — | — | — | — | — | — |
| bollinger_breakout | 0 | — | — | — | — | — | — | — | — |
| stochastic | 0 | — | — | — | — | — | — | — | — |
| stormia_full_engine | 18 | 33% | +1.85% | -1.41% | -0.321% | -5.8% | -0.81 | -0.5% | $1.35 |
| bollinger_reversion | 3 | 0% | +0.00% | -3.41% | -3.410% | -10.2% | -7.70 | -0.5% | $0.22 |
| pullback | 2 | 0% | +0.00% | -4.90% | -4.900% | -9.8% | -3.10 | -0.5% | $0.15 |
BTC 2025 teve drawdown 78k → 55k → 120k com muitas voltas intermediárias violentas. ETH teve um rally estrutural mais limpo. StormIA é uma engine de tendência — precisa de trending persistent. Em choppy ranges com expansões/compressões curtas, os setups pullback/breakout ficam pegando stops.
Investigação rápida:
- legacy_rules: MACD 8/21/5 em 1d é lentíssimo — sinais reais aparecem
em semanas. Em 365 bars de D1 com filtro triplo (EMA10>30 + macd_hist>0 +
RSI<70), quase nunca TODAS as 3 condições alinham. Strategy OK pra 1h.
- breakout: rompe max(20) em 1d só em topos históricos. 2025 teve
2 desses mas ambos à noite — provavelmente o backtest não capturou
porque o engine compara com high do dia.
- bollinger_breakout: close > upper AND close > ema20 em 1d é raro
+ rr_net < 1.5 after fees rejeita os poucos que surgem.
- stochastic standalone: em 1d precisa de stoch cross no extremo — em
bars diários de uma vez por dia, cross limpo é raro. Funciona em
15m/1h melhor.
Nenhum deles é bug de design — são strategies calibradas pra TFs menores. Pra validar edge no 1d precisaria reconfigurar periods (MACD 26/52 em vez de 8/21, etc.) ou rodar backtest em 1h/4h, que é onde elas foram pensadas.
Duas opções claras:
Minha sugestão: começar com A por 2-4 semanas pra validar o pipeline end-to-end (OCO server-side, circuit breaker, Telegram alerts). Depois adicionar B com outro $100.
RSI_OVERSOLD=25 pode ser apertado demais.
Testar 20 e 30 num grid search.trending_* only (não emitir sinal em ranging).sources/backtests/runs/20260424-131111/summary.{csv,md}sources/backtests/runs/20260424-131111/<symbol>_<strategy>_trades.jsonEntities: [[../entities/BTCUSDT]], [[../entities/XRPUSDT]] Strategies: [[../strategy/bollinger_breakout]] Regimes: [[../regimes/ranging]], [[../regimes/volatile]]