Start a strategy backtest

POST https://api.cryptohopper.com/v1/hopper/{id}/backtest

Starts a backtest of one strategy on one coin, using the exchange and quote currency of the hopper's config. Only one strategy backtest can run at a time per account.

OAuth scope: read About scopes

currency is required. strategy is user_<id>, market_<id> or ai_<id>; built-in strategies (multiple_ta) are refused. date_range is only used when custom_period is 1. The result appears in List strategy backtests when the run finishes. Uses the backtest rate limit: one request per 2 seconds per token and app. Refused with 403 when you reached today's strategy backtest limit.

Example request

curl -X POST "https://api.cryptohopper.com/v1/hopper/HOPPER_ID/backtest" \
  -H "access-token: YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"currency":"ETH","strategy":"user_4521","take_profit":2,"sell_with_strategy":0,"stop_loss":1,"stop_loss_percentage":5,"trailing_stop_loss":0,"trailing_stop_loss_only":0,"trailing_stop_loss_percentage":0,"trailing_stop_loss_arm":0,"trailing_buy":0,"trailing_buy_percentage":0,"custom_period":1,"date_range":"2026-08-01 00:00:00 - 2026-08-31 00:00:00"}'

Parameters

Headers

NameTypeRequiredDescription
access-token string Required The OAuth access token of the user.

Path parameters

NameTypeRequiredDescription
id string Required Hopper ID. Must be one of your hoppers; arbitrage, market maker, copy, grid and AI bots are refused.

Response

Example response (illustrative values)

{
    "data": "Backtest has started."
}

Status codes: 200. Errors return JSON with status, error and message. See How the API works for response codes and rate limits.