Optionsketten über die IBKR-API: Strikes, Greeks und Linien.
Eine Optionskette laden Sie über die Interactive Brokers API am besten in drei Schritten: Verfallstermine und Strikes mit reqSecDefOptParams abrufen, daraus eine kleine Auswahl gültiger Kontrakte bilden und nur für diese Kurse und Greeks abonnieren. Der Engpass ist selten der Code, sondern die Zahl der Marktdatenlinien: Zum Start können TWS und API zusammen 100 Instrumente gleichzeitig beobachten, und schon eine einzelne Kette eines liquiden Basiswerts hat oft weit mehr Kontrakte. Dazu kommen Abos für die Option (in den USA OPRA) und für den Basiswert, ohne die keine Greeks ankommen. Dieser Beitrag zeigt den Ablauf mit der offiziellen TWS API und mit der Python-Bibliothek ib_async, inklusive einer Skizze für das Paper-Konto, und benennt die Grenzen der Daten. Stand Oktober 2026; IBKR ändert Dokumentation, Preise und Limits regelmäßig.
Wie ruft man eine Optionskette über die IBKR-API ab?
Eine Optionskette ist die Gesamtheit aller Optionen auf einen Basiswert: alle Verfallstermine, alle Basispreise (Strikes), jeweils als Call und Put. Bei einem liquiden US-Basiswert kommen schnell mehrere tausend Einzelkontrakte zusammen. Wer die Kette per API auswerten will, etwa für ein Screening oder für einen Options-Bot, braucht deshalb einen Ablauf, der nicht alles auf einmal anfordert.
Die TWS API von Interactive Brokers (die Socket-Schnittstelle von Trader Workstation und IB Gateway) bietet dafür zwei Wege. Der alte Weg: Eine unvollständig definierte Option, etwa ohne Strike, an reqContractDetails übergeben. Dann liefert die API alle passenden Kontrakte, aber laut IBKR gedrosselt und umso langsamer, je unbestimmter die Anfrage ist. Der empfohlene Weg ist reqSecDefOptParams, das ohne diese Drosselung arbeitet.
Bewährt hat sich ein Ablauf in drei Schritten:
- Struktur laden: Verfallstermine und Strikes mit
reqSecDefOptParamsabrufen. - Auswahl bilden: Nach Laufzeit, Abstand zum aktuellen Kurs und Optionsart filtern und die verbleibenden Kontrakte qualifizieren, also prüfen, ob es sie wirklich gibt.
- Daten abonnieren: Nur für diese Auswahl Kurse und Greeks per
reqMktDataanfordern und das Kontingent an Marktdatenlinien im Blick behalten.
Die Greeks selbst (Delta, Gamma, Theta, Vega) und ihre Bedeutung für Strategien behandelt der Beitrag Optionen-Greeks für Algo-Trader. Hier geht es um das Handwerk: wie die Daten zuverlässig ins eigene Programm kommen.
Schritt 1: Verfälle und Strikes mit reqSecDefOptParams.
Die Funktion erwartet vier Angaben: das Symbol des Basiswerts, eine Börse (bei Aktienoptionen ein leerer String für alle Börsen, bei Optionen auf Futures die Terminbörse), die Wertpapierart des Basiswerts, etwa STK für Aktien oder FUT für Futures, und dessen conId. Die conId ist die eindeutige Kontraktnummer von IBKR. Sie entsteht, wenn Sie den Basiswert vorher qualifizieren, in der offiziellen API über reqContractDetails, in ib_async über qualifyContracts.
Die Antwort kommt über den Callback securityDefinitionOptionParameter, und zwar einmal je Börse. Jeder Datensatz enthält:
exchange: die Börse, für die die Angaben gelten, etwa SMART oder eine einzelne US-Optionsbörse,underlyingConId: die Kontraktnummer des Basiswerts,tradingClass: die Handelsklasse der Optionen,multiplier: den Kontraktmultiplikator, bei US-Aktienoptionen in der Regel 100,expirationsundstrikes: zwei getrennte Mengen mit allen Verfallsterminen und allen möglichen Basispreisen.
Für die Praxis wichtig ist die Handelsklasse. Bei manchen Basiswerten existieren mehrere Klassen nebeneinander, bei Indexoptionen etwa die Monats- und die Wochenserie mit eigener Klasse. Wer nur nach Symbol und Börse filtert, mischt sonst Serien mit unterschiedlichen Verfalls- und Abrechnungsregeln. Filtern Sie deshalb immer zusätzlich nach tradingClass und prüfen Sie den Multiplikator, bevor Sie Werte miteinander verrechnen.
Der Abruf ist eine einmalige Stammdatenabfrage, kein laufendes Marktdaten-Abo. Sie eignet sich daher gut, um sie einmal am Tag oder bei Programmstart zu laden und zwischenzuspeichern.
Schritt 2: gültige Kontrakte auswählen.
Die zwei Mengen aus Schritt 1 sind keine Liste von Kontrakten. IBKR weist ausdrücklich darauf hin, dass manche Kombinationen aus Strike und Verfall keinen gültigen Kontrakt ergeben. Typisch ist das bei kurzen Laufzeiten: Wochenoptionen haben oft weniger Strikes als die großen Monats- oder Quartalsverfälle, die gelieferte Strike-Menge gilt aber für alle Termine gemeinsam. Wer einfach das Kreuzprodukt bildet und abonniert, erhält für einen Teil der Anfragen Fehlermeldungen über unbekannte Kontrakte.
Der saubere Weg: zuerst fachlich filtern, dann qualifizieren. Übliche Filter sind die nächsten ein bis drei Verfallstermine, eine feste Zahl Strikes um den aktuellen Kurs des Basiswerts (am Geld) oder ein Delta-Band, das sich erst nach einem ersten Datenabruf genauer eingrenzen lässt. Die verbleibenden Kandidaten werden einzeln qualifiziert. In ib_async erledigt das qualifyContracts; nicht auflösbare Kontrakte kommen an ihrer Position als None zurück und lassen sich herausfiltern.
Qualifizieren läuft intern wieder über reqContractDetails, nur eben mit vollständig definierten Kontrakten. Bei wenigen Dutzend Kandidaten ist das unkritisch. Bei Hunderten lohnt es sich, Ergebnisse mit conId zwischenzuspeichern, statt bei jedem Start neu zu fragen. Laut IBKR hilft bei großen Abfragen über reqContractDetails außerdem, in der globalen TWS-Konfiguration unter API → Settings die Option „Expose entire trading schedule to the API“ abzuwählen. Dann liefert die API weniger Daten je Option, und die Liste kommt schneller.
Beim Datum ist Genauigkeit gefragt. Das Feld lastTradeDateOrContractMonth akzeptiert einen Monat oder einen exakten Tag. Sobald es in einem Monat mehrere Verfälle gibt, führt nur das exakte Datum im Format JJJJMMTT zuverlässig zum gewünschten Kontrakt.
Schritt 3: Kurse und Greeks abonnieren (Python-Beispiel).
Für die ausgewählten Kontrakte fordern Sie Streaming-Daten mit reqMktData an. Bei Optionen fragt die API die Greeks automatisch mit ab. Sie kommen über den Callback tickOptionComputation in vier Varianten: Tick-Typ 10 auf Basis des Geldkurses (Bid), 11 auf Basis des Briefkurses (Ask), 12 auf Basis des letzten Preises und 13 auf Basis von IBKRs Modellpreis. Die Model-Werte entsprechen laut Dokumentation den Greeks, die TWS anzeigt. Jeder Datensatz enthält implizite Volatilität, Delta, Gamma, Vega, Theta, den Optionspreis, den Barwert erwarteter Dividenden und den Kurs des Basiswerts.
Open Interest gehört nicht zu den Standardfeldern. Es kommt über die sogenannten Generic Ticks, die im Parameter genericTickList angefordert werden: 101 liefert Call- und Put-Open-Interest (Tick-Typen 27 und 28), 100 das Call- und Put-Volumen des Handelstags (Tick-Typen 29 und 30). Snapshots, also einmalige Abfragen mit snapshot=True, dürfen laut IBKR nicht mit einer Generic-Tick-Liste kombiniert werden und liefern den letzten Stand der vergangenen elf Sekunden, nicht unbedingt alle Tick-Typen.
Die folgende Skizze nutzt ib_async, den von der Community gepflegten Nachfolger von ib_insync (Stand Oktober 2026 Version 2.1.0 vom 08.12.2025, Python ab 3.10; Hintergründe im Beitrag ib_insync-Alternative). Sie verbindet sich mit einem Paper-Konto, lädt die Kette, bildet eine kleine Auswahl um den aktuellen Kurs und gibt Kurse und Model-Greeks aus. Orders sendet sie nicht.
import math
from ib_async import IB, Stock, Option
ib = IB()
ib.connect("127.0.0.1", 7497, clientId=17) # TWS Paper; IB Gateway Paper meist 4002
ib.reqMarketDataType(3) # 3 = verzögert (Tests ohne Abo), 1 = live
und = Stock("AAPL", "SMART", "USD")
ib.qualifyContracts(und)
[t_und] = ib.reqTickers(und)
spot = t_und.marketPrice()
if math.isnan(spot):
raise SystemExit("Kein Kurs für den Basiswert: Abo, Datentyp und Handelszeit prüfen")
# Schritt 1: Kette ohne Drosselung laden
chains = ib.reqSecDefOptParams(und.symbol, "", und.secType, und.conId)
chain = next(c for c in chains
if c.exchange == "SMART" and c.tradingClass == und.symbol)
# Schritt 2: kleine Auswahl bilden und qualifizieren
expiries = sorted(chain.expirations)[:2]
strikes = sorted(chain.strikes, key=lambda k: abs(k - spot))[:10]
kandidaten = [Option(und.symbol, e, k, r, "SMART", tradingClass=chain.tradingClass)
for e in expiries for k in strikes for r in ("C", "P")]
gueltig = [c for c in ib.qualifyContracts(*kandidaten) if c] # ungültige fallen heraus
# Schritt 3: Kurse und Greeks abonnieren (hier höchstens 40 Linien)
tickers = [ib.reqMktData(c) for c in gueltig]
ib.sleep(4)
for t in tickers:
g = t.modelGreeks
if g and g.delta is not None:
print(t.contract.localSymbol, t.bid, t.ask,
round(g.delta, 3), round(g.impliedVol or 0, 3))
for c in gueltig:
ib.cancelMktData(c)
ib.disconnect()Wichtig für den Test: Mit Datentyp 3 liefert die API verzögerte Daten, solange kein passendes Echtzeit-Abo besteht; mit Abo kommen laut Dokumentation trotzdem die aktuellsten verfügbaren Daten. Für Optionen gibt es eigene verzögerte Greeks (Tick-Typen 80 bis 83), die ib_async in dieselben Felder wie die Echtzeit-Greeks schreibt. Das reicht, um den Ablauf zu prüfen. Für echte Entscheidungen sind verzögerte Werte ungeeignet. Echtzeitdaten im Paper-Konto laufen über das Marktdaten-Sharing: Ein Live-Benutzer kann seine Abos mit einem Paper-Konto teilen, dann nutzen beide dieselben Abos.
Wie viele Optionen lassen sich gleichzeitig abonnieren?
Jedes gleichzeitig abonnierte Instrument belegt eine Marktdatenlinie. Laut IBKR erhalten alle Kunden zunächst 100 gleichzeitige Linien, die TWS-Watchlist und API gemeinsam nutzen, und haben nie weniger. Ab dem zweiten Monat gilt der höhere Wert aus Monatskommission in USD geteilt durch 8, Konto-Equity in USD mal 100 geteilt durch 1 Mio. USD oder 100. Zusätzlich lassen sich Quote-Booster-Packs buchen: je Pack 100 weitere Linien für 30 USD im Monat (Stand 22.10.2026), höchstens 10 Packs je Konto.
Für Optionsketten bedeutet das: Ein Basiswert mit zwei Verfällen, 24 Strikes und jeweils Call und Put braucht 96 Linien. Läuft der Basiswert selbst als Stream mit, ist das Standardkontingent fast voll, und jede Watchlist-Zeile in TWS fehlt dem Programm.
| Linien gesamt | Wie erreicht (Beispiel) | Optionen gleichzeitig bei 1 Basiswert | Entspricht etwa |
|---|---|---|---|
| 100 | Standardkontingent | 99 | 2 Verfälle × 24 Strikes × Call/Put = 96 |
| 200 | 100 + 1 Quote-Booster-Pack | 199 | 4 × 24 × 2 = 192 |
| 500 | höhere Kommission oder Equity, oder 4 Packs | 499 | 10 × 24 × 2 = 480 |
| 1.100 | 100 + 10 Packs (Höchstzahl) | 1.099 | 22 × 24 × 2 = 1.056 |
Die Tabelle setzt voraus, dass TWS keine eigenen Zeilen belegt und nur ein Basiswert gestreamt wird. Wer mehrere Basiswerte scannt, arbeitet deshalb meist rollierend: einen Block abonnieren, Werte speichern, Abos kündigen, den nächsten Block laden. Wichtig ist das konsequente cancelMktData; vergessene Abos blockieren Linien, bis sie gekündigt werden oder die Verbindung endet. Rollierendes Scannen liefert allerdings keinen gleichzeitigen Stand der ganzen Kette, sondern Werte mit Zeitversatz. Das muss die Auswertung berücksichtigen.
Welche Marktdatenabos braucht man für Optionen?
Die Linie ist die eine Grenze, die Berechtigung die andere. Für US-Optionen braucht es das OPRA-Abo (Options Price Reporting Authority, der zentrale Datenstrom der US-Optionsbörsen). Für die Greeks verlangt IBKR zusätzlich ein Abo für den Basiswert, denn ohne dessen Kurs lassen sich implizite Volatilität und Delta nicht berechnen. Fehlt das Abo für den Basiswert, kommt laut Dokumentation eine Meldung, dass die Marktdaten nicht abonniert sind; die Optionskurse selbst können trotzdem eintreffen, nur eben ohne Greeks.
Die Kosten hängen vom Status ab: In der Preistabelle von IBKR steht OPRA Top of Book (L1) mit 1,50 USD im Monat für Non-Professional- und 32,75 USD für Professional-Nutzer (Stand 22.10.2026). Im Beispiel zur Gebührenbefreiung nennt die Preisseite für das Abo zu 1,50 USD eine Befreiung ab 20 USD Monatskommission. IBKR stuft Benutzer standardmäßig als Professional ein; wer als Privatperson die Kriterien für Non-Professional erfüllt, ändert den Status selbst im Client Portal. Für Basiswerte außerhalb der USA und für Optionen auf Futures gelten eigene Börsenabos. Vor dem Kauf lohnt ein Blick in die aktuelle Preisliste, statt Zahlen aus älteren Anleitungen zu übernehmen.
Für Abfragen über die API muss zudem auf der Seite der Marktdatenabos im Client Portal der API-Zugriff auf Marktdaten freigeschaltet sein (Market Data API Acknowledgement); außerdem setzt IBKR ein IBKR-Pro-Konto voraus. Liefert eine Anfrage keine Live-Daten, sondern einen anderen Datentyp, meldet die API das über den Callback marketDataType mit der ID dieser Anfrage. Ein Bot sollte diesen Wert auswerten und protokollieren, damit nicht unbemerkt mit verzögerten Daten gerechnet wird.
Grenzen und Risiken: Takt, Historie, Rechenmodelle.
Auch mit allen Abos sind IBKR-Optionsdaten kein Rohdaten-Feed. Diese Grenzen gehören in jede Planung:
- Takt: Streaming über
reqMktDatabesteht aus zeitbasierten Snapshots, bei US-Optionen alle 100 ms, bei US-Aktien alle 250 ms. Einzelne Quotes dazwischen sehen Sie nicht. - Keine Tick-by-Tick-Daten: Für Optionen und Combos bietet IBKR keine Tick-by-Tick-Daten an. Strategien, die auf einzelne Trades im Optionsbuch reagieren, lassen sich damit nicht sauber bauen.
- Keine Historie abgelaufener Optionen: Historische Daten für abgelaufene Optionen sind über IBKR nicht verfügbar, ebenso keine End-of-Day-Daten für Optionen. Für Backtests braucht es eine eigene, laufend gesammelte Datenbasis oder einen spezialisierten Datenanbieter.
- Modellabhängige Greeks: Die Werte stammen aus IBKRs Optionsmodell. Andere Plattformen rechnen mit anderen Annahmen zu Zinsen, Dividenden und Volatilität und kommen zu abweichenden Ergebnissen. Wer Greeks vergleicht oder Schwellenwerte setzt, sollte immer dieselbe Quelle und denselben Tick-Typ nutzen.
- Lücken im Datenstrom: Bei illiquiden Strikes bleiben Bid, Ask oder Greeks leer. Der Code muss fehlende Werte als fehlend behandeln, nicht als null.
Dazu kommen die Risiken des Instruments. Optionen sind Hebelprodukte; je nach Strategie sind Verluste bis zum Totalverlust des Einsatzes möglich, bei Stillhaltergeschäften auch darüber hinaus. Ein Screening-Werkzeug, das saubere Greeks liefert, macht eine Strategie nicht profitabel. Automatisierte Systeme brauchen deshalb harte Grenzen für Positionsgröße und Verlust, Plausibilitätsprüfungen der Daten und ausführliche Tests im Paper-Konto. Beachten Sie dabei, dass das Paper-Konto die Ausführung nur vereinfacht nachbildet.
Was Sie jetzt konkret tun können.
- Bedarf festlegen: Schreiben Sie auf, welche Basiswerte, wie viele Verfälle und wie viele Strikes Sie gleichzeitig brauchen. Multiplizieren Sie mit zwei für Call und Put und vergleichen Sie das Ergebnis mit Ihren Marktdatenlinien.
- Abos prüfen: Kontrollieren Sie im Client Portal OPRA, das Abo für den Basiswert, Ihren Professional-Status und die Market Data API Acknowledgement.
- Kette zwischenspeichern: Laden Sie die Struktur mit
reqSecDefOptParamseinmal je Sitzung und speichern Sie qualifizierte Kontrakte mitconId. - Im Paper-Konto testen: Starten Sie mit verzögerten Daten und einer kleinen Auswahl wie in der Skizze oben. Protokollieren Sie Datentyp, leere Felder und Fehlermeldungen.
- Linien verwalten: Bauen Sie Kündigen und Neuabonnieren von Anfang an ein und überwachen Sie die belegten Linien.
- Historie selbst sammeln: Wenn Sie später Backtests planen, speichern Sie Kurse und Greeks ab dem ersten Tag mit Zeitstempel und Tick-Typ.
Wenn Sie ein Options-Screening oder einen Bot für IBKR umsetzen lassen wollen, finden Sie auf der Seite Trading-Automatisierung, wie Entwicklung, Tests mit dem Paper-Konto und Betrieb ablaufen. Die Live-Aktivierung bleibt dabei in Ihrer Hand.
Häufige Fragen.
Wie lade ich eine Optionskette über die Interactive Brokers API?
Am schnellsten mit reqSecDefOptParams. Die Funktion liefert je Börse die Verfallstermine, Strikes, Handelsklasse und den Multiplikator eines Basiswerts, ohne die Drosselung von reqContractDetails. Danach bilden Sie eine Auswahl, qualifizieren die Kontrakte und abonnieren nur für diese Kurse und Greeks. Ganze Ketten über reqContractDetails zu laden, empfiehlt IBKR nicht.
Warum bekomme ich bei IBKR keine Greeks über die API?
Meist fehlt ein Abo. Greeks kommen über die Tick-Typen 10 bis 13 nur, wenn Marktdatenabos für die Option und für den Basiswert bestehen, bei US-Optionen also OPRA plus das Aktien- oder Indexabo. Prüfen Sie außerdem den Datentyp: Mit verzögerten Daten kommen verzögerte Greeks über eigene Tick-Typen. Bei illiquiden Strikes können einzelne Werte leer bleiben.
Wie viele Optionen kann ich bei IBKR gleichzeitig abonnieren?
So viele, wie Marktdatenlinien frei sind. Zum Start sind es 100 Linien für TWS und API zusammen. Mehr Linien ergeben sich aus höherer Kommission oder Equity oder über Quote-Booster-Packs mit je 100 Linien, laut Preisseite 30 USD im Monat und höchstens 10 Packs je Konto (Stand Oktober 2026). Größere Ketten scannen Sie rollierend in Blöcken.
Gibt es bei IBKR historische Daten für abgelaufene Optionen?
Nein. Laut Dokumentation sind historische Daten abgelaufener Optionen über IBKR nicht verfügbar, ebenso keine End-of-Day-Daten für Optionen. Wer Optionsstrategien testen will, muss Kurse und Greeks selbst laufend speichern oder einen spezialisierten Datenanbieter nutzen. Die Datensammlung sollte deshalb beginnen, lange bevor der erste Backtest ansteht.
Gibt es Tick-by-Tick-Daten für Optionen bei Interactive Brokers?
Nein. IBKR bietet Tick-by-Tick-Daten weder für Optionen noch für Combos an. Streaming-Daten über reqMktData kommen bei US-Optionen als Snapshots im Abstand von 100 Millisekunden. Für Strategien auf Minuten- oder Stundenbasis reicht das in der Regel, für Logik auf Ebene einzelner Trades nicht.
Quellen und Stand.
- TWS API: Option Chains – Introduction — Interactive Brokers
- TWS API: Receive Option Chains — Interactive Brokers
- TWS API: Options & Greeks — Interactive Brokers
- TWS API: Streaming Data — Interactive Brokers
- TWS API: Tick-By-Tick Data — Interactive Brokers
- TWS API: Market Data – Introduction (Historical Data Limitations) — Interactive Brokers
- Market Data Pricing Overview — Interactive Brokers
- ib-async auf PyPI — Python Package Index
Stand: 22. Oktober 2026. Produkte, Funktionen und Preise ändern sich schnell; maßgeblich sind die Angaben der Anbieter und Behörden.
Sie wollen Optionsketten aus IBKR automatisiert laden, filtern und überwachen? Unverbindlich anfragen — wir klären Datenbedarf, Abos und Marktdatenlinien sowie den Testumfang im Paper-Konto, bevor etwas live läuft. Mehr zu meinem Angebot: Trading-Systeme entwickeln lassen.