Volver al blog

Backtesting 2.0: Cómo Medir la Robustez de un Sistema en 2026

El Problema del Overfitting

El error más común en el desarrollo de sistemas de trading es optimizar excesivamente los parámetros para encajar con los datos históricos. Esto produce resultados espectaculares en backtesting pero fracasos rotundos en trading real.

"Un sistema que funciona en todos los backtests probablemente no funcionará en ninguno."

Métricas de Robustez

Sharpe Ratio

Mide el exceso de rendimiento por unidad de riesgo. Un Sharpe Ratio superior a 1.5 se considera bueno, superior a 2.0 es excelente.

Fórmula: Sharpe = (Rp - Rf) / σp

  • Rp = Rendimiento del portfolio
  • Rf = Tasa libre de riesgo
  • σp = Desviación estándar del rendimiento

Profit Factor

Relación entre las ganancias brutas y las pérdidas brutas. Un Profit Factor superior a 1.5 indica un sistema con ventaja estadística.

Fórmula: PF = Suma(Ganancias) / Suma(Pérdidas)

Maximum Drawdown

La mayor caída desde un máximo hasta un mínimo. Indica el peor escenario de pérdida que podrías haber experimentado.

  • Menos del 10%: Excelente
  • 10-20%: Aceptable
  • Más del 20%: Riesgoso

Walk-Forward Analysis

El walk-forward analysis es la técnica más fiable para validar un sistema de trading. Consiste en dividir los datos en períodos de entrenamiento y validación secuenciales.

Comparación: Optimización vs Walk-Forward

Montecarlo Simulation

Las simulaciones Montecarlo permiten evaluar la distribución de posibles resultados future, reordenando las operaciones históricas para generar miles de escenarios posibles.

import numpy as np

def montecarlo_simulation(returns, n_simulations=1000):
    """Simula múltiples equity curves reordenando las operaciones"""
    results = []
    for _ in range(n_simulations):
        shuffled = np.random.permutation(returns)
        equity = np.cumprod(1 + shuffled) * 10000
        results.append(equity[-1])
    
    return {
        'mean': np.mean(results),
        'median': np.median(results),
        'percentile_5': np.percentile(results, 5),
        'percentile_95': np.percentile(results, 95),
        'probability_of_profit': np.mean(np.array(results) > 10000)
    }

Checklist de Validación

  1. ☐ Walk-forward analysis con al menos 5 períodos
  2. ☐ Montecarlo simulation con 1000+ iteraciones
  3. ☐ Out-of-sample testing (datos no vistos)
  4. ☐ Análisis de regímenes de mercado
  5. ☐ Test de estrés con spread ampliado
  6. ☐ Verificación de slippage y comisiones

Distribución Montecarlo - 1000 simulaciones

Conclusión

Un backtesting robusto no se mide por el beneficio mostrado, sino por la capacidad del sistema de mantener resultados similares en condiciones diferentes. Usa walk-forward, Montecarlo y métricas de riesgo para validar cualquier estrategia antes de operar con dinero real.