Optimization
Parameter optimization (sweeps) test your strategy across many parameter combinations to find the best configuration.
Running a Sweep
Via CLI
bash
tradectl sweep \
-d data/prepared.bin \
-r order_size=50:500:50 \
-r threshold=0.5:2.0:0.1 \
-p leverage=5 \
--balance 10000 \
--taker-fee 0.0004 \
--maker-fee 0.0002 \
--top 20 \
--min-trades 5 \
-o results.json| Flag | Description | Default |
|---|---|---|
-d, --data <PATH> | Path to prepared data file | (required) |
-r, --range <KEY=MIN:MAX:STEP> | Parameter range to sweep (repeatable) | (required) |
-p, --param <KEY=VALUE> | Fixed parameters (repeatable) | — |
--balance <FLOAT> | Initial balance | 10000 |
--leverage <FLOAT> | Leverage multiplier | 1.0 |
--taker-fee <FLOAT> | Taker fee rate | 0.0004 |
--maker-fee <FLOAT> | Maker fee rate | 0.0002 |
--slippage <FLOAT> | Slippage percentage | 0.0001 |
--top <N> | Show top N results | 20 |
--min-trades <N> | Minimum trades to include | 5 |
-o, --output <PATH> | Save results as JSON | — |
Via Dashboard
- Go to Backtests > New Optimization
- Select strategy and configure base settings
- Define parameter ranges and step sizes
- Select ranking metric (PnL, Sharpe, Calmar, Score)
- Click Run
Progress and results stream in real-time.
Ranking Metrics
| Metric | Description |
|---|---|
| PnL | Net profit percentage |
| Sharpe | Risk-adjusted return |
| Calmar | PnL / max drawdown |
| Win Rate | Percentage of winning trades |
| Profit Factor | Gross profit / gross loss |
| Score | pnl% / (1 + max_dd%) * trade_factor |
Batch Engine
Sweeps use the BatchStrategy trait — a Structure of Arrays (SoA) interface that evaluates many parameter sets simultaneously in a single pass through the data:
rust
pub trait BatchStrategy {
fn process_ticker(&mut self, ticker: &TickerEvent);
fn check_trade(&mut self, trade: &TradeEvent);
fn force_close_all(&mut self);
}