Strategy Parameters
Strategy parameters are discovered in gordon-lab (Python walk-forward research), then ported to gordon-strategy (Rust). The lab validates candidates; the Rust crate executes them live. These are two separate layers — never reimplement strategy logic in Python for production.
How parameters flow
gordon-lab (Python)
1. Sweep parameter space
2. Walk-forward validation across BTC/ETH/SOL minimum
3. Ablation: every parameter must justify its value
gordon-strategy (Rust)
4. Implement Strategy::evaluate
5. Configure validated params
6. Execute via gordon-bot (live) or gordon-manager (backtest)
— same code path, enforced by BacktestExecution parity testValidated strategies (gordon-strategy 4.x retrospective)
Supertrend 3.0
Best Sharpe: 0.90 | Timeframes: D1–8h
| Parameter | Type | Range | Description |
|---|---|---|---|
atr_period | int | 10–20 | Lookback for ATR calculation |
multiplier | float | 2.0–4.0 | ATR multiplier for band distance |
EWMAC Ensemble
Best Sharpe: 0.90 | Timeframes: 6h–1h
| Parameter | Type | Default | Description |
|---|---|---|---|
speed_pairs | list | [(8,32),(16,64),(32,128),(64,256)] | Fast/slow EMA combinations |
forecast_cap | float | 20.0 | Maximum absolute forecast value |
target_forecast_sd | float | 10.0 | Target standard deviation for forecast scaling |
atr_period | int | 20 | ATR lookback for volatility normalization |
PSAR Tight
Best Sharpe: 0.69–1.43 | Timeframes: W1–D1
| Parameter | Type | Range | Description |
|---|---|---|---|
af_start | float | 0.02–0.03 | Initial acceleration factor |
af_step | float | 0.02–0.03 | Acceleration increment per new extreme |
af_max | float | 0.20–0.30 | Maximum acceleration factor |
Common parameters
These apply across all strategies:
| Parameter | Type | Description |
|---|---|---|
timeframe | string | Candle timeframe (1h, 4h, 1d, etc.) |
symbol | string | Trading pair (BTCUSDT, ETHUSDT, etc.) |
Active engines added in 4.6.x (validation in progress)
11 additional engines are implemented and active in gordon-strategy::engines. Walk-forward validation is in progress — none are production-deployed yet.
| Engine | One-line description |
|---|---|
BasisRevertStrategy | Mean-reversion on the perp–spot funding spread |
BollingerBreakoutStrategy | Bollinger squeeze→expansion momentum breakout |
FundingArbStrategy | Single-leg crowded-trade mean reversion on extreme funding rates |
HurstRegimeSwitcherStrategy | Meta-strategy selecting a sub-strategy based on Hurst exponent (trending vs. mean-reverting vs. choppy) |
OpeningRangeBreakoutStrategy | Intraday momentum entry on the UTC-day opening range high/low |
PairsMrStrategy | Relative-value mean reversion on cointegrated crypto pairs (e.g. ETH/BTC) |
RsiMeanReversionStrategy | Wilder RSI oversold/overbought entries gated on a 200-period SMA trend filter |
TsMomStrategy | Time-series momentum based on Moskowitz, Ooi, Pedersen (2011) |
VolumeSpikeBreakoutStrategy | Intraday entry on volume surge combined with price range break |
VpinImpulseStrategy | Directional entries triggered by order-flow toxicity (VPIN) spikes |
VwapStretchMrStrategy | Fade overextensions from the session VWAP (resets at UTC midnight) |
Retired
- Donchian Ensemble — median Sharpe 0.08 in the v4 retrospective. Removed from active rotation. Not worth the complexity.
Validation gate (promotion from lab to production)
- Walk-forward consistency > 50% on BTC/ETH/SOL minimum.
- Net-of-fees Sharpe > 0.5 (Level 1).
- Max drawdown < 30%, positive CAGR with full cost model (Level 2).
- Port to Rust in gordon-strategy. Byte-parity test must pass.
- 30+ paper trades on Binance testnet via gordon-bot.
- Micro live allocation, then full allocation.
Avoiding overfitting
- Multi-asset validation: parameters must work on at least 3 assets.
- Walk-forward windows only — never random train/test splits on time series.
- Ablation: removing a parameter that does not degrade performance means it is noise.
- 1-bar delay enforced: signal on bar
i, execution on bari+1.