Backtest a stated trading rule on a crypto asset's daily USD closes (Coinbase Ex
Backtest a stated trading rule on a crypto asset's daily USD closes (Coinbase Exchange) and compare it with buying and holding: SMA crossover, RSI mean reversion, DCA or buy-and-hold, 30-365 days, with fees. Returns total return, drawdown, Sharpe, win rate, exposure, every trade and the equity curve; the rules are published in every answer. Send {} for BTC, SMA 20/50, 180 days. A test of the past, not advice. Pay-per-call via x402.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://fiatdock.com/v1/market/backtest
| Category | Market data |
|---|---|
| Provider host | fiatdock.com |
| Networks | eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Payment schemes | exact |
| Self-reported calls, 30 days | 2 from 2 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"body": {
"asset": "BTC",
"days": 180,
"fast": 20,
"slow": 50,
"strategy": "sma_cross"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"asset": {
"description": "Crypto asset ticker with a USD market on Coinbase Exchange (BTC, ETH, SOL, \u2026). Default BTC",
"example": "BTC",
"maxLength": 10,
"type": "string"
},
"capitalUsd": {
"description": "Starting capital in USD, 10-10000000 (default 1000)",
"example": 1000,
"maximum": 10000000,
"minimum": 10,
"type": "number"
},
"days": {
"description": "Length of the tested window in days, 30-365 (default 180)",
"example": 180,
"maximum": 365,
"minimum": 30,
"type": "integer"
},
"dcaEveryDays": {
"description": "dca: days between purchases, 1-30 (default 7)",
"example": 7,
"maximum": 30,
"minimum": 1,
"type": "integer"
},
"fast": {
"description": "sma_cross: fast moving-average length in days, 2-100 (default 20)",
"example": 20,
"maximum": 100,
"minimum": 2,
"type": "integer"
},
"feeBps": {
"description": "Fee on every trade in basis points, 0-100 (default 10 = 0.1%)",
"example": 10,
"maximum": 100,
"minimum": 0,
"type": "number"
},
"rsiBuy": {
"description": "rsi_reversion: buy when RSI falls below this, 1-50 (default 30)",
"example": 30,
"maximum": 50,
"minimum": 1,
"type": "number"
},
"rsiPeriod": {
"description": "rsi_reversion: RSI length in days, 2-50 (default 14)",
"example": 14,
"maximum": 50,
"minimum": 2,
"type": "integer"
},
"rsiSell": {
"description": "rsi_reversion: sell when RSI rises above this, 50-99 (default 70)",
"example": 70,
"maximum": 99,
"minimum": 50,
"type": "number"
},
"slow": {
"description": "sma_cross: slow moving-average length in days, 3-200, longer than fast (default 50)",
"example": 50,
"maximum": 200,
"minimum": 3,
"type": "integer"
},
"strategy": {
"description": "sma_cross (long while the fast moving average is above the slow one), rsi_reversion (buy when RSI falls below rsiBuy, sell when it rises above rsiSell), dca (buy a fixed amount every dcaEveryDays), buy_and_hold. Default sma_cross",
"enum": [
"sma_cross",
"rsi_reversion",
"dca",
"buy_and_hold"
],
"example": "sma_cross",
"type": "string"
}
},
"required": []
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}