Golden Sky Golden Sky Data & Machine Learning

Data & Machine Learning

Simular el azar para reconocer la señal.

Cuando una probabilidad es difícil de calcular con una fórmula, se puede estimar simulándola muchas veces. Monte Carlo es ese método: repetir un experimento aleatorio y mirar la distribución de resultados. En el pipeline es la forma de responder "¿este edge es real o es lo que daría el puro azar?".

El concepto

Estimar por repetición aleatoria

Cuando el cálculo exacto es difícil o imposible, se simula el fenómeno miles de veces y se promedia. Por la ley de los grandes números, ese promedio converge al valor real.

estimador = 1N · Σi=1..N f(xi)  ·  error ~ 1N  // más simulaciones → más precisión

El ejemplo clásico: estimar π tirando puntos al azar en un cuadrado y contando cuántos caen dentro del círculo. El método nació en Los Álamos (Ulam y von Neumann) y lleva el nombre del casino: la idea es que el azar controlado resuelve lo que la fórmula no. Su precisión crece con √N, no con N: cuadruplicar las simulaciones reduce el error a la mitad.

Para testear hipótesis

El test de permutación

El uso que más importa acá: en vez de asumir una distribución teórica del estadístico bajo la hipótesis nula, se la construye barajando o remuestreando los datos.

1 · calcular el estadístico REAL (ej. PF de la estrategia) 2 · repetir N veces: romper la relación al azar → estadístico NULO 3 · comparar: ¿dónde cae el real dentro de la nube de nulos?
p-value = 1 + #{ nulo ≥ real }1 + N  // fracción de simulaciones tan buenas como la real

Si el estadístico real queda enterrado entre los nulos, la "ventaja" es lo que da el azar (p alto). Si queda en la cola, es difícil de explicar por casualidad (p bajo). El +1 (corrección de Phipson-Smyth) trata al real como una simulación más y evita un p = 0 exacto imposible de sostener.

Cómo lo usamos

Permutación que respeta el tiempo

En el walk-forward, cada combo se testea contra su propio azar. Pero barajar los datos de cualquier forma sería trampa: las series financieras tienen rachas (autocorrelación).

null model = circular_shift: roll(señal, offset aleatorio)
estadístico = PF pooleado  ·  N = 1000  ·  significativo si p < 0.05

El circular_shift desplaza la señal en el tiempo (la "rota") en lugar de redibujarla al azar: preserva la estructura de rachas y solo rompe el alineamiento señal↔precio. Un null ingenuo (iid, redibujar cada señal) destruiría esa autocorrelación y daría p-values demasiado optimistas. Es la diferencia entre un test honesto y uno que se auto-engaña.

Otros usos en el sistema

La misma idea, otros problemas

DóndeQué simula
Calibración TP/SLMiles de entradas aleatorias sobre una grilla de TP×SL (dimensionada por la volatilidad del activo) para rankear las celdas por su Sharpe, en vez de elegir el TP/SL a ojo.
Placebo del filtro de régimenExcluir N trades al azar muchas veces y comparar: así se distingue si la mejora del filtro es una señal real o solo el efecto-N (menos varianza al sacar cualquier subconjunto).
Fortalezas y límites

Potente, pero no gratis

No asume la forma de la distribución

No exige que los retornos sean normales ni nada por el estilo: construye la distribución nula directamente de los datos. Y el null puede diseñarse para preservar lo que importa (las rachas).

Cuesta cómputo, y su precisión es ~1/√N

Cada test son miles de simulaciones. Por eso en el walk-forward solo el top-N por robustez recibe Monte Carlo (screening por costo) — una limitación documentada, no escondida.

Guía técnica · Paso 9 Folds y Permutación El walk-forward en detalle: folds, PF pooleado y el test de permutación con circular_shift y corrección Phipson-Smyth, verificado contra el código.