Skip to content
kobiakov.dev
KI & Tools

Stoic Citadel — Sicherheitsorientierte Algo-Trading-Plattform

Eine 47.650-Zeilen-Async-Python-Plattform für MetaTrader 5 / Prop-Firm-Challenges, aufgebaut um eine fail-closed, siebenschichtige Risiko-Engine — und ehrlich genug, um out-of-sample zu beweisen, dass die eigene Strategie noch keinen Edge hat.

Zeitraum

2026

Rolle

Lead Engineer

47.6k LOC

Codebase

484 · 80% gate

Tests

7 gates

Safety layers

Technisches Ergebnis

7-layer fail-closed risk engine · 484 tests

Ehrliches Fazit

Infrastruktur- & Risiko-Engineering-Showcase — kein validierter Edge (ehrlich berichtet)

Problem

Private Algo-Trading-Projekte scheitern auf zwei klassische Arten: Ein Konto wird gesprengt, weil ein fehlender Stop-Loss oder ein hängender Prozess ungesichert blieb, oder eine Strategie sieht nur profitabel aus, weil der Backtest still zukünftige Daten durchsickern ließ. Prop-Firm-Regeln (5% Tagesverlust, 10% Gesamt-Drawdown) bestrafen beide Fehler sofort.

Die Herausforderung

Eine Trading-Plattform bauen, bei der Sicherheit eine Eigenschaft der Architektur ist — ein fehlender Stop, veraltete Daten oder ein eingefrorener Bot dürfen das Konto niemals sprengen — und bei der die Forschung streng genug ist, die eigene Strategie zu verwerfen, wenn der Edge nicht real ist.

Die Lösung

Ein entkoppeltes Makro/Mikro-Design: Eine Freqtrade-+-ML-Strategie veröffentlicht ein TRADE_INTENT über Redis und handelt nie direkt; ein schneller Async-Microservice durchläuft sieben unabhängige Risiko- und FTMO-Gates, dimensioniert jede Position anhand des realen Stop-Abstands und führt über Smart-Order-Typen an einer gehärteten MT5-Bridge aus. Ein unabhängiger Equity-Watchdog läuft als separater Prozess und kann das Buch glattstellen — stop-lose Positionen per Ticket schließen — selbst wenn der Haupt-Bot hängt. Ein leckfreier Walk-Forward (Purge + Embargo, realistische FX-Kosten) testete die Strategie dann out-of-sample und fand korrekt keinen validierten Edge.

Einblick in die Plattform

Engineering & ehrliche Forschung — in Zahlen

Jedes Diagramm wird aus dem Repository generiert — die Architektur, die siebenschichtige Risk-Engine und die Walk-Forward-Forschung, die korrekt feststellte, dass es noch keinen validierten Edge gibt. Nichts hier schönt die Performance. Zum Vergrößern auf eine Abbildung klicken.

Architektur

Entkoppelte Makro-/Mikro-Pipeline. Die ML-Strategie publiziert nur einen TRADE_INTENT über Redis; ein schneller asynchroner Service prüft das Risiko und führt aus — schwere Modelllogik kann einen Trade nie blockieren.

Erklärbares ML

Die Modellschicht ist kontrolliert statt Blackbox: LightGBM/XGBoost-Ensembles werden meta-gelabelt (TripleBarrier), in einer Registry mit 12 Modellen samt Lifecycle-Status versioniert, auf Drift überwacht — und per SHAP erklärt, bevor ihnen vertraut wird.

Mehrschichtige Absicherung

Sieben unabhängige Sicherheitsebenen. Eine Ablehnung auf irgendeiner Ebene stoppt den Trade; die letzte läuft als separater Prozess, der das Buch glattstellen kann — Positionen ohne Stop werden per Ticket geschlossen — selbst wenn der Haupt-Bot hängt.

Das ehrliche Ergebnis

Out-of-Sample, nach realistischen FX-Kosten, erreicht kein Instrument die Robustheitsschwelle, und beide FX-Paare liegen unter Breakeven. Der Walk-Forward wurde gebaut, um die Strategie zu widerlegen — und genau das tat er. Kein Live-Einsatz.

Risiko unter Kontrolle

Bei jedem Instrument bleibt der Drawdown weit innerhalb der Prop-Firm-Limits — das Ergebnis bewusst konservativer Positionsgrößen und seltener Einstiege, kein Beleg für einen bewiesenen Edge.

Durch Tests belegt

484 automatisierte Tests über den gesamten Stack — inklusive Property-based-Tests (Hypothesis) und Chaos-Tests — mit 80%-Coverage-Gate und blockierendem Secret-Scan in der CI.

Technische Highlights

Seven-layer defense-in-depth: every order passes data-freshness, market-safety, risk, circuit-breaker, FTMO, sizing and an out-of-band equity-watchdog gate

Fail-closed by default: the MT5 bridge refuses to run without an API key; the loader raises StaleDataError rather than trade on stale candles; the margin guard fails closed

Independent dead-man's switch closes naked (stop-less) positions by ticket after a grace period — proven by regression tests

FTMO compliance as a first-class module: daily 4% / weekly 8% / max-DD 9.5% limits, +10% profit-target halt, ≥4 trading days, restart-safe state

Leak-free walk-forward research (purge + embargo, realistic FX costs) that correctly concluded NO validated edge — profit factor below 1.0 out-of-sample

484 automated tests (property-based + chaos) with an 80% coverage gate and a blocking secret-scan in CI

Systemarchitektur

Python 3.12 · AsyncIO (async execution engine)

Freqtrade (macro strategy layer)

Redis pub/sub (macro → micro handoff)

FastAPI MT5 bridge (API-key + rate-limit)

LightGBM · XGBoost · Optuna · River (ML/MLOps)

PostgreSQL · SQLAlchemy · Alembic

Prometheus · Grafana · Loki (observability)

Docker · GitHub Actions (ruff · mypy · bandit · semgrep · CodeQL · Trivy)

Independent equity watchdog (out-of-band kill-switch)

Kerntechnologien

Python 3.12AsyncIOFastAPIRedisMetaTrader 5
Share: