Inicio › Documentación › Validación y robustez
Análisis 7

Detección de sobreoptimización

Se abre con clic derecho en la rejilla del Testeo Masivo → 🧪 Analizar sobreoptimización del barrido…. A diferencia del Test de Supervivencia (que juzga una estrategia), aquí se juzga el barrido entero: cuando pruebas cientos de miles de combinaciones, la «mejor» casi siempre parece espectacular por puro azar. Dos métricas lo destapan — PBO y DSR — y ninguna necesita que hayas reservado datos Out-of-Sample de antemano.

PBO — Probabilidad de Sobreoptimización (0–100%)

Mide cuánto te engaña tu propio proceso de selección. Recombina los datos en muchísimas particiones dentro/fuera de muestra y comprueba con qué frecuencia la mejor estrategia dentro cae por debajo de la mediana fuera.

→ 0% — la selección aguanta fuera de muestra.
→ ~50% — elegir la «mejor» es una moneda al aire.
→ >50% — barrido sobreoptimizado.

DSR — Sharpe Deflactado (0–1)

Coge el Sharpe de la ganadora y le aplica el peaje de haber probado muchas: lo ajusta por el número de pruebas, la dispersión de Sharpes entre ellas y la asimetría/curtosis de los retornos. Es la probabilidad de que el Sharpe real sea > 0.

→ cerca de 1 — sobrevive al testeo múltiple.
→ cerca de 0 — probablemente suerte de probar tantas.
Mete el N real del barrido (el nº verdadero de combinaciones que probaste, no las que quedaron en la rejilla) y pulsa Recalcular DSR: con miles de millones de pruebas el umbral sube y el DSR cae a su valor honesto. No re-ejecuta backtests, es instantáneo.

CSCV — cómo se calcula el PBO

Combinatorially Symmetric Cross-Validation. El truco es que el «fuera de muestra» se fabrica recombinando los mismos datos, de forma simétrica — por eso no hace falta reservar OOS de antemano:

1. Se reúne una matriz de rendimiento de S bloques temporales × N candidatas (cada celda = beneficio de los trades cerrados en ese bloque).
2. Se forman todas las maneras de partir los S bloques en mitad In-Sample / mitad Out-of-Sample (con S=16 → C(16,8) = 12.870 particiones).
3. En cada partición se ordenan las N candidatas por su rendimiento IS → se coge la mejor → se mira en qué rango cae OUT-of-sample.
4. Ese rango relativo se transforma en un logit (λ). Un λ ≤ 0 significa que la mejor-IS quedó por debajo de la mediana OOS.
5. PBO = fracción de particiones con λ ≤ 0. El efecto del testeo múltiple entra solo, a través de N.

Scatter IN vs OUT

Cada punto es una partición: su rendimiento dentro de muestra (eje X) frente al de fuera (eje Y), con la diagonal y = x de referencia.

■ Rojo — la mejor-IS se hunde fuera (λ ≤ 0).
■ Verde — aguanta fuera de muestra (λ > 0).

Nube pegada por debajo de la diagonal = degradación = sobreajuste.

Histograma de logits

La distribución de los λ de todas las particiones, con una línea ámbar en λ = 0.

■ Masa a la izquierda del 0 = el PBO.
■ Masa a la derecha = particiones sanas.

Una campana centrada bien a la derecha del 0 es lo que buscas.

Bandas del PBO

< 40%robusto
40 – 60%dudoso
> 60%sobreoptimizado

Bandas del DSR

≥ 0,90sólido
0,50 – 0,90flojo
< 0,50ruido
⚠️
Limitaciones honestas
  • · La matriz se forma con las candidatas retenidas en la rejilla (top-K + muestra), no con los miles de millones del barrido. El N verdadero entra por el campo N real del DSR.
  • · El rendimiento por bloque usa los trades cerrados en ese tramo; con muy pocas operaciones por bloque el PBO es más ruidoso.
  • · PBO y DSR se complementan, no se sustituyen: el primero juzga el proceso de selección; el segundo, si la ganadora concreta sobrevive al peaje de N.

Método basado en Bailey, Borwein, López de Prado & Zhu (PBO/CSCV) y Bailey & López de Prado (Deflated Sharpe Ratio).

Pruébalo tú mismo

AniQuant se prueba gratis durante 30 días, con todos los módulos y sin tarjeta.

← Anterior
Análisis walk-forward
Siguiente →
Análisis multi-timeframe
Más en Validación y robustez