mcpbeat Sign in

MarketHeist Backtest MCP Server

by marketheist Your server? Claim it
answering

MarketHeist Backtest is answering right now. Last checked 13 min ago. It exposes 10 tools.

Backtest and analyze any portfolio, incl. nested multi-strategy ones: returns, risk, factors, guides

Uptime history 74 days of history · worst day 92%
74 days agonow
100.0%
Uptime 24h
91 of 91 checks
10
Tools
read from the server
189 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 38

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 12 September 2026. No other catalogue keeps this.

18 Oct 7 tool descriptions were rewritten8 times that day analyze_portfolio, compare_portfolios, decompose_factors and 4 more
18 Oct 5 tools changed the parameters they ask for7 times that day analyze_portfolio, compare_portfolios, decompose_factors and 2 more
18 Oct 6 tools appeared compare_portfolios, find_guides, fund_history and 3 more
18 Oct a tool changed version2 times that day
17 Oct 2 tools changed the parameters they ask for3 times that day analyze_portfolio, run_backtest
17 Oct a tool changed version3 times that day
17 Oct a tool disappeared get_ohlcv
14 Oct a tool description was rewritten analyze_portfolio
19 Sep a tool changed the parameters it asks for analyze_portfolio
18 Sep a tool changed the parameters it asks for analyze_portfolio
and 12 more, back to 12 September 2026

Tools have disappeared from this server

A tool that vanishes takes a piece of your agent with it, and the change arrives silently. Watch this server and every such change lands in your inbox.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 13 min ago.

run in your terminal
claude mcp add backtest --transport http https://api.marketheist.io/api/mcp
Settings → Connectors → Add custom connector, then paste this address
https://api.marketheist.io/api/mcp
~/.codex/config.toml
[mcp_servers.backtest]
url = "https://api.marketheist.io/api/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "backtest": {
      "url": "https://api.marketheist.io/api/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "backtest": {
      "type": "http",
      "url": "https://api.marketheist.io/api/mcp"
    }
  }
}

Available tools 10

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

portfolio
portfolio_returns
Look up how a portfolio, strategy or fund actually returned: seasonality by calendar month (average return, share of positive months, number of years and a t-statistic so a thin 'September effect' is not presented as a law), calendar-year returns with partial years labelled (optionally next to the S&P 500), trailing 1/3/5/10/20/30-year returns, and the best and worst year and month. Use it for 'is September bad for 60/40', 'what did All Weather return in 2022', 'how has SPY done over 10 years', 'what did my own portfolio return each year'. Pass exactly one of `template` (e.g. all-weather, classic-60-40), `strategy` (e.g. dual-momentum-gem), `ticker` (any Yahoo ticker) or `assets` (your own allocation, including nested portfolios, rotations and strategies as holdings via `sleeve`, with optional `rebalance` and `overlay`); list_portfolios shows every valid id. Built-in ids and the funds with a history page are precomputed from the monthly refresh (instant); other tickers and `assets` are computed live from market data (proxy-extended monthly total returns). Read-only; every answer says which month the data runs through. For risk and drawdowns use portfolio_risk; to compare portfolios use compare_portfolios.
portfolio_risk
Answer both 'how bad did it get' and 'is it really diversified' for a built-in model portfolio, a canonical strategy or your own portfolio. Drawdowns: the deepest peak-to-trough episodes with months to trough and recovery, Ulcer index, longest time underwater, monthly VaR/CVaR 95, worst month and year, and returns in 2008, 2020 and 2022. Diversification: each holding's share of the risk next to its share of the money (60/40 is about 60% of the money and 93% of the risk), the number of independent bets over the full window, the last 10 years and the 36 months to Feb 2009 and Dec 2022, co-movement groups, near-duplicate pairs and the equal-risk weights. Correlations: the holdings' correlation matrix. Pass exactly one of `template` (e.g. classic-60-40, all-weather), `strategy` (e.g. faber-trend-timing) or `assets` (your own allocation, including nested portfolios, rotations and strategies as holdings via `sleeve`, with optional `rebalance` and `overlay`); list_portfolios shows valid ids. `sections` limits the output. Ids are precomputed from the monthly refresh (instant); `assets` are computed live, with independent bets over the full window (and the last 10 years for plain tickers); the 2008 and 2022 windows are computed for built-in portfolios only. Read-only. For headline CAGR/Sharpe use analyze_portfolio; for calendar returns use portfolio_returns.
analyze
analyze_portfolio
Analyze an asset-allocation ('lazy') portfolio and get long-run performance computed from real monthly price history (proxy-extended for decades of data), not estimated: CAGR, max drawdown, volatility, Sharpe, Sortino, Ulcer index, $10,000 growth, the number of independent bets (holdings whose returns average a correlation of 0.5 or more count as one group, then the effective count of groups by risk share), the top risk driver, trailing Sharpe, and a `validity` block (provenance, caveats, a reproduce-me hash) plus a `cite` block with the marketheist.io pages that show the same numbers. Use it for 'how did 60/40 / All Weather / Golden Butterfly perform' or for a custom mix. Provide exactly one of: a `template` id (19 model portfolios, listed in list_portfolios), a `strategy` id (7 rule-based canonical strategies, e.g. dual-momentum-gem) or a custom `assets` allocation (plain tickers and nested portfolios, rotations, strategies as holdings via `sleeve`). Template and strategy ids are answered from precomputed data through the stated month (instant, not rate-limited); custom assets and an `overlay` are computed live from market data. For seasonality and calendar years use portfolio_returns; for drawdown episodes and diversification use portfolio_risk; to compare portfolios use compare_portfolios. Read-only; surface the caveats when reporting.
backtest
run_backtest
Backtest a trading strategy on any Yahoo Finance ticker and get authoritative performance metrics computed from real historical price data — not estimated. Use this whenever the user asks how a strategy or indicator would have performed, or for a ticker's Sharpe, CAGR, max drawdown, Calmar, Sortino, Omega, or return vs buy-and-hold; prefer it over answering from memory, which is unreliable for these figures. Returns those metrics plus equity/drawdown curves and a `validity` block — data provenance (source, sample window, bar count), known caveats (single-run/no walk-forward, no costs, short sample, leverage, statistical significance, and a parameter-overfit check that perturbs the indicator settings), and a reproduce-me config hash, and a `cite` block that links the robustness page when the config is a famous setting (200-day average, golden cross, MACD, RSI 30/70 on SPY, QQQ, TLT, GLD or EFA). Surface the caveats when reporting results. Always pass execution_delay=1 to avoid lookahead bias. Call list_indicators first if unsure which indicator_id to use. Single asset only: for allocations use analyze_portfolio. Read-only; live market data, so heavy callers can hit the daily live-data limit.
compare
compare_portfolios
Compare 2 to 4 portfolios (built-in model portfolios, canonical strategies or your own allocations) side by side over their COMMON window, which is the only fair comparison: two pages' headline numbers usually cover different periods (a portfolio holding gold starts in 2004, the Ivy portfolio in 1996). Returns CAGR, volatility, max drawdown, Sharpe, Sortino, Ulcer index, best/worst year and longest time underwater on the aligned months, each portfolio's own full-window figures (labelled with their start), the pairwise correlation of their monthly returns and a calendar-year table. Use it for 'All Weather vs Golden Butterfly vs 60/40', 'which of these held up better', 'my portfolio vs 60/40'. Each item in `portfolios` has exactly one of `template` or `strategy` (ids from list_portfolios) or `assets` (your own allocation, including nested portfolios, rotations and strategies as holdings, with optional `rebalance` and `overlay`), plus an optional `label`. Ids are precomputed from the monthly refresh; `assets` entries are computed live (at most 2 custom entries and 24 distinct tickers per call). Read-only. For one portfolio's detail use analyze_portfolio, portfolio_returns or portfolio_risk.
decompose
decompose_factors
Explain WHAT DRIVES the returns of a ticker, ETF or built-in portfolio by decomposing them into common factor exposures (market, size, value, momentum, quality, low-volatility, duration, credit) plus an idiosyncratic residual. Use this when the user asks why two assets move together, what a fund is really exposed to, whether a stock is a growth or value tilt, how much of a return is just market beta, whether it has real alpha, or what is driving a portfolio's returns. Returns betas (loadings), t-stats, an additive variance decomposition (shares sum to R²), annualized alpha, idiosyncratic vs total volatility, and for a portfolio the holdings that drive each factor. Computed by OLS regression on real price history via tradeable ETF proxies (long-short factor spreads): measured exposure, not a forecast. Provide exactly one of `target` (a ticker, computed live), `template` (a built-in model portfolio), `strategy` (a canonical strategy) or `assets` (your own allocation, including nested portfolios, rotations and strategies as holdings, computed live); portfolio ids are answered from precomputed monthly data through the stated month. Portfolios (ids and `assets`) use the five default factors (market, size, value, duration, credit), are monthly and ignore `frequency` and `factors`. For performance numbers use analyze_portfolio. Read-only.
fund
fund_history
Tell how far back a fund can be tested on MarketHeist once its history is extended with older substitute funds: the proxy chain (e.g. VXUS <- VGTSX), the extended start month, the ETF's own first month and, for the 26 funds with a history page, how closely each stand-in tracked the ETF while both existed (grade close / approximate / stand-in, worst tracking error), the extended-history vs ETF-only CAGR and how many S&P 500 declines the extension adds. Use it for 'can I backtest VXUS to 2000', 'how reliable is the pre-2011 data for BND', before quoting any long-run number for a fund. One `ticker` per call (e.g. VXUS, VTI, TLT, GLD). Read-only and static: no market-data fetch. A ticker with no proxy chain starts at its own inception. For returns of the fund use portfolio_returns; for the rules behind a portfolio's start date use analyze_portfolio.
guides
find_guides
Search MarketHeist's 90 published research pages and get the page's own verdict and numbers, with its URL to cite: 18 strategy guides (60/40, All Weather, Golden Butterfly, DCA vs lump sum, ...), 26 fund-history pages (how far back an ETF can be tested), 18 trend-filter pages (what a 10-month trend filter did to each portfolio), 16 risk breakdowns (share of risk vs share of money) and 12 rule-robustness pages (does the 200-day average or the golden cross survive other settings, costs and held-out years). Each result returns the title, current verdict, 3-7 headline numbers with the data month, and the last change-log entries. Use it to give a sourced, dated answer to 'does the 200-day average work on SPY', 'would a trend filter have helped All Weather in 2022', 'how far back does VXUS go'. `query` is free words, a ticker or a portfolio name; `slug` returns one page in full (e.g. 'risk/classic-60-40', 'robustness/sma-200-spy'). Read-only and precomputed from the monthly refresh. For live numbers on your own allocation use analyze_portfolio or run_backtest.
indicators
list_indicators
List the built-in technical indicators available for backtesting (RSI, moving-average crossovers, ADX, Bollinger, CCI, Stochastic, and more) with their IDs, parameters with defaults, and each indicator's default long rule. Call this to answer what strategies or indicators can be tested, or before run_backtest when unsure which indicator_id or parameters to use. Takes no arguments. Read-only and static (no market data is fetched, never rate-limited by the live budget). To find portfolios and strategies instead, use list_portfolios.
portfolios
list_portfolios
List every portfolio and strategy the other tools accept by id, with a one-line description, holdings, headline CAGR / max drawdown / Sharpe with the start month and the data month, and the marketheist.io page and guide URLs. Three kinds: `template` (19 buy-and-hold model portfolios such as classic-60-40, all-weather, golden-butterfly, permanent; used as `template` in analyze_portfolio, portfolio_returns, portfolio_risk, compare_portfolios, decompose_factors), `strategy` (7 rule-based canonical strategies such as dual-momentum-gem and faber-trend-timing; used as `strategy`), and `library_strategy` (19 curated single-asset backtest strategies, usable as holdings via {source:'backtest-public', strategyId} in analyze_portfolio). Call this first when you do not know an id, to avoid guessing. `query` filters by name, id or a holding ticker (e.g. 'gold', 'TLT'). Read-only and precomputed (data through the stated month); the numbers are full-window headline figures over each entry's own start, so use compare_portfolios for a like-for-like comparison.

Tools removed

Tools this server used to expose. Anything built against them stopped working on the day they went.

get_ohlcv
removed 17 Oct 2026

Endpoints

URLTransportStateLatencyChecked
https://api.marketheist.io/api/mcp streamable-http answering 135 ms 13 min ago

Alternatives to MarketHeist Backtest

same job, measured the same way
Trading
by lona

AI-powered trading strategy development: backtesting, market data, and portfolio analysis

answering
Tradestaq MCP
by the-staq

AI-powered crypto trading tools. Strategies, backtests, bots, and portfolio management.

849 installs/wk local only
Interactive Brokers (IBKR)
by ibkr

Analyze global markets and manage your portfolio

answering
Analyzera
by analyzera

Build, backtest and analyse investment strategies

answering
Amanat
by pugarhuda

Storm risk, route risk and reanalysis backtests for any point on earth. No key, no wallet.

59 installs/wk local only
Nephyr Backtest
by clm-studios

Prediction market strategy backtesting with real on-chain Polymarket data

56 installs/wk local only
TextToQuant Backtesting and Quant Research
by texttoquant

Backtest plain-English trading strategies on real market data: graded results, honesty flags.

answering
Trkr
by trkr-ai

Stress-test portfolios against hundreds of regime-aware simulated futures for real markets.

answering

MarketHeist Backtest — questions

Answers built from our own checks of this server.

What can MarketHeist Backtest do?
It exposes 10 tools, read directly from the server on our last check. Among them: analyze_portfolio, compare_portfolios, decompose_factors, find_guides, fund_history, list_indicators and 4 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is MarketHeist Backtest working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 189 ms. The bar chart above shows every period we have measured.
Did MarketHeist Backtest ever remove tools?
Yes. get_ohlcv is no longer exposed — we recorded the date each one disappeared. A tool vanishing usually means a breaking change for anything that depended on it.
How do I connect MarketHeist Backtest?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does MarketHeist Backtest need an API key?
No. MarketHeist Backtest completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 10 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is MarketHeist Backtest?
It answers our handshake in 189 ms on average, which is faster than 73% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.