Run presets (.qcs)
Save and reload run modal settings as JSON files with the .qcs extension in your QuantCraft workspace folder. Use this to reuse symbols, timeframes, input parameters, and other options across sessions without retyping them.
Where in the UI
Each modal shows Load and Save at the top of the modal body (directly under the title and description):
| Modal | How to open |
|---|---|
| Run backtest | QuantCraft IDE → Test → Run backtest |
| Bulk forward new run | Auto Trading or Quant Cloud → start a new bulk forward job |
| Chart forward test | Trade → attach a .qcraft.json algo → open algo parameters |
Prerequisites
- Desktop app — Save/load uses native file dialogs (not available in the browser-only preview).
- Workspace folder — Set via QuantCraft Files sidebar → Workspace Folder. Dialogs default to this directory.
If no workspace is set, the app prompts you to choose one first.
File format
Files are UTF-8 JSON. Top-level shape:
{
"format": "quantcraft-run-config-v1",
"savedFrom": "backtest",
"savedAt": "2026-06-09T12:00:00.000Z",
"settings": { }
}| Field | Meaning |
|---|---|
format | Must be quantcraft-run-config-v1. |
savedFrom | Metadata: backtest, bulk_forward, or chart_forward (which modal saved the file). |
savedAt | ISO timestamp when the file was written. |
settings | Flat object of run options (see table below). All keys are optional. |
Save writes only fields that apply to the current modal. Load always uses the target modal's rules and ignores keys that do not apply.
Default suggested filenames
| Modal | Default name |
|---|---|
| Run backtest | backtest-config.qcs |
| Bulk forward | bulk-forward-config.qcs |
| Chart forward test | chart-forward-config.qcs |
You can choose any name ending in .qcs when saving.
Settings fields by modal
| Key | Backtest | Bulk forward | Chart forward |
|---|---|---|---|
symbols, assetType | yes | — | — |
startingBalance, startDate, endDate, warmupBars | yes | — | — |
ohlcvSource | yes | — | — |
timeframeAlpaca, timeframeB2, minBars | yes | — | — |
secondaryTimeframes | yes | yes | yes |
includeFundamentals, fundamentalsPickerValues, fundamentalsExtraPaths | yes | yes* | yes |
includeFactors | yes | yes | yes |
inputParams | yes | yes | yes |
optimize, optimizeMode, geneticPopulationSize, geneticGenerations, geneticElitism, geneticCrossoverRate, geneticMutationRate, geneticFitnessMetric, geneticSeed | yes | — | — |
slPct, slDollars, tpPct, tpDollars, riskPctPerTrade, riskFixedPerTrade | yes† | — | — |
commissionModel, commissionCost, commissionMinTradeCost | yes | — | — |
slippageModel, slippageVolumeLimit, slippagePriceImpact, slippageSpread | yes | — | — |
algoId | — | yes | — |
targetScope, selectedStocks, selectedCrypto | — | yes | — |
periodMinutes, timeframeUi | — | yes | — |
tickMode | — | yes | — |
timerIntervalMs | — | yes | yes |
* Bulk saves/applies fundamentals picker values when present; fundamentalsExtraPaths is mainly a backtest field.
† Saved/applied when present in the form/payload helpers; the Run backtest modal may not expose SL/TP/risk inputs in the UI.
ohlcvSource: "alpaca" or "b2" (QuantCraft price feed) for backtest.
tickMode: Bulk only — "timer" (Timer cycle) or "tick" (Live tick stream).
includeFactors: When true, runs attach global Fama-French factor data (Premium / free-data when allowed; cleared on load when the gate disallows it). Strategies read fama_french.qc; monthly rows are a YYYYMM dict — see Fama-French factors for latest_row / rows_chronological.
secondaryTimeframes: List of extra bar sizes for rt.get_bar(Timeframe.X, shift) (e.g. ["1Hour", "1D"]). Omitted from saved files when empty. On load, entries matching the restored primary timeframe are dropped automatically. See OHLCV and bar data.
Commission / slippage keys (commissionModel, commissionCost, commissionMinTradeCost, slippageModel, slippageVolumeLimit, slippagePriceImpact, slippageSpread): Saved from backtest only. See Account model for model meanings.
inputParams shape
Object keyed by script parameter name. Each entry:
"LOOKBACK": {
"type": "int",
"value": "20",
"optStep": "5",
"optMax": "40"
}optStepandoptMaxare saved from backtest only (optimization grid). Forward modals strip them on load.- Only names that exist in the currently loaded script are applied; other names in the file are ignored.
See Input parameters for how params.NAME is discovered in strategy code.
Cross-modal load
You can load a .qcs file saved from one modal into another. The app applies compatible fields only and silently skips the rest.
| From → To | What transfers |
|---|---|
| Backtest → bulk forward | symbols + assetType → target scope and stock/crypto selections; timeframeAlpaca or B2 d/w → timeframeUi; secondaryTimeframes; tickMode if present; fundamentals/factors fields; inputParams; timerIntervalMs if present |
| Backtest → chart forward | inputParams, fundamentals fields, includeFactors, secondaryTimeframes, timerIntervalMs; dates, balance, and optimization fields are ignored |
| Bulk forward → backtest | selectedStocks / selectedCrypto → symbols; timeframeUi → timeframeAlpaca (or B2 when no Alpaca keys); inputParams |
| Any → any | Unknown or inapplicable keys are ignored without error |
Timeframe mapping
| Source | Maps to |
|---|---|
timeframeUi 1D / 1Week | Backtest timeframeAlpaca, or B2 timeframeB2 d / w when data source is B2 |
Backtest timeframeB2 d / w | Bulk timeframeUi 1D / 1Week |
Backtest timeframeB2 m (monthly) | No bulk equivalent — skipped on cross-load |
Symbols and bulk targets
- Backtest → bulk:
symbolsare classified intoselectedStocksorselectedCryptowhen possible; target scope becomes Selected. - Bulk → backtest: Selected stocks and crypto merge into the
symbolsarray;assetTypeis inferred from the selection.
Bulk forward edit mode
When editing an existing bulk run, Load still applies targets, period, timeframe, timer, tick mode, and script params. algoId is not changed (algorithm is fixed for that run).
Related workspace artifacts
| Extension | Purpose |
|---|---|
.py | Strategy source files (workspace mirror) |
.qcraft.json | Compiled runnable bundle for Trade / forward runs |
.qcs | Saved run modal presets (this page) |
