Backtrader-Alternative Python-Frameworks und Migration.
Backtrader läuft bei vielen Python-Tradern noch, wird aber seit April 2023 nicht mehr weiterentwickelt: Die letzte Version 1.9.78.123 und der letzte Commit im Hauptzweig des Repositorys stammen vom 19.04.2023. Für reine Backtests auf einem stabilen Rechner ist das kein Notfall, für Live-Handel und neue Python-Versionen aber ein wachsendes Risiko. Stand Oktober 2026 gibt es gepflegte Nachfolger für unterschiedliche Zwecke: backtesting.py für einfache Einzelstrategien, vectorbt für Parameterstudien, NautilusTrader für ereignisgetriebenes Live-Trading und QuantConnect LEAN für Multi-Asset mit Cloud-Option. Dieser Artikel ordnet den Wartungsstatus ein, zeigt eine Migrationsmatrix nach Anwendungsfall und beschreibt einen Paritätstest, mit dem Sie prüfen, ob alter und neuer Backtest dieselben Trades liefern. Er richtet sich an private Trader mit eigenem Code ebenso wie an Teams, die ein bestehendes System modernisieren wollen.
Wird backtrader noch gepflegt?
Nein, nicht im Sinne einer aktiven Weiterentwicklung. Auf PyPI ist 1.9.78.123 vom 19.04.2023 die letzte Version, und im Hauptzweig des Repositorys mementum/backtrader stammt der letzte Commit vom selben Tag. Das Projekt ist weder archiviert noch offiziell eingestellt, und es hat rund 23.000 Sterne auf GitHub. Bugfixes, Anpassungen an neue Bibliotheksversionen oder Sicherheitskorrekturen kommen aber seit über drei Jahren nicht mehr.
Auch der Ausweg über einen Fork trägt nur begrenzt. Der bekannteste Community-Fork backtrader2 hat seinen letzten Commit im November 2021. Wer auf backtrader bleibt, übernimmt die Wartung also faktisch selbst.
Das ist nicht automatisch ein Grund zur Eile. Backtrader ist reines Python mit wenigen Pflichtabhängigkeiten, und eine eingefrorene Umgebung mit festen Paketversionen kann jahrelang dieselben Ergebnisse liefern. Das Risiko entsteht an den Rändern: neue Python-Versionen, neue Versionen von pandas, NumPy oder matplotlib, und vor allem Broker-Anbindungen im Live-Betrieb.
Welche Risiken bringt ein ungepflegtes Framework mit sich?
Drei Risiken sollten Sie getrennt bewerten, weil sie sehr unterschiedlich schwer wiegen.
- Python-Versionen: Die PyPI-Klassifikatoren von backtrader reichen nur bis Python 3.7, das seit dem 27.06.2023 keine Sicherheitsupdates mehr bekommt. Neuere Versionen sind nicht offiziell getestet. Python 3.10 hat am 01.10.2026 sein Lebensende erreicht, und moderne Pakete verlangen zunehmend 3.11 oder 3.12 und höher. Ob backtrader in Ihrer Kombination aus Python, pandas und matplotlib fehlerfrei läuft, müssen Sie selbst prüfen und bei jedem Update erneut prüfen.
- Broker-Anbindungen: Für Interactive Brokers nutzt backtrader die Bibliothek IbPy. Deren Repository ist archiviert, die letzte Version auf PyPI (IbPy2 0.8.0) stammt von 2016, und schon die IbPy-Readme verweist auf die offizielle Python-API von IBKR. Die Oanda-Anbindung importiert die Bibliothek
oandapyaus Oandas GitHub-Repository, deren letzter Commit im Hauptzweig von 2016 stammt. Für Live-Handel ist das der kritischste Punkt, denn Broker ändern ihre Schnittstellen, und niemand passt den Code an. - Sicherheit und Abhängigkeiten: Ein Framework ohne Pflege bekommt keine Korrekturen, wenn sich Abhängigkeiten ändern. Wer alte Versionen festschreibt, um backtrader lauffähig zu halten, hält damit oft auch veraltete Pakete im System, auf einem Server mit Internetzugang und Broker-Zugangsdaten.
Für reine Forschung auf einem abgeschotteten Rechner sind diese Risiken überschaubar. Für einen Bot, der rund um die Uhr Orders an einen Broker schickt, sind sie es nicht.
Die Alternativen im Überblick: backtesting.py, vectorbt, NautilusTrader, LEAN.
backtesting.py (Version 0.6.6 vom 22.07.2026, Lizenz AGPL-3.0) ist eine schlanke Bibliothek mit einem Klassenmodell, das backtrader-Nutzern vertraut vorkommt. Die API ist klein: Sie leiten eine Klasse von Strategy ab, berechnen Indikatoren in init() und handeln in next(). Ein Backtest bekommt genau einen OHLC-Datensatz, ist also auf ein Instrument je Lauf ausgelegt. Market-, Limit- und Stop-Orders sowie Stop-Loss und Take-Profit sind eingebaut, Gebühren und Spread lassen sich parametrieren. Live-Handel gehört nicht zum Umfang.
vectorbt (Open-Source-Version 1.1.1 vom 26.09.2026, Python 3.11 bis 3.14) rechnet vektorisiert auf pandas- und NumPy-Strukturen, beschleunigt über Numba und seit Version 1.0 optional über eine Rust-Engine. Damit lassen sich Tausende Parameterkombinationen in kurzer Zeit testen. Die Logik ist anders als bei backtrader: Sie erzeugen Signal-Arrays statt Ereignisse in einer Schleife zu verarbeiten. Limit-Orders und Hebel nennt der Hersteller als Funktionen der kostenpflichtigen PRO-Version. Die Lizenz ist Apache 2.0 mit Commons Clause: Die Nutzung ist frei, der Verkauf von Produkten oder Diensten, die im Wesentlichen aus der Software selbst bestehen, ist aber ausgeschlossen.
NautilusTrader (stabil 1.231.0 vom 02.08.2026, Python ab 3.12, Lizenz LGPL-3.0) ist ereignisgetrieben wie backtrader, aber auf Live-Betrieb ausgelegt: Dieselbe Strategie läuft im Backtest und live, Adapter gibt es unter anderem für Interactive Brokers, Binance, Bybit und Databento. Version 2.0 mit Rust-Kern ist als 2.0.0rc6 vom 05.10.2026 noch Release Candidate. Details stehen im Artikel NautilusTrader 2.0: was der Rust-Kern für Python-Trader ändert.
QuantConnect LEAN ist eine quelloffene Engine (Apache 2.0) für Python und C#, mit Aktien, Optionen, Futures, Forex und Krypto. Die LEAN CLI (Version 1.0.229 vom 28.08.2026) führt Backtests lokal in Docker aus oder schickt sie in die QuantConnect-Cloud; für den Live-Handel unterstützt sie zahlreiche Broker, darunter Interactive Brokers. Laut Dokumentation setzt die CLI die Mitgliedschaft in einer Organisation mit bezahltem Tarif voraus.
Welches Framework passt zu welchem Anwendungsfall?
Die richtige Wahl hängt weniger davon ab, welches Framework „am besten“ ist, als davon, wofür Sie backtrader heute einsetzen.
| Ihr Anwendungsfall mit backtrader | Naheliegender Nachfolger | Migrationsaufwand | Achten Sie auf |
|---|---|---|---|
| Einzelstrategie auf einem Instrument, nur Backtest | backtesting.py | gering, ähnliches Klassenmodell | Standard-Positionsgröße, AGPL-Lizenz bei Weitergabe |
| Parameterstudien, viele Instrumente, Screening | vectorbt | mittel, Umdenken von Schleife zu Arrays | Ausführungszeitpunkt der Signale, Order-Logik der Open-Source-Version |
| Ereignisgetriebener Live-Handel, z. B. über Interactive Brokers oder Krypto-Börsen | NautilusTrader 1.x stabil, 2.0 beobachten | hoch, neues Domänenmodell | RC-Status von 2.0, Python ab 3.12 |
| Multi-Asset-Portfolios, Optionen und Futures, Cloud-Infrastruktur gewünscht | QuantConnect LEAN | hoch, eigene API und Datenformate | Tarifbindung der CLI, Datenbeschaffung, Docker |
| Bestehender Live-Bot mit eigener Broker-Schicht, backtrader nur als Backtester | vorerst keiner, Umgebung einfrieren | kein Umbau, aber Pflegeaufwand | feste Paketversionen, isolierte Umgebung |
Häufig ist eine Kombination sinnvoll: vectorbt für die Breitensuche über Parameter, ein ereignisgetriebenes Framework für die realistische Simulation einzelner Kandidaten. Wie sich vektorisierte und ereignisgetriebene Ansätze grundsätzlich unterscheiden, beschreibt der Artikel Backtesting mit Python: Frameworks und eigene Lösungen. zipline-reloaded taucht in vielen älteren Vergleichen auf; die letzte Version 3.1.1 erschien am 19.07.2025. Prüfen Sie den Pflegestatus eines Zielframeworks vor der Migration genauso gründlich wie bei backtrader.
Migration planen: Strategie-Logik, Daten, Gebühren, Ordertypen.
Eine Migration scheitert selten an der Strategie-Idee, sondern an stillen Annahmen, die backtrader für Sie getroffen hat. Diese Annahmen sollten Sie aufschreiben, bevor Sie die erste Codezeile umbauen.
- Strategie-Logik trennen: Ziehen Sie Signalberechnung und Regeln aus der backtrader-Klasse in reine Python-Funktionen, die nur Daten bekommen und Entscheidungen zurückgeben. Diese Funktionen lassen sich danach in jedes Framework einhängen und einzeln testen.
- Ausführungszeitpunkt festhalten: Backtrader führt Market-Orders standardmäßig zum Eröffnungskurs der nächsten Bar aus, sofern Sie kein Cheat-on-Close aktiviert haben. backtesting.py tut das ebenfalls, bietet mit
trade_on_closeaber eine Abweichung an. Bei vectorbt hängt der Ausführungspreis davon ab, welchen Preis und welche Signalverschiebung Sie übergeben. Eine Bar Versatz reicht, um jeden Trade zu verändern. - Positionsgröße prüfen: Der Standard-Sizer von backtrader handelt eine feste Stückzahl, backtesting.py investiert ohne Angabe fast das gesamte verfügbare Kapital. Setzen Sie die Größe in beiden Systemen explizit.
- Gebühren und Slippage abbilden: Übertragen Sie Kommissionsmodell, Spread und Slippage bewusst. Prozentuale und feste Gebühren, Mindestgebühren und Spread werden in jedem Framework anders parametriert.
- Ordertypen abgleichen: Prüfen Sie, ob Limit-, Stop-, Stop-Limit- und OCO-Logik im Zielframework existieren und gleich ausgelöst werden, etwa wenn Stop-Loss und Take-Profit in derselben Bar erreicht werden.
- Daten identisch halten: Nutzen Sie für alt und neu exakt dieselbe Datei mit denselben Zeitstempeln, Zeitzonen und Anpassungen für Splits und Dividenden. Aufwärmphasen von Indikatoren und deren Glättung (etwa beim RSI) unterscheiden sich zwischen Bibliotheken.
Paritätstest: gleiche Trades in alt und neu.
Ein Paritätstest vergleicht nicht Kennzahlen wie Sharpe-Ratio oder Endkapital, sondern die einzelnen Trades. Gleiche Kennzahlen können aus unterschiedlichen Trades entstehen. Gleiche Trades führen bei gleichen Kosten dagegen zum gleichen Endkapital; Kennzahlen wie die Sharpe-Ratio können trotzdem leicht abweichen, weil Frameworks sie unterschiedlich berechnen und annualisieren. Wenn ich bestehende Systeme auf ein neues Framework umziehe, steht dieser Vergleich deshalb vor jeder Optimierung.
Exportieren Sie aus beiden Systemen eine Trade-Tabelle mit Einstiegszeit, Ausstiegszeit, Richtung, Größe und Preisen. In backtrader sammeln Sie dafür abgeschlossene Trades in notify_trade(), backtesting.py liefert sie in stats['_trades'], vectorbt über pf.trades.records_readable. Nach einer Vereinheitlichung der Spaltennamen prüft eine kurze Funktion beide Listen:
import pandas as pd
def vergleiche_trades(alt, neu, toleranz=1e-6):
# Spalten: entry_time, exit_time, side, size, entry_price, exit_price
m = alt.merge(neu, on=["entry_time", "side"], how="outer",
suffixes=("_alt", "_neu"), indicator=True)
nur_einseitig = m[m["_merge"] != "both"]
b = m[m["_merge"] == "both"]
abweichend = b[
(b["exit_time_alt"] != b["exit_time_neu"])
| (b["size_alt"] != b["size_neu"])
| ((b["entry_price_alt"] - b["entry_price_neu"]).abs() > toleranz)
| ((b["exit_price_alt"] - b["exit_price_neu"]).abs() > toleranz)
]
return nur_einseitig, abweichendGehen Sie in Stufen vor. Zuerst ohne Kosten und mit einer einzigen Market-Order-Logik, bis beide Listen identisch sind. Danach Gebühren und Slippage, dann Stop- und Limit-Orders, zuletzt Positionsgrößen über mehrere Instrumente. Jede verbleibende Abweichung sollten Sie erklären und dokumentieren können, etwa „unterschiedliche Füllregel bei Gap über den Stop“. Unerklärte Abweichungen sind ein Hinweis auf einen Fehler in der alten oder der neuen Version, nicht auf einen Rundungsunterschied. Legen Sie den Test als automatisierten Test im Repository ab, damit er bei jedem späteren Update erneut läuft.
Wann sich ein Wechsel (noch) nicht lohnt.
Ein Wechsel kostet Zeit und bringt neue Fehlerquellen. In einigen Fällen ist Abwarten die bessere Entscheidung.
- Reine Forschung in eingefrorener Umgebung: Wenn backtrader nur Backtests rechnet, in einer isolierten Umgebung mit festgeschriebenen Paketversionen läuft und keine Broker-Zugangsdaten berührt, ist das Risiko begrenzt. Dokumentieren Sie die Versionen und sichern Sie die Umgebung, zum Beispiel als Container-Image.
- Laufende Live-Systeme ohne Anlass: Ein funktionierender Bot sollte nicht mitten in einer aktiven Phase umgebaut werden. Planen Sie die Migration parallel und schalten Sie erst nach Paritätstest und einer Paper-Trading-Phase (Handel mit simuliertem Kapital) um.
- NautilusTrader 2.0 als Ziel: Solange 2.0 Release Candidate ist, rät das Projekt von Live-Kapital auf diesen Versionen ab. Wer jetzt migriert, landet auf 1.x und muss beim späteren Wechsel auf 2.0 voraussichtlich noch einmal Code anpassen. Für manche ist es sinnvoller, die Strategie-Logik jetzt zu entkoppeln und den Framework-Wechsel nach dem stabilen 2.0-Release zu machen.
Auch die Alternativen haben Grenzen. backtesting.py ist auf ein Instrument je Backtest ausgelegt, die Open-Source-Version von vectorbt hat einen eingeschränkten Ordertypen-Umfang, LEAN bindet Sie an Datenformate und für die CLI an einen bezahlten Tarif. Die Lizenzen (AGPL, Commons Clause, LGPL, Apache 2.0) wirken sich unterschiedlich aus, sobald Sie Software weitergeben oder als Dienst anbieten. Das sollten Sie im Einzelfall rechtlich prüfen lassen. Und kein Framework ändert etwas daran, dass ein Backtest überangepasst sein kann. Ein sauberer Umzug macht eine schwache Strategie nicht besser, und automatisierter Handel kann zu hohen Verlusten bis zum Totalverlust führen.
Was Sie jetzt konkret tun können.
- Bestand aufnehmen: Notieren Sie, wofür Sie backtrader nutzen (nur Backtest oder auch live), welche Broker-Anbindung, welche Python- und Paketversionen.
- Umgebung einfrieren: Schreiben Sie alle Paketversionen fest und sichern Sie einen reproduzierbaren Stand, bevor Sie irgendetwas ändern.
- Referenz-Trades erzeugen: Lassen Sie jede Strategie auf einem festen Datensatz laufen und speichern Sie die Trade-Liste als Referenz.
- Zielframework nach Anwendungsfall wählen: Nutzen Sie die Tabelle oben und testen Sie den Kandidaten zuerst mit Ihrer einfachsten Strategie.
- Paritätstest automatisieren: Erst wenn alt und neu dieselben Trades liefern, folgen Optimierung, Paper-Trading und erst dann echtes Kapital.
Wenn Sie dabei Unterstützung bei Architektur, Tests oder Live-Infrastruktur suchen, finden Sie auf der Seite Trading-Automatisierung beschrieben, wie ich private Trader und Unternehmen dabei begleite.
Häufige Fragen.
Wird backtrader noch weiterentwickelt?
Nein. Die letzte Version 1.9.78.123 erschien am 19.04.2023, und seitdem gab es keinen neuen Commit im Hauptzweig. Das Projekt ist nicht archiviert und läuft in vielen Umgebungen weiter, bekommt aber keine Fehlerkorrekturen, keine Anpassungen an neue Python-Versionen und keine Pflege der Broker-Anbindungen mehr.
Welche Python-Bibliothek ist die beste backtrader-Alternative?
Das hängt vom Einsatz ab. Für einfache Einzelstrategien ist backtesting.py am nächsten an backtrader. Für Parameterstudien über viele Instrumente eignet sich vectorbt. Für ereignisgetriebenen Live-Handel ist NautilusTrader stark, für Multi-Asset-Portfolios mit Cloud-Option QuantConnect LEAN. Einen Eins-zu-eins-Ersatz gibt es nicht.
Kann ich backtrader mit aktuellen Python-Versionen nutzen?
Möglicherweise, aber ohne Gewähr. Die PyPI-Angaben von backtrader reichen nur bis Python 3.7, neuere Versionen sind nicht offiziell getestet. Ob Ihre Strategie mit aktuellem Python, pandas und matplotlib fehlerfrei läuft, müssen Sie selbst prüfen, am besten mit festgeschriebenen Paketversionen und einem Vergleich gegen gespeicherte Referenz-Trades.
Was ist ein Paritätstest bei der Migration eines Backtests?
Ein Paritätstest prüft, ob alter und neuer Backtest auf denselben Daten dieselben Trades erzeugen: gleiche Ein- und Ausstiegszeitpunkte, Richtungen, Größen und Preise. Man beginnt ohne Kosten und mit einfachen Orders und ergänzt Gebühren, Stops und Positionsgrößen schrittweise. Jede verbleibende Abweichung sollte erklärbar sein.
Sollte ich jetzt auf NautilusTrader 2.0 migrieren?
Für Live-Handel mit echtem Kapital eher nicht. Stand 07.10.2026 ist 2.0 noch Release Candidate (2.0.0rc6), und das Projekt rät davon ab, Release Candidates live einzusetzen. Die stabile Version ist 1.231.0. Sinnvoll ist, die Strategie-Logik schon jetzt vom Framework zu entkoppeln und 2.0 parallel zu testen.
Quellen und Stand.
- backtrader auf PyPI (Version 1.9.78.123) — Python Package Index
- mementum/backtrader (Repository, Commit-Historie) — GitHub
- blampe/IbPy (archiviertes Repository) — GitHub
- polakowo/vectorbt (README, Lizenz, Releases) — GitHub / Oleg Polakow
- backtesting.py API-Referenz — kernc / backtesting.py
- nautilus-trader auf PyPI — Python Package Index
- LEAN CLI: Getting Started — QuantConnect
- Status of Python versions — Python Software Foundation
- backtrader2/backtrader (Community-Fork, Commit-Historie) — GitHub
- zipline-reloaded auf PyPI (Version 3.1.1) — Python Package Index
Stand: 7. Oktober 2026. Produkte, Funktionen und Preise ändern sich schnell; maßgeblich sind die Angaben der Anbieter und Behörden.
Sie wollen eine backtrader-Strategie auf ein gepflegtes Framework umziehen? Unverbindlich anfragen — wir klären Zielframework, Paritätstest und den Weg in den Live-Betrieb. Mehr zu meinem Angebot: Trading-Systeme entwickeln lassen.