Estrategias
Rotación semanal defensiva de baja volatilidad en ocho perps cripto principales, solo en largo con filtro de tendencia (BINANCE USD-M, mantener los 3 principales por volatilidad realizada en LOWEST, pasar a efectivo bajo la tendencia, señal nueva de rango de volatilidad, 3 parámetros)
Resultado: Abandonada
LowVolDefensiveWeeklyRotation8Majors
Resumen de resultados
Hipótesis
La iteración 2 corrige el fallo exacto de la capa -3 («No trades produced»). Causa raíz: _extract_symbol_from_bar leyó bar.instrument_id, que no existe en Bar en esta versión de NautilusTrader; lanzó AttributeError, que el except genérico ocultó, así que _ingest_bar registró NO cierres para cualquier símbolo; sin búferes de precios no se pudo calcular la volatilidad realizada, los candidatos quedaron por debajo de top_k y _maybe_rebalance regresó antes en cada barra → cero operaciones. La corrección mínima lee bar.bar_type.instrument_id.symbol (la misma ruta que usa on_bar de la plantilla base en la línea 276), y se verificó que devuelve «BTCUSDT», etc. No cambió nada más: las importaciones siguen limpias, la señal continua de diferencial de estabilidad y toda la lógica multiinstrumento/de rebalanceo (que ya había superado las capas 1–2) no se tocaron, y la configuración declara los 8 instrumentos en barras de 1-DAY, por lo que el entorno aislado carga el universo completo. Así se mantienen aprobadas todas las capas anteriores y se permite que la rotación semanal ejecute operaciones.
Implementación
Rotación defensiva semanal long-only de baja volatilidad sobre 8 principales perps de Binance USD-M (BTC/ETH/SOL/BNB/AVAX/LINK/ADA/XRP) en barras de 1-DAY. Cada semana (rebalance_days=7) clasifica el universo por volatilidad realizada retrospectiva (desviación estándar muestral de los rendimientos logarítmicos diarios durante vol_lookback_days) ASCENDING y apunta a los top_k=3 nombres CALMEST; después aplica un filtro de tendencia por nombre: solo mantiene un nombre seleccionado mientras su cierre esté por encima de su propio trend_ma_days SMA; de lo contrario, esa posición queda en efectivo. Sale de los nombres mantenidos que abandonan la cesta objetivo y entra en los nuevos nombres objetivo con ponderación igual a allocation_per_position del capital por posición. Long-only, apalancamiento=1, dimensionamiento relativo al capital mediante get_account_equity(). Tres parámetros principales (vol_lookback_days, top_k, trend_ma_days) más ajustes estructurales.
Resultados de verificación
Verificación fallida (capa 3 — backtest en entorno aislado): no se generaron operaciones Tipo de barra usado: BTCUSDT.BINANCE-1-DAY-LAST-EXTERNAL, barras procesadas: 364 Diagnóstico: should_enter() devolvió un lado 0 veces en 0 barras evaluadas -> tu ENTRY CONDITION nunca se activó. Relaja la lógica de entrada o los umbrales. Asegúrate de que tu estrategia genere operaciones con los datos y parámetros indicados.
Analista: evalúa el backtest completo de varios años; no optimices hasta establecer el signo de la ventaja en el período más largo.
Resultado negativo, pero con una muestra escasa y limitada por régimen: PF 0.41, total_return -18.1%, win_rate 0.238, avg_trade_return_pct -2.97% en solo 21 operaciones durante un año. RR es favorable (avg_win 2486 = 1.3× avg_loss 1890); la baja tasa de aciertos es el único lastre, y el Sharpe -1.16 CI [-2.77, +0.36] aún alcanza terreno positivo. La anomalía de baja volatilidad es un efecto de horizonte largo que una ventana de un año de ventas masivas de altcoins no puede evaluar.
Confirma una muestra considerablemente mayor en el backtest completo de varios años.
Pocas operaciones (21 en 363 días, por debajo del mínimo de ~100): esperable en una rotación semanal de baja rotación (rotación 8.1), pero el resultado negativo se basa en pocas muestras.
Plantéate derivar el manejo de barras adicionales de la base en lugar de volver a implementar el despacho, para evitar divergencias silenciosas.
on_bar se sobrescribe por completo, reimplementa manualmente el despacho base y hace referencia a elementos internos de la base. Funciona (superó las capas 1-3, operó en todas las posiciones), pero es frágil ante futuros cambios en la plantilla base.
Revisión de backtest
- Sharpe
- 1,00
- Rentabilidad total
- 1318,94%
- Drawdown máximo
- 35,21%
- Operaciones totales
- 138
- Tasa de acierto
- 44,2%
- Factor de beneficio
- 1,72
Ventaja estadísticamente significativa: Sharpe 1.0 con 95% CI [0.42, 1.61] EXCLUDING cero (probabilistic_sharpe 0.9995); la única estrategia del grupo reciente que supera este umbral
profit_factor 1.72 (muy por encima del umbral de ausencia de ventaja 1.2), Sortino 1.43, expectativa +$8.3k/operación
Distribuida entre regímenes: positiva en 5 de 7 años (2020/2021/2023/2024/2025), años bajistas moderados (-24%, -19%); max_drawdown 35% bajo el umbral de abandono estricto, sin liquidaciones, apalancamiento 1x
Comisiones bajas, según el diseño: avg_trade_return_pct ~11% en la rotación semanal de baja rotación, impact_cost_pct solo 1.3% del bruto, capacidad $613M
Se basa en la anomalía real y documentada de baja volatilidad/defensiva; señal ortogonal a la cesta de momentum desplegada
Concentración en valores atípicos/mercado alcista: return_skew 2.59, curtosis 38, con 2020/2021 aportando una gran parte; la optimización debe confirmar que la ventaja se mantiene en ventanas OOS sin mercado alcista
information_ratio -0.24 frente al índice de referencia de la cesta equiponderada y benchmark_correlation 0.58 / beta 0.27: el alfa independiente es +0.20, pero el valor de diversificación frente a mantener solo la cesta es marginal
end_unrealized_pct 180 (~14% del resultado destacado) es la valoración a mercado de posiciones abiertas; evalúa la trayectoria realizada (sigue siendo sólida)
Análisis
La estrategia se ejecuta correctamente durante todo el período (349 operaciones optimizadas / 138 base): se corrigió el fallo previo de cero operaciones por símbolo y barra.
Las métricas puntuales dentro de muestra parecen atractivas (PF 1.72, Sortino 1.43, Sharpe positivo en toda la muestra ~1.0); precisamente por eso importa la corrección por pruebas múltiples.
El análisis de sensibilidad no muestra discontinuidades; los parámetros son estables individualmente dentro de muestra.
Sobreajuste en walk-forward: el Sharpe medio de IS +1.47 cae a OOS de media -0.742 (ventanas -1.21, -1.46, +0.44). La ventaja no se generaliza.
Sharpe deflactado 0.0899 << 0.95, y el Sharpe optimizado (1.006) es BELOW expected_max_sharpe_annualized (1.44): la selección no se distingue del ruido del mejor resultado entre -225 pruebas.
PBO 0.70 > 0.5: es más probable que la selección de parámetros esté sobreajustada; is_significant = false.
Sharpe en la muestra de reserva de solo 0.178; tanto win_rate 0.149 como max_drawdown 32.4% quedan por debajo de los mínimos.
El rendimiento está concentrado en 2021 (anual 2021 +251%/+204%; 2022 -24%, 2026 -19%): dependencia de un único régimen alcista.
Coincide con una clase de fallos abandonada repetidamente: rotación de grandes criptomonedas de baja volatilidad (similitud 0.81 «sobreajustada», 0.80 «verification_loop»).
0.7x WF OOS
Resumen de resultados
Un Sharpe atractivo en toda la muestra no significa nada si se concentra en un régimen alcista y falla en walk-forward: el mecanismo de rotación de grandes criptomonedas de baja volatilidad/apuesta contra beta ya se ha sobreajustado varias veces con el mismo patrón, así que no merece la pena probarlo otra vez con otro conjunto de criptomonedas principales.
El analista de estrategias la abandonó tras la optimización, con un veredicto de robustez: el Sharpe seleccionado (1.006) cayó por debajo del máximo esperado por ruido (1.44 en 225 pruebas), OOS fue negativo en todas las ventanas de walk-forward, PBO superó 0.5, y el rendimiento destacado dependió del mercado alcista de 2021 (2022 -24%, 2026 -19%): un caso de sobreajuste de manual, sin una región robusta de parámetros hacia la que ajustar.
Rotación semanal long-only entre 8 principales perpetuos de Binance USD-M, que mantenía los 3 principales con menor volatilidad realizada (la anomalía defensiva/de baja volatilidad) tras un filtro de tendencia por nombre, deliberadamente ortogonal a la cesta de momentum desplegada.
El backtest inicial mostró una ventaja estadísticamente significativa (Sharpe ~1.0 con 95% CI [0.42, 1.61] que excluían el cero, factor de beneficio 1.72, Sortino 1.43, rendimiento total de +1319% en 138 operaciones, rendimiento medio por operación ~11%, drawdown máximo 35%, apalancamiento de 1x). Sin embargo, con la optimización, el Sharpe IS del walk-forward de +1.47 se invirtió a un promedio de -0.742 en OOS, con PBO 0.70, Sharpe deflactado 0.0899, Sharpe en la muestra de reserva de solo 0.178 y tasa de aciertos de 0.149.
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.