# Monte Carlo Stock Simulator

> Simulador Monte Carlo de riesgos bursátiles en navegador: 5 modelos estocásticos (GBM, Heston, Jump-Diffusion, GARCH, Bootstrap), Web Worker, señales BUY/HOLD/SELL, VaR/CVaR, Sharpe/Sortino. Sin servidor, sin registro.

- Skill: `ntizar/monte-carlo-stock-simulator` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ntizar/monte-carlo-stock-simulator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ntizar/monte-carlo-stock-simulator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ntizar (https://skillmd.com/u/ntizar)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ntizar/monte-carlo-stock-simulator

---


# Monte Carlo Stock Simulator

Simulador de riesgos bursátiles de Ntizar (David Antizar) que aplica modelos estocásticos institucionales directamente en el navegador.

## Repositorio

https://github.com/Ntizar/MonteCarloInversion
https://ntizar.github.io/MonteCarloInversion/

## Stack

- Vanilla JS (ESM modules)
- Web Workers para simulación sin bloquear UI
- Plotly.js para gráficos (fan chart, histogramas)
- GitHub Pages para deploy

## Los 5 Modelos Estocásticos

| Modelo | Qué captura mejor | Característica |
|--------|-------------------|----------------|
| GBM | Tendencia + volatilidad constante | Modelo clásico Black-Scholes |
| Heston | Volatilidad estocástica (mean-reverting) | Captura clustering de volatilidad |
| Jump-Diffusion | Eventos extremos (crashes, rallies) | Saltos Poisson en precio |
| GARCH(1,1) | Volatilidad que cambia con el tiempo | Captura fat tails |
| Bootstrap | No-paramétrico, basado en datos reales | Re-muestreo de rendimientos históricos |

## Arquitectura del simulador (código fuente real)

```
public/js/
  simulation.js          — Motor principal: 5 modelos + consenso
  simulation-worker.js   — Web Worker para cálculos pesados
  math-utils.js          — Mulberry32 RNG, percentiles, rolling stats
  api.js                 — Fetch de datos de Yahoo Finance
  charts.js              — Plotly: fan chart, histogramas
  config.js              — Configuración por defecto
  fundamentals.js        — Análisis fundamental
  technicals.js          — Indicadores técnicos
  options.js             — Análisis de opciones
  news.js                — Sentimiento de noticias
  insiders.js            — Insider trading
  reddit.js              — Sentimiento Reddit
  macro.js               — Contexto macro
  screener.js            — Comparación entre activos
  portfolio.js           — Análisis de portfolio
  exporter.js            — Exportar a PDF
  cache.js               — Cache local de resultados
```

## Señal de consenso

- Cada modelo genera una señal BUY/HOLD/SELL
- Score 0-100 basado en consenso entre los 5 modelos
- Fan chart con bandas de confianza 95%/99%
- VaR y CVaR al 95% y 99%

## Métricas calculadas

- **VaR/CVaR**: cuánto puedes perder en el peor escenario
- **Probabilidades**: de caída ≥10%, ≥20%, ≥30%
- **Sharpe y Sortino**: rentabilidad ajustada al riesgo
- **Señal**: BUY/HOLD/SELL con score 0-100

## Código clave (simulation.js)

```js
// checkpoint-based validation: re-evalúa el modelo en puntos históricos
// para calibrar confianza en la simulación futura
function buildCheckpointIndices(priceCount, horizon, minTrainingDays, checkpointStep, maxCheckpoints) {
  // Construye índices de validación cruzada temporal
}

// classifyDirection: clasifica retornos en up/down/neutral
function classifyDirection(returnPct, neutralBandPct) {
  if (returnPct > neutralBandPct) return 1;
  if (returnPct < -neutralBandPct) return -1;
  return 0;
}
```

## Contexto de Mercado Multi-Fuente

9 fuentes de datos en paralelo (sin registro):

1. **Analisis tecnico** — RSI, MACD, Bollinger, MA, ATR, soporte/resistencia
2. **Opciones** — Put/Call ratio, IV implícita
3. **Contexto macro** — FRED: tipos, inflacion, VIX, curva
4. **Fundamentales** — P/E, ROE, margenes, BPA, deuda
5. **Earnings Calendar** — proximos resultados
6. **Noticias** — RSS + sentimiento
7. **Sentimiento Reddit** — WSB + r/stocks
8. **Insider Trading** — SEC EDGAR Form 4
9. **Correlacion** — matriz Pearson entre activos

## APIs Gratuitas (sin registro)

- Yahoo Finance → precios OHLCV, fundamentales, opciones
- Yahoo Finance RSS → noticias y sentimiento
- FRED (St. Louis Fed) → macro: tipos, inflacion, VIX, curva
- Wikipedia → composicion IBEX 35 y S&P 500
- Reddit (JSON publico) → sentimiento WSB/r/stocks
- SEC EDGAR EFTS → insider trading Form 4

## Cache con TTL Diferenciado

- **Precios**: 4 horas
- **Fundamentales**: 24 horas
- **Contexto macro**: 6 horas
- **Noticias**: 15 minutos
- **Insider trading**: 24 horas

## Pitfalls

- Usar Mulberry32 como PRNG (no Math.random) para reproducibilidad
- Los Web Workers deben serializar datos — no pasar funciones
- Yahoo Finance API tiene rate limits — usar cache local
- Los modelos son educativos, no advice financiero
- El bootstrap requiere al menos 250 días de datos históricos
- GARCH necesita convergencia numérica — tener fallback a GBM
- checkpoint-based validation permite calibrar confianza del modelo
- **CORS**: necesitar cadena de proxies para APIs sin CORS
- **CSP**: definir Content-Security-Policy estricta en HTML
