Feature Reference

Everything AlgoDeploy can do. Every indicator, exit rule, risk check, and engine feature — with tier availability and code examples.

Indicators Comparators Exit Rules Position Sizers Risk Checks Data Sources Engine Live Trading Dashboard Reports Execution Safety
✓ Included
— Not in tier
FREE Student
$99 Starter
$249 Pro
$499 Quant

📈 Indicators

Technical indicators available in YAML conditions, the dashboard UI, and the Python Indicators class. All computed as pandas Series from OHLCV data.

Feature FREE $99 $249 $499
ATR — Average True Range Measures volatility using the true range over N bars. atr(14) ✓ ✓ ✓ ✓
Beta Rolling beta against a benchmark return series over N bars. indicators.beta(benchmark_series, 60) — ✓ ✓ ✓
Bollinger Bands Upper, middle, and lower bands based on SMA ± N standard deviations. Use bollinger_upper, bollinger_mid, bollinger_lower in YAML. bollinger_upper(20) bollinger_lower(20,2.5) ✓ ✓ ✓ ✓
EMA — Exponential Moving Average Exponentially weighted moving average of the close price. ema(21) ✓ ✓ ✓ ✓
MACD Moving Average Convergence Divergence. Returns MACD line, signal line, and histogram. Use macd_line, macd_signal in YAML. macd(12,26,9) macd_line(12,26,9) macd_signal(12,26,9) ✓ ✓ ✓ ✓
Percentage Change Close-to-close percentage change over N bars. pct_change(5) ✓ ✓ ✓ ✓
Rolling High Highest close over the last N bars. high(52) ✓ ✓ ✓ ✓
Rolling Low Lowest close over the last N bars. low(10) ✓ ✓ ✓ ✓
RSI — Relative Strength Index Momentum oscillator measuring speed and magnitude of price changes. 0–100 scale. rsi(14) ✓ ✓ ✓ ✓
SMA — Simple Moving Average Arithmetic mean of the close price over N bars. sma(40) ✓ ✓ ✓ ✓
VWAP — Volume-Weighted Average Price Cumulative volume-weighted average price. No arguments. vwap() ✓ ✓ ✓ ✓

≶ Comparators & Condition Operators

Operators for building entry conditions in YAML configs and the dashboard. Python API users can also use the rule factory functions.

Feature FREE $99 $249 $499
>   Greater Than close > sma(50) ✓ ✓ ✓ ✓
<   Less Than close < sma(40) ✓ ✓ ✓ ✓
>=   Greater or Equal rsi(14) >= 30 ✓ ✓ ✓ ✓
<=   Less or Equal rsi(14) <= 70 ✓ ✓ ✓ ✓
==   Equal close == sma(20) ✓ ✓ ✓ ✓
!=   Not Equal close != sma(20) ✓ ✓ ✓ ✓
crosses_above Value crossed above threshold at the current bar. ema(9) crosses_above ema(21) ✓ ✓ ✓ ✓
crosses_below Value crossed below threshold at the current bar. ema(9) crosses_below ema(21) ✓ ✓ ✓ ✓
within X% of True when value is within X percent of another value. Great for proximity-to-support entries. close within 0.3% of low(10) ✓ ✓ ✓ ✓
above() — Python Rule Factory Programmatic rule: latest indicator value must exceed threshold. above(lambda ind: ind.rsi(14), 30) — ✓ ✓ ✓
below() — Python Rule Factory Programmatic rule: latest indicator value must be below threshold. below(lambda ind: ind.sma(40), "close") — ✓ ✓ ✓
between() — Python Rule Factory Programmatic rule: value must fall within a range [low, high]. between(lambda ind: ind.rsi(14), 20, 40) — ✓ ✓ ✓
rising() — Python Rule Factory True when current value exceeds value N bars ago. rising(lambda ind: ind.ema(21), lookback=5) — ✓ ✓ ✓
CompositeRule — AND Composition Combine multiple rules; all must pass for a signal. CompositeRule([rule_a, rule_b, rule_c]) — ✓ ✓ ✓
Custom Rule Subclass Implement evaluate(indicators) → (bool, str) for any custom logic. class MyRule(Rule): ... — ✓ ✓ ✓

🚪 Exit Rules

Available in YAML exit: block, dashboard Exit Rules section, and programmatically via on_bar().

Feature FREE $99 $249 $499
Hard Stop Loss Close entire position if loss exceeds a fixed percentage of entry. hard_stop: "2.75%" ✓ ✓ ✓ ✓
Scale Out Sell a percentage of the position when a profit target is reached. Lock in partial gains. scale_out: target: "12%" percent: "60%" — ✓ ✓ ✓
Take Profit Close entire position at a fixed profit target. Set to 0% to disable. take_profit: "20%" ✓ ✓ ✓ ✓
Trailing Stop Activates after a gain threshold, then trails the peak price by a configurable ratio of the run-up. trail_activation: "1.5%" trail_ratio: 0.38 — ✓ ✓ ✓

💰 Position Sizers

Control how many shares to buy per trade. All implement the PositionSizer interface.

Feature FREE $99 $249 $499
Fixed Dollar Allocate a fixed dollar amount per position. Default: $10,000. FixedDollar(amount=10_000) — ✓ ✓ ✓
Fixed Fractional Risk a fixed percentage of equity per trade. Requires a stop price. Default: 1% risk, 25% max. FixedFractional(risk_pct=0.01, max_pct=0.25) — ✓ ✓ ✓
Kelly Criterion Optimal sizing based on historical win rate and average win/loss ratio. Fractional Kelly with safety cap. KellyCriterion(fraction=0.5, max_pct=0.20) — ✓ ✓ ✓
Volatility Scaled Size based on ATR to target a fixed dollar amount of daily volatility per position. VolatilityScaled(target_risk=500, max_pct=0.25) — ✓ ✓ ✓

🛡️ Risk Checks

Pre-trade checks that run before every buy order. Configurable via RiskConfig with presets: conservative(), moderate(), aggressive().

Feature FREE $99 $249 $499
Daily Loss Limit Rejects orders if daily P&L exceeds dollar or percentage threshold. max_daily_loss=2000, max_daily_loss_pct=0.02 — ✓ ✓ ✓
Drawdown Circuit Breaker Halts all trading if cumulative drawdown breaches the limit. max_drawdown_pct=0.10 — ✓ ✓ ✓
Max Open Positions Caps the number of simultaneous open positions. max_open_positions=10 — ✓ ✓ ✓
Min Position Size Rejects orders below a minimum dollar value. min_position_dollar=500 — ✓ ✓ ✓
Per-Trade Risk Limit Caps dollar risk per trade as a percentage of equity. Requires stop price. max_loss_per_trade_pct=0.02 — ✓ ✓ ✓
Portfolio Exposure Limit Caps total portfolio exposure as a percentage of equity. max_portfolio_exposure_pct=0.80 — ✓ ✓ ✓
Position Size Limit Caps individual position value as percentage of equity and/or dollar amount. max_position_pct=0.25, max_position_dollar=50000 — ✓ ✓ ✓
Stop Loss Required Rejects all orders that don't include a stop price. Forces risk discipline. require_stop_loss=True — ✓ ✓ ✓

💾 Data Sources

All data sources return normalized OHLCV DataFrames. Implement the DataSource interface for custom sources.

Feature FREE $99 $249 $499
Alpaca Markets (Equities + Crypto) Historical bars from Alpaca API. Supports 1min, 5min, 15min, 30min, 1h, 1d. Auto-routes crypto symbols (BTC/USD, ETH/USD, etc.) to the crypto data feed. Free API key required. data: provider: alpaca # Equities: symbol: SPY # Crypto: symbol: BTC/USD — ✓ ✓ ✓
CSV Files Bring your own data. Files named {symbol}.csv in a directory. Configurable timestamp column. data: provider: csv path: ./data/ ✓ ✓ ✓ ✓
Custom DataSource Implement DataSource.load(symbol, start, end) for any API, database, or file format. class MySource(DataSource): ... — ✓ ✓ ✓
Yahoo Finance Free daily data via yfinance. No API key needed. Auto-adjusts for splits and dividends. data: provider: yfinance ✓ ✓ ✓ ✓

⚙️ Engine Features

Core backtest engine capabilities, optimization tools, and analysis features.

Feature FREE $99 $249 $499
Commission Model Per-share commission deducted on every fill. commission_per_share: 0.005 — ✓ ✓ ✓
Config-Driven Strategy (No Code) Build strategies entirely from YAML or the dashboard. No Python needed. algodeploy backtest my_strategy.yaml — ✓ ✓ ✓
Custom Regime Filter Abstract base for your own market regime classification logic. class MyRegime(RegimeFilter): ... — — ✓ ✓
Event-Driven Backtest Bar-by-bar execution with on_bar(bar, ctx). Full state management, multi-leg entries, custom logic. def on_bar(self, bar, ctx): ctx.buy(shares, reason="entry") — ✓ ✓ ✓
Fill Modes Fill on same-bar close or next-bar open for more realistic execution. fill_on="next_open" — ✓ ✓ ✓
Long & Short Positions Signal -1 opens short. Full flip handling between long and short. ctx.short(shares, reason="breakdown") — ✓ ✓ ✓
Monte Carlo Simulation Reshuffle actual trade returns N times. Confidence intervals on returns, drawdown, and ruin probability. MonteCarloSimulation(results, n_simulations=1000) — — ✓ ✓
Parameter Sweep Grid search over all parameter combinations. Data cached. Heatmap reports. ParameterSweep(engine, {"period": [20,40,60]}) — — ✓ ✓
Slippage Model Basis-point slippage applied adversely on every fill. slippage_bps: 5.0 — ✓ ✓ ✓
SMA Regime Filter Price above/below SMA classifies BULL/BEAR. No external data needed. SMARegimeFilter(period=200) — — ✓ ✓
Vectorized Backtest Fast signal-array engine. Return a Series of -1/0/1 from generate_signals(). def generate_signals(self, data): return (sma50 > sma200).astype(int) ✓ ✓ ✓ ✓
VIX Regime Filter Classifies bars by VIX level: CALM / MODERATE / ELEVATED / PANIC. Configurable thresholds. VIXRegimeFilter(thresholds=[13,18,25,30]) — — ✓ ✓
Walk-Forward Optimization N windows of in-sample optimization + out-of-sample testing. Detects overfitting via degradation ratio. WalkForwardSweep(engine, params, n_windows=5) — — ✓ ✓

⚡ Live Trading

Automated scan-size-check-execute loop with broker integration.

Feature FREE $99 $249 $499
Alpaca Broker Integration Paper + live trading. Market, limit, stop, stop-limit orders. Positions, quotes, historical bars, market clock. — ✓ ✓ ✓
Custom Broker Adapter Implement BrokerInterface for any broker. Standardized Account, Position, Order models. — ✓ ✓ ✓
Dry Run Mode Log orders without placing them. Validate your strategy before risking real capital. TraderRunner(dry_run=True) — ✓ ✓ ✓
EOD Position Close Optionally close all positions before market close. Configurable minutes-before-close. close_positions_at_eod=True, eod_close_minutes_before=15 — ✓ ✓ ✓
Signal Scanner Evaluates rules against a symbol universe. Produces qualified candidates with pre-computed exit levels. Scanner(rules, universe=["AAPL","MSFT",...]) — ✓ ✓ ✓
Timeframes 1-minute, 5-minute, 15-minute, 30-minute, 1-hour, and daily bars. — ✓ ✓ ✓
TraderRunner Main trading loop: scan → risk check → size → execute. State machine with callbacks. runner = TraderRunner(strategy, broker, risk_config) runner.start() — ✓ ✓ ✓

📱 Dashboard

Browser-based monitoring and control. WebSocket real-time updates. No code required for backtesting.

Feature FREE $99 $249 $499
Account SummaryCash, portfolio value, buying power at a glance. — ✓ ✓ ✓
Alert FeedReal-time risk alerts: warnings at 80% of limits, critical at breach. — ✓ ✓ ✓
Backtest from BrowserConfigure and run backtests directly from the dashboard. Preset strategies, full form, instant results. — ✓ ✓ ✓
Equity Curve ChartLive updating equity curve with time axis. — ✓ ✓ ✓
Open Positions TableSymbol, side, quantity, entry, current, P&L, and P&L %. — ✓ ✓ ✓
Risk Status PanelCurrent risk level (NORMAL/WARNING/CRITICAL/HALTED), drawdown %, exposure %. — ✓ ✓ ✓
Runner ControlsStop and resume the trading runner from the browser. — ✓ ✓ ✓
Trade HistoryRecent trades with symbol, side, quantity, entry/exit price, P&L, and status. — ✓ ✓ ✓
WebSocket Real-Time UpdatesPushes account, positions, risk, and runner state every 5 seconds. — ✓ ✓ ✓

📋 Reports & Exports

Interactive HTML reports, CSV data exports, and JSON summaries.

Feature FREE $99 $249 $499
CSV & JSON Export Trade log CSV, equity curve CSV, and full metrics summary JSON. results.save("./output/") — ✓ ✓ ✓
Equity Curve Chart Basic equity curve plot with return, Sharpe, and max drawdown subtitle. results.plot("chart.html") ✓ ✓ ✓ ✓
Full Backtest Report 12-metric dashboard, equity chart, drawdown chart, per-regime breakdown, sortable trade log. Interactive HTML. results.to_html("report.html") — ✓ ✓ ✓
Monte Carlo Report Return distribution histogram, equity fan chart with percentile bands, ruin probability, 6 summary cards. mc_results.to_html("mc_report.html") — — ✓ ✓
Parameter Sweep Report Best params summary, sortable results table, Sharpe/Return/Drawdown heatmaps for 2-param sweeps. sweep_results.to_html("sweep.html") — — ✓ ✓
Walk-Forward Report IS vs OOS bar chart, degradation ratio, window detail table with per-window metrics. wf_results.to_html("walkforward.html") — — ✓ ✓

🛡 Execution Safety

Audit logging, failure detection, health monitoring, and user notification for live trading.

Feature FREE $99 $249 $499
Immutable Audit Trail Every order attempt, execution, and failure logged with timestamps, order details, and outcome. Tamper-evident append-only log. — ✓ ✓ ✓
Error Classification Automatic categorization of failures: broker rejection, authentication expiry, network timeout, insufficient funds, and more. Clear root-cause attribution. — ✓ ✓ ✓
Failure Notifications Real-time dashboard alerts on any execution failure. Ensures you know immediately when an order doesn't go through. — ✓ ✓ ✓
Broker Health Checks Proactive validation of broker connection, authentication tokens, and account status before each trading session. — ✓ ✓ ✓
Live Trading Acceptance Gate In-product risk acknowledgment required before enabling live trading. Users confirm they understand execution risks, broker dependencies, and their sole responsibility for monitoring. — ✓ ✓ ✓
Webhook Failure Alerts Send execution failure alerts to external webhooks for integration with Slack, email, PagerDuty, or custom monitoring. — — ✓ ✓
Telegram Notifications Native Telegram bot integration. Send critical alerts (order failures, broker errors, risk halts) and warnings to a Telegram chat with Markdown formatting. notifications: telegram: bot_token: "..." chat_id: "..." — — ✓ ✓
Discord Notifications Native Discord webhook integration with embed formatting. Color-coded severity (red for critical, amber for warning). Drop in a channel webhook URL and you're done. notifications: discord: webhook_url: "..." — — ✓ ✓

Ready to build?

All tiers include the full source code. Start backtesting in minutes.

Get AlgoDeploy — From $99