Gerado em 2026-04-25T18:10:28.072328+00:00 (sweep 284s).
Hipótese H_TRAIL (Boss 2026-04-25): trailing take-profit ativado em peak_gain >= activate%, fechando quando drawdown_from_peak >= distance%.
720d, 6 windows. Stop hard (-2%) e target (1.8R) inalterados.
Ordem dentro de barra: stop > trailing > target. peak rastreia bar high (long).
| config | wins | mean_ret | Δret vs base | trades | wr_avg | per-window |
|---|---|---|---|---|---|---|
| baseline (off) (baseline) | 6/6 | +29.96% | +0.00% | 372 | 47% | [+11 +33 +62 +36 +17 +21] |
| act=0.5% dist=0.3% | 6/6 | +119.91% | +89.95% | 535 | 62% | [+56 +191 +208 +59 +122 +84] |
| act=0.5% dist=0.5% | 6/6 | +108.69% | +78.73% | 535 | 58% | [+49 +179 +196 +48 +108 +73] |
| act=0.5% dist=0.8% | 6/6 | +92.24% | +62.28% | 533 | 52% | [+38 +163 +178 +31 +88 +57] |
| act=1.0% dist=0.5% | 6/6 | +109.75% | +79.79% | 500 | 58% | [+54 +174 +197 +51 +114 +68] |
| act=1.0% dist=0.8% | 6/6 | +95.21% | +65.25% | 500 | 58% | [+44 +159 +180 +35 +97 +55] |
| act=1.0% dist=1.0% | 6/6 | +85.56% | +55.60% | 500 | 55% | [+37 +150 +169 +25 +86 +46] |
| act=1.5% dist=0.5% | 6/6 | +109.97% | +80.01% | 473 | 55% | [+54 +173 +197 +52 +113 +71] |
| act=1.5% dist=1.0% | 6/6 | +88.16% | +58.20% | 473 | 55% | [+39 +151 +170 +29 +90 +50] |
| act=2.0% dist=1.0% | 6/6 | +91.47% | +61.51% | 446 | 53% | [+42 +149 +181 +27 +97 +53] |
| config | wins | mean_ret | Δret vs base | trades | wr_avg | per-window |
|---|---|---|---|---|---|---|
| baseline (off) (baseline) | 5/6 | +15.66% | +0.00% | 392 | 42% | [+2 +48 +31 +5 -17 +24] |
| act=0.5% dist=0.3% | 6/6 ⬆ | +115.66% | +100.00% | 540 | 61% | [+39 +202 +198 +72 +114 +70] |
| act=0.5% dist=0.5% | 6/6 ⬆ | +104.76% | +89.09% | 540 | 58% | [+32 +187 +187 +60 +104 +59] |
| act=0.5% dist=0.8% | 6/6 ⬆ | +88.55% | +72.88% | 539 | 54% | [+21 +166 +170 +42 +90 +43] |
| act=1.0% dist=0.5% | 6/6 ⬆ | +107.47% | +91.80% | 514 | 58% | [+33 +195 +186 +68 +103 +60] |
| act=1.0% dist=0.8% | 6/6 ⬆ | +92.85% | +77.19% | 513 | 58% | [+24 +175 +170 +51 +91 +47] |
| act=1.0% dist=1.0% | 6/6 ⬆ | +83.61% | +67.95% | 511 | 54% | [+20 +162 +159 +40 +82 +38] |
| act=1.5% dist=0.5% | 6/6 ⬆ | +108.73% | +93.06% | 485 | 54% | [+37 +201 +178 +70 +107 +60] |
| act=1.5% dist=1.0% | 6/6 ⬆ | +86.84% | +71.18% | 485 | 54% | [+23 +170 +154 +45 +88 +41] |
| act=2.0% dist=1.0% | 6/6 ⬆ | +89.24% | +73.57% | 458 | 51% | [+21 +178 +162 +47 +89 +40] |
| config | wins | mean_ret | Δret vs base | trades | wr_avg | per-window |
|---|---|---|---|---|---|---|
| baseline (off) (baseline) | 5/6 | +17.59% | +0.00% | 412 | 43% | [-5 +14 +48 +24 +8 +16] |
| act=0.5% dist=0.3% | 6/6 ⬆ | +106.31% | +88.72% | 528 | 56% | [+44 +182 +153 +55 +137 +68] |
| act=0.5% dist=0.5% | 6/6 ⬆ | +96.48% | +78.89% | 528 | 55% | [+38 +170 +142 +44 +126 +59] |
| act=0.5% dist=0.8% | 6/6 ⬆ | +81.84% | +64.25% | 527 | 51% | [+29 +153 +126 +27 +110 +45] |
| act=1.0% dist=0.5% | 6/6 ⬆ | +96.54% | +78.95% | 513 | 53% | [+40 +162 +140 +50 +126 +60] |
| act=1.0% dist=0.8% | 6/6 ⬆ | +82.86% | +65.26% | 513 | 53% | [+32 +146 +125 +35 +111 +48] |
| act=1.0% dist=1.0% | 6/6 ⬆ | +73.56% | +55.97% | 512 | 51% | [+26 +136 +115 +25 +99 +41] |
| act=1.5% dist=0.5% | 6/6 ⬆ | +99.30% | +81.71% | 497 | 51% | [+41 +165 +144 +56 +126 +64] |
| act=1.5% dist=1.0% | 6/6 ⬆ | +77.96% | +60.37% | 497 | 51% | [+28 +140 +120 +32 +101 +46] |
| act=2.0% dist=1.0% | 6/6 ⬆ | +78.07% | +60.48% | 468 | 48% | [+30 +139 +124 +27 +97 +52] |
| símbolo | best config | mean_ret | wins | Δ vs baseline |
|---|---|---|---|---|
| XRPUSDT | act=0.5% dist=0.3% | +119.91% | 6/6 | +89.95% |
| ADAUSDT | act=0.5% dist=0.3% | +115.66% | 6/6 | +100.00% |
| DOGEUSDT | act=0.5% dist=0.3% | +106.31% | 6/6 | +88.72% |
TODAS as 10 configs ganham 60-100% sobre baseline em TODOS os 3 símbolos. Win rate sobe de 42-47% para 51-62%. Esse padrão "good to be true" é sinal clássico de lookahead intra-bar.
O engine processa cada barra como atômica. Para uma barra com OHLC, o
código atualiza peak_favorable = max(peak, bar_high) antes de
checar se bar_low <= peak * (1 - distance). Implica: na mesma barra
em que o bar_high aparece, o engine assume que o high veio
primeiro (pra setar o peak) e a queda até bar_low veio depois
(pra disparar trailing no preço peak * (1-distance)).
Em real-time, isso é uma das duas ordens possíveis. A outra (low antes de high) faria o trailing nem armar. O engine sempre pega o cenário favorável.
Em barras de 4h essa janela é grande: BTC pode oscilar 3-5% dentro de uma única barra. O engine captura o peak e vende a 0.3% dele, quando na realidade pode ter ido low primeiro, depois high (e exit seria no close, não no peak). Isso infla mean_ret massivamente.
Rodar o mesmo sweep em TFs mais finos (1h, 15m). Quanto menor a barra, menor o bias intra-bar. Se em 15m o ganho do trailing cair de +90% para +5-10%, confirma que o resultado em 4h é artefato. Se ainda ganhar +50% em 15m, é edge real.
Alternativa correta: backtester precisa simular trailing em escala intra-bar (e.g. usando 1m candles internamente quando há trade aberto em 4h). Custoso mas única forma realista.
NÃO PROMOVER esses params pra live. Ganho é provavelmente artefato do engine, não edge real. Próximos passos:
H_TRAIL fica pendente, não descartada.
Entities: [[../entities/ADAUSDT]], [[../entities/XRPUSDT]] Strategies: [[../strategy/bollinger_breakout]] Patterns: [[../patterns/lookahead-bias]]