Skip to content

First run

← Install with Docker · ← Install from source · Docs home

From an installed app to your first validated strategy in a few minutes. Everything here applies to both editions; where a step differs, the Docker-edition variant is called out.

Docker edition (from the bundle folder):

Terminal window
docker compose up -d # stop with: docker compose down

Open http://localhost:8080.

Source install:

Terminal window
scripts/start.sh # stop with: scripts/stop.sh

This starts the three host processes — the API, the worker, and the frontend dev server — and runs database migrations. Logs are written under .run/; the dev server prints the URL (typically http://localhost:5173).

Holdout Lab is single-user. The first time you open it, register a username and password from the login screen — this becomes the one account; registration refuses a second. (Equivalently, create it from the CLI: cd backend && uv run python -m ats.cli create-user --username <you>.) Passwords are hashed with Argon2id.

There is no email/password-reset flow by design (it’s your machine). Forgot your password? Reset it locally — uv run python -m ats.cli reset-password --username <you> — which is exactly where the login screen’s “Forgot password?” link points. See the admin CLI.

Open Settings (the gear in the header) and paste your free Tiingo token, then hit Test to confirm the key actually works before you rely on it. Keys are stored locally (backend/.env on a source install; a persistent Docker volume in the container edition) and never leave your machine. (You can also add Databento, Telegram, Anthropic, and IB account ids here, each with its own Test — see the configuration reference.)

After adding a data key, click Restart worker in the banner Settings shows you, so the worker can use it for ingestion. The Test works immediately; the restart is only needed to use the key — every other key applies on its own, as each key’s caption in Settings says.

No keys? The Getting started checklist’s crypto path needs none: ingest the crypto starter basket (free public data) and skip straight to backtesting.

Go to the Data tab and ingest daily bars for a liquid ETF (e.g. SPY). Type a bare US ticker (share classes hyphenated, BRK-B); the Symbol box validates it live and shows the instrument’s name and available date range before you submit. The bars land in the local catalog, which every backtest reads from. (Ticker formats, intraday, and crypto ingestion are covered in ingestion.)

Go to Backtests → pick a strategy from the library (e.g. ibs_reversion), set the symbol and date range, and run a single backtest. The detail view shows the full metrics, the candlestick chart with fills, the equity curve overlaid with buy-and-hold, a drawdown subplot, the round-trip trades, and a Monte Carlo panel.

A positive backtest means little on its own. Run the strategy through the gauntlet — the rule test, walk-forward, optimization, deflated Sharpe, and cost stress — and watch its readiness score on the Research tab. This is the heart of the product: see the gauntlet and the research ladder.

The whole loop — ingest → backtest → validate → judge against buy-and-hold — is the discipline Holdout Lab exists to teach and enforce. When something survives the gauntlet, you can promote it to paper trading; only what survives that, and an explicit approval, can go live.

Once you’ve ingested data and recorded runs, protect them. Settings → System shows the right backup path for your edition:

  • Docker edition — data persists on named volumes; dump the database any time with the pg_dump command the panel shows. See Install with Docker → Backup & restore.
  • Source install — a Back up now button (DB + catalog + .env$ATS_BACKUP_DIR, default ~/ATS-backups) and the scripts/restore.sh recovery command. Backups aren’t scheduled automatically until you install the launchd maintenance agent (scripts/install-launchd.sh) — the same panel nudges you if it’s off. See the production runbook for the full backup/restore drill.
  • The in-app Learn tab is a structured course covering the same methodology hands-on.
  • The Studio lets you describe a strategy in plain English — see Studio.
  • Explore every tab in the UI tour.