Estrategias
Reversión a la media con banda de volatilidad en régimen lateral, long-short (un solo instrumento ETHUSDT Binance USD-M, barras de 1H, operar contra desviaciones extremas ONLY cuando un filtro de tendencia confirma ausencia de tendencia: solución documentada al fallo de la reversión en las principales con tendencia, pocos parámetros)
Resultado: Abandonada
EthRangingRegimeVolBandMeanReversionLS1H
Resumen de resultados
Hipótesis
Iteración 3: solución al tiempo de espera de la capa -3. La versión anterior reconstruía arreglos numpy a partir del historial creciente de barras ENTIRE y ejecutaba los bucles Python ADX sobre todo el historial en cada barra, con un coste total O(n^2) que superaba el límite de 300s de la prueba de humo en datos 1H de varios años. El cambio quirúrgico mínimo limita self._bars a una cola de longitud fija (self._calc_window = max(band_period, 5*adx_period)+10 = 80 barras) antes de construir los arreglos, de modo que el trabajo por barra sea O(1) y el total O(n). Toda la lógica de señal, entrada, salida y tamaño de posición es idéntica byte por byte al código que ya superó las capas 1-2, así que ninguna comprobación anterior falla. La ventana cubre holgadamente el calentamiento de Wilder ADX (2*adx_period+1) y el período de banda SMA.
Implementación
Reversión a la media long-short en barras de 1H sobre el perpetuo ETHUSDT USD-M. Opera contra desviaciones extremas de la puntuación z respecto a una banda de 24 barras SMA, pero ONLY cuando ADX(14) < 25 (régimen lateral/sin tendencia). Se mantiene al margen en regímenes con tendencia y sale si aparece una tendencia durante la operación. Salidas por stop-loss y recuperación de la media. El cálculo por barra se limita a una ventana reciente fija, así que el backtest se ejecuta en tiempo O(n).
Resultados de verificación
Verificación fallida (capa 3 — backtest en sandbox): la prueba de humo superó el límite de tiempo de 300s. Casi siempre esto indica trabajo por barra que escala con el historial; por ejemplo, volver a recorrer toda la serie de funding/suplementaria o reconstruir una lista y llamar a min()/sorted() dentro de calculate_signal()/on_bar() en cada barra. Precalcula arreglos ordenados de marcas de tiempo ONCE en __init__ y usa bisect, o almacena en caché las consultas con la marca de tiempo como clave, para que el coste por barra sea O(log n) y no O(n).
Revisión de backtest
- Sharpe
- -1,94
- Rentabilidad total
- -85,70%
- Drawdown máximo
- 86,79%
- Operaciones totales
- 1388
- Tasa de acierto
- 52,9%
- Factor de beneficio
- 0,72
Implementación limpia y fiel: el filtro de régimen ADX, la operación contra el puntuación z y la lógica de stop/salida expresan correctamente la hipótesis (sin artefactos ni errores contables, volatilidad 20.6% plausible y ningún día imposible).
Muestra e infraestructura sólidas: 1,388 operaciones durante más de 6 años, muchas operaciones, un único instrumento líquido y coste O(1) por barra; el backtest es fiable.
El resultado negativo aporta información: confirma claramente la premisa de ausencia de reversión en las principales con una muestra amplia y estadísticamente significativa.
Ventaja consistentemente negativa durante EVERY año (2020 -13%, 2021 -52%, 2022 -32%, 2023 -2.8%, 2024 -5.8%, 2025 -25.6%, 2026 -18.4%) y en todos los regímenes: total_return -85.7%, max_drawdown 86.8%.
Métricas ajustadas al riesgo profundamente negativas, sin ambigüedad: Sharpe -1.94 (todo CI negativo, ci_high -1.14), Sortino -2.46, PSR 0.0, profit_factor 0.72, information_ratio -1.01, expectativa -$60.76/operación en 1,388 operaciones.
Geometría de pagos invertida, justo lo que la hipótesis afirmaba evitar: exit_z=0.3 (ganancia pequeña) frente al stop 4% da avg_win $290 < avg_loss $455 con una tasa de acierto de 53%; las comisiones consumen 16% del bruto. Pero ni una geometría correcta salvaría una señal sin ventaja predictiva durante 6 años.
Historial de iteraciones
Verificación fallida (capa 2 — escenarios sintéticos): Parámetros usados: ['exit_z', 'entry_z', 'risk_frac', 'adx_period', 'band_period', 'min_notional', 'adx_threshold', 'stop_loss_pct'] Comprueba que __init__ establezca todos los atributos mediante self.parameters.get(). - steady_uptrend: TypeError: 'float' object is not callable (marca de tiempo de la barra: 1735691580000) - steady_downtrend: TypeError: 'float' object is not callable (marca de tiempo de la barra: 1735691580000) - flat_ranging: TypeError: 'float' object is not callable (marca de tiempo de la barra: 1735691580000) - volatility_spike: TypeError: 'float' object is not callable (marca de tiempo de la barra: 1735691580000) - zero_volume: TypeError: 'float' object is not callable (marca de tiempo de la barra: 1735691580000) - price_gap: TypeError: 'float' object is not callable (marca de tiempo de la barra: 1735691580000)
Resumen de resultados
La reversión a corto plazo no ofrece ventaja positiva en las principales criptomonedas líquidas, ni siquiera al limitarla a un régimen sin tendencia ADX; por eso, una estrategia que opera contra la sobreextensión en ETH sigue perdiendo en todos los años y regímenes.
El analista emitió un veredicto de «abandonar» en la etapa BACKTEST_REVIEW previa a la optimización y la consideró una premisa fundamentalmente inviable, no un error corregible. El código implementó fielmente la hipótesis y produjo un backtest limpio y fiable, así que no había ningún defecto que corregir ni ninguna variable sin ajustar que la optimización pudiera encontrar. Nunca se llegó a la optimización, a la revisión posterior del analista ni a la revisión de riesgo.
Una estrategia long-short de reversión a la media en barras de 1H sobre el contrato perpetuo ETHUSDT Binance USD-M, que operaba contra desviaciones extremas del puntuación z respecto a una SMA corta, pero solo cuando un filtro de tendencia ADX (ADX<25) confirmaba un régimen lateral/sin tendencia; se mantenía al margen durante las tendencias para evitar ir contra el impulso.
En más de 1,388 operaciones durante más de 6 años (2019-2026), perdió claramente: rendimiento total -85.7%, Sharpe -1.94 (todo CI negativo, ci_high -1.14), factor de beneficio 0.72, expectativa -$60.76/operación y drawdown máximo de 86.8% con una tasa de acierto de 52.9%. Perdió en todos los años y regímenes; la geometría de pagos estaba invertida (ganancia media de $290 < pérdida media de $455) y las comisiones consumieron aproximadamente 16% del bruto.
Stratmill es una herramienta de investigación y paper trading, no asesoramiento financiero ni un bróker. Los resultados de backtest y paper trading son hipotéticos. Operar conlleva riesgo de pérdida.