Private Beta

Find strategies
that actually work.

StratSmith is the complete platform for building, testing, and validating trading strategies. Powerful optimization and statistical analysis — guided, automated, and built for results.

See How It Works
Scroll to explore

From idea to validated strategy
in one workflow.

Stop duct-taping spreadsheets, scripts, and notebooks together. StratSmith handles every step — so you can focus on the strategy, not the infrastructure.

01
Ideate
Organize hypotheses, research notes, and strategy concepts. Tag, version, and evolve ideas before writing a single line of code.
02
Define
Wire up indicators, candle patterns, external datasets, and custom signals. Declare parameters with types, ranges, and constraints.
03
Backtest
Execute on a simulation engine built for realism — tick-level fills, slippage modeling, partial fills, margin, and multi-asset support.
04
Optimize
Grid, random, orthogonal, Sobol — search the parameter space with methods that find robust basins, not lucky spikes.
05
Validate
Monte Carlo, walk-forward, risk of ruin, temporal stability. Prove it works — or prove it doesn't — before risking capital.

The tools serious traders
wish they had.

Every feature was built to answer a real question: does this strategy work, and will it keep working?

◈ SEARCH

Smart Parameter Search

Grid, Sobol, orthogonal arrays — sample the parameter space intelligently. Automatically find robust regions of interest, not just one lucky combination.

◈ VALIDATE

Monte Carlo Stress Testing

Thousands of resampled equity curves with real confidence intervals. See the full distribution of outcomes — not just the one backtest that looked good.

◈ TEMPORAL

Walk-Forward Analysis

Anchored and rolling out-of-sample windows. Does your strategy survive on data it's never seen, or does it fall apart the moment you go live?

◈ RISK

Risk of Ruin

Exact probability calculations at every position size. Know the odds of hitting your drawdown threshold before you commit capital.

◈ VISUALIZE

Pairwise Parameter Landscapes

Interactive 3D surfaces and heatmaps for every parameter pair. Pareto frontiers across competing objectives. See which regions are mountains and which are mirages.

◈ ORGANIZE

Strategy Library & Versioning

Every strategy, every parameter set, every backtest result — versioned and searchable. Compare iterations side by side. Never lose track of what you've already tried.

Know if your strategy works —
before you risk a dollar.

Temporal walk-forward, Monte Carlo confidence bands, capital-for-survival curves, and every metric you need — all in one view. No guessing, no hoping.

StratSmith analysis results showing temporal validation, Monte Carlo equity curves, and performance metrics

Describe your strategy.
We'll build it.

Tell the assistant what you want. It writes the code, configures parameters, wires up indicators — and validates everything before you touch it.

Build a Bollinger Band mean reversion strategy on 15-min bars. Use a 30-period lookback with 2 standard deviation bands. Add a parameter for the band multiplier so I can optimize it later.
Strategy Agent ◎ < 0.1
Updated the strategy code with Bollinger Band indicator references: bb_middle, bb_band_2_upper, and bb_band_2_lower. Added a bandMultiplier parameter (0.5–5.0, default 2.0) and implemented it in the strategy code. No validation errors occurred.
▸ View generated code
▸ View parameters (1)
▸ View indicators (1)
▸ View candles (1)
✓ Validation passed
Unsaved Changes
Code Parameters Indicators Candles
const sma = api.getIndicatorValue(names.indicator.bench_sma_value, 0); const ema = api.getIndicatorValue(names.indicator.bench_ema_value, 0); const m5 = api.getCandle(names.candle._5_minute, 0); const s2 = api.getCandle(names.candle._2_second, 0); if (isNaN(sma) || isNaN(ema)) return; for (let j = 0; j < account.ordersCount; j++) { api.queueAction({ type: 'cancel', id: account.orders[j].id }); } if (account.positionQty === 0) { if (ema > sma) { api.queueAction({ type: 'limit', qty: 1, price: candle.close - 0.25, stopLoss: candle.close - 5, takeProfit: candle.close + 10 }); } else if (ema < sma) { api.queueAction({ type: 'limit', qty: -1, price: candle.close + 0.25, stopLoss: candle.close + 5, takeProfit: candle.close - 10 }); } } else { api.queueAction({ type: 'bracket', stopLossPoints: 4, takeProfitPoints: 8 }); }
1–[]
1+[
2+ {
3+ "max": 50,
4+ "min": 5,
5+ "name": "smaPeriod",
6+ "type": "number",
7+ "defaultValue": 10
8+ },
9+ {
10+ "max": 30,
11+ "min": 3,
12+ "name": "emaPeriod",
13+ "type": "number",
14+ "defaultValue": 5
15+ }
16+]
1[{
2 "name": "bench_sma",
3 "type": "sma",
4 "period": 10,
5 "property": "close",
6 "candleInterval": "5_minute"
7}, {
8 "name": "bench_ema",
9 "type": "ema",
10 "period": 5,
11 "property": "close",
12 "candleInterval": "5_minute"
13}]
bench_smaSMA
5_minute   period: 10   property: close
bench_emaEMA
5_minute   period: 5   property: close
1[
2 { "type": "minute", "quantity": 5 },
3 { "type": "second", "quantity": 2 }
4]
5_minuteMIN
type: minute   quantity: 5
2_secondSEC
type: second   quantity: 2

Full control when you want it. The generated code is always visible, editable, and yours.

Stop guessing.
Start proving.

StratSmith is in private beta. Join the waitlist and be first to build strategies with real statistical backing.