HPSILab Quant Finance
PYPI · HPSILAB-QUANT-FINANCE-MCP · 2 COMPONENTS · SCANNED SEP 20
HPSILab Quant finance MCP for US stocks, ETFs, options, Monte Carlo, backtesting, and risk analysis.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 0 of 32 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 23 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability61
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4219 tokens (~421/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the HPSILab Quant Finance MCP server?
HPSILab Quant Finance runs locally as a PyPI package, launched with uvx hpsilab-quant-finance-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · hpsilab-quant-finance-mcp
claude mcp add haiyunsky-hpsilab-quant-finance-mcp -- uvx hpsilab-quant-finance-mcp
{
"mcpServers": {
"haiyunsky-hpsilab-quant-finance-mcp": {
"command": "uvx",
"args": [
"hpsilab-quant-finance-mcp"
]
}
}
} {
"servers": {
"haiyunsky-hpsilab-quant-finance-mcp": {
"command": "uvx",
"args": [
"hpsilab-quant-finance-mcp"
]
}
}
} codex mcp add haiyunsky-hpsilab-quant-finance-mcp -- uvx hpsilab-quant-finance-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"haiyunsky-hpsilab-quant-finance-mcp": {
"type": "local",
"command": [
"uvx",
"hpsilab-quant-finance-mcp"
],
"enabled": true
}
}
} openclaw mcp add haiyunsky-hpsilab-quant-finance-mcp --command uvx --arg hpsilab-quant-finance-mcp
mcp_servers:
haiyunsky-hpsilab-quant-finance-mcp:
command: "uvx"
args: ["hpsilab-quant-finance-mcp"] {
"McpServers": {
"haiyunsky-hpsilab-quant-finance-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"hpsilab-quant-finance-mcp"
]
}
}
} assistant mcp add haiyunsky-hpsilab-quant-finance-mcp -t stdio -c uvx -a hpsilab-quant-finance-mcp
{
"mcpServers": {
"haiyunsky-hpsilab-quant-finance-mcp": {
"command": "uvx",
"args": [
"hpsilab-quant-finance-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −3
- Stability: pass → 0.80 functional
- 17 Sept 26 +1
- Stability: 0.97 → pass security
- 15 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 −3
- Stability: pass → 0.80 functional
- 10 Sept 26 +1
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/hpsilab-quant-finance-mcp@0.10.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
Dependencies 32 packages
| Packages resolved | 32 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
analyze_stock ~337
Run a full institutional-grade quantitative analysis for a single stock. This is the **primary tool** for a complete market view. It aggregates results from AI prediction, implied-volatility radar, options-pressure map, Monte Carlo simulation, and strategy backtesting into one unified signal. Use this tool when: - You need a holistic bull/bear verdict with supporting evidence. - You want to compare multiple signal sources in a single call. - A user asks for a "stock analysis", "market view", or "trading signal". Prefer the dedicated sub-tools (get_iv_radar, get_monte_carlo, etc.) when you need only a specific data dimension, to reduce latency and token usage. Returns ------- dict with keys: symbol : str — normalized ticker signal : str — "Bullish" | "Bearish" | "Neutral" confidence_score: int — 0–100 directional confidence bullish_factors : list — evidence supporting an upward move bearish_factors : list — evidence supporting a downward move summary : str — one-sentence synthesis Notes ----- - Requires a valid HPSILAB_API_KEY. - API access, quota, and ticker coverage are governed by the HPSILab account. - Response latency is ~5–15 s due to multi-model aggregation.
| Name | Type | Req | Description |
|---|---|---|---|
| symbol | string | yes | Exchange ticker in uppercase, e.g. 'NVDA', 'AAPL', 'SPY', 'QQQ'. Do NOT pass company names ('Nvidia') — use official tickers only. |
Structured output declared, but exposes no named fields.
No examples provided.
generate_stock_images ~336
Generate chart image URLs for a stock: price chart, IV surface, and options flow heatmap. Use this tool when: - A user explicitly asks to "see", "show", or "visualize" a chart. - You want to accompany a written analysis with supporting visuals. - You need to share chart links in a report or message. Parameters ---------- force: Regenerate images instead of reusing cached artifacts. Defaults to True. types: Optional subset of chart types. Allowed values: ai_prediction, iv_radar, option_pressure, monte_carlo, equity_curves. Omit to generate every chart type. Note: Images are served as public URLs. They expire after 24 hours. If images do not render in your client, copy the URL and open it in a browser directly. Returns ------- dict with keys: symbol : str — normalized ticker price_chart_url : str — URL to candlestick + volume chart (PNG) iv_surface_url : str — URL to 3-D IV surface chart (PNG) options_flow_url: str — URL to options flow heatmap (PNG) expires_at : str — ISO 8601 expiry timestamp for the URLs
| Name | Type | Req | Description |
|---|---|---|---|
| force | boolean | – | Regenerate hosted images instead of reusing cached artifacts. |
| symbol | string | yes | Exchange ticker in uppercase, e.g. 'NVDA', 'AAPL'. Do NOT pass company names — use official tickers only. |
| types | – | – | Optional chart types to generate. Omit or use null to generate every type. |
Structured output declared, but exposes no named fields.
No examples provided.
generate_stock_research_report ~456
Generate a structured, institutional-style markdown research report for a single stock, covering all major quantitative signal sources. The report is divided into six sections: 1. Executive Summary — bull/bear verdict, confidence score, one-line thesis 2. AI Prediction — ensemble model votes, up-probability, regime 3. Volatility Analysis — ATM IV, IV rank, vol regime, risk reversal 4. Options Positioning — max pain, gamma wall, expected move, squeeze targets 5. Monte Carlo Outlook — 30-day price distribution, 90 %/68 % confidence ranges 6. Strategy Backtests — Sharpe, max drawdown, win rate across quant strategies Output is a complete markdown string (~800–1200 words) ready to render or share. Response latency is ~10–20 s due to full multi-model data aggregation. Use this tool when: - A user asks for a "report", "write-up", "research note", or "deep dive". - You want a pre-formatted narrative combining all signal sources in one document. - You need output suitable for archiving, PDF export, or investor communication. Do NOT use this tool when: - You only need a quick directional verdict → use analyze_stock instead. - You need a specific data dimension (IV, Monte Carlo, etc.) → use the dedicated sub-tool (get_iv_radar, get_monte_carlo, etc.) for lower latency. Returns ------- dict with keys: symbol : str — normalized ticker report : str — full markdown report (~800–1200 words, 6 sections) generated_at : str — ISO 8601 generation timestamp Notes ----- - Requires a valid HPSILAB_API_KEY. - API access, quota, and ticker coverage are governed by the HPSILab account. - For programmatic use, prefer analyze_stock which returns structured JSON.
| Name | Type | Req | Description |
|---|---|---|---|
| symbol | string | yes | Exchange ticker in uppercase, e.g. 'NVDA', 'TSLA', 'SPY'. Do NOT pass company names — use official tickers only. |
Structured output declared, but exposes no named fields.
No examples provided.
get_ai_prediction ~317
Get an AI/ML directional prediction for a stock's next-session move. Use this tool when: - You want a data-driven probability estimate for the next trading day's direction (up vs. down). - You need the individual model votes (ensemble breakdown) to assess consensus strength. - You want to compare model confidence against current IV pricing. The prediction engine uses an ensemble of gradient-boosted trees, an LSTM, and a VQC (quantum-classical hybrid) model. Features include VIX, relative strength, Treasury rates, and options flow signals. Returns ------- dict with keys: symbol : str — normalized ticker prediction : str — "Up" | "Down" | "Neutral" up_probability : float — 0.0–1.0 probability of upward close confidence : float — 0.0–1.0 ensemble agreement score model_votes : dict — per-model predictions and probabilities regime : str — "Bull" | "Bear" | "Chop" market regime signal_strength : str — "Strong" | "Moderate" | "Weak"
| Name | Type | Req | Description |
|---|---|---|---|
| symbol | string | yes | Exchange ticker in uppercase, e.g. 'NVDA', 'META', 'QQQ'. Do NOT pass company names — use official tickers only. Per-ticker model accuracy varies; META and QQQ have shown above-baseline hit rates in… |
Structured output declared, but exposes no named fields.
No examples provided.
get_equity_curve ~313
Retrieve backtested equity curves and performance metrics for standard quantitative strategies applied to a single stock. Use this tool when: - You want to evaluate how well rule-based strategies (momentum, mean- reversion, vol-targeting) have performed on this specific ticker. - You need risk-adjusted return metrics (Sharpe, Sortino, max drawdown) to compare strategy quality. - You are building a multi-leg options strategy and want historical context for the underlying's trending vs. mean-reverting behavior. Returns ------- dict with keys: symbol : str — normalized ticker strategies : list — each item is a dict with: name : str — strategy name total_return : float — cumulative return (e.g., 0.45 = +45 %) sharpe_ratio : float — annualized Sharpe ratio sortino_ratio : float — annualized Sortino ratio max_drawdown : float — maximum peak-to-trough loss (negative) win_rate : float — fraction of winning trades (0–1) pl_ratio : float — average win / average loss equity_curve : list — daily portfolio value series
| Name | Type | Req | Description |
|---|---|---|---|
| symbol | string | yes | Exchange ticker in uppercase, e.g. 'NVDA', 'AAPL', 'SPY', 'QQQ'. Do NOT pass company names ('Nvidia') — use official tickers only. |
Structured output declared, but exposes no named fields.
No examples provided.
get_iv_radar ~286
Retrieve implied-volatility (IV) metrics for a single stock. Use this tool when: - You need to assess whether options are cheap or expensive relative to historical norms (IV rank / IV percentile). - You want the current volatility regime ("Low", "Normal", "Elevated", "Extreme") to frame risk sizing or strategy selection. - You are analyzing skew or risk-reversal direction (put-heavy vs call-heavy market). Do NOT use this tool if you already called analyze_stock — the IV data is included in that response. Returns ------- dict with keys: symbol : str — normalized ticker atm_iv : float — at-the-money implied volatility (annualized %) iv_rank : float — 0–100; ≥80 = expensive, ≤20 = cheap iv_percentile : float — historical percentile (0–100) risk_reversal : float — 25-delta risk reversal (positive = call-skew) volatility_regime: str — "Low" | "Normal" | "Elevated" | "Extreme"
| Name | Type | Req | Description |
|---|---|---|---|
| symbol | string | yes | Exchange ticker in uppercase, e.g. 'NVDA', 'AAPL', 'SPY', 'QQQ'. Do NOT pass company names ('Nvidia') — use official tickers only. |
Structured output declared, but exposes no named fields.
No examples provided.
get_monte_carlo ~336
Run a Monte Carlo price-path simulation for a stock over a 30-day horizon. Use this tool when: - You need a probabilistic price range rather than a single point estimate. - You want to quantify downside risk (e.g., probability of a 10 % drawdown). - You are sizing a position using a volatility-adjusted scenario. The simulation uses a GBM (Geometric Brownian Motion) model calibrated with the stock's realized volatility and current IV. 10,000 paths are run by default. Returns ------- dict with keys: symbol : str — normalized ticker current_price : float — spot price at simulation start mean_price : float — expected price at horizon range_90 : dict — {"lower": float, "upper": float} 90 % CI range_68 : dict — {"lower": float, "upper": float} 68 % CI prob_above_spot: float — probability (0–1) price is above current spot prob_10pct_drop: float — probability (0–1) of ≥10 % decline distribution : dict — histogram data: {"bins": list, "frequencies": list, "kde_x": list, "kde_y": list}
| Name | Type | Req | Description |
|---|---|---|---|
| symbol | string | yes | Exchange ticker in uppercase, e.g. 'NVDA', 'AAPL', 'SPY', 'QQQ'. Do NOT pass company names ('Nvidia') — use official tickers only. |
Structured output declared, but exposes no named fields.
No examples provided.
get_option_pressure ~254
Retrieve options-market positioning and dealer-hedging pressure zones. Use this tool when: - You want to identify max-pain price (where option sellers face least loss at expiry) as a gravitational target near expiration. - You need to locate gamma walls (strike clusters with large open interest) that act as price magnets or resistance/support levels. - You want the expected-move range implied by the options market for the current weekly/monthly expiry cycle. Returns ------- dict with keys: symbol : str — normalized ticker max_pain : float — max-pain strike price gamma_wall : float — largest gamma concentration strike expected_move : float — ±expected move in dollars for nearest expiry squeeze_target: float — upside squeeze price target expiry_date : str — target expiry date (YYYY-MM-DD) pressure_zones: list — list of significant strike/OI concentration dicts
| Name | Type | Req | Description |
|---|---|---|---|
| symbol | string | yes | Exchange ticker in uppercase, e.g. 'NVDA', 'AAPL', 'SPY', 'QQQ'. Do NOT pass company names ('Nvidia') — use official tickers only. |
Structured output declared, but exposes no named fields.
No examples provided.
get_pretrade_risk_scan ~1,141
Run a pre-trade risk scan for adding a single stock to the user's tracked portfolio, covering volatility/beta/VaR/drawdown deltas, market regime, a forward return distribution, position-sizing checks, sector/symbol exposure impact, and correlation against existing holdings. Use this tool when: - You need a risk-first check before evaluating or placing a trade. - You want position-sizing guardrails (volatility, drawdown, beta, liquidity) evaluated against warn/fail thresholds, not just raw numbers. - You need to see how adding this symbol would shift sector or per-symbol concentration in the existing portfolio. - You want the new symbol's correlation to current holdings, to judge diversification benefit vs. redundant exposure. Do NOT use this tool for: - A standalone price-distribution simulation with no portfolio context → use get_monte_carlo instead. - A general bullish/bearish read on the stock → use analyze_stock. Example ------- get_pretrade_risk_scan("NVDA") Returns ------- dict with keys: symbol : str — normalized ticker asOf : str — ISO 8601 date the scan was computed regime : str — "bull" | "bear" | "chop" market regime regimeConfidence: float — 0–1 confidence in the regime classification riskDeltas : list — before/after risk metrics from adding the position, each item a dict with: label : str — e.g. "Annualized Volatility", "Beta (vs SPY)", "1-Day VaR (95%)", "Max Drawdown (1Y)" beforeValue : float — metric value for current portfolio afterValue : float — metric value after adding the position unit : str — "%" or "" (unitless, e.g. beta) higherIsRiskier : bool — whether an increase in this metric is worse distribution : dict — forward return distribution: {"bins": list, "frequencies": list,…
| Name | Type | Req | Description |
|---|---|---|---|
| symbol | string | yes | Exchange ticker in uppercase, e.g. 'NVDA', 'AAPL', 'SPY'. Do NOT pass company names — use official tickers only. |
Structured output declared, but exposes no named fields.
No examples provided.
register_account ~370
Reissue account credentials for an already authenticated HPSILab account. Use this tool when: A valid HPSILAB_API_KEY is required. Without one, this tool returns the same `api_key_required` registration prompt as every other SDK call and sends no request. New users register at https://hpsilab.com/register. After it succeeds, set HPSILAB_API_KEY to the returned `api_key` so the other tools authenticate as this account. The account is also bound to this caller server-side, so calls from here are recognised even before the environment variable is updated. The account is created **unverified**, which keeps the anonymous daily allowance until the emailed link is confirmed; confirming it unlocks the full Free plan. Tell the operator to click that link. Calling again returns the same account and a fresh key rather than creating a second one, so it is safe to retry if a key was lost. An address that already belongs to a different account is refused — you cannot attach yourself to someone else's account. Returns ------- dict email : str — the registered address tier : str — plan name, "free" on registration email_verified : bool — false until the emailed link is clicked api_key : str — set this as HPSILAB_API_KEY already_registered: bool — true when this caller already had an account message : str — next step, in plain language
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | A real email address to own the account. Use the operator's address if you have one — the verification link is sent there, and an address nobody reads leaves the account permanently at the anonymous… |
Structured output declared, but exposes no named fields.
No examples provided.
What is the HPSILab Quant Finance MCP server?
HPSILab Quant Finance is an MCP server listed in the public MCP registry as io.github.haiyunsky/hpsilab-quant-finance-mcp. HPSILab Quant finance MCP for US stocks, ETFs, options, Monte Carlo, backtesting, and risk analysis. This page covers its PyPI package (hpsilab-quant-finance-mcp).
Is the HPSILab Quant Finance MCP server safe to use?
HPSILab Quant Finance scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the HPSILab Quant Finance MCP server expose?
HPSILab Quant Finance exposes 10 tools: analyze_stock, get_iv_radar, get_option_pressure, get_monte_carlo, get_ai_prediction, and 5 more. Their descriptions and schemas cost roughly 4,146 tokens of context every time the server is loaded.
Is the HPSILab Quant Finance MCP server still maintained?
HPSILab Quant Finance is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the HPSILab Quant Finance MCP server under?
HPSILab Quant Finance declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.