Public-safe tooling for local-first trading strategy research, MT5 backtests, and report review.
This repository contains reusable workflow code, dashboard/report tooling, backtest harness scripts, and architecture notes. It intentionally excludes private alpha, generated backtest reports, raw market data, manual labels, local databases, broker-specific state, and research-session artifacts.
scripts/backtest/- shell harness for compiling EAs, generating MT5 tester configs, running single backtests, collecting exports, and running isolated worker pools.scripts/analysis/- dashboard/report generation and review helpers for normalized report JSON.docs/- architecture and operational notes for the review and MT5 worker flow.tests/- public-safe unit tests where available.
- Raw backtest outputs, trade logs, equity curves, generated dashboards, and screenshots.
- Local
var/,data/, andarchive/contents. - Manual annotations, labels, or private review notes.
- Broker credentials, terminal configs, Wine/MT5 machine state, and local databases.
- Private strategy research sessions and experiment artifacts.
The dashboard consumes normalized schema-v2 JSON reports from var/reports/dashboard/, but those report files are ignored by Git. You can generate reports locally or upload your own normalized report JSON in the dashboard UI.
The dashboard is a local stdlib Python server with an embedded vanilla-JS frontend using TradingView Lightweight Charts. The main report grid shows downsampled equity curves for speed; expanded asset cards render full-fidelity candles, downsampled equity lines, and entry/exit trade markers. Full SL/TP line overlays are intentionally hidden in expanded asset cards to avoid creating hundreds of chart series for high-trade assets. Review Mode keeps SL/TP overlays enabled because each streak window is small.
Run the dashboard locally:
python3 scripts/analysis/report_dashboard_server.py --host 0.0.0.0 --port 8765Then open http://127.0.0.1:8765 or http://localhost:8765.
For browser-side timing logs while tuning expanded cards:
localStorage.dashboardPerf = '1';
location.reload();Disable timing logs with:
localStorage.removeItem('dashboardPerf');
location.reload();Single run:
scripts/backtest/run_backtest.sh experiments/runs/<run_id>.confTwo-worker pool:
scripts/backtest/run_backtest_pool.sh experiments/runs/<run_list.txt> worker_01 worker_02The harness writes generated outputs under var/reports/<run_id>/, which is intentionally ignored.
Treat this repo as reusable infrastructure, not a publication of private strategy edge. Before pushing, keep the public commit curated: source, docs, tests, and schemas only. Generated reports, labels, data, local MT5 state, and private research notes stay out of Git.