HPSILab Quant Finance
PYPI · HPSILAB-QUANT-FINANCE-MCP · 2 COMPONENTS
Stock & options risk analytics for AI agents: pre-trade risk scan, IV, gamma walls, Monte Carlo.
Available components
Last scanned (22 hours ago)
Scores higher than 86% of PyPI servers
Category Finance and Payments
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 build step with no custom scripting around it. View diagnostics → Pass
- 0 of 31 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 10 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 4879 tokens (~487/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 Management100
- No destabilizing schema changes in the last 30 days.Pass
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
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.
- 4 Nov 26 +15
- Malware scan: unverified → pass ▲ security
- 3 Nov 26 −15
- Malware scan: pass → unverified ▼ security
- 2 Nov 26 0
- Provenance: unverified → fail ▼ security
- 1 Nov 26 0
- Provenance: fail → unverified ▼ security
- 30 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 27 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- 26 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 25 Oct 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 4 Nov 2026 · Analysed pypi/hpsilab-quant-finance-mcp@0.11.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
| Reason | No attestation published |
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 31 packages
| Packages resolved | 31 |
|---|---|
| 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 ~454
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 — 10-trading-day price distribution and 90 % range 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 ~400
Run a Monte Carlo price-path simulation for a stock over the next 10 trading days. Use this tool when: - You need a probabilistic price range rather than a single point estimate. - You want the odds of finishing above recent resistance or below support. - You are sizing a position using a volatility-adjusted scenario. The simulation uses a GBM (Geometric Brownian Motion) model calibrated with the stock's historical daily log-return drift and volatility (not implied volatility). 5,000 paths are run. Returns ------- dict with keys: ticker : str — normalized ticker horizon_days : int — simulation horizon in trading days (10) ci : float — confidence level of lower/upper_bound (0.90) lower_bound : float — lower edge of the central `ci` price range upper_bound : float — upper edge of the central `ci` price range mean_price : float — mean simulated price at horizon median_price : float — median simulated price at horizon support : float — 20-day rolling low resistance : float — 20-day rolling high (also returned as `threshold`) prob_above : float — probability (0–1) the horizon price exceeds `resistance` prob_below : float — 1 - prob_above volatility : float — daily log-return standard deviation std_tomorrow : float — one-day price standard deviation (spot × volatility) final_prices : list — every simulated horizon price msg : str — one-line plain-English summary
| 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,670
Run a pre-trade risk scan for a single stock: the stock's own volatility/beta/VaR/drawdown set against the SPY benchmark, market regime, a forward return distribution for the stock, position-sizing checks on the stock's own metrics, and — against the user's tracked watchlist — the sector/symbol exposure impact of adding it and its correlation to existing holdings. riskDeltas compare SPY with the stock on its own. They are NOT the risk of the user's portfolio before and after the trade; only `exposure` and `correlation` use the portfolio. 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 — the stock's own risk metrics next to the SPY benchmark's (field names are historical; neither side is a portfolio), each a dict: label : str — e.g. "Annualized Volatility", "Beta (vs SPY)", "1-Day VaR (95%)", "Max Drawdown (1Y)" beforeValue : float — the SPY benchmark's value (beta is 1.0)…
| 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 ~439
Register a free HPSILab account from the client and receive an API key. Use this tool when: - The user has no API key yet and asks to sign up from here, with their own email address. This is the only tool that works without HPSILAB_API_KEY; the user can also register at https://hpsilab.com/register. - The user already has a key and asks for a fresh one for the same account. It creates an account and sends a verification email, so call it only when the user asks, never to get around another tool's error on your own. 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**, with only a capped evaluation allowance and no trial Credits, until the emailed link is confirmed; confirming it grants the one-time 100-Credit Registered Trial (14 days). 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.
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
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. Stock & options risk analytics for AI agents: pre-trade risk scan, IV, gamma walls, Monte Carlo. This page covers its PyPI package (hpsilab-quant-finance-mcp).
Is the HPSILab Quant Finance MCP server safe to use?
HPSILab Quant Finance scores 83 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 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,806 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 4 November 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.