Backtest a strategy
One bar-close strategy replayed over stored candles of a Hyperliquid perp or an FX pair / metal. Simulated: nothing is traded.
Model (the same text comes back in assumptions):
- A signal is computed on a CLOSED bar and filled at the NEXT bar's open.
- One position at a time, all-in (equity × leverage), long, short or both.
- feeBps is charged per side on notional. Default 4.5 for Hyperliquid, 1 for FX.
- stopPct / takePct are checked inside each bar against its high and low. When both could hit in the same bar the stop is taken first; a bar that opens beyond the level fills at its open.
- A position still open at the last bar is closed at that bar's close (reason: "end"). Equity at or below zero ends the run.
- No funding, no spread beyond the fee, no slippage. FX uses Dukascopy BID prices.
Strategies and their parameters (pass only the ones you want to change):
| strategy | Rule | Parameters (default) |
|---|---|---|
| supertrend | Long while the Supertrend direction is up, short while it is down. | atr (10), mult (3) |
| ema_cross | Long while EMA(fast) is above EMA(slow), short while below. | fast (20), slow (50) |
| rsi | Long when RSI falls below lower, short when it rises above upper, flat again when RSI crosses back through 50. | length (14), lower (30), upper (70) |
| donchian | Long on a close above the highest high of the previous length bars, short on a close below their lowest low; held until the opposite breakout. | length (20) |
| buy_hold | Always long. | none |
Symbols: any Hyperliquid perp by its coin id, matched without case (BTC, eth, kPEPE); a leading $ and a trailing USDT / USD / -PERP are dropped. FX and metals: EURUSD, GBPUSD, USDJPY, USDCHF, AUDUSD, USDCAD, USDSEK, NZDUSD, EURJPY, GBPJPY, EURGBP, XAUUSD (also gold), XAGUSD (also silver).
How much history there is: the window is the last days ending now, cut to what the store holds. Hyperliquid candles start from what its API served when the store was built (1m a few days, 15m about seven weeks, 1h about seven months, 4h and 1d years) and grow from there; FX has 1h bars since 2016 and 1m bars for about the last 400 days (/fx/lake shows how far each symbol is filled). Fewer than 50 bars in the window is a 400 whose message says what the store keeps. Read from, to and bars in the answer for the window that was really tested.
Request
- Base URL: https://api.getchord.xyz/v1
- URL: https://api.getchord.xyz/v1/backtest
- Auth: none declared
Query parameters
A Hyperliquid perp coin id or an FX / metal symbol (list above).
Bar size. 5m and 30m are resampled from finer stored bars.
Length of the window, ending now.
Which signals are traded.
supertrend: ATR length.
supertrend: band width in ATRs.
ema_cross: fast EMA length.
ema_cross: slow EMA length.
rsi: RSI length (default 14). donchian: channel length in bars (default 20).
rsi: go long below this.
rsi: go short above this.
Fee per side in basis points of notional. Default 4.5 (Hyperliquid) or 1 (FX).
Stop-loss, percent from entry. Omitted = none.
Take-profit, percent from entry. Omitted = none.
Position size as a multiple of equity. Values outside 0.1–20 are clamped.
Response
Changes
No recorded changes to this operation across all 1 revision of this API.