Warum wir es gebaut haben PineForge.
Drei Wege, die wir nicht gegangen sind. Zwei Jahre Jagd auf zwei Strong-Tier-Parity-Cases. Eine These: PineScript verdient eine richtige Runtime.
Warum Offline-Reproduzierbarkeit
TradingView ist der Ort, an dem die meisten Pine-Strategien leben — aus gutem Grund: Chart-seitige Sofort-Iteration, riesige Community, Social Sharing. Was nicht mitgeliefert wird, ist eine Offline-Runtime: Du kannst die Engine-Version nicht pinnen, du kannst keinen Backtest in CI fahren, du kannst eine Trade-Liste nicht Bit für Bit auf einer anderen Maschine reproduzieren.
Beim Browsen von Chart-Ideen ist das egal. Beim Bau einer Strategie, hinter die du echtes Geld setzt, ist es alles. Die Lücke zwischen „Ich sehe eine Zahl im Browser“ und „Ich habe einen Audit-Trail“ ist genau das, was wir schließen wollten — ohne die Pine-Sprache zu verlassen.
Warum nicht zu PyneCore beitragen
PyneCore ist die ambitionierteste Open-Source-PineScript-Engine. Wir nutzen sie selbst als Second-Opinion-Oracle. Wir haben überlegt, alles, was wir gebaut haben, upstream zu pushen. Zwei Gründe dagegen:
- Runtime-Modell. PyneCore interpretiert Pine in Python. PineForge transpiliert Pine nach C++ und kompiliert zu einer `.so`. Andere Geschwindigkeiten, andere Parity-Tradeoffs, andere Distribution-Story. Keines ist falsch — aber du kannst das eine nicht aufs andere schrauben, ohne beides neu zu schreiben.
- Distribution. Eine kompilierte `.so` lässt Verkäufer Strategien an Käufer ausliefern, ohne den Quellcode preiszugeben. Das ist die Marketplace-These (geplant für 2027). Sie steht zu Recht nicht auf PyneCores Roadmap — anderes Produkt.
Wir behandeln PyneCore als Second Source. Jedes PineForge-Release fährt den Parity-Sweep gegen PyneCore und TradingView. Ihre Excellent-Tier-Quote ist hoch genug, dass Disagreements zwischen den zwei Engines fast immer einen Bug bei einer der beiden bedeuten — meistens bei uns.
Warum nicht Backtrader erweitern
Backtrader ist das Arbeitstier des Python-Algo-Tradings. Solide, geschätzt, und für diesen Job die falsche Form. Es ist ein Python-natives Backtesting-Framework, das zufällig Custom-Strategy-Klassen unterstützt. Pine ist eine andere Sprache mit anderer Semantik — du kannst `request.security()`-Lookahead, Intra-Bar-Order-Processing oder `oca_name`-Exit-Gruppen nicht durch noch mehr Python nachbauen.
Und wieder: eine Backtrader-Strategie ist Python-Source, distribuierbar als Python-Source. Der Compiled-Binary-Marketplace setzt einen Transpile-Schritt voraus, der ein deploybares Artefakt erzeugt. Backtraders Surface bietet das nicht.
Die Jagd auf 165/167
Wir haben mit 9 Strategien und 76% strikter Parität angefangen. Zwei Jahre später: 167 Strategien, 165 strikt. Die Lücke von 76 auf 98,8% wurde nicht durch mehr Codegen geschlossen — sie wurde geschlossen, indem wir Vier-Nachkomma-Divergenzen einzeln über Wochen jagen.
Die meisten dieser Wochen sind in TradingViews spezifischen Definitionen von Wörtern wie „Exit“, „Fill“, „Trail“ versickert — die Pine-Doku beschreibt die API; die genaue Semantik des Order-Processings wird erst sichtbar, wenn man Trade-Listen Bar für Bar diffft. Genau das haben wir getan, immer wieder gefragt, warum unsere und die Referenz auseinandergingen — und die Unterschiede einen nach dem anderen ausgebügelt.
Die zwei Strong-Tier-Cases sind die spannenden — Corner Cases, die das tiefste Graben gekostet haben und auf der Roadmap zum Schließen stehen. Wir behandeln sie als Forschung, nicht als Peinlichkeit.
Was als Nächstes kommt
Q3 2026: Optuna-Integration. Optimiere jede Strategie auf jede One-Liner-Zielfunktion — Sharpe, Drawdown, Profit Factor, deine eigene Python-Lambda. Walk-Forward-Analyse von Haus aus, Out-of-Sample ist Default, nicht nachträglich.
Q4 2026: Gehostetes Studio startet. Project-Workspace, Backtest, Optimize, Compare, Paper-Trade — alles im Browser, alles auf der gleichen `.so`, die du heute schon lokal via CLI laufen lassen kannst. Wave-1-Zugang geht zuerst an die Early-Access-Warteliste.
2027: Marketplace öffnet. Verkäufer publishen kompilierte `.so`-Binaries mit verkäufer-definierten Lizenzgrenzen: Zeit, Maschine, Broker, Symbol, Input-Ranges. Käufer fahren auf eigenen Daten, sehen den Source nie. Dasselbe Distribution-Modell, das bei MQL5 funktioniert hat — nur dass die Strategien in Pine geschrieben sind, die Runtime auditierbar ist und die Lizenzen widerrufbar sind.
Das eine Prozent, das man nicht von Hand schreiben kann
Jede Parity-Engine, von der wir je gelesen haben, wurde von jemandem gebaut und liegen gelassen, der bei 90% das Interesse verloren hat. Die letzten 10% sind repetitive, aufwändige, glanzlose Arbeit — sie muss von Leuten gemacht werden, die sich ehrlich darüber freuen, zu erklären, warum zwei Trade-Listen um 0,0001% auseinandergehen.
Das ist das Team. Das ist die Disziplin. Das ist, was die Runtime es wert macht, dein Geld darauf laufen zu lassen.