Grok Crypto Quant API
Pay-per-call crypto backtests, signals, token risk checks and universes (x402, USDC on Base).
¿Debería usar esto?
Calidad y seguridad
Hallazgos (2)
- LOWen health
- LOWen get_schema
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"crypto-quant": {
"url": "https://grok-backtest-api.fly.dev/mcp"
}
}
}Puntos de conexión remotos
https://grok-backtest-api.fly.dev/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (13)
🟢backtest(strategy, universe, start, end, initial_capital, ...)
Backtest crypto strategies on 399 Coinbase coins without survivorship bias. DIY backtests usually use today's coin list, so dead coins vanish and returns are overstated; this rebuilds the universe from each past day's top coins. Breakout, momentum, dip-buy or MA-trend rules on daily data with fees, slippage, H1/H2 split and a luck flag. No data fetching or backtest code on your side. Price: $0.05 USDC per call (x402, Base mainnet). Free pre-check: validate_backtest. Free sample: backtest_sample.
Esquema de entrada
{
"type": "object",
"properties": {
"strategy": {
"discriminator": {
"mapping": {
"breakout": "#/$defs/Breakout",
"dip": "#/$defs/Dip",
"ma_trend": "#/$defs/MATrend",
"momentum": "#/$defs/Momentum"
},
"propertyName": "type"
},
"oneOf": [
{
"$ref": "#/$defs/Breakout"
},
{
"$ref": "#/$defs/Momentum"
},
{
"$ref": "#/$defs/Dip"
},
{
"$ref": "#/$defs/MATrend"
}
],
"title": "Strategy"
},
"universe": {
"anyOf": [
{
"$ref": "#/$defs/Universe"
},
{
"type": "null"
}
],
"default": null
},
"start": {
"anyOf": [
{
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "YYYY-MM-DD",
"title": "Start"
},
"end": {
"anyOf": [
{
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "YYYY-MM-DD",
"title": "End"
},
"initial_capital": {
"default": 150,
"description": "Starting capital in USD",
"exclusiveMinimum": 0,
"maximum": 1000000000,
"title": "Initial Capital",
"type": "number"
},
"fee": {
"default": 0.009,
"description": "Fee per side (0.009 = 0.9%)",
"maximum": 0.05,
"minimum": 0,
"title": "Fee",
"type": "number"
},
"slippage": {
"default": 0.002,
"description": "Slippage per side",
"maximum": 0.05,
"minimum": 0,
"title": "Slippage",
"type": "number"
},
"include_trades": {
"default": true,
"title": "Include Trades",
"type": "boolean"
}
},
"required": [
"strategy"
],
"$defs": {
"Breakout": {
"additionalProperties": false,
"properties": {
"type": {
"const": "breakout",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/BreakoutParams",
"default": {
"lookback": 20,
"atr_mult": 2,
"risk_per_trade": 0.05,
"max_position_pct": 0.5,
"max_positions": 3,
"gate": "btc_ma50",
"min_stop_pct": 0.06,
"max_stop_pct": 0.4
}
}
},
"required": [
"type"
],
"title": "Breakout",
"type": "object"
},
"BreakoutParams": {
"additionalProperties": false,
"properties": {
"lookback": {
"default": 20,
"description": "Buy when close > highest high of prior N days",
"maximum": 60,
"minimum": 5,
"title": "Lookback",
"type": "integer"
},
"atr_mult": {
"default": 2,
"description": "Trailing stop = highest close - k*ATR14",
"maximum": 6,
"minimum": 0.5,
"title": "Atr Mult",
"type": "number"
},
"risk_per_trade": {
"default": 0.05,
"description": "Fraction of equity risked to the initial stop",
"exclusiveMinimum": 0,
"maximum": 0.25,
"title": "Risk Per Trade",
"type": "number"
},
"max_position_pct": {
"default": 0.5,
"exclusiveMinimum": 0,
"maximum": 1,
"title": "Max Position Pct",
"type": "number"
},
"max_positions": {
"default": 3,
"maximum": 10,
"minimum": 1,
"title": "Max Positions",
"type": "integer"
},
"gate": {
"default": "btc_ma50",
"description": "Only open trades when BTC > 50-day SMA (btc_ma50) or >=50% of universe above 20d SMA (breadth50)",
"enum": [
"none",
"btc_ma50",
"breadth50"
],
"title": "Gate",
"type": "string"
},
"min_stop_pct": {
"default": 0.06,
"exclusiveMinimum": 0,
"maximum": 0.5,
"title": "Min Stop Pct",
"type": "number"
},
"max_stop_pct": {
"default": 0.4,
"exclusiveMinimum": 0,
"maximum": 0.9,
"title": "Max Stop Pct",
"type": "number"
}
},
"title": "BreakoutParams",
"type": "object"
},
"Dip": {
"additionalProperties": false,
"properties": {
"type": {
"const": "dip",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/DipParams",
"default": {
"drop_pct": 0.15,
"days": 1,
"trend_filter": "ma50",
"max_hold_days": 5,
"hard_stop_pct": 0.15,
"max_positions": 3
}
}
},
"required": [
"type"
],
"title": "Dip",
"type": "object"
},
"DipParams": {
"additionalProperties": false,
"properties": {
"drop_pct": {
"default": 0.15,
"description": "Buy after a fall of at least this fraction over `days`",
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0.01,
"title": "Drop Pct",
"type": "number"
},
"days": {
"default": 1,
"maximum": 10,
"minimum": 1,
"title": "Days",
"type": "integer"
},
"trend_filter": {
"default": "ma50",
"enum": [
"ma50",
"none"
],
"title": "Trend Filter",
"type": "string"
},
"max_hold_days": {
"default": 5,
"maximum": 60,
"minimum": 1,
"title": "Max Hold Days",
"type": "integer"
},
"hard_stop_pct": {
"default": 0.15,
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0.01,
"title": "Hard Stop Pct",
"type": "number"
},
"max_positions": {
"default": 3,
"maximum": 10,
"minimum": 1,
"title": "Max Positions",
"type": "integer"
}
},
"title": "DipParams",
"type": "object"
},
"MATrend": {
"additionalProperties": false,
"properties": {
"type": {
"const": "ma_trend",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/MATrendParams",
"default": {
"coins": [
"ETH-USD"
],
"ma_days": 50
}
}
},
"required": [
"type"
],
"title": "MATrend",
"type": "object"
},
"MATrendParams": {
"additionalProperties": false,
"properties": {
"coins": {
"default": [
"ETH-USD"
],
"description": "Coinbase product ids, e.g. ETH-USD",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"title": "Coins",
"type": "array"
},
"ma_days": {
"default": 50,
"maximum": 60,
"minimum": 5,
"title": "Ma Days",
"type": "integer"
}
},
"title": "MATrendParams",
"type": "object"
},
"Momentum": {
"additionalProperties": false,
"properties": {
"type": {
"const": "momentum",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/MomentumParams",
"default": {
"lookback": 14,
"top_n": 2,
"rebalance_days": 7,
"gate": "btc_ma50",
"trail_pct": null
}
}
},
"required": [
"type"
],
"title": "Momentum",
"type": "object"
},
"MomentumParams": {
"additionalProperties": false,
"properties": {
"lookback": {
"default": 14,
"description": "Rank by N-day return",
"maximum": 60,
"minimum": 3,
"title": "Lookback",
"type": "integer"
},
"top_n": {
"default": 2,
"maximum": 10,
"minimum": 1,
"title": "Top N",
"type": "integer"
},
"rebalance_days": {
"default": 7,
"maximum": 30,
"minimum": 1,
"title": "Rebalance Days",
"type": "integer"
},
"gate": {
"default": "btc_ma50",
"enum": [
"none",
"btc_ma50",
"breadth50"
],
"title": "Gate",
"type": "string"
},
"trail_pct": {
"anyOf": [
{
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional % trailing stop from highest close",
"title": "Trail Pct"
}
},
"title": "MomentumParams",
"type": "object"
},
"Universe": {
"additionalProperties": false,
"properties": {
"mode": {
"default": "point_in_time",
"description": "point_in_time = top-N by trailing 20d $ volume AS OF each day (no survivorship bias); current_top = top-N as of the end date (biased, for comparison); fixed = your coin list",
"enum": [
"point_in_time",
"current_top",
"fixed"
],
"title": "Mode",
"type": "string"
},
"top_n": {
"default": 30,
"maximum": 200,
"minimum": 5,
"title": "Top N",
"type": "integer"
},
"min_age_days": {
"default": 35,
"description": "Days a coin must have traded before it is eligible",
"maximum": 120,
"minimum": 0,
"title": "Min Age Days",
"type": "integer"
},
"min_avg_dollar_volume": {
"default": 1000000,
"description": "Min 20-day avg Coinbase $ volume",
"minimum": 0,
"title": "Min Avg Dollar Volume",
"type": "number"
},
"coins": {
"anyOf": [
{
"items": {
"type": "string"
},
"maxItems": 200,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Coins"
}
},
"title": "Universe",
"type": "object"
}
},
"title": "backtestArguments"
}🟢market_signals(top_n)
Daily crypto market regime in one call: BTC/ETH vs 20/50-day MAs, breadth of the point-in-time top-N (no survivorship bias), coins nearest a 20-day breakout, and the R1 breakout strategy's gate and entry signals. No candle fetching or indicator code. Completed UTC daily closes only. Price: $0.01 USDC per call (x402, Base mainnet). Free sample: signals_sample.
Esquema de entrada
{
"type": "object",
"properties": {
"top_n": {
"default": 30,
"description": "Universe size for breadth / breakout scan",
"maximum": 200,
"minimum": 5,
"title": "Top N",
"type": "integer"
}
},
"title": "market_signalsArguments"
}🟢token_check(chain, address)
Token scam check in one call instead of wiring up five data sources: honeypot sell simulation, unverified code, mint/pause/blacklist powers, taxes, upgradeable proxy, age, liquidity, fake major-token (e.g. fake USDC) lookalikes and spam-airdrop patterns. Base, Ethereum or Solana. Never visits metadata URLs. Price: $0.02 USDC per call (x402, Base mainnet). Free pre-check: validate_token_check.
Esquema de entrada
{
"type": "object",
"properties": {
"chain": {
"description": "base, ethereum or solana",
"enum": [
"base",
"ethereum",
"solana"
],
"title": "Chain",
"type": "string"
},
"address": {
"description": "Token contract / mint address",
"maxLength": 44,
"minLength": 32,
"title": "Address",
"type": "string"
}
},
"required": [
"chain",
"address"
],
"title": "token_checkArguments"
}🟢optimize_strategy(strategy, grid, universe, start, end, ...)
Find robust strategy params, not lucky ones: tests up to 50 combos on the same survivorship-bias-free backtester, ranks by worst-half (H1/H2) return with neighbourhood smoothing, flags overfitting, and recommends the most stable parameters rather than the best-fit ones. Price: $0.50 USDC per call (x402, Base mainnet). Free pre-check: validate_optimize.
Esquema de entrada
{
"type": "object",
"properties": {
"strategy": {
"$ref": "#/$defs/OptimizeStrategy"
},
"grid": {
"additionalProperties": {
"items": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": "array"
},
"description": "param -> values to try; <= 50 combos total, <= 10 values per param",
"title": "Grid",
"type": "object"
},
"universe": {
"anyOf": [
{
"$ref": "#/$defs/Universe"
},
{
"type": "null"
}
],
"default": null
},
"start": {
"anyOf": [
{
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "YYYY-MM-DD",
"title": "Start"
},
"end": {
"anyOf": [
{
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "YYYY-MM-DD",
"title": "End"
},
"initial_capital": {
"default": 150,
"description": "Starting capital in USD",
"exclusiveMinimum": 0,
"maximum": 1000000000,
"title": "Initial Capital",
"type": "number"
},
"fee": {
"default": 0.009,
"description": "Fee per side (0.009 = 0.9%)",
"maximum": 0.05,
"minimum": 0,
"title": "Fee",
"type": "number"
},
"slippage": {
"default": 0.002,
"description": "Slippage per side",
"maximum": 0.05,
"minimum": 0,
"title": "Slippage",
"type": "number"
},
"rank_by": {
"default": "robust",
"enum": [
"robust",
"return"
],
"title": "Rank By",
"type": "string"
}
},
"required": [
"strategy",
"grid"
],
"$defs": {
"OptimizeStrategy": {
"additionalProperties": false,
"properties": {
"type": {
"enum": [
"breakout",
"momentum",
"dip",
"ma_trend"
],
"title": "Type",
"type": "string"
},
"params": {
"additionalProperties": true,
"default": {},
"description": "Fixed (non-grid) params; same fields as /backtest strategy params",
"title": "Params",
"type": "object"
}
},
"required": [
"type"
],
"title": "OptimizeStrategy",
"type": "object"
},
"Universe": {
"additionalProperties": false,
"properties": {
"mode": {
"default": "point_in_time",
"description": "point_in_time = top-N by trailing 20d $ volume AS OF each day (no survivorship bias); current_top = top-N as of the end date (biased, for comparison); fixed = your coin list",
"enum": [
"point_in_time",
"current_top",
"fixed"
],
"title": "Mode",
"type": "string"
},
"top_n": {
"default": 30,
"maximum": 200,
"minimum": 5,
"title": "Top N",
"type": "integer"
},
"min_age_days": {
"default": 35,
"description": "Days a coin must have traded before it is eligible",
"maximum": 120,
"minimum": 0,
"title": "Min Age Days",
"type": "integer"
},
"min_avg_dollar_volume": {
"default": 1000000,
"description": "Min 20-day avg Coinbase $ volume",
"minimum": 0,
"title": "Min Avg Dollar Volume",
"type": "number"
},
"coins": {
"anyOf": [
{
"items": {
"type": "string"
},
"maxItems": 200,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Coins"
}
},
"title": "Universe",
"type": "object"
}
},
"title": "optimize_strategyArguments"
}🟢universe_snapshot(date, top_n, min_age_days, min_avg_dollar_volume)
Survivorship-free top-N coin list for any past date: Coinbase USD pairs ranked by trailing 20-day dollar volume using only data available that day. Fixes your own backtests: picking today's top coins hides the ones that died and overstates returns. Price: $0.05 USDC per call (x402, Base mainnet). Free pre-check: validate_universe.
Esquema de entrada
{
"type": "object",
"properties": {
"date": {
"anyOf": [
{
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "YYYY-MM-DD",
"title": "Date"
},
"top_n": {
"default": 30,
"maximum": 200,
"minimum": 1,
"title": "Top N",
"type": "integer"
},
"min_age_days": {
"default": 35,
"maximum": 120,
"minimum": 0,
"title": "Min Age Days",
"type": "integer"
},
"min_avg_dollar_volume": {
"default": 1000000,
"minimum": 0,
"title": "Min Avg Dollar Volume",
"type": "number"
}
},
"title": "universe_snapshotArguments"
}🟢signals_sample
Free, one day delayed: yesterday's full /signals result (BTC/ETH trend, breadth, breakout watchlist, R1 gate) so you can judge quality before paying. Today's result: paid market_signals ($0.01). Limit 60/hour per client.
Esquema de entrada
{
"type": "object",
"properties": {},
"title": "signals_sampleArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "signals_sampleDictOutput"
}🟢backtest_sample(strategy, days)
Free sample of the paid `backtest` tool on the same survivorship-bias-free engine: any strategy, point-in-time top-10 universe, window = last `days` (14..90) completed days, summary only. Full version: backtest ($0.05). Limit 30/hour per client.
Esquema de entrada
{
"type": "object",
"properties": {
"strategy": {
"discriminator": {
"mapping": {
"breakout": "#/$defs/Breakout",
"dip": "#/$defs/Dip",
"ma_trend": "#/$defs/MATrend",
"momentum": "#/$defs/Momentum"
},
"propertyName": "type"
},
"oneOf": [
{
"$ref": "#/$defs/Breakout"
},
{
"$ref": "#/$defs/Momentum"
},
{
"$ref": "#/$defs/Dip"
},
{
"$ref": "#/$defs/MATrend"
}
],
"title": "Strategy"
},
"days": {
"default": 90,
"description": "Window length in days, ending on the last completed UTC day",
"maximum": 90,
"minimum": 14,
"title": "Days",
"type": "integer"
}
},
"required": [
"strategy"
],
"$defs": {
"Breakout": {
"additionalProperties": false,
"properties": {
"type": {
"const": "breakout",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/BreakoutParams",
"default": {
"lookback": 20,
"atr_mult": 2,
"risk_per_trade": 0.05,
"max_position_pct": 0.5,
"max_positions": 3,
"gate": "btc_ma50",
"min_stop_pct": 0.06,
"max_stop_pct": 0.4
}
}
},
"required": [
"type"
],
"title": "Breakout",
"type": "object"
},
"BreakoutParams": {
"additionalProperties": false,
"properties": {
"lookback": {
"default": 20,
"description": "Buy when close > highest high of prior N days",
"maximum": 60,
"minimum": 5,
"title": "Lookback",
"type": "integer"
},
"atr_mult": {
"default": 2,
"description": "Trailing stop = highest close - k*ATR14",
"maximum": 6,
"minimum": 0.5,
"title": "Atr Mult",
"type": "number"
},
"risk_per_trade": {
"default": 0.05,
"description": "Fraction of equity risked to the initial stop",
"exclusiveMinimum": 0,
"maximum": 0.25,
"title": "Risk Per Trade",
"type": "number"
},
"max_position_pct": {
"default": 0.5,
"exclusiveMinimum": 0,
"maximum": 1,
"title": "Max Position Pct",
"type": "number"
},
"max_positions": {
"default": 3,
"maximum": 10,
"minimum": 1,
"title": "Max Positions",
"type": "integer"
},
"gate": {
"default": "btc_ma50",
"description": "Only open trades when BTC > 50-day SMA (btc_ma50) or >=50% of universe above 20d SMA (breadth50)",
"enum": [
"none",
"btc_ma50",
"breadth50"
],
"title": "Gate",
"type": "string"
},
"min_stop_pct": {
"default": 0.06,
"exclusiveMinimum": 0,
"maximum": 0.5,
"title": "Min Stop Pct",
"type": "number"
},
"max_stop_pct": {
"default": 0.4,
"exclusiveMinimum": 0,
"maximum": 0.9,
"title": "Max Stop Pct",
"type": "number"
}
},
"title": "BreakoutParams",
"type": "object"
},
"Dip": {
"additionalProperties": false,
"properties": {
"type": {
"const": "dip",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/DipParams",
"default": {
"drop_pct": 0.15,
"days": 1,
"trend_filter": "ma50",
"max_hold_days": 5,
"hard_stop_pct": 0.15,
"max_positions": 3
}
}
},
"required": [
"type"
],
"title": "Dip",
"type": "object"
},
"DipParams": {
"additionalProperties": false,
"properties": {
"drop_pct": {
"default": 0.15,
"description": "Buy after a fall of at least this fraction over `days`",
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0.01,
"title": "Drop Pct",
"type": "number"
},
"days": {
"default": 1,
"maximum": 10,
"minimum": 1,
"title": "Days",
"type": "integer"
},
"trend_filter": {
"default": "ma50",
"enum": [
"ma50",
"none"
],
"title": "Trend Filter",
"type": "string"
},
"max_hold_days": {
"default": 5,
"maximum": 60,
"minimum": 1,
"title": "Max Hold Days",
"type": "integer"
},
"hard_stop_pct": {
"default": 0.15,
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0.01,
"title": "Hard Stop Pct",
"type": "number"
},
"max_positions": {
"default": 3,
"maximum": 10,
"minimum": 1,
"title": "Max Positions",
"type": "integer"
}
},
"title": "DipParams",
"type": "object"
},
"MATrend": {
"additionalProperties": false,
"properties": {
"type": {
"const": "ma_trend",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/MATrendParams",
"default": {
"coins": [
"ETH-USD"
],
"ma_days": 50
}
}
},
"required": [
"type"
],
"title": "MATrend",
"type": "object"
},
"MATrendParams": {
"additionalProperties": false,
"properties": {
"coins": {
"default": [
"ETH-USD"
],
"description": "Coinbase product ids, e.g. ETH-USD",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"title": "Coins",
"type": "array"
},
"ma_days": {
"default": 50,
"maximum": 60,
"minimum": 5,
"title": "Ma Days",
"type": "integer"
}
},
"title": "MATrendParams",
"type": "object"
},
"Momentum": {
"additionalProperties": false,
"properties": {
"type": {
"const": "momentum",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/MomentumParams",
"default": {
"lookback": 14,
"top_n": 2,
"rebalance_days": 7,
"gate": "btc_ma50",
"trail_pct": null
}
}
},
"required": [
"type"
],
"title": "Momentum",
"type": "object"
},
"MomentumParams": {
"additionalProperties": false,
"properties": {
"lookback": {
"default": 14,
"description": "Rank by N-day return",
"maximum": 60,
"minimum": 3,
"title": "Lookback",
"type": "integer"
},
"top_n": {
"default": 2,
"maximum": 10,
"minimum": 1,
"title": "Top N",
"type": "integer"
},
"rebalance_days": {
"default": 7,
"maximum": 30,
"minimum": 1,
"title": "Rebalance Days",
"type": "integer"
},
"gate": {
"default": "btc_ma50",
"enum": [
"none",
"btc_ma50",
"breadth50"
],
"title": "Gate",
"type": "string"
},
"trail_pct": {
"anyOf": [
{
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional % trailing stop from highest close",
"title": "Trail Pct"
}
},
"title": "MomentumParams",
"type": "object"
}
},
"title": "backtest_sampleArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "backtest_sampleDictOutput"
}🟢health
Free: service status, prices, network and data range.
Esquema de entrada
{
"type": "object",
"properties": {},
"title": "healthArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "healthDictOutput"
}🟢get_schema
Free: request schemas, examples, prices and limits for every paid tool/endpoint.
Esquema de entrada
{
"type": "object",
"properties": {},
"title": "get_schemaArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "get_schemaDictOutput"
}🟢validate_backtest(strategy, universe, start, end, initial_capital, ...)
Free: check backtest arguments (same as the paid `backtest` tool) before paying.
Esquema de entrada
{
"type": "object",
"properties": {
"strategy": {
"discriminator": {
"mapping": {
"breakout": "#/$defs/Breakout",
"dip": "#/$defs/Dip",
"ma_trend": "#/$defs/MATrend",
"momentum": "#/$defs/Momentum"
},
"propertyName": "type"
},
"oneOf": [
{
"$ref": "#/$defs/Breakout"
},
{
"$ref": "#/$defs/Momentum"
},
{
"$ref": "#/$defs/Dip"
},
{
"$ref": "#/$defs/MATrend"
}
],
"title": "Strategy"
},
"universe": {
"anyOf": [
{
"$ref": "#/$defs/Universe"
},
{
"type": "null"
}
],
"default": null
},
"start": {
"anyOf": [
{
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "YYYY-MM-DD",
"title": "Start"
},
"end": {
"anyOf": [
{
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "YYYY-MM-DD",
"title": "End"
},
"initial_capital": {
"default": 150,
"description": "Starting capital in USD",
"exclusiveMinimum": 0,
"maximum": 1000000000,
"title": "Initial Capital",
"type": "number"
},
"fee": {
"default": 0.009,
"description": "Fee per side (0.009 = 0.9%)",
"maximum": 0.05,
"minimum": 0,
"title": "Fee",
"type": "number"
},
"slippage": {
"default": 0.002,
"description": "Slippage per side",
"maximum": 0.05,
"minimum": 0,
"title": "Slippage",
"type": "number"
},
"include_trades": {
"default": true,
"title": "Include Trades",
"type": "boolean"
}
},
"required": [
"strategy"
],
"$defs": {
"Breakout": {
"additionalProperties": false,
"properties": {
"type": {
"const": "breakout",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/BreakoutParams",
"default": {
"lookback": 20,
"atr_mult": 2,
"risk_per_trade": 0.05,
"max_position_pct": 0.5,
"max_positions": 3,
"gate": "btc_ma50",
"min_stop_pct": 0.06,
"max_stop_pct": 0.4
}
}
},
"required": [
"type"
],
"title": "Breakout",
"type": "object"
},
"BreakoutParams": {
"additionalProperties": false,
"properties": {
"lookback": {
"default": 20,
"description": "Buy when close > highest high of prior N days",
"maximum": 60,
"minimum": 5,
"title": "Lookback",
"type": "integer"
},
"atr_mult": {
"default": 2,
"description": "Trailing stop = highest close - k*ATR14",
"maximum": 6,
"minimum": 0.5,
"title": "Atr Mult",
"type": "number"
},
"risk_per_trade": {
"default": 0.05,
"description": "Fraction of equity risked to the initial stop",
"exclusiveMinimum": 0,
"maximum": 0.25,
"title": "Risk Per Trade",
"type": "number"
},
"max_position_pct": {
"default": 0.5,
"exclusiveMinimum": 0,
"maximum": 1,
"title": "Max Position Pct",
"type": "number"
},
"max_positions": {
"default": 3,
"maximum": 10,
"minimum": 1,
"title": "Max Positions",
"type": "integer"
},
"gate": {
"default": "btc_ma50",
"description": "Only open trades when BTC > 50-day SMA (btc_ma50) or >=50% of universe above 20d SMA (breadth50)",
"enum": [
"none",
"btc_ma50",
"breadth50"
],
"title": "Gate",
"type": "string"
},
"min_stop_pct": {
"default": 0.06,
"exclusiveMinimum": 0,
"maximum": 0.5,
"title": "Min Stop Pct",
"type": "number"
},
"max_stop_pct": {
"default": 0.4,
"exclusiveMinimum": 0,
"maximum": 0.9,
"title": "Max Stop Pct",
"type": "number"
}
},
"title": "BreakoutParams",
"type": "object"
},
"Dip": {
"additionalProperties": false,
"properties": {
"type": {
"const": "dip",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/DipParams",
"default": {
"drop_pct": 0.15,
"days": 1,
"trend_filter": "ma50",
"max_hold_days": 5,
"hard_stop_pct": 0.15,
"max_positions": 3
}
}
},
"required": [
"type"
],
"title": "Dip",
"type": "object"
},
"DipParams": {
"additionalProperties": false,
"properties": {
"drop_pct": {
"default": 0.15,
"description": "Buy after a fall of at least this fraction over `days`",
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0.01,
"title": "Drop Pct",
"type": "number"
},
"days": {
"default": 1,
"maximum": 10,
"minimum": 1,
"title": "Days",
"type": "integer"
},
"trend_filter": {
"default": "ma50",
"enum": [
"ma50",
"none"
],
"title": "Trend Filter",
"type": "string"
},
"max_hold_days": {
"default": 5,
"maximum": 60,
"minimum": 1,
"title": "Max Hold Days",
"type": "integer"
},
"hard_stop_pct": {
"default": 0.15,
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0.01,
"title": "Hard Stop Pct",
"type": "number"
},
"max_positions": {
"default": 3,
"maximum": 10,
"minimum": 1,
"title": "Max Positions",
"type": "integer"
}
},
"title": "DipParams",
"type": "object"
},
"MATrend": {
"additionalProperties": false,
"properties": {
"type": {
"const": "ma_trend",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/MATrendParams",
"default": {
"coins": [
"ETH-USD"
],
"ma_days": 50
}
}
},
"required": [
"type"
],
"title": "MATrend",
"type": "object"
},
"MATrendParams": {
"additionalProperties": false,
"properties": {
"coins": {
"default": [
"ETH-USD"
],
"description": "Coinbase product ids, e.g. ETH-USD",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"title": "Coins",
"type": "array"
},
"ma_days": {
"default": 50,
"maximum": 60,
"minimum": 5,
"title": "Ma Days",
"type": "integer"
}
},
"title": "MATrendParams",
"type": "object"
},
"Momentum": {
"additionalProperties": false,
"properties": {
"type": {
"const": "momentum",
"title": "Type",
"type": "string"
},
"params": {
"$ref": "#/$defs/MomentumParams",
"default": {
"lookback": 14,
"top_n": 2,
"rebalance_days": 7,
"gate": "btc_ma50",
"trail_pct": null
}
}
},
"required": [
"type"
],
"title": "Momentum",
"type": "object"
},
"MomentumParams": {
"additionalProperties": false,
"properties": {
"lookback": {
"default": 14,
"description": "Rank by N-day return",
"maximum": 60,
"minimum": 3,
"title": "Lookback",
"type": "integer"
},
"top_n": {
"default": 2,
"maximum": 10,
"minimum": 1,
"title": "Top N",
"type": "integer"
},
"rebalance_days": {
"default": 7,
"maximum": 30,
"minimum": 1,
"title": "Rebalance Days",
"type": "integer"
},
"gate": {
"default": "btc_ma50",
"enum": [
"none",
"btc_ma50",
"breadth50"
],
"title": "Gate",
"type": "string"
},
"trail_pct": {
"anyOf": [
{
"exclusiveMaximum": 0.9,
"exclusiveMinimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional % trailing stop from highest close",
"title": "Trail Pct"
}
},
"title": "MomentumParams",
"type": "object"
},
"Universe": {
"additionalProperties": false,
"properties": {
"mode": {
"default": "point_in_time",
"description": "point_in_time = top-N by trailing 20d $ volume AS OF each day (no survivorship bias); current_top = top-N as of the end date (biased, for comparison); fixed = your coin list",
"enum": [
"point_in_time",
"current_top",
"fixed"
],
"title": "Mode",
"type": "string"
},
"top_n": {
"default": 30,
"maximum": 200,
"minimum": 5,
"title": "Top N",
"type": "integer"
},
"min_age_days": {
"default": 35,
"description": "Days a coin must have traded before it is eligible",
"maximum": 120,
"minimum": 0,
"title": "Min Age Days",
"type": "integer"
},
"min_avg_dollar_volume": {
"default": 1000000,
"description": "Min 20-day avg Coinbase $ volume",
"minimum": 0,
"title": "Min Avg Dollar Volume",
"type": "number"
},
"coins": {
"anyOf": [
{
"items": {
"type": "string"
},
"maxItems": 200,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Coins"
}
},
"title": "Universe",
"type": "object"
}
},
"title": "validate_backtestArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "validate_backtestDictOutput"
}🟢validate_optimize(strategy, grid, universe, start, end, ...)
Free: check optimize_strategy arguments and count grid combos before paying.
Esquema de entrada
{
"type": "object",
"properties": {
"strategy": {
"$ref": "#/$defs/OptimizeStrategy"
},
"grid": {
"additionalProperties": {
"items": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": "array"
},
"description": "param -> values to try",
"title": "Grid",
"type": "object"
},
"universe": {
"anyOf": [
{
"$ref": "#/$defs/Universe"
},
{
"type": "null"
}
],
"default": null
},
"start": {
"anyOf": [
{
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "YYYY-MM-DD",
"title": "Start"
},
"end": {
"anyOf": [
{
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "YYYY-MM-DD",
"title": "End"
},
"initial_capital": {
"default": 150,
"description": "Starting capital in USD",
"exclusiveMinimum": 0,
"maximum": 1000000000,
"title": "Initial Capital",
"type": "number"
},
"fee": {
"default": 0.009,
"description": "Fee per side (0.009 = 0.9%)",
"maximum": 0.05,
"minimum": 0,
"title": "Fee",
"type": "number"
},
"slippage": {
"default": 0.002,
"description": "Slippage per side",
"maximum": 0.05,
"minimum": 0,
"title": "Slippage",
"type": "number"
},
"rank_by": {
"default": "robust",
"enum": [
"robust",
"return"
],
"title": "Rank By",
"type": "string"
}
},
"required": [
"strategy",
"grid"
],
"$defs": {
"OptimizeStrategy": {
"additionalProperties": false,
"properties": {
"type": {
"enum": [
"breakout",
"momentum",
"dip",
"ma_trend"
],
"title": "Type",
"type": "string"
},
"params": {
"additionalProperties": true,
"default": {},
"description": "Fixed (non-grid) params; same fields as /backtest strategy params",
"title": "Params",
"type": "object"
}
},
"required": [
"type"
],
"title": "OptimizeStrategy",
"type": "object"
},
"Universe": {
"additionalProperties": false,
"properties": {
"mode": {
"default": "point_in_time",
"description": "point_in_time = top-N by trailing 20d $ volume AS OF each day (no survivorship bias); current_top = top-N as of the end date (biased, for comparison); fixed = your coin list",
"enum": [
"point_in_time",
"current_top",
"fixed"
],
"title": "Mode",
"type": "string"
},
"top_n": {
"default": 30,
"maximum": 200,
"minimum": 5,
"title": "Top N",
"type": "integer"
},
"min_age_days": {
"default": 35,
"description": "Days a coin must have traded before it is eligible",
"maximum": 120,
"minimum": 0,
"title": "Min Age Days",
"type": "integer"
},
"min_avg_dollar_volume": {
"default": 1000000,
"description": "Min 20-day avg Coinbase $ volume",
"minimum": 0,
"title": "Min Avg Dollar Volume",
"type": "number"
},
"coins": {
"anyOf": [
{
"items": {
"type": "string"
},
"maxItems": 200,
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Coins"
}
},
"title": "Universe",
"type": "object"
}
},
"title": "validate_optimizeArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "validate_optimizeDictOutput"
}🟢validate_token_check(chain, address)
Free: format-check a token_check request (no on-chain lookups).
Esquema de entrada
{
"type": "object",
"properties": {
"chain": {
"enum": [
"base",
"ethereum",
"solana"
],
"title": "Chain",
"type": "string"
},
"address": {
"title": "Address",
"type": "string"
}
},
"required": [
"chain",
"address"
],
"title": "validate_token_checkArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "validate_token_checkDictOutput"
}🟢validate_universe(date, top_n, min_age_days, min_avg_dollar_volume)
Free: check universe_snapshot arguments (date in range, enough history) before paying.
Esquema de entrada
{
"type": "object",
"properties": {
"date": {
"anyOf": [
{
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "YYYY-MM-DD",
"title": "Date"
},
"top_n": {
"default": 30,
"maximum": 200,
"minimum": 1,
"title": "Top N",
"type": "integer"
},
"min_age_days": {
"default": 35,
"maximum": 120,
"minimum": 0,
"title": "Min Age Days",
"type": "integer"
},
"min_avg_dollar_volume": {
"default": 1000000,
"minimum": 0,
"title": "Min Avg Dollar Volume",
"type": "number"
}
},
"title": "validate_universeArguments"
}Esquema de salida
{
"type": "object",
"additionalProperties": true,
"title": "validate_universeDictOutput"
}Comunidad
Evidencia