Strategy Catalog
Artic includes 30+ quantitative trading strategies across 5 categories. Every algorithm follows the same contract:
def strategy_name(candles, prices, **params) -> (signal: float, detail: str)
signal > 0→ bullish (go long)signal < 0→ bearish (go short)signal == 0→ neutral (no action)
The detail string provides human-readable reasoning for the signal.
Momentum (8 strategies)
Momentum strategies identify and follow price trends.
| Strategy | Description |
|---|---|
simple_momentum | Price rate of change over lookback period |
dual_momentum | Compares absolute and relative momentum |
breakout | Detects price breaking above/below N-period high/low |
donchian_channel | Donchian channel breakout with configurable period |
ma_crossover | Simple moving average crossover (fast/slow) |
ema_crossover | Exponential moving average crossover |
macd_signal | MACD line vs signal line crossover |
supertrend | ATR-based trend following indicator |
Example: Momentum Breakout
# Agent config
{
"strategy_name": "breakout",
"risk_params": {
"max_position_usd": 2000,
"stop_loss_pct": 1.5,
"take_profit_pct": 3.0
}
}
The LLM planner may also auto-select from this category based on market conditions.
Mean Reversion (6 strategies)
Mean reversion strategies bet on prices returning to a statistical mean.
| Strategy | Description |
|---|---|
z_score | Z-score of price relative to rolling mean |
bollinger_reversion | Bollinger Band reversion signals |
rsi_signal | RSI overbought/oversold with configurable thresholds |
stochastic_signal | Stochastic oscillator K/D crossover |
range_sr | Support/resistance level identification |
bollinger_squeeze | Bollinger Band squeeze breakout detection |
When to Use
Mean reversion works best in ranging/sideways markets. The LLM planner detects these conditions and selects mean reversion strategies when appropriate.
Volatility (3 strategies)
Volatility strategies trade based on changes in market volatility.
| Strategy | Description |
|---|---|
atr_breakout | ATR-based breakout detection |
keltner_bollinger | Keltner Channel vs Bollinger Band squeeze |
vwap_deviation | Volume-weighted average price deviation |
Volume (3 strategies)
Volume strategies use trading volume to confirm or predict price moves.
| Strategy | Description |
|---|---|
obv_trend | On-Balance Volume trend analysis |
adx_filter | ADX strength filter for trend confirmation |
ichimoku_signal | Ichimoku cloud signal generation |
Statistical (2 strategies)
Statistical strategies use mathematical models to find trading opportunities.
| Strategy | Description |
|---|---|
linear_regression_channel | Linear regression channel breakout |
kalman_fair_value | Kalman filter fair value estimation |
Utilities
Risk Sizing
| Function | Purpose |
|---|---|
kelly_size | Kelly criterion position sizing |
vol_scaling_mult | Volatility-scaled position multiplier |
Time Filters
| Function | Purpose |
|---|---|
session_filter | Filter signals by trading session (Asia/EU/US) |
day_of_week_filter | Filter signals by day of week |
LLM Strategy Selection
When the LLM planner is enabled, the agent doesn't rely on a fixed strategy. Instead:
- Market analysis: The LLM receives candle data, technical indicators (ATR, ADX, volatility), and price history
- Strategy selection: The LLM picks the best strategy for current conditions
- Parameter tuning: The LLM defines lookback period, threshold, and risk parameters
- Reasoning capture: Full reasoning text is logged for audit
The LLM can switch strategies between planning cycles based on changing market conditions.
Adding Custom Strategies
- Create your algorithm in
app/strategies/quant_algos/ - Follow the contract: return
(signal: float, detail: str) - Register in
app/strategies/signals.pydispatcher - Never read live prices inside the algo — use candle arrays only
