En este artículo
Al terminar, sabrás…
- Separar la lista muestreada de los resultados ejecutados antes de una parada.
- Medir drawdown por trayectoria incluyendo capital inicial y convención de cuantiles.
- Reproducir los supuestos de Excel o Python sin confundir modelo y mercado.
Conceptos sin salir del artículo
Prueba histórica de una estrategia (backtesting) Drawdown Plan de trading Valor esperado por operación Volumen de la posiciónUn 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.
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)/D2Copia 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
- 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.
- 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.
- 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.
Comprueba lo aprendido
Aprox. 2 minutos de práctica.
Ver respuesta y explicación
El primer −150 lleva a 850. La condición se comprueba tras ese paso, incluida la igualdad.
Más preguntas
¿Qué hace una simulación Monte Carlo de estrategia?
Muestrea repetidamente un modelo declarado. Permutar una lista monetaria completa conserva suma; remuestrear con reposición puede cambiarla. En el ejemplo de 200 operaciones independientes y pagos netos 100/−80 EUR, la media es 19 EUR por operación. El percentil binomial 5 es 1.640 EUR bajo su convención, sin ser resultado observado ni distribución futura demostrada.
¿Cómo preparo el ejercicio en Excel español?
Conserva fila inicial y parámetros con referencias absolutas. Usa SI y ALEATORIO para el resultado, acumula capital y máximos y calcula drawdown respecto al máximo. Copia filas 2–201 para 200 operaciones. MAX de las caídas da el máximo de ese camino. Guarda valores sorteados antes del recálculo y separa percentiles de capital y de drawdown.
¿Qué debo conservar al implementarlo en Python?
Historia no vacía, unidad, tamaño, costes, horizonte, semilla, versión y reglas de parada. choice con reposición reutiliza valores, no conserva su orden ni revela choques ausentes. Anteponer el capital inicial permite medir correctamente los máximos. Comprueba primero un camino determinista y distingue la secuencia sorteada de la que realmente ejecutan las reglas.
¿Qué limitaciones tiene para estimar riesgo real?
Las conclusiones son condicionales al modelo y sus datos. El remuestreo independiente básico rompe dependencia y no inventa una cola ausente. Puedes especificar modelos dependientes o regímenes, pero requieren evaluación propia. Un percentil no garantiza techo ni suelo de riesgo real; revisa costes, ejecución, tamaño y umbrales antes de extrapolar.
Fuentes y comprobación
- Python: random, shuffle y reproducibilidad
Leídos shuffle de secuencia existente, muestreo con/sin reposición y notas de reproducibilidad. La regla de parada es parte independiente del modelo didáctico.
- NumPy: Generator.choice
Parámetros size y replace, historia vacía y selección repetida. Muestreo no garantiza preservar orden, dependencia o colas ausentes.
- Microsoft: función ALEATORIO
Sintaxis y ejemplos españoles ALEATORIO(), uniforme en[0,1) y recálculo con hoja. La página mezcla abreviaturas ALEAT en otros pasajes; se usa el nombre de sus ejemplos de fórmula.
- Microsoft: función PERCENTIL.INC
Sintaxis española matriz;k, intervalo[0,1] e interpolación. No se iguala este método a un cuantil binomial discreto exacto.
Los cálculos utilizan supuestos explícitos. No sustituyen los datos actuales de mercado ni las condiciones de tu proveedor.
