Noon Barbari Backtesting
Crypto backtesting tools: real backtests with robustness verdicts, daily signals and market data.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"backtesting": {
"url": "https://noonbarbari.xyz/mcp"
}
}
}Remote endpoints
https://noonbarbari.xyz/mcpstreamable-httpWhat it can do
Tool inventory
Tools (11)
🟢list_strategies
List the strategy templates available for backtesting and comparison (name, title, one-line description). Use the returned `name` value as the strategy identifier in other tools.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_coin_signals(coin)
Today's daily-bar indicator readings for crypto coins, computed by a real backtesting engine from Binance closes: price, RSI-14, MACD state, SMA 50/200 posture, SuperTrend, Bollinger position, ATR volatility, 52-week range. Pass a coin ticker (e.g. 'btc') for one coin, or omit for the whole 50-coin board.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"type": "string",
"description": "Lower-case ticker, e.g. btc, eth, sol. Omit for all coins."
}
},
"additionalProperties": false
}🟢get_buy_hold(coin)
What a $1,000 buy of a coin on Jan 1 of each available year would be worth today — ROI, peak value and date, and the maximum drawdown endured along the way. Real Binance data, refreshed daily.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"type": "string",
"description": "Lower-case ticker, e.g. btc, eth, sol."
}
},
"required": [
"coin"
],
"additionalProperties": false
}🟢get_overfitting_index
The Crypto Overfitting Index: the monthly share (%) of default-parameter strategy configurations (10 templates × 50 coins) whose out-of-sample Sharpe turned negative — how much of what backtests promise fails on unseen data. Returns the current reading and full history.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢compare_strategies(strategy_a, strategy_b)
Head-to-head comparison of two strategy templates from real monthly engine runs across ~50 coins: per-coin win count, median out-of-sample Sharpe, survival counts, median return and drawdown. Use strategy names from list_strategies (e.g. 'super_trend', 'ema_crossover').
Input Schema
{
"type": "object",
"properties": {
"strategy_a": {
"type": "string",
"description": "First strategy name, e.g. super_trend"
},
"strategy_b": {
"type": "string",
"description": "Second strategy name, e.g. ema_crossover"
}
},
"required": [
"strategy_a",
"strategy_b"
],
"additionalProperties": false
}🟢search_answers(query)
Search Noon Barbari's Q&A knowledge base of direct, data-grounded answers about backtesting, overfitting, validation, indicators, risk management and crypto markets. Returns the top matching questions with their full answers.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free-text query, e.g. 'why do backtests fail'"
}
},
"required": [
"query"
],
"additionalProperties": false
}⚪run_backtest(strategy, start_date, starting_cash)
Run a real backtest of a strategy template on BTC/USDT from a start date (public what-if engine; may take up to a minute on a cache miss; rate-limited). Returns net return, max drawdown, trade count, a robustness score with an overfitting verdict, and a shareable result URL.
Input Schema
{
"type": "object",
"properties": {
"strategy": {
"type": "string",
"description": "Strategy name from list_strategies, e.g. super_trend"
},
"start_date": {
"type": "string",
"description": "ISO date, e.g. 2022-01-01 (2020-01-01 or later)"
},
"starting_cash": {
"type": "number",
"description": "Starting balance in USD (default 10000, max 1000000)"
}
},
"required": [
"strategy",
"start_date"
],
"additionalProperties": false
}🟢get_dca(coin, amount, frequency, start_date)
Dollar-cost-averaging outcome for a coin: what buying a fixed dollar amount on a schedule (weekly or monthly) since a start date would be worth today — total invested, units, average cost, current value and ROI — plus the lump-sum comparison and the worst drawdown endured. Real Binance closes, refreshed daily.
Input Schema
{
"type": "object",
"properties": {
"coin": {
"type": "string",
"description": "Lower-case ticker, e.g. btc, eth, sol."
},
"amount": {
"type": "number",
"description": "USD invested per purchase (default 100)."
},
"frequency": {
"type": "string",
"enum": [
"weekly",
"monthly"
],
"description": "Purchase cadence (default weekly)."
},
"start_date": {
"type": "string",
"description": "ISO date to start buying from, e.g. 2021-01-01 (optional; default = full history)."
}
},
"required": [
"coin"
],
"additionalProperties": false
}🟢check_overfitting(sharpe, timeframe, length_days, n_trials, skew, ...)
Compute the Deflated Sharpe Ratio (Bailey & Lopez de Prado 2014) for YOUR OWN backtest: given its annualised Sharpe, length, and how many strategy variants you tried before selecting it, returns the probability the result is real skill rather than selection luck, the luck bar it must clear, and a plain verdict. Works on any backtest, not just ours.
Input Schema
{
"type": "object",
"properties": {
"sharpe": {
"type": "number",
"description": "Annualised Sharpe ratio of the selected backtest."
},
"timeframe": {
"type": "string",
"enum": [
"1h",
"4h",
"1d",
"1w"
],
"description": "Bar timeframe of the returns (default 1d)."
},
"length_days": {
"type": "number",
"description": "Length of the backtest in calendar days."
},
"n_trials": {
"type": "number",
"description": "How many strategy/parameter variants were tried before picking this one."
},
"skew": {
"type": "number",
"description": "Skewness of the return series (default 0)."
},
"kurtosis": {
"type": "number",
"description": "Non-excess kurtosis of returns (Gaussian = 3, the default)."
}
},
"required": [
"sharpe",
"length_days",
"n_trials"
],
"additionalProperties": false
}🟢query_dataset(template, coin)
Query our open 11,440-run curve-fitting study (10 strategy templates x 20 coins, 70/30 in-sample/out-of-sample split). Returns the headline overfitting stats and the tuned picks matching an optional template and/or coin filter — each with in-sample vs out-of-sample Sharpe, the Sharpe haircut, and the in-sample-to-out-of-sample parameter rank correlation.
Input Schema
{
"type": "object",
"properties": {
"template": {
"type": "string",
"description": "Strategy name, e.g. super_trend (optional). Omit for all templates."
},
"coin": {
"type": "string",
"description": "Ticker, e.g. btc (optional). Omit for all coins."
}
},
"additionalProperties": false
}🟢search_glossary(query)
Search Noon Barbari's trading glossary for a plain-language definition of an indicator, metric or concept (RSI, MACD, Sharpe ratio, drawdown, walk-forward, overfitting, and 60+ more). Returns the top matching terms with a short definition, the full explanation, and a link.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "A term or question, e.g. 'deflated sharpe' or 'what is RSI'."
}
},
"required": [
"query"
],
"additionalProperties": false
}Community
Evidence