NSEpy-Paket zum Herunterladen 15 Jahre Nifty Options-Daten

Inhalt

Lassen Sie uns die Daten für einen einzelnen Optionsvertrag herunterladen, damit wir eine Vorstellung davon haben, welche Eingaben erforderlich sind

# Versuchen wir zuerst, für eine einzelne Option herunterzuladen; Daten manuell angeben
sample_opt1 = get_history(Symbol="RAFFINIERT",
                        Beginn = Datum(2004,11,1), Ende = Datum(2005,1,27),
                        Index = Wahr,
                        option_type="AN",
                        Strike_Preis = 2000,
                        Ablaufdatum = Datum(2005,1,27))
drucken(sample_opt1.shape)
sample_opt1.head(n=3)
Laden Sie das Nifty Options sata NSEpy-Datenbeispiel herunter

Beispieldaten für eine einzelne Option

Für jeden alternativen Vertrag, wir müssen eintreten 5 Variablen: das Start- und Enddatum, die Art der Option, der Ausübungspreis (Vertrag) und sein Verfallsdatum. Die NSE-Site ermöglicht es uns, nur Daten von Alternativen herunterzuladen 1 gleichzeitig Vertrag. Siehe Screenshot unten.

Da unser Ziel darin besteht, die Auswirkungen der Black Swan-Ereignisse zu beobachten, wir müssen uns mit den Geldalternativen für die Strategie befassen. Das bedeutet, dass wir für jeden Monat mehr als 20 alternative Preise während 90 Monate (15 Jahre). Wir müssen eine Schleife machen, sonst werden wir verrückt 🙂

Wählen Sie die beste Option unter den Alternativen

Für jeden Ausübungspreis, wir haben zwei arten von alternativen. Denken Sie daran, dass eine Option ein Vertrag ist, der es uns ermöglicht, den zugrunde liegenden Posten zu kaufen (NSE Nifty für uns) zu einem vorher vereinbarten Preis zu einem späteren Zeitpunkt, unabhängig vom Marktpreis am Verfallsdatum. Kaufalternativen sind ein Recht zum Kauf des Basiswerts und werden verwendet, wenn der Marktpreis steigt, während die Verkaufsalternativen das Recht zum Handel sind und verwendet werden, um sich selbst zu schützen, wenn der Markt fällt.

Die NSE hat wöchentliche Optionen, monatlich und jährlich auf Ihrer Website gelistet für Ausübungspreise, die ausreichend über und unter dem aktuellen Marktniveau liegen (auch als Optionspreis zum Geldpreis bekannt). Sehen Sie sich den Screenshot der NSE-Site unten an

NSE-Optionspreise nach Ablauf NSEpy

Preise von NSE-Alternativen nach Ablauf

Von all diesen Möglichkeiten, die monatlichen Alternativen sind die liquidesten für den aktuellen Monat und den nächsten. Die Liquidität ändert sich zum Folgemonat, wenn sich der aktuelle Monat dem Ablauf nähert. Die wöchentlichen Alternativen haben vor einigen Jahren begonnen, aber es fehlt ihnen über die laufende und die nächste Woche hinaus genügend Liquidität., wir müssen die Daten der monatlichen Alternativen mit einem Startdatum herunterladen 3 Monate vor Ablauf der Ausübungspreise ~ 1000 Punkte über und unter den höchsten und niedrigsten Preisen des Monats während 90 Monate.

Sortiertermine

Monatliche Alternativen werden am letzten Donnerstag eines jeden Monats abgerechnet. Das aktuelle Datum wird als „Objekt“ gesetzt. Wir verwenden den relativen Wert der dateutils-Bibliothek, um das Download-Startdatum zu erhalten, indem wir zurückgehen 2 Monate (siehe Monate = -2)

# aktuelles Datum - 3 Monate vor Ablauf des 1. Optionsvertrags
aktuelles_datum = Datum(2005, 1,1); drucken(aktuelles Datum); drucken(Typ(aktuelles Datum))
Typ(aktuelles Datum)
Daten sortieren Daten von raffinierten Optionen herunterladen NSEpy
# Preis Download Startdatum
start_date = aktuelles_date + relativdelta(Monate = -2); drucken(Startdatum); drucken(Typ(Startdatum))
start_month = current_date.month; drucken('Anfangsmonat:', start_monat)
start_yr = start_date.year; drucken('Anfangsjahr: ', start_yr)
NSEpy Startjahrdaten

NSE-Alternativen verfallen am letzten Donnerstag im Monat für tägliche Alternativen und jeden Donnerstag für wöchentliche Alternativen. In der letzten Woche des Monats, die monatliche Option ist gleichzeitig die wöchentliche Option. Wir verwenden die `get_expiry`-Funktion aus der NSEPy-Bibliothek, um die Liste der Daten für alle Donnerstage des Monats zu erhalten, und fügen sie in eine max-Funktion ein, um das Datum des letzten Donnerstags oder das monatliche Fälligkeitsdatum zu erhalten..

# Ablaufdatum abrufen
end_month = current_date.month; drucken('Endmonat:', end_month)
end_yr = aktuelles_datum.jahr; drucken('Jahresende: ', end_yr)

# Verwenden Sie die Funktion Ablaufdatum abrufen, um eine Liste der Ablaufdaten zu erhalten - Beispiel unten
# get_expiry_date gibt eine Liste der wöchentlichen Verfallszeiten zurück; Verwenden Sie max, um das Ablaufdatum des Monatsendes zu erhalten

Ablaufdatum = max(get_expiry_date(Jahr = Ende_Jahr, Monat = Ende_Monat))
drucken('Expiry_date:', Verfallsdatum, 'Typ: ', Typ(Verfallsdatum))
Typ(Verfallsdatum)
Laden Sie raffinierte Optionen Datenablauf herunter

Lass uns eine Schleife machen

Mit klarer Kontrolle über Start- und Enddatum, Wir betten sie in eine Schleife ein, damit wir die Funktion `get_expiry` für jeden Monat aufrufen können 15 Jahre. Wir werden dafür verschachtelte for-Schleifen verwenden.

Um die Ausübungspreisspanne der Alternativen zu identifizieren, Wir erhalten den Schlusswert von Nifty für jeden Monat; Definieren Sie eine Spanne von Ausübungspreisen, die 1000 Punkte über dem höchsten Preis des Monats und 1000 Punkte unter dem niedrigsten Schlusskurs des Monats. Für jede Option, Wir erhalten Tagespreise, die sind 3 Monate vor Ablaufdatum.

Vor dem Codieren, lass uns eine Zusammenfassung machen und verstehen, was genau wir durchmachen wollen. Wir möchten Daten zu monatlichen Alternativen während 15 Jahre, Mit anderen Worten, 180 Monate. Für jeden Monat, Angenommen, der durchschnittliche Bereich zwischen hohen und niedrigen Werten beträgt 300 Punkte. Mehr als 1000 Punkte über dem Höhepunkt und 1000 Punkte unter Optionspunkt, haben 23 Ausübungspreise der Alternativen in jedem Monat und 2 Arten von Alternativen: Stellt y Anrufe; was uns führt zu 46 diskrete Optionen pro Monat. 46 Optionen multipliziert mit 180 Monate geben uns 8280 Ausübungspreise.

Verschachtelte Schleifen werden wie folgt ausgeführt:

Für jedes Jahr im Bereich → Für jeden Monat des Jahres → Für jeden Streik

# establece und monat jahresbereich überschleifen
month_list = np.arange(1, 13, Schritt = 1); drucken(Monatsliste)
# unterteile die Jahresliste in 2 Teile - 2005 zu 2012 und 2013 zu 2020
yr_list = np.arange(2005, 2012, Schritt = 1 ); drucken(yr_liste)
# Erstellen Sie einen leeren Datenrahmen, um die Ergebnisse zu speichern
nifty_data = pd.DataFrame() # in der Schleife verwenden
option_data = pd.DataFrame() # Ausgabe speichern
Zähler = 0
# breche die Schleife in 2 Teile um Abfragefehler zu vermeiden
zum Jahr In yr_liste:
    # Schleife durch alle Monate und Jahre
    drucken('Jahr: ', Jahr)
    zum mnth In Monatsliste:
        current_dt = Datum(Jahr, mnth, 1)
        start_dt = aktueller_dt + relativdelta(Monate = -2)
        end_dt = max(get_expiry_date(Jahr = Jahr, Monat = Monat))
        
        # drucken('Aktuell: ', aktuell_dt)
        # drucken('Anfang: ', start_dt)
        # drucken('Ende: ', end_dt)
        
        # Erhalten Sie raffinierte Futures-Daten
        nifty_fut = get_history(Symbol="RAFFINIERT",
                               start = start_dt, end = end_dt,
                               Index = Wahr,
                               Ablaufdatum = end_dt)
        nifty_data = nifty_data.append(nifty_fut)
        
        # Berechnen Sie hohe und niedrige Werte für jeden Monat; abrunden, um Ausübungspreise zu erhalten
        hoch = nifty_fut['Close'].max()
        hoch = int(runden(hoch/100)*100) + 1000# ; drucken('Höchst:', hoch)
        
        niedrig = nifty_fut['Close'].Mindest()
        niedrig = int(runden(niedrig/100)*100) + 1000# ; drucken('Niedrig :', niedrig)
        
        zum schlagen In Bereich(niedrig, hoch, 100): # Anfang, halt, Schritt
            """
            Holen Sie sich tägliche Schlusskurse für Indexoptionen für 3 Monate 
            über das gesamte Sortiment 
            """
            #zeit.schlaf(random.randint(10,25)) # Pause für zufällige Intervalle, um die Site nicht zu überfordern
            nifty_opt = get_history(Symbol="RAFFINIERT",
                                   start = start_dt, end = end_dt,
                                   Index = Wahr, option_type="AN",
                                   Strike_price = Strike,
                                   Ablaufdatum = end_dt)
            
            option_data = option_data.append(nifty_opt)
            
            #zeit.schlaf(random.randint(20,50)) # Pause für zufällige Intervalle, um die Site nicht zu überfordern
            nifty_opt = get_history(Symbol="RAFFINIERT",
                                   start = start_dt, end = end_dt,
                                   Index = Wahr, option_type="DAS",
                                   Strike_price = Strike,
                                   Ablaufdatum = end_dt)
            
            option_data = option_data.append(nifty_opt)
            
        Zähler+=1
        drucken('Monate: ', Schalter)

Und voila! Verfügen über 15 Jahre alternative Daten für eine Reihe von Ausübungspreisen, die in csv . gespeichert werden können; Lassen Sie uns vor dem Speichern überprüfen

# visuell überprüfen
drucken(option_data.shape)
option_data.tail()
Produktion

Der gesamte obige Code ist darin enthalten GitHub-Seite.

Verbinde dich mit mir auf LinkedIn, Twitter, Ö Halb auf dem Laufenden bleiben. Das war's Leute!

Notiz: Alle Inhalte dienen zu Forschungszwecken und nicht für Anlageempfehlungen. Ich schlage vor, Sie versuchen nicht dasselbe, ohne einen registrierten Finanzberater zu konsultieren und erst dann Anlageentscheidungen zu treffen.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.

Datenlautsprecher