FAQ & troubleshooting
My run finished with 0 trades — what happened?
The signal rule never returned true on this dataset. Common causes:
- Wrong indicator ids in the signal rule —
ema_fastin the rule, but the indicator was namedema_1 - Threshold too tight — RSI < 20 only fires in extreme oversold conditions; try 30
- Crossover never happens — the two EMAs trend in parallel; pick periods further apart
Check the Config tab on the scenario page to inspect the manifest the engine actually used.
My Sharpe ratio is 0.00 even though I made profit
Sharpe needs at least 2 different trading days of PnL to compute a standard deviation. If your strategy only traded on one day (often because the kill switch tripped early), Sharpe falls back to 0.
Fix: relax the kill switch, use more data, or pick a strategy that holds positions over multiple days.
My max drawdown is huge — what does that mean?
Max drawdown is the largest peak-to-trough drop in equity during the run. A 30% drawdown means at some point you were down 30% from the highest equity you'd reached.
Drawdown matters more than total return for live trading because it tells you the worst pain you'd have to sit through to capture the strategy's profit.
A profitable strategy with 40% drawdown is mostly unfundable — most prop firms cut you off well before that. Aim for drawdown ≤15% of starting equity for serious strategies.
Why does each run produce slightly different scores even with the same config?
It shouldn't. Identical manifest + identical CSV → identical result. The system uses a content hash on the manifest to detect this; you'll see the same config_hash in run history.
If you do see drift, the most likely cause is changing the CSV file under the same path — the hash only covers the manifest, not the data. Treat data files as immutable.
What's the difference between a Run and a Scenario?
- A scenario is the recipe — manifest, parameters, what to backtest.
- A run is the result of one execution of that recipe against some data.
You can have many runs per scenario (each time you click New Run, a new run is created). The scenario's status (Draft / Testing / Passed / …) summarises your overall judgement of the recipe.
Can I run multiple scenarios at once?
Currently the engine processes one run at a time per scenario to avoid race conditions on the database. You can trigger different scenarios in parallel — they'll all run, just queued.
What CSV format does the engine accept?
Two formats are auto-detected:
- MT5 tick —
<DATE><TIME><BID><ASK>(tab-separated). Resampled into the timeframe you set. - OHLCV —
time, open, high, low, close, volume, spread(comma-separated).
Anything else will fail at the data validation step with a clear error.
How much data do I need for a meaningful backtest?
Depends on the strategy frequency:
| Strategy type | Suggested minimum |
|---|---|
| Scalping (M1) | 1 month of clean data |
| Day trading (M5–M30) | 3 months |
| Swing (H1–H4) | 1 year |
| Position (D1) | 5+ years |
The point is to capture enough regime variety — uptrend, downtrend, ranging, news shocks — that the result reflects something more than the recent market mood.
My result doesn't match my live broker — why?
Several possible reasons:
- Costs differ — your broker's spread/commission may exceed what you set in the manifest
- Slippage in fast markets — backtest slippage is symmetric and constant; real slippage spikes during news
- Swap not modelled — V1 ignores overnight financing
- Same-candle resolution —
sl_firstis conservative; live execution depends on tick-level price action
Backtest is an upper bound on what's achievable, with realistic but optimistic assumptions. Forward-test on a demo account before risking real money.
Where are runs and scenarios stored?
- Manifests + status — DuckDB file at the path the server is configured with
- Run results — flat files (
out/<run_id>/result.json) - History summaries — same DuckDB
Backing up a deployment means copying the DuckDB file and the out/ folder.
I broke something and want to start fresh
Stop the server, delete the DuckDB file (or rename it), and restart. The schema will be re-created empty. Existing scenario folders in scenarios/ will be re-discovered and re-imported automatically.
⚠️ This deletes all run history. Back up first.
Is my data sent anywhere?
No. The app runs entirely on the server you've deployed it to. CSV files, manifests, and results never leave that server unless you explicitly export them.
There is no telemetry, no analytics, no third-party network calls.