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.

StrategyDescription
simple_momentumPrice rate of change over lookback period
dual_momentumCompares absolute and relative momentum
breakoutDetects price breaking above/below N-period high/low
donchian_channelDonchian channel breakout with configurable period
ma_crossoverSimple moving average crossover (fast/slow)
ema_crossoverExponential moving average crossover
macd_signalMACD line vs signal line crossover
supertrendATR-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.

StrategyDescription
z_scoreZ-score of price relative to rolling mean
bollinger_reversionBollinger Band reversion signals
rsi_signalRSI overbought/oversold with configurable thresholds
stochastic_signalStochastic oscillator K/D crossover
range_srSupport/resistance level identification
bollinger_squeezeBollinger 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.

StrategyDescription
atr_breakoutATR-based breakout detection
keltner_bollingerKeltner Channel vs Bollinger Band squeeze
vwap_deviationVolume-weighted average price deviation

Volume (3 strategies)

Volume strategies use trading volume to confirm or predict price moves.

StrategyDescription
obv_trendOn-Balance Volume trend analysis
adx_filterADX strength filter for trend confirmation
ichimoku_signalIchimoku cloud signal generation

Statistical (2 strategies)

Statistical strategies use mathematical models to find trading opportunities.

StrategyDescription
linear_regression_channelLinear regression channel breakout
kalman_fair_valueKalman filter fair value estimation

Utilities

Risk Sizing

FunctionPurpose
kelly_sizeKelly criterion position sizing
vol_scaling_multVolatility-scaled position multiplier

Time Filters

FunctionPurpose
session_filterFilter signals by trading session (Asia/EU/US)
day_of_week_filterFilter signals by day of week

LLM Strategy Selection

When the LLM planner is enabled, the agent doesn't rely on a fixed strategy. Instead:

  1. Market analysis: The LLM receives candle data, technical indicators (ATR, ADX, volatility), and price history
  2. Strategy selection: The LLM picks the best strategy for current conditions
  3. Parameter tuning: The LLM defines lookback period, threshold, and risk parameters
  4. 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

  1. Create your algorithm in app/strategies/quant_algos/
  2. Follow the contract: return (signal: float, detail: str)
  3. Register in app/strategies/signals.py dispatcher
  4. Never read live prices inside the algo — use candle arrays only