AlgoDraft
AI trading strategy platform
AlgoDraft turns a trader's plain-English strategy into a structured, reviewable spec, asks about every missing or ambiguous rule, then generates a demo-only MetaTrader 5 Expert Advisor from tested templates. AI interprets; deterministic validation decides what is allowed. Includes a typed spec validator with SHA-256 approval, a Python reference backtester with reproducible manifests, and user accounts with a workspace.

- Built with
- PythonFastAPITypeScriptReactViteMQL5Gemini APIPostgreSQL (Neon)DockerpytestRender
- Type
- Client & collaborative work
- Source
- Private client repository
How it decides
Strategy text → approved spec → demo EA
- person
- guesses / untrusted
- decides
- process
- storage
- third party
- trust boundary
Boundary Where guessing stops and something deterministic decides.
- AI interprets; deterministic validation decides what is allowed. Missing rules are never silently invented. repo docs
- Live interpreter on 30 curated cases: 0 invented values, 100% recall. repo docs
- Clarifying questions come from fixed templates, not from the model. repo docs
- Approval is bound to a SHA-256 of the canonical spec. repo docs
The drawing, in words
AlgoDraft: Strategy text → approved spec → demo EA. Left of the redline is “Interpretation”; right of it is “Deterministic decisions”.
- Trader — plain-English rules (Interpretation)
- Interpreter — Gemini · structured (Interpretation)
- Evidence guard — drops unbacked values (Deterministic decisions)
- Validator — typed StrategySpec (Deterministic decisions)
- Questions — templated, per gap (Deterministic decisions)
- Approval — SHA-256 of spec (Deterministic decisions)
- MQL5 EA — templates · demo-only (Deterministic decisions)
- Backtester — reproducible manifest (Deterministic decisions)
Connections
- Trader → Interpreter (text)
- Interpreter → Evidence guard (draft)
- Evidence guard → Validator
- Validator → Questions (gaps)
- Questions → Trader
- Validator → Approval (valid)
- Approval → MQL5 EA
- MQL5 EA → Backtester
More screens

The problem
- Traders describe strategies in loose English. A model asked to turn that into code will happily fill gaps with values nobody chose. repo docs
What was built
- A typed StrategySpec, a deterministic validator and SHA-256 approval of the canonical spec. repo docs
- An interpreter that asks one templated question per missing or ambiguous rule. repo docs
- An MQL5 Expert Advisor generator built from tested templates, and a Python reference backtester with reproducible manifests. repo docs
- Accounts, owner-isolated strategies and a workspace UI. repo docs
My part
- Co-built with partners. Individual contributions are not itemised here.
Limits and open work
- Demo-only: no real-money trading and no broker connection. repo docs
- The generated EA still needs a MetaEditor compile and a demo-account run (pending MT5 access in the project docs). repo docs
Decisions worth knowing
The model never has the last word
The interpreter only drafts. An evidence guard drops values the text doesn't support, and a deterministic validator decides what is allowed.
repo docs
Approval is pinned to a hash
Approval is tied to a SHA-256 of the canonical spec, so a changed spec is a different, unapproved spec.
repo docs
Measured, not assumed
The live Gemini interpreter was checked against 30 curated cases: 0 invented values, 100% recall.
repo docs
A closer look
- text“Buy EURUSD when EMA 20 crosses above EMA 50 on M15. Risk 1 percent per trade.”
- draftentry, timeframe, risk — extracted; stop-loss — missing
- questionWhat stop-loss should each trade use?
- speccanonical JSON, every value with its provenance
- approvalsha256(canonical spec) — any edit makes a new, unapproved hash