Research → optimize → deploy

Typical path through the app. Each stage reads and writes the same optimization config.

  Backtest tab     historical run → metrics under outputs/backtest_results/
        │
        ▼
  Watcher          intensity 1–5 → updates best_parameters_so_far
        │                in core/optimization_config.json
        ▼
  Live Watcher     paper testnet and live testnet execution
        │
        ▼
  Settings         keys, alerts, version, rollback
Module Role
Backtest Spawns core/backtest.py runs from the dashboard. Persists per-run folders for charts, trades, and comparator views.
Watcher Long-running optimization loop (watcher.py). Intensity controls depth and frequency. Can run in backtest-only mode before live.
Live Watcher Connects to Binance testnet. Uses the same parameter set the watcher last wrote. Paper mode before mainnet.
Settings Exchange keys, notification channels, Getting started checklist, installed version, update check.
Feedback Structured tickets (fb-…) with diagnostics. Optional Discord bridge for staff — not required for customers.
Updates Pulls update_manifest.json from your release channel. Applies zip in-place; snapshots to backups/product_snapshots/ first.

On disk after install

Where the important files live. Full paths are relative to the install directory.

Configcore/optimization_config.json — strategy parameters (shared)
Secrets.env — license key, API keys (never uploaded)
Resultsoutputs/backtest_results/ — run history
Datadata/ — market data cache
Backupsbackups/product_snapshots/ — pre-update snapshots

Configuration model

The watcher writes best_parameters_so_far into core/optimization_config.json. Backtest and live watcher read that file — you do not fork separate live-only configs unless you choose to.