[PYTHON] Quantopian API-Referenz

Über diesen Artikel

Über die API-Referenz von Quantopian übersetze ich den Teil, den Sie interessieren, anstelle eines Memos ins Japanische. Der Autor kann nicht gut Englisch, bitte verstehen Sie den Text.

Erforderliche Methode

Der Algorithmus muss zwei Methoden implementieren, "initialize" und "handle_data". Die dritte Methode ist "before_trading_start", was optional ist.

Initialisieren

initialize(context)

Wird zu Beginn des Backtests nur einmal aufgerufen. Das Kontextobjekt kann an alle anderen Methoden im Algorithmus übergeben werden.

Kontext: Ein leeres Wörterbuch zum Zeitpunkt der Initialisierung. Sie können entweder in Punkt- oder in Klammernotation auf die Eigenschaft zugreifen.

Rückgabewert Keiner

Reaktion auf Marktereignisse

handle_data(context, data) Wird jedes Mal aufgerufen, wenn ein Marktereignis (Balkenaktualisierung) auftritt.

Daten: Ein Wörterbuch, das mit der Securities ID (SID) versehen ist, einschließlich Universumsfragen. Stellt eine Momentaufnahme des Aktienuniversums zum Zeitpunkt des Aufrufs dieser Methode dar.

Kontext: Entspricht demjenigen, der bei der Initialisierung angezeigt wurde. Speichert benutzerdefinierte Status- und Portfolioobjekte.

Rückgabewert Keiner

Vorverarbeitung für den Handel

before_trading_start(context, data) Wird nur einmal am Tag vor Marktöffnung angerufen. Der Hauptzweck besteht darin, die zugrunde liegende Datenbank von Quantopian abzufragen, um die Finanzdaten einzelner Unternehmen zu untersuchen. Anhand der Basisdaten Ihres Unternehmens können Sie das in Ihrem Algorithmus zu verwendende Aktienuniversum anhand von über 600 messbaren Kriterien festlegen.

Kontext: Entspricht demjenigen, der bei der Initialisierung angezeigt wurde. Speichert benutzerdefinierte Status- und Portfolioobjekte.

Rückgabewert Keiner

Andere Methoden

Der Algorithmus bietet verschiedene Bestellmethoden. Beim Erstellen einer Zielposition mit einer Funktion wie order_target werden abgeschlossene Aufträge berücksichtigt, offene Aufträge jedoch nicht.

Bestellmethode

Die Bestellmethoden, die im Algorithmus verwendet werden können, sind in der Tabelle aufgeführt. Regelmäßige Bestellungen werden mit der Anzahl der Aktien, dem Betrag und dem Prozentsatz aufgegeben, die durch den Betrag oder den Prozentsatz angegeben werden. Die Zielbestellung berücksichtigt die vorhandene Position und erstellt eine Bestellung, sodass die Position nach der Bestellung der Anzahl der Aktien, des Betrags und des Prozentsatzes entspricht, die durch den Betrag oder den Prozentsatz angegeben werden. Beim Aufbau einer Zielposition mit einem Zielauftrag werden geschlossene Aufträge berücksichtigt, offene Aufträge jedoch nicht.

Auftragsart Regelmäßige Bestellung Zielbestellung
Geben Sie die Anzahl der Freigaben an order() order_target()
Betragsspezifikation order_value() order_target_value()
Gewichtsspezifikation order_percent() order_target_percent()

Sie können den Auftragstyp style = OrderType für alle Auftragstypen angeben. Der Standardwert ist MarketOrder, mit dem Sie StopOrder, LimitOrder und StopLimitOrder (Limit + Stop) verwenden können.

Geben Sie die Anzahl der Freigaben an

order(security, amount, style=OrderType) order_target(security, amount, style=OrderType)

Bestellung erstellt eine Bestellung für die angegebene Marke und Menge. order_target erstellt eine Bestellung, sodass die Anzahl der Aktien nach der Bestellung der Zielanzahl der Aktien entspricht. Wenn keine Position vorhanden ist, wird eine Bestellung für die gesamte Menge erstellt, die durch den Betrag angegeben wird. Wenn eine Position vorhanden ist, entspricht die Differenz zwischen der Zielanzahl der Aktien und der Anzahl der aktuell gehaltenen Aktien der Bestellmenge. Wenn Sie beispielsweise 5 AAPL-Aktien in Ihrem aktuellen Portfolio haben und order_target (Symbol ('AAPL'), 20) ausführen, wird eine Bestellung für die Differenz von 15 Aktien erstellt.

Sicherheit: Wertpapierobjekt Betrag: Geben Sie die Anzahl der Freigaben als Ganzzahl an. Positive Zahlen sind Käufe und negative Zahlen sind Verkäufe. Stil: Geben Sie die Auftragsart an.

Rückgabewert Auftragsnummer

Betragsspezifikation

order_value(security, amount, style=OrderType) order_target_value(security, amount, style=OrderType)

order_value erstellt eine Bestellung mit dem angegebenen Betrag. Wenn Sie beispielsweise AAPL \ $ 1000 kaufen möchten, geben Sie order_value (Symbol ('AAPL'), 1000) an. Wenn der Preis für AAPL \ $ 105 beträgt, werden 9 Aktien gekauft. Brüche werden abgeschnitten. order_target_value erstellt eine Bestellung, sodass der Betrag nach der Bestellung der Zielbetrag ist. Wenn keine Position vorhanden ist, wird eine vollständige Bestellung erstellt, die durch den Betrag angegeben wird. Wenn Sie eine bestehende Position haben, ist die Differenz zwischen dem Zielbetrag und dem aktuellen Haltebetrag der Auftragsbetrag. Wenn Sie beispielsweise \ $ 500 in AAPL in Ihrem aktuellen Portfolio haben, wird durch Ausführen von order_target_value (Symbol ('AAPL'), 2000) eine Bestellung mit einer Differenz von \ $ 1500 erstellt.

Sicherheit: Wertpapierobjekt Geben Sie den Betrag mit dem Betrag an: float. Positive Zahlen sind Käufe und negative Zahlen sind Verkäufe. Stil: Geben Sie die Auftragsart an.

Rückgabewert Auftragsnummer

Gewichtsspezifikation

order_percent(security, amount, style=OrderType) order_target_percent(security, percent, style=OrderType)

order_percent erstellt einen Auftrag mit einer bestimmten Gewichtung für den Wert des Portfolios. Der Wert des Portfolios ist der Wert der Position und der Gesamtbetrag an Bargeld. Der Prozentsatz muss als Bruch angegeben werden. Beispielsweise erstellt order_percent (Symbol ('AAPL'), .5) einen Kaufauftrag für AAPL mit 50% des Werts des aktuellen Portfolios. order_target_percent erstellt eine Bestellung, sodass das Gewicht nach der Bestellung das Ziel ist. Wenn keine Position vorhanden ist, wird eine vollständige Bestellung in Prozent erstellt. Wenn eine Position vorhanden ist, ist die Differenz zwischen dem Zielgewicht und dem aktuell gehaltenen Gewicht die Bestellmenge. Wenn das aktuelle Portfolio beispielsweise eine AAPL-Gewichtung von 5% hat, wird durch Ausführen von order_target_percent (Symbol ('AAPL'), 0.1) eine Order mit einer Differenz von 5% erstellt.

Sicherheit: Wertpapierobjekt Menge: Geben Sie das Gewicht an. Positive Zahlen sind Käufe und negative Zahlen sind Verkäufe. Prozent: Geben Sie das Gewicht an. Positive Zahlen sind Käufe und negative Zahlen sind Verkäufe. Stil: Geben Sie die Auftragsart an.

Rückgabewert Auftragsnummer

Stornierung der Bestellung

cancel_order(order) Bricht die angegebene Bestellung ab.

Bestellung: Bestellnummer

Rückgabewert Keiner

Bestellinformationen abrufen

get_open_orders(sid=sid) Wenn keine Wertpapier-ID oder Keine angegeben ist, wird ein durch die Wertpapier-ID verschlüsseltes Wörterbuch zurückgegeben. Das Wörterbuch speichert eine Liste mit Bestellinformationen für jede Wertpapier-ID in der Reihenfolge vom ältesten zum neuesten. Wenn eine Wertpapier-ID angegeben ist, wird eine Liste der bestellten Bestellungen für die Wertpapier-ID zurückgegeben, sortiert nach der ältesten.

sid: (optional) Wertpapier-ID

Rückgabewert Wörterbuch oder Liste

Bestellinformationen abrufen

get_order(order) Gibt die angegebenen Bestellinformationen zurück.

Bestellung: Bestellnummer

Rückgabewert Gibt ein lesbares und beschreibbares Auftragsobjekt zurück, wird jedoch am Ende von handle_data zerstört.

Auftragsausführung mit Interactive Brokers Securities

Relative Order order(security, amount, style=RelativeOrder(offset, pct_offset, limit_price, exchange)) RelativeOrder ist ein Bestellformular, mit dem Sie zu einem aggressiveren Preis als NBBO (National Best Bid & Offer) [^ 1] ausführen können. Indem Sie ein aggressiveres Gebot und Angebot als NBBO abgeben, können Sie die Wahrscheinlichkeit erhöhen, dass Ihre Bestellung ausgeführt wird. Es gibt feste Offsets (z. B. 2 Cent über und unter Bid / Offer) und prozentuale Offsets, die auch in Kombination verwendet werden können. Die Quotes werden automatisch an die Marktbewegung angepasst.

[^ 1]: ... Von den Preisen, die von allen inländischen Börsen und Market Makern angeboten werden, ist derjenige mit dem Gebot und Angebot, der für den Anleger am günstigsten ist.

Um dieses Bestellformular zu verwenden, abonnieren Sie die Marktdaten von IB für Relative Orders. Andernfalls liefert der IB Angebote, die 15 Minuten zu spät sind.

Wenn bei einer Kauforder der NBB (National Best Bid) steigt, wird der Orderpreis automatisch nach oben angepasst. Wenn die NBB fällt, wird der Bestellpreis nicht angepasst. Dies liegt daran, dass der Rückgang der NBB die bestehenden Aufträge aggressiver gemacht haben dürfte.

Bei Verkaufsaufträgen wird der Bestellpreis automatisch nach unten angepasst, wenn das NBO (National Best Offer) fällt. Wenn der NBO steigt, wird der Bestellpreis nicht angepasst. Dies liegt daran, dass der Anstieg der NBO die bestehenden Aufträge aggressiver gemacht haben dürfte.

Wenn Sie sowohl einen festen Versatz als auch einen prozentualen Versatz angeben, wählt der IB den aggressiveren und möglicheren der beiden Preise. (Höher zum Kaufen, niedriger zum Verkaufen)

In diesem Bestellformular können Sie auch ein Limit festlegen, damit es beim Kauf nicht über dem angegebenen Preis und beim Verkauf unter dem angegebenen Preis ausgeführt wird.

Bei einem erneuten Test mit diesem Bestellformular handelt es sich um eine einfache Marktbestellung. Es funktioniert wirklich nur als Relative Order, wenn es mit einem IB Real Money-Konto ausgeführt wird.

Wenn Backtester dieses Bestellformular unterstützen, werden sie in Zukunft ein benutzerdefiniertes Slippage-Modell einrichten.

Um dieses Bestellformular verwenden zu können, müssen Sie RelativeOrder aus der Bibliothek brokers.ib importieren.

Sicherheit: Wertpapierobjekt Betrag: Anzahl der bestellten Aktien. Offset: Fester Offsetwert von der aktuellen NBB oder NBO. In Dollar-Einheiten. pct_offset: Prozentualer Versatzwert von der aktuellen NBB oder NBO. Geben Sie zwischen 0 und 100 an. limit_price: Gibt den höchsten Kaufpreis oder den niedrigsten Verkaufspreis an. Austausch: Nicht verwendet. Für dieses Bestellformular gibt IB Live Trading eine Bestellung bei SMART [^ 2] auf. Wird ignoriert, wenn nicht Live Trading. Das Routing zum IEX-Exchange ist nicht zulässig.

[^ 2]: Ein Auftrag, der automatisch den Markt mit dem besten Preis aus mehreren Märkten wie SMART ... Smart Order Routing (SOR), Inlandsbörsen und Privatbörsen (PTS) auswählt und Verkäufe ausführt.

VWAPBestEffort

python


order(security, amount, style=VWAPBestEffort(limit_price=price1, start_date=date1,
                                             end_date=date2, max_pct_vol=percent,
                                             avoid_liquidity=False, exchange=Exchange))

VWAPBestEffort versucht, sich dem volumengewichteten Durchschnittspreis (VWAP) anzunähern, indem Aufträge in kleinere Teile unterteilt und über einen bestimmten Zeitraum ausgeführt werden. Dieses Bestellformular ist nur für den IB Live-Handel verfügbar. IB unterstützt Best Effort VWAP für Markt- und Limitaufträge. Stop Order und Limit + Stop Order werden nicht unterstützt. Dieses Bestellformular ist kompatibel mit Bestellformularen, die order, order_target, order_value, order_target_percent enthalten. Sobald eine Markt- oder Limit-Order bei der IB platziert wurde, verwendet der Broker den Best-Effort-Algorithmus, um die Order zu erfüllen.

Bei dieser Methode wird die Bestellung innerhalb des Zeitraums teilweise und bis zum Enddatum vollständig ausgeführt. Es wird dringend empfohlen, dass der Algorithmus nach offenen Aufträgen sucht, damit die Auftragslogik funktioniert.

Sie müssen die VWAPBestEffort-Klasse aus brokers.ib importieren, um eine VWAP-Bestellung aufzugeben.

Sicherheit: Wertpapierobjekt Betrag: Anzahl der bestellten Aktien. limit_price: (optional) Geben Sie den Limitpreis der Bestellung mit einer Bruchzahl an. Wenn Keine angegeben ist, handelt es sich um eine Marktorder. start_date: (optional) Gibt die VWAP-Startperiode an. Der Standardwert ist 1 Minute nach der Algorithmuszeit. BestEffort-Aufträge werden ab der nächsten Minute des IB ausgeführt. end_date: (optional) Gibt die VWAP-Endperiode an. Der Standardwert ist die Transaktionsendzeit. max_pct_volume: (optional) Gibt den Prozentsatz des täglichen Volumens an, das gehandelt werden darf. Der mögliche Bereich liegt zwischen 0,01 und 0,5. Der Standardwert ist 0,25. Vermeiden Sie Liquidität: (optional) Verhindert, dass Aufträge das Gebot / Angebot erfüllen. Dies hilft Ihnen, die Liquiditätsbeschaffungsgebühr [^ 3] zu vermeiden, und Sie erhalten einen Liquiditätsangebotsrabatt. Die Abweichung von der Benchmark kann jedoch zunehmen. Dieser Parameter ist ein boolescher Wert und standardmäßig False. Austausch: (optional) Gibt die Weiterleitung der Bestellung an. Die Standardeinstellung für IB Live Trading ist SMART. Wird ignoriert, wenn nicht Live Trading. Das Routing zum IEX-Exchange ist nicht zulässig.

Rückgabewert Auftragsnummer

Pipeline

// Wird separat zusammengefasst

Andere Methoden

Erfassung historischer Daten

history(bar_count, frequency, field, ffill=True) Abrufen variabler historischer Daten für jeden Tag.

bar_count: Geben Sie die Anzahl der Balken als Ganzzahl an. Die Nummer enthält den aktuellen Balken. Häufigkeit: Gibt an, wie oft Daten abgerufen werden. '1d' und '1m' sind verfügbar. Feld: Geben Sie den Wert an, der aus den historischen Daten erhalten werden soll. Sie können zwischen 'open_price', 'close_price', 'price', 'high', 'low' und 'volume' angeben. ffill: Gibt an, ob die vorherigen Daten zum Ausfüllen der fehlenden historischen Daten verwendet werden sollen. Der Standardwert ist True. Bei der Einstellung False wird np.nan für Preisdaten und 0 für das Volumen zurückgegeben.

Rückgabewert Im Format pandas.DataFrame ist die Anzahl der Zeilen bar_count, der Wert der durch das Feld angegebene Wert und die Spalte die Sicherheits-ID des aktuellen Universums.

Auf Diagramm aufzeichnen

record(series1_name=value1, series2_name=value2, ...) record('series1_name', value1, 'series2_name', value2, ...) Zeichnet den durch das Argument angegebenen Wert auf. Gibt ein Diagramm für alle aufgezeichneten Inhalte aus. Werte: Sie können bis zu 5 Schlüsselwörter und Werte festlegen.

Rückgabewert Keiner

Periodische Ausführungsverarbeitung

schedule_function(func=myfunc, date_rule=date_rule, time_rule=time_rule, half_days=True) Führt die Funktion automatisch nach einem vordefinierten Zeitplan aus. Es kann nur innerhalb von initialize aufgerufen werden.

func: Definiert den Funktionsnamen. Die Funktion muss Kontext und Daten als Parameter haben. date_rule: Gibt den Datumsteil des Zeitplans an. Termine können täglich, wöchentlich oder vom Anfang oder Ende eines jeden Monats an verrechnet werden. Der Standardwert ist täglich und der Offset ist 0. Mit anderen Worten, wenn Sie keine Datumsregel angeben, wird die Funktion täglich ausgeführt. Die geltenden Regeln lauten wie folgt.

time_rule: Gibt den Zeitteil des Zeitplans an. Die Zeit kann als Versatz vom Beginn bzw. Ende der Transaktion bzw. vom Ende der Transaktion angegeben werden. Die Standardeinstellung ist zu Beginn der Transaktion und 1 Minute vor dem Ende der Transaktion. Die geltenden Regeln lauten wie folgt.

half_days: Ein boolescher Wert, der das Verhalten des halben Hitachi-Tages angibt. Bei der Einstellung False wird die Funktion am Tag des Semi-Hitachikai nicht aufgerufen. Der Standardwert ist True.

Rückgabewert Keiner

Holen Sie sich das Tickersymbol

set_symbol_lookup_date('YYYY-MM-DD') Geben Sie ein Datum an und machen Sie das zu diesem Zeitpunkt gültige Tickersymbol zum Universum. Muss beim Initialisieren ausgeführt werden, bevor das Symbol oder die Symbolfunktion aufgerufen wird.

Datum: Zeichenfolge im Format JJJJ-MM-TT

Rückgabewert Keiner

Erwerb von Wertpapierobjekten

sid(int) Holen Sie sich das Wertpapierobjekt, indem Sie die Wertpapier-ID angeben.

int: Wertpapier-ID

Rückgabewert Wertpapierobjekt

symbol('symbol1') Holen Sie sich das Wertpapierobjekt, indem Sie das Tickersymbol angeben.

'symbol1': Tickersymbol

Rückgabewert Wertpapierobjekt

symbols('symbol1', 'symbol2', ...) Ruft eine Liste von Wertpapierobjekten ab, indem durch Kommas getrennte Tickersymbole angegeben werden.

'symbol1', 'symbol2', ...: Tickersymbol

Rückgabewert Liste der Wertpapierobjekte

Universum Update

update_universe(sids) Aktualisieren Sie das Aktienuniversum. Wird vor before_trading_start aufgerufen.

sids: Liste der Wertpapier-IDs

Rückgabewert Keiner

Recommended Posts

Quantopian API-Referenz
xlwings API-Referenzliste