Equity Monte Carlo Simulator
Dê a qualquer agente de IA o poder de executar uma previsão séria de Monte Carlo para uma ação ou ETF - em uma única chamada de ferramenta.
Documentação
mcp-monte-carlo
Dê a qualquer agente de IA o poder de executar uma previsão séria de Monte Carlo para uma ação ou ETF — em uma única chamada de ferramenta.
Este é um servidor MCP (Model Context Protocol). Conecte-o uma vez ao Hermes, Claude Desktop, Cursor ou qualquer agente compatível com MCP, e o agente poderá baixar o histórico de mercado, ajustar um modelo de volatilidade, simular milhares de caminhos futuros de preços e retornar percentis, drawdowns e probabilidades de risco — sem que você escreva uma única linha de código de simulação.
You: "What does a bad year look like for SPY over the next 12 months?"
Agent → forecast_asset_monte_carlo("SPY")
→ EGARCH + skewed-t Monte Carlo (5,000 paths by default)
You ← JSON: price/return percentiles, vol, max drawdowns, loss probabilities
Por que isso importa
Modelos de linguagem grandes são excelentes em raciocínio e explicação. Eles não são motores para amostrar retornos de caudas pesadas sob volatilidade variável no tempo. Deixado sozinho, um agente pode inventar percentis aparentemente plausíveis ou usar uma aproximação genérica de “vol histórica $\times\sqrt{T}$”.
Este servidor preenche essa lacuna:
| Sem este MCP | Com este MCP |
|---|---|
| O agente adivinha faixas ou cita números desatualizados | O agente chama um pipeline estatístico reproduzível |
| Sem tratamento consistente de crashes / caudas pesadas | Inovações t assimétricas modelam assimetria e caudas pesadas |
| Suposições de volatilidade constante ignoram agrupamento | EGARCH captura volatilidade assimétrica impulsionada por choques |
| Difícil comparar risco de 7 dias vs. 10 anos | Mesmo modelo, mesmos caminhos, vários horizontes em um único JSON |
O agente permanece responsável pela interpretação e conversa. O MCP é responsável pela estimação e simulação.
O que ele faz (pipeline)
Yahoo Finance (max history)
│ adjusted daily Close
▼
Log returns
│
▼
Fit EGARCH(1,1) + leverage + skewed-t shocks
│ constant mean drift (historical mean)
▼
Simulate N paths (default 5,000) out to 10 years
│
▼
Summarize each horizon → percentiles, vol, MDD, probabilities
1. Dados
Usa yfinance para obter o histórico diário máximo disponível. O campo Close já está ajustado para splits e dividendos, então os retornos são adequados para capitalização de longo prazo.
2. Retornos e drift
Os preços são convertidos em retornos logarítmicos:
r_t=\ln\left(\frac{P_t}{P_{t-1}}\right)
O modelo de média é constante: cada dia simulado tem drift igual à média histórica ajustada $\mu$. Essa é uma suposição simples e transparente — não é uma bola de cristal para o retorno esperado futuro.
3. Volatilidade: EGARCH com alavancagem
A volatilidade de ações não é nem constante nem simétrica:
- Agrupamento de volatilidade — dias turbulentos tendem a seguir dias turbulentos.
- Efeito de alavancagem — grandes movimentos para baixo tendem a aumentar a volatilidade futura mais do que movimentos para cima igualmente grandes.
Este servidor ajusta EGARCH(1,1) com alavancagem ($p=1$, $o=1$, $q=1$) via pacote arch. Condicionalmente, a log-variância evolui aproximadamente como:
\ln(\sigma_t^2)=\omega+\alpha\bigl(\lvert z_{t-1}\rvert-\mathbb{E}[\lvert z\rvert]\bigr)+\gamma z_{t-1}+\beta\ln(\sigma_{t-1}^2)
Para ações, o coeficiente de alavancagem $\gamma$ é tipicamente negativo: um choque negativo $z$ aumenta a volatilidade de amanhã.
4. Choques: t de Student assimétrica
Choques gaussianos subestimam o risco de crash. Inovações padronizadas são extraídas de uma distribuição t assimétrica, então os caminhos simulados podem mostrar:
- caudas pesadas (movimentos extremos mais frequentes que o normal),
- assimetria (risco assimétrico à esquerda/direita).
5. Caminhos de Monte Carlo
Dados os parâmetros ajustados, o servidor simula $N$ trajetórias futuras (n_paths; loop NumPy vetorizado para estabilidade em horizontes de vários anos). Cada caminho é uma série de preços completa; os horizontes são fatias desses mesmos caminhos, para que estatísticas de curto e longo prazo sejam coerentes.
6. Horizontes (dias de negociação)
| Rótulo | Dias de negociação | Calendário aproximado |
|---|---|---|
7d | 5 | ~1 semana |
30d | 21 | ~1 mês |
3m | 63 | ~3 meses |
6m | 126 | ~6 meses |
1y | 252 | ~1 ano |
3y | 756 | ~3 anos |
5y | 1260 | ~5 anos |
10y | 2520 | ~10 anos |
Ferramentas
forecast_asset_monte_carlo(ticker, n_paths=5000)
Quando usar: O usuário quer cenários futuros, faixas de risco ou estatísticas de caminho para um ticker (ex.: SPY, AAPL).
Para cada horizonte, o JSON inclui:
- Percentis de preço —
1, 5, 10, 25, 50, 75, 90, 95, 99 - Percentis de retorno (%) — mesma grade, vs. preço atual
- Volatilidade anualizada (%) — vol transversal dos resultados do caminho naquele horizonte
- Percentis de drawdown máximo (%) — perda pico-a-vale ao longo de cada caminho até aquele horizonte
- Probabilidades — terminar abaixo do início, movimentos de ±20%, drawdown máximo acima de 20%
n_paths padrão é 5000 (mínimo 100). Mais caminhos → estimativas de percentil mais suaves, execução mais lenta.
inspect_asset_model(ticker)
Quando usar: Validar qualidade dos dados ou sanidade do modelo antes (ou em vez de) uma previsão completa — histórico suficiente? parâmetros sensatos? quão pesadas são as caudas dos resíduos?
Retorna o período do histórico, último preço, parâmetros ajustados de EGARCH + t assimétrica, AIC/BIC, última volatilidade condicional (diária e anualizada) e assimetria / curtose excessiva dos resíduos.
Não simula caminhos. Prefira forecast_asset_monte_carlo para percentis e drawdowns.
Requisitos
- macOS, Linux ou Windows
- uv (recomendado)
- Python ≥ 3.12 (declarado em
pyproject.toml) - Acesso à rede (download do Yahoo Finance)
Início rápido (local)
cd /path/to/mcp-monte-carlo
uv sync
Teste rápido sem MCP:
uv run python -c "
from server import run_inspect, run
import json
print(json.dumps(run_inspect('SPY'), indent=2))
print(json.dumps(run('SPY', 200)['horizons']['1y'], indent=2))
"
Execute o servidor MCP em stdio:
uv run mcp-monte-carlo
# or, from a published clone / path:
uvx --from /path/to/mcp-monte-carlo mcp-monte-carlo
Conecte um agente de IA
Hermes Agent (~/.hermes/config.yaml)
Prefira uv run contra um projeto sincronizado (mais rápido e confiável do que um uvx a frio):
mcp_servers:
mcp-monte-carlo:
command: /opt/homebrew/bin/uv # which uv → paste absolute path
args:
- run
- --directory
- /ABSOLUTE/PATH/TO/mcp-monte-carlo
- mcp-monte-carlo
connect_timeout: 120
timeout: 300
Depois: hermes mcp test mcp-monte-carlo ou /reload-mcp em um chat.
Cursor / Claude Desktop
{
"mcpServers": {
"mcp-monte-carlo": {
"command": "uvx",
"args": [
"--from",
"/ABSOLUTE/PATH/TO/mcp-monte-carlo",
"mcp-monte-carlo"
]
}
}
}
Uma vez publicado no GitHub, outros podem apontar --from para a URL do repositório ou clonar localmente e usar o mesmo padrão.
Exemplos de prompts para agentes
- “Inspecione o modelo EGARCH para
QQQ, depois faça a previsão com 2.000 caminhos.” - “Para
AAPL, qual é o preço no 5º percentil em 1 ano, e a probabilidade de um drawdown máximo >20%?” - “Compare o drawdown máximo mediano e o do 95º percentil em 1 ano para
SPYvsTLT.”
Estrutura do projeto
mcp-monte-carlo/
├── server.py # MCP tools + EGARCH/skew-t Monte Carlo (single module)
├── pyproject.toml # package metadata, deps, console entry point
├── uv.lock # locked dependency versions
├── README.md
└── .gitignore
Um único arquivo Python mantém o projeto fácil de ler, auditar e distribuir.
Ressalvas do modelo (leia isto)
Esta é uma ferramenta de risco educacional / de pesquisa, não é aconselhamento de investimento e não é garantia de preços futuros.
- O drift passado $\mu$ não é uma previsão de retorno esperado; medianas de longo prazo herdam essa suposição.
- EGARCH(1,1)+alavancagem e t assimétrica são padrões fortes para muitas ações/ETFs líquidos — não universalmente “ótimos” para cada ticker.
- A qualidade dos dados do Yahoo e ações corporativas podem afetar os resultados; sempre verifique
inspect_asset_modelem símbolos desconhecidos. - Horizontes extremamente longos (5–10 anos) amplificam o risco do modelo; trate as caudas como ilustrativas, não como certezas.
Licença / autoria
Criado por Alexandre Martins. Use e adapte livremente para agentes pessoais e aprendizado; se redistribuir, mantenha a atribuição e estas ressalvas visíveis.