Estratégias
Rotação de momentum relativo de ETH face a BTC, posições longas-curtas neutras em dólares (dois instrumentos, ETHUSDT.BINANCE + perpétuos de BTCUSDT.BINANCE, barras diárias — longo no ativo mais forte / curto no mais fraco com base em ETH/BTC MOMENTUM, condicionado por banda neutra, puramente OHLCV, 2 parâmetros)
Resultado: Abandonado
EthBtcRelativeMomentumRotationLS
Implementa fielmente a hipótese: rotação por momentum do rácio ETH/BTC com neutralidade em dólares, neutra em relação ao mercado (benchmark_meaningful=false, pelo que comprar e manter não é, corretamente, a referência…
Hipótese
Expectativa negativa numa amostra fiável de 582 operações / 6.7 anos: profit_factor 0.9999 (retorno bruto nulo, sem vantagem líquida), avg_trade_pnl_usd -0.137, CAGR -1.22%, recovery_factor negativo. O +7.83% total_return não foi realizado de todo (end_unrealized_pct 7.91) — uma posição final que não foi encerrada, não uma vantagem realizada. Sharpe 0.26 com CI [-0.48, 1.01] abrange zero, max_drawdown 56.6%, e impact_cost_pct 101% (capacidade ~$98k) significa que o impacto no mercado, por si só, consome toda a vantagem. O momentum de força relativa ETH/BTC não persiste o suficiente para gerar lucro com neutralidade em dólares após custos — esta é uma afirmação sobre a entrada, que IS a hipótese. Otimizar os parâmetros 2 (período retrospetivo, banda morta) não consegue tornar rentável um resultado de retorno bruto nulo/PF<1. Não vale a pena dedicar 2 horas à otimização. abandon_class=negative_expectancy.
Implementação
Resultados da Verificação
CLEAN RESTART 2026-09-04 — o histórico de veredictos e os registos de aprendizagem desta execução foram removidos, e esta foi reiniciada a partir da verificação. O abandono anterior deveu-se ao pipeline, não ao mercado: o harness Layer-2 associava incorretamente os auxiliares @staticmethod (corrigido), QA emitia veredictos de desempenho definitivos com base num teste de fumo não otimizado (removido — QA avalia agora apenas a correção), e os timeouts da sandbox deveram-se à falta de vagas para backtests (corrigido). A hipótese e o código da estratégia não foram alterados. Verifique o código pelos seus méritos; o desempenho será decidido mais tarde pelo backtest completo e pelo otimizador.
Vantagem quase nula ou negativa numa amostra mensurável de todo o histórico (550 operações, PF 0.965, -22.4%, avg_trade_return_pct +0.061% abaixo da comissão das duas pernas) — o par ETH/BTC de baixa dispersão que a própria hipótese assinalou como mais fraco do que SOL/ETH. Implementação fiel; portanto, constitui uma descoberta sobre a vantagem para o analista. Abandonar na revisão do backtest, de acordo com a condição pré-registada pelo programador (PF não superou 1); não otimizar.
57.8% drawdown máximo (CI a 83%, duração de 1894 dias) numa carteira nominalmente neutra em relação ao mercado: neutra em dólares apenas na entrada, e a exposição bruta de 70% agrava uma vantagem perdedora perante tendências persistentes do rácio ETH/BTC entre os stops 6%. Não é um erro de cobertura — a reconciliação de valores nocionais iguais está correta —, mas é um perfil de risco que o Responsável pelo Risco deve conhecer.
Revisão do Backtest
- Sharpe
- 0,26
- Retorno Total
- 7,83%
- Drawdown Máximo
- 56,58%
- Total de Operações
- 582
- Taxa de Acerto
- 45,9%
- Fator de Lucro
- 1,00
Implementa fielmente a hipótese: rotação por momentum do rácio ETH/BTC com neutralidade em dólares, neutra em relação ao mercado (benchmark_meaningful=false, pelo que comprar e manter não é, corretamente, a referência de comparação)
Amostra fiável e mensurável: 582 rotações de pares ao longo de 6.7 anos, metrics_reliable=true, pipeline de entrada saudável (291 longos / 291 curtos, zero descartes)
Superfície genuinamente parametrizada por 2, com baixo sobreajuste
profit_factor 0.9999 — resultado bruto nulo, não há vantagem líquida para a otimização tentar melhorar
Expectativa negativa numa amostra fiável: avg_trade_pnl_usd -0.137, CAGR -1.22%, recovery_factor negativo
O resultado principal de +7.83% é totalmente não realizado (end_unrealized_pct 7.91) — uma posição final ainda aberta, não uma vantagem realizada
max_drawdown 56.6% (CI a 80%); Sharpe 0.26 com CI [-0.48, 1.01] abrange zero — indistinguível da ausência de competência
impact_cost_pct 101% com capacity_usd ~$98k — o impacto no mercado, por si só, consome toda a vantagem; viável apenas numa escala experimental
regime_performance os retornos do tercil «normal» -56% em 60% DD — sem vantagem estrutural de força relativa
Histórico de Iterações
Verificação falhada (Camada 2 — cenários sintéticos): Parâmetros utilizados: ['deadband', 'leg_frac', 'max_days', 'vol_window', 'mom_lookback', 'size_precision', 'stop_ratio_pct', 'min_notional_btc', 'min_notional_eth'] Verifique se __init__ define todos os atributos com self.parameters.get(). - steady_uptrend: TypeError: super(type, obj): obj must be an instance or subtype of type (carimbo temporal da barra: 1735689600000) - steady_downtrend: TypeError: super(type, obj): obj must be an instance or subtype of type (carimbo temporal da barra: 1735689600000) - flat_ranging: TypeError: super(type, obj): obj must be an instance or subtype of type (carimbo temporal da barra: 1735689600000) - volatility_spike: TypeError: super(type, obj): obj must be an instance or subtype of type (carimbo temporal da barra: 1735689600000) - zero_volume: TypeError: super(type, obj): obj must be an instance or subtype of type (carimbo temporal da barra: 1735689600000) - price_gap: TypeError: super(type, obj): obj must be an instance or subtype of type (carimbo temporal da barra: 1735689600000)
O Stratmill é uma ferramenta de investigação e paper trading, não constitui aconselhamento financeiro nem é uma corretora. Os resultados de backtest e paper trading são hipotéticos. Negociar envolve risco de perda.