Saltar a contenido

Strategy health monitoring — ¿dead o drawdown temporal?

El problema más difícil del trader sistemático: distinguir "la strategy dejó de funcionar" de "drawdown temporal normal". Resuelve MS-01. Propuesta: ensemble de 4 métricas + reglas pre-registradas, no discreción.

El dilema

Imaginemos después de 12 meses la strategy tiene -15% vs SPY +5% (underperformance 20%).

Opción A — la strategy murió: factor crowding extremo, regime shift, algo cambió. Opción B — drawdown temporal: dentro del rango histórico; value factor tuvo un año malo; paciencia requerida.

Errar en la dirección A: abandono prematuro. Pierdo reversion que vendría. Errar en la dirección B: me quedo en una strategy zombie. Pérdidas acumulan.

Referencia teórica

Structural break detection

Academia: tests como Chow, CUSUM, Bai-Perron para detectar change points en time series. Bayesian MCMC métodos para inference sobre break probability.

Problema práctico: p-values tradicionales necesitan MUCHOS datapoints post-break para statistical significance. Para retail con ~24 meses de data, detectar un break con confianza es casi imposible estadísticamente.

Enfoque pragmático

En lugar de un single test estadístico, usar un ensemble de 4 indicadores:

Las 4 métricas

1. Rolling 12-month Sharpe vs histórico

  • Calcular rolling Sharpe de la strategy en últimos 12 meses.
  • Comparar contra Sharpe esperado (3-5% excess con Sharpe 0.7-0.8, ver analysis/factor-crowding-alpha-decay).
  • Umbral: si rolling 12m Sharpe < 0 por 3 meses consecutivos → flag.
  • Umbral hard: si rolling 12m Sharpe < -0.5 por 1 mes → revisión mandatoria.

2. Hit rate decay del composite score

  • Revisar: top decile por composite score ¿sigue batiendo al bottom decile?
  • Meses donde top 10 rinde < market average = hit rate bajo.
  • Umbral: si hit rate <45% en últimos 6 meses → factor decay probable.

3. Factor returns industry-wide

  • No solo tu strategy — mirar performance de factor ETFs:
  • MTUM (momentum)
  • VLUE (value)
  • QUAL (quality)
  • Si MTUM, VLUE, QUAL todos en drawdown pero SPY up → factor crisis industry-wide. Tu strategy sigue el patrón, no está rota, solo en mal régimen.
  • Si factor ETFs up pero tu strategy down → implementation bug, revisa código.

4. Drawdown vs historical distribution

  • Backtest de la strategy sobre 15+ años → distribución de drawdowns historical.
  • Compare current drawdown contra distribución:
  • Dentro de worst 10% histórico: alerta, dentro de expected.
  • Peor que worst 5% histórico: fuera de expected → investigar.
  • Peor que worst 1% histórico: strategy probablemente rota.

Regla de decisión (pre-registrada)

Estado Condiciones (AND) Acción
Normal Ninguna alerta activa Seguir
Caution 1 métrica alerta Monitoreo diario. No cambios.
Review 2 métricas alerta, o drawdown fuera p10 Pausa 1 mes. Analyze. No trades nuevos.
Investigate 3+ métricas alerta, o drawdown fuera p5 Pausa permanente hasta review externa.
Terminate 4 métricas alerta por 2 meses, O drawdown fuera p1, O 3 años <1% excess End experiment. Close positions.

Estas reglas se definen ex-ante (antes de empezar), no post-hoc. Son commitment devices parecidos a concepts/commitment-devices-for-kill-switches.

Paciencia requerida

Momentum + value + quality: drawdowns de 12-18 meses son normales históricamente. AQR en momentum: ha tenido períodos de 24+ meses underperforming.

Heurística: si el drawdown es < p10 histórico, esperar. Si > p5, actuar.

Monthly review routine

La Weekly Review routine (concepts/scheduled-routines-pattern) extendida un mes incluye:

## Strategy health check — YYYY-MM

### 4 métricas
1. Rolling 12m Sharpe: X.XX (threshold: 0)
2. Hit rate 6m: XX% (threshold: 45%)
3. Factor ETF performance: MTUM X%, VLUE X%, QUAL X%
4. Current drawdown: -X% (historical p10: -X%, p5: -X%)

### Alerts activas
- [ ] Rolling Sharpe < 0 por 3 meses
- [ ] Hit rate < 45% por 6 meses
- [ ] Drawdown > historical p10
- [ ] Strategy underperforms factor ETFs (bug sospechoso)

### Estado del sistema
Normal / Caution / Review / Investigate / Terminate

### Acciones siguientes
...

Cuándo NO usar discreción

Nunca override este framework por "tengo corazonada". Si el sistema dice Caution y el user dice "sigo con full size porque creo que es transitorio" — ese es el learning bias documentado en analysis/retail-learning-bias.

usar discreción para ADD seguridad (e.g., el user detecta un error de código y pausa sin que el framework lo pida).

Gaps

  • Los umbrales exactos (0 Sharpe, 45% hit rate) son heurísticos. Requieren backtesting para calibrar al comportamiento histórico esperado.
  • ¿Cómo detectar un bug implementacional vs strategy dead? La métrica #3 (comparar vs factor ETFs) es el mejor proxy.
  • Bayesian priors sería matemáticamente más rigoroso — post-MVP, explorar.

Relaciones