Un backtest muestra un recorrido histórico simulado; Monte Carlo explora recorridos generados bajo supuestos explícitos. Orden, remuestreo y tamaño pueden alterar mucho el drawdown. El resultado depende del modelo: aquí no se atribuye una probabilidad verificada de ruina a una cuenta real sin especificar.

Permutar, remuestrear y ejecutar son operaciones distintas

Monte Carlo utiliza extracciones aleatorias repetidas. Barajar una lista fija de resultados monetarios cambia su camino, pero conserva el total si se ejecuta completa. Remuestrear con reposición puede cambiar orden y composición. Un modelo paramétrico, como ganancias y pérdidas independientes con importes asignados, genera otra distribución. Declara también cómo actualizas tamaño y capital.

Empieza por dos trayectorias comprobables en una misma unidad monetaria. Con capital 1.000, resultados +200,−100,−100 producen 1.000 →1.200 →1.100 →1.000; drawdown máximo 200/1.200 ≈16,67 %. El orden −100,−100,+200 produce 1.000 →900 →800 →1.000 y caída máxima 20 %. Ambas terminan en 1.000. Incluye el capital inicial entre los máximos para no ocultar la caída que comienza con pérdidas.

Otro ejercicio empieza en 1.000 USD y comprueba después de cada paso completo si capital ≤850 USD; al cumplirse, termina el ensayo. A muestrea +300,−150,−150 y ejecuta los tres pasos: 1.300; 1.150 y 1.000. B muestrea −150,−150,+300, pero ejecuta solo el primero: llega a 850 y se detiene. Los dos resultados restantes no son operaciones ejecutadas con resultado cero.

Misma lista, distinto final con paradaResultados netos ficticios USD, sin reinversión ni flujos. Capital inicial 1.000 y parada tras un paso completo que deje capital ≤850. No son probabilidades.EJEMPLO DE CÁLCULOA: orden muestreado+300;−150;−150 USDA: capital ejecutado1.000→1.300→1.150→1.000USDB: orden muestreado−150;−150;+300 USDB: capital ejecutado1.000→850 USDDiagnóstico adicional1.000−160=840 USD
Misma lista, distinto final con parada. Resultados netos ficticios USD, sin reinversión ni flujos. Capital inicial 1.000 y parada tras un paso completo que deje capital ≤850. No son probabilidades.

A ejecuta tres resultados y termina en 1.000; B ejecuta uno y termina en 850. La lista muestreada no equivale a la secuencia ejecutada.

A: orden muestreado
+300;−150;−150 USD – Se ejecuta toda la lista.
A: capital ejecutado
1.000→1.300→1.150→1.000 USD – No alcanza el umbral de parada.
B: orden muestreado
−150;−150;+300 USD – La primera pérdida activa la parada.
B: capital ejecutado
1.000→850 USD – Los dos resultados restantes no se ejecutan.
Diagnóstico adicional
1.000−160=840 USD – Parar después del paso no garantiza limitarlo a 850.

Una ampliación diagnóstica evita confundir parada con límite garantizado: si el primer resultado completo fuese −160 USD, el capital acabaría en 840, no en 850. El modelo detecta el cruce después del paso y termina; no recorta retrospectivamente la pérdida a 150. Dos caminos ilustran reglas, no probabilidades. Una estrategia con restricciones de capital o volumen variable no queda reproducida por sumar cualquier permutación completa.

Qué distribución quieres resumir

Una simulación definida puede estimar caídas máximas, cruces de umbrales y resultados terminales. Calcula primero drawdown máximo de cada trayectoria y después el percentil de esos máximos. Una banda de percentiles de equity en cada instante no es una trayectoria ejecutada por una cuenta. Declara la convención de cuantiles: interpolación y discreción afectan a la proporción que queda por debajo de un valor.

Modelo independiente hipotético:200 operaciones, probabilidad de ganar 0,55, ganancia neta fija 100 EUR y pérdida neta fija 80 EUR. La media por operación es 0,55 ×100 −0,45 ×80 =19 EUR; la media total, 3.800 EUR. Si K es el número de ganancias, el resultado terminal es 180 K −16.000 EUR.

Con cuantiles binomiales exactos definidos como el menor K cuya probabilidad acumulada alcanza el objetivo, los percentiles del 1 %, 5 %, 50 % y 95 % corresponden, respectivamente, a K=94, K=98, K=110 y K=122. Sus resultados monetarios son 920; 1.640; 3.800 y 5.960 EUR. Son valores calculados de esa distribución, no una serie de resultados observados ni una simulación que se afirme haber ejecutado. Una simulación finita variará alrededor del modelo.

Ejercicio de Excel con estado inicial

En Excel español, introduce A1 =0,55, A2 =100, A3 =−80 y A4 =10.000: probabilidad, dos resultados netos fijos y capital inicial. En C1 coloca =$A$4, en D1 =C1 y en E1 cero. La fila 1 es el estado previo a operar. Con nombres españoles y separador punto y coma, usa en fila 2:

B2: =SI(ALEATORIO()<$A$1;$A$2;$A$3)
C2: =C1+B2
D2: =MAX(D1;C2)
E2: =(D2-C2)/D2

Copia B2: E2 hasta fila 201: exactamente 200 operaciones. C201 es capital final y =MAX(E1:E201) la caída máxima de la trayectoria, expresada como magnitud positiva. Los signos dólar mantienen parámetros al copiar. Es horizonte de operaciones, no necesariamente un año. El modelo monetario necesita reglas separadas de parada, insolvencia y margen antes de representar una cuenta.

Para otro camino copia todo el bloque B: E y su fila inicial manteniendo referencias a A. No mezcles percentiles de capital terminal con percentiles de caídas máximas. Para un rango que contenga el máximo de cada camino, =PERCENTIL.INC(rango;0,95) selecciona la cola alta de magnitudes positivas de drawdown. Para cola baja de capital usarías 0,05 o 0,01. La función puede interpolar y «rango» debe sustituirse por las celdas pertinentes.

ALEATORIO recalcula con la hoja: conserva valores muestreados y supuestos del experimento revisado. Comprueba nombres y separadores de tu instalación. Guardar solo fórmulas volátiles no conserva el camino que acabas de interpretar.

Bootstrap en Python y comparación con números comunes

Python facilita repetir muestreos históricos, pero Excel también puede hacerlo con fórmulas adecuadas. Primero declara historia no vacía de resultados netos monetarios, costes, unidad, dependencia y tamaño. Con NumPy, el esquema básico conserva el estado inicial:

new_sequence = rng.choice(history, size=200, replace=True)
equity = np.concatenate(([initial_capital],
                         initial_capital + np.cumsum(new_sequence)))
peaks = np.maximum.accumulate(equity)
drawdowns = (peaks - equity) / peaks
maximum_drawdown = np.max(drawdowns)

El fragmento presupone NumPy como np, un generador rng, capital inicial positivo y datos finitos; representa importes fijos, sin aplicar una regla de parada. Registra semilla, biblioteca y versión, historia, horizonte, costes y reglas. Más trayectorias reducen ruido computacional, no crean observaciones nuevas del mercado.

Una comparación controlada puede compartir U uniforme. Asigna resultado +1 cuando U está por debajo del umbral y −1 en otro caso, con A=0,55 y B=0,60 hipotéticos. Esperanzas 0,10 y 0,20; diferencia esperada B−A igual a 0,10. Con U compartido, la diferencia solo es +2 en 0,55 ≤ U < 0,60, de probabilidad 0,05; fuera es cero.

Su varianza es 4 ×0,05 −0,10² =0,19. Con sorteos independientes, se suman varianzas 0,99 +0,96 =1,95. Compartir números reduce ruido en esta comparación concreta, no incertidumbre sobre las probabilidades del mercado; no tiene por qué ayudar a estrategias arbitrarias.

Extraer operaciones individuales con reposición conserva valores observados pero rompe orden y agrupaciones de pérdidas. No genera una cola adversa que no esté en la historia. Si importa dependencia, considera bloques y escenarios de estrés explícitos, reconociendo que una historia limitada puede omitir regímenes futuros. Resultados monetarios fijos y riesgo recalculado sobre equity no son el mismo experimento.

Límites de interpretación

El ejemplo binomial asume independencia y distribución estable. Monte Carlo como método admite dependencia y regímenes cambiantes; especificarlos y contrastarlos es parte del trabajo. Examina exposiciones simultáneas, cobertura y condiciones de estrés distintas de la muestra original.

Un percentil no garantiza techo de pérdidas ni un mínimo probabilístico de riesgo real. Define el umbral de fallo antes y prueba costes, huecos y órdenes no ejecutadas aparte. En un modelo ideal que pierde exactamente 5 % del capital actual en cada pérdida, después de n pérdidas queda capital inicial ×0,95 elevado a n, positivo para n finito. Umbral práctico, margen mínimo o pérdida mayor cambian ese resultado.

La evaluación walk-forward organiza periodos sucesivos de desarrollo y prueba, sin convertir datos ya inspeccionados en una evaluación nueva. Una mediana simulada menor tampoco identifica por sí sola deterioro causal de la ventaja real.

Tres pasos antes de interpretar percentiles

  1. Define historia, recuento, costes, cobertura, tamaño, horizonte y reglas de parada antes de muestrear. Conserva supuestos y limitaciones de dependencia; el resultado debe distinguir datos observados de escenarios añadidos y evitar operar solo para alcanzar un número prefijado de registros.
  2. Comprueba a mano ambas trayectorias iniciales y los ensayos con umbral, incluyendo capital inicial y pasos no ejecutados. Congela una muestra aleatoria antes de ampliar caminos; el resultado debe reproducir capital y drawdown sin convertir mil simulaciones o una hora de trabajo en validación.
  3. Calcula la distribución de máximos por trayectoria y declara signo y convención de percentil. Si cambias riesgo, datos o costes, repite y compara el modelo completo; el resultado debe explicar la modificación sin presentar un percentil como límite garantizado de una pérdida futura.