Skip to main content
Glama

πŸŒ‹ Volatility MCP

An MCP (Model Context Protocol) server for iterative volatility analytics: ARCH β†’ GARCH β†’ GJR-GARCH β†’ EGARCH, with pre-flight statistical gates, input optimization, VaR / Expected Shortfall, Basel backtesting, and a stateful feedback loop that guides an LLM agent through every stage of the analysis.

Python 3.10+ License: MIT MCP Compatible

Volatility Analytics Lab Β· Finance Β· Risk Β· Analytics


What This Is

A feedback-driven volatility analytics engine wrapped as an MCP server. An LLM agent (Claude, GPT, etc.) calls tools one at a time; each tool returns results plus recommendations for the next step. The agent iterates until diagnostics pass, backtests pass, and reports are generated.

data.load β†’ preflight.run β†’ optimize.* β†’ models.fit β†’ diagnostics.run
    β†’ compare.run β†’ risk.var β†’ backtest.rolling β†’ backtest.coverage
    β†’ report.excel β†’ feedback.explain_decision

Three Pillars

Pillar

What it does

Folder

πŸ›‘οΈ Pre-flight gates

12 statistical checks run BEFORE any model fit. If Engle ARCH-LM fails, GARCH is blocked.

core/preflight/

🎯 Input optimization

(p,q), distribution, window, refit frequency chosen by AIC/QLIKE β€” not by guesswork.

core/optimize/

πŸ” Feedback loop

Session state + workflow DAG + advisor. Every tool returns next_actions[].

core/feedback/


Related MCP server: risk-analytics-mcp-server

Quick Start

# Clone
git clone https://github.com/volatility-analytics-lab/volatility-mcp.git
cd volatility-mcp

# Install
python -m pip install -e ".[dev]"

# Run tests
make test

# Start the MCP server (stdio transport)
make run

# Or SSE transport for remote access
make run-sse

Connect from Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "volatility": {
      "command": "python",
      "args": ["-m", "mcp_server.server"],
      "cwd": "/path/to/volatility-mcp"
    }
  }
}

Then ask Claude: "Analyze Reliance Industries volatility using the volatility MCP server."


Tool Surface

Category

Tools

Session

open_session, close_session, get_session_state, list_sessions, reset_session

Data

load_market, load_csv, list_universes, list_assets

Pre-flight

run_preflight, get_gate_status, explain_gate

Optimize

optimize_order, optimize_distribution, optimize_mean, optimize_window, optimize_refit, optimize_horizon

Models

fit_model, forecast, list_models

Diagnostics

run_diagnostics, get_diagnostics

Compare

compare_models

Risk

compute_var, compute_es, basel_es, portfolio_var

Scenario

apply_market_shock, stressed_var, list_stress_scenarios

Backtest

rolling_backtest, backtest_kupiec, backtest_christoffersen, backtest_traffic_light, backtest_dynamic_quantile, backtest_diebold_mariano, backtest_coverage_scorecard

Report

build_excel, build_pdf, build_markdown

Feedback

get_next_action, explain_decision, get_recommendations, list_valid_transitions

See docs/MCP_PROTOCOL.md for the full surface.


Architecture

Presentation:  Streamlit Β· Claude Desktop Β· REST clients Β· Jupyter
                              β”‚ HTTP / stdio / SSE
Protocol:       FastMCP server (tools Β· resources Β· prompts)
                              β”‚
Engine:         core/  (preflight Β· diagnostics Β· models Β· optimize
                        Β· risk Β· backtest Β· feedback Β· reporting)
                              β”‚
Storage:        session_store/ (SQLite + parquet)
Data:           yfinance Β· CSV Β· Alpha Vantage Β· Polygon Β· Kite

See docs/ARCHITECTURE.md for the full layered design.


Folder Structure

volatility-mcp/
β”œβ”€β”€ mcp_server/                   # MCP protocol layer
β”‚   β”œβ”€β”€ server.py                 # Entry point: registers tools, resources, prompts
β”‚   β”œβ”€β”€ tools/                    # Tools callable by the LLM agent
β”‚   β”‚   β”œβ”€β”€ session.py            # open_session / close_session / get_state
β”‚   β”‚   β”œβ”€β”€ data.py               # load_market / load_csv / list_universes
β”‚   β”‚   β”œβ”€β”€ preflight.py          # run_preflight / get_gate_status
β”‚   β”‚   β”œβ”€β”€ diagnostics.py        # run_diagnostics (LB, ARCH-LM, JB, Q-Q stats)
β”‚   β”‚   β”œβ”€β”€ optimize.py           # optimize_order / optimize_distribution / optimize_window
β”‚   β”‚   β”œβ”€β”€ models.py             # fit_model / forecast / list_models
β”‚   β”‚   β”œβ”€β”€ compare.py            # compare_models (AIC/BIC/QLIKE/RMSE)
β”‚   β”‚   β”œβ”€β”€ risk.py               # compute_var / compute_es / basel_es
β”‚   β”‚   β”œβ”€β”€ scenario.py           # apply_shock / stressed_var
β”‚   β”‚   β”œβ”€β”€ backtest.py           # rolling_backtest / kupiec / christoffersen
β”‚   β”‚   β”œβ”€β”€ report.py             # build_excel / build_pdf / build_markdown
β”‚   β”‚   └── feedback.py           # get_next_action / explain_decision
β”‚   β”œβ”€β”€ resources/                # Static context (read by LLM, not executed)
β”‚   β”‚   β”œβ”€β”€ model_catalog.md
β”‚   β”‚   β”œβ”€β”€ test_catalog.md
β”‚   β”‚   └── workflows/            # 01_discovery β†’ 05_validation
β”‚   β”œβ”€β”€ prompts/                  # Prompt templates for guided workflows
β”‚   └── schemas/                  # JSON schemas for tool I/O contracts
β”‚
β”œβ”€β”€ core/                         # Framework-agnostic engine (no MCP code here)
β”‚   β”œβ”€β”€ data/                     # Providers: yfinance, CSV, Alpha Vantage, Polygon, Kite
β”‚   β”œβ”€β”€ preflight/                # 12-check gate layer
β”‚   β”‚   └── checks/               # 01_sample_size.py … 12_frequency_adequacy.py
β”‚   β”œβ”€β”€ diagnostics/              # Post-fit: LB, ARCH-LM, JB, sign-bias, Nyblom
β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”œβ”€β”€ univariate/           # ARCH, GARCH, GJR-GARCH, EGARCH, FIGARCH, EWMA
β”‚   β”‚   β”œβ”€β”€ multivariate/         # DCC, BEKK, O-GARCH
β”‚   β”‚   β”œβ”€β”€ stochastic/           # Heston, SV-Jumps
β”‚   β”‚   └── ml/                   # LSTM, Transformer, TFT
β”‚   β”œβ”€β”€ optimize/                 # order_selector, distribution_selector, window_selector…
β”‚   β”œβ”€β”€ risk/                     # VaR (parametric, historical, FHS, MC), ES, Basel, portfolio
β”‚   β”œβ”€β”€ backtest/                 # Kupiec, Christoffersen, DQ, Traffic Light, Diebold-Mariano
β”‚   β”œβ”€β”€ feedback/                 # Session, state machine, workflow DAG, advisor, decision log
β”‚   └── reporting/                # Excel, PDF, Markdown, Plotly charts
β”‚
β”œβ”€β”€ session_store/                # SQLite / DuckDB persistent session backend
β”œβ”€β”€ tests/                        # Mirrors core/ structure; synthetic GARCH fixtures
β”œβ”€β”€ examples/
β”‚   β”œβ”€β”€ 01_basic_flow.py          # preflight β†’ fit β†’ forecast β†’ VaR
β”‚   β”œβ”€β”€ 02_feedback_loop_demo.py  # Full iterate-until-stable flow
β”‚   β”œβ”€β”€ 03_optimization_walkthrough.py
β”‚   └── notebooks/mcp_client_demo.ipynb
β”œβ”€β”€ docker/
β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”œβ”€β”€ docker-compose.yml
β”‚   └── entrypoint.sh
└── docs/
    β”œβ”€β”€ ARCHITECTURE.md
    β”œβ”€β”€ FEEDBACK_LOOP.md
    β”œβ”€β”€ PREFLIGHT_CHECKS.md
    β”œβ”€β”€ INPUT_OPTIMIZATION.md
    β”œβ”€β”€ MODEL_CATALOG.md
    β”œβ”€β”€ TEST_CATALOG.md
    β”œβ”€β”€ MCP_PROTOCOL.md
    └── DECISION_RULES.md

Documentation

Doc

What it covers

ARCHITECTURE.md

Layered architecture, data flow, scaling options

FEEDBACK_LOOP.md

How the iterative workflow works

PREFLIGHT_CHECKS.md

Every gate explained

INPUT_OPTIMIZATION.md

How each input is tuned

MODEL_CATALOG.md

When to use which model

TEST_CATALOG.md

Every statistical test

MCP_PROTOCOL.md

Tool/resource/prompt surface

DECISION_RULES.md

Decision tree for model selection


Credits & Intellectual Debt

This project is built on the shoulders of the following thinkers and their work.

Nassim Nicholas Taleb β€” The Black Swan (2007), Dynamic Hedging (1997), Antifragile (2012). The pre-flight normality gate, stressed VaR scenarios, and the philosophy of iterating toward robustness over point estimates all trace back here.

Robert F. Engle β€” ARCH paper (Econometrica, 1982). The Engle ARCH-LM test is the single most critical pre-flight gate: if it fails, GARCH is blocked.

Tim Bollerslev β€” GARCH(p,q) paper (Journal of Econometrics, 1986). The industry workhorse at the center of the model catalog.

Nelson (1991), Glosten-Jagannathan-Runkle (1993) β€” EGARCH and GJR-GARCH respectively. The leverage asymmetry gate recommends these when sign-bias fires.

Philippe Jorion β€” Value at Risk (3rd ed., 2006). The parametric, historical, and FHS VaR implementations follow his treatment directly.

Kupiec (1995), Christoffersen (1998), Engle & Manganelli (2004) β€” the POF, conditional coverage, and Dynamic Quantile backtests that form the coverage scorecard.

Patton (2011) β€” established QLIKE as the robust loss function for volatility forecast comparison. Default objective in optimize_window.

Diebold & Mariano (1995) β€” the DM test used in backtest_diebold_mariano to compare competing model forecasts.

Basel Committee on Banking Supervision β€” Basel III framework: source of the 97.5% ES requirement, 10-day horizon, traffic light zones, and capital multiplier rules.

Kevin Sheppard β€” the arch Python package that powers all GARCH-family estimation in this project.


License

MIT β€” see LICENSE.

Educational use only. Market data may be delayed. Not investment advice.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to perform Black-Litterman portfolio optimization with investor views, backtesting, and asset analysis, generating dashboards for visualization.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides AI agents with quantitative risk tools such as VaR, expected shortfall, GARCH volatility, backtesting, stress testing, tail risk analysis, and credit scoring using synthetic or user-supplied data.
    7
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables time series analysis following Box-Jenkins-Treadway methodology, supporting guided or autonomous modes for model identification, estimation, and diagnosis via an LLM.
    35
    GPL 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sathanandhh/Volatility-Lab-'

If you have feedback or need assistance with the MCP directory API, please join our Discord server