Python Finanzdaten abrufen

In diesem Abschnitt betrachten wir zunächst ein einfaches Python-Beispiel für quantitative Trading, das die Moving-Average-Strategie mit Daten von Yahoo Finance verwendet.

Die Grundidee dieser Strategie besteht darin, Kauf- und Verkaufssignale durch den Vergleich kurzfristiger und langfristiger gleitender Durchschnitte zu erzeugen.

Bevor Sie dieses einfache Beispiel umsetzen, müssen Sie drei Pakete installieren:

pip install pandas numpy matplotlib yfinance

Paketbeschreibungen:

  • pandasist eine leistungsstarke Open-Source-Bibliothek zur Datenverarbeitung und -analyse, die speziell für effiziente Datenanalyse und -manipulation entwickelt wurde.
  • numpyBietet Unterstützung für Arrays und Matrizen für mathematische Berechnungen.
  • yfinanceist eine Bibliothek zum Abrufen von Finanzdaten, die den Abruf von Aktien, Indizes und anderen Finanzmarktdaten von Yahoo Finance unterstützt.
  • matplotlibist eine 2D-Diagrammbibliothek, die zum Erstellen statischer, animierter und interaktiver Datenvisualisierungsdiagramme verwendet wird.

Historische Aktiendaten abrufen

Verwenden Sie yfinance, um historische Aktiendaten abzurufen. Hier ist ein einfaches Beispiel:

Beispiel

import yfinance as yf

# Aktiendaten abrufen
symbol = "600519.SS"
start_date = "2022-01-01"
end_date = "2023-01-01"

data = yf.download(symbol, start=start_date, end=end_date)
print(data.head())

Die Ausgabe sieht wie folgt aus:

                  Open         High          Low        Close    Adj Close   Volume
Date                                                                               
2022-01-04  2055.00000  2068.949951  2014.000000  2051.229980  1973.508057  3384262
2022-01-05  2045.00000  2065.000000  2018.000000  2024.000000  1947.309937  2839551
2022-01-06  2022.01001  2036.000000  1938.510010  1982.219971  1907.112915  5179475
2022-01-07  1975.00000  1988.880005  1939.319946  1942.000000  1868.416870  2981669
2022-01-10  1928.01001  1977.000000  1917.550049  1966.000000  1891.507446  2962670

Einfache Datenanalyse und Visualisierung

Verwenden Sie pandas für die Datenanalyse und matplotlib für die Visualisierung:

Beispiel

import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# Aktiendaten abrufen
symbol = "600519.SS"
start_date = "2022-01-01"
end_date = "2023-01-01"

data = yf.download(symbol, start=start_date, end=end_date)
# Einfache Datenanalyse
print(data.describe())

# Aktienkurs-Trenddiagramm zeichnen
data['Close'].plot(figsize=(10, 6), label=Symbol)
plt.title(f"{symbol} Aktienkurs")
plt.xlabel("Datum")
plt.ylabel("Preis")
plt.legend()
plt.show()

Das Trenddiagramm ist unten dargestellt:

Crossover-Strategie mit gleitendem Durchschnitt

Anschließend können wir die Yahoo-Finance-Bibliothek (yfinance) verwenden, um Aktiendaten für Guizhou Moutai (600519.SS) abzurufen und eine einfache Demonstration basierend auf der Strategie mit gleitendem Durchschnitt zu geben:

Beispiel

import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt

# Guizhou-Moutai-Aktiendaten abrufen
symbol = "600519.SS"
start_date = "2022-05-01"
end_date = "2023-12-01"

data = yf.download(symbol, start=start_date, end=end_date)

# Berechne kurzfristige (50-Tage) und langfristige (200-Tage) gleitende Durchschnitte
data['MA_50'] = data['Close'].rolling(window=50).mean()
data['MA_200'] = data['Close'].rolling(window=200).mean()

# Kauf-/Verkaufssignale generieren
data['Signal'] = 0
data['Signal'][data['MA_50'] > data['MA_200']] = 1  # Kurzfristiger MA kreuzt über langfristigen MA und erzeugt ein Kaufsignal
data['Signal'][data['MA_50'] < data['MA_200']] = -1  # Kurzfristiger MA kreuzt unter langfristigen MA und erzeugt ein Verkaufssignal

# Aktienkurs und gleitende Durchschnitte darstellen
plt.figure(figsize=(10, 6))
plt.plot(data['Close'], label='Schlusskurs')
plt.plot(data['MA_50'], label='50-Tage-gleitender Durchschnitt')
plt.plot(data['MA_200'], label='200-Tage-gleitender Durchschnitt')

# Kauf-/Verkaufssignale markieren
plt.scatter(data[data['Signal'] == 1].index, data[data['Signal'] == 1]['MA_50'], marker='^', color='g', label='Kaufsignal')
plt.scatter(data[data['Signal'] == -1].index, data[data['Signal'] == -1]['MA_50'], marker='v', color='r', label='Verkaufssignal')

plt.title("Maotai-Aktienkurs mit gleitenden Durchschnitten")
plt.xlabel("Datum")
plt.ylabel("Preis (CNY)")
plt.legend()
plt.show()

Der obige Beispielcode verwendet Aktiendaten von Guizhou Moutai (600519.SS), um gleitende Durchschnitte über 50 Tage und 200 Tage zu berechnen und erzeugt Kauf-/Verkaufssignale, indem er die Beziehung zwischen den beiden vergleicht.

Schließlich wird Matplotlib verwendet, um das Trenddiagramm des Aktienkurses zu zeichnen und die Kauf-/Verkaufssignale zu markieren.

Denken Sie daran, Strategien im tatsächlichen Handel sorgfältig zu recherchieren und zu testen, und tätigen Sie keine realen Investitionen direkt auf der Grundlage des Obigen.

Führen Sie den obigen Code aus; das Ausgabediagramm sieht wie folgt aus: Die grünen Teile sind Kaufsignale, die roten Teile sind Verkaufssignale. Klicken Sie auf das Bild, um Details zu vergrößern:

Backtesting-Strategie

Ich habe die positiven oder negativen täglichen Aktienrenditen verwendet, um Handelssignale zu erzeugen und ein einfaches Beispiel zu demonstrieren. Sie können diese Bedingung entsprechend Ihrer eigenen Strategie anpassen.

Beispiel

import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# Aktiendaten abrufen
symbol = "600519.SS"
start_date = "2023-01-01"
end_date = "2023-12-01"

data = yf.download(symbol, start=start_date, end=end_date)

# Crossover-Signal-Spalte initialisieren
data['Signal'] = 0

# Tagesrenditen berechnen
data['Daily_Return'] = data['Close'].pct_change()

# Strategie-Signale berechnen
data['Signal'] = 0
data.loc[data['Daily_Return'] > 0, 'Signal'] = 1  # Kursanstieg als Signal verwenden; Bedingung nach Bedarf anpassen

# Strategie-Renditen berechnen
data['Strategy_Return'] = data['Signal'].shift(1) * data['Daily_Return']

# Kumulierte Renditen berechnen
data['Cumulative_Return'] = (1 + data['Strategy_Return']).cumprod()

# Kumulative Renditekurve plotten
plt.figure(figsize=(10, 6))
plt.plot(data['Cumulative_Return'], label='Kumulative Rendite der Strategie', color='b')
plt.plot(data['Close'] / data['Close'].iloc[0], label='Kumulative Rendite der Aktie', color='g')
plt.title("Kumulative Rendite der Strategie vs. Aktie")
plt.xlabel("Datum")
plt.ylabel("Kumulative Rendite")
plt.legend()
plt.show()

Führen Sie den obigen Code aus; das Ausgabediagramm sieht wie folgt aus:


Grundlegende quantitative Handelsstrategien

Der quantitative Handel basiert auf mathematischen Modellen, Statistiken und Computeralgorithmen und identifiziert und führt Handelsmöglichkeiten durch systematische Methoden aus.

Im Folgenden finden Sie einige gängige grundlegende quantitative Handelsstrategien:

Der quantitative Handel basiert auf mathematischen Modellen, Statistiken und Computeralgorithmen und identifiziert und führt Handelsmöglichkeiten durch systematische Methoden aus.

Im Folgenden finden Sie einige gängige grundlegende quantitative Handelsstrategien:

1. Gleitende-Durchschnitt-Strategie

  • Strategieidee:Basierend auf dem historischen Durchschnitt der Aktienkurse werden Kauf- und Verkaufssignale durch die Berechnung der Differenz zwischen kurz- und langfristigen gleitenden Durchschnitten erzeugt.

  • Implementierungsmethode:Berechnen Sie kurz- und langfristige gleitende Durchschnitte. Wenn der kurzfristige MA den langfristigen MA nach oben durchkreuzt, wird ein Kaufsignal erzeugt; umgekehrt wird ein Verkaufssignal erzeugt.

2. Mean-Reversion-Strategie

  • Strategieidee:Basierend auf historischen Preisschwankungen wird angenommen, dass Preise nach Schwankungen auf ihr durchschnittliches Niveau zurückkehren.

  • Implementierungsmethode:Durch Berechnung der Differenz zwischen dem Preis und dem Mittelwert wird ein Kauf- oder Verkaufssignal erzeugt, wenn der Preis zu stark vom Mittelwert abweicht.

3. Momentum-Strategie

  • Strategieidee:Basierend auf Preistrends wird angenommen, dass Preistrends für eine gewisse Zeit andauern werden.

  • Implementierungsmethode:Kauf- oder Verkaufssignale werden durch Berechnung der Änderungsrate des Preises oder anderer Trendindikatoren erzeugt.

4. Marktneutrale Strategie

  • Strategieidee:Durch gleichzeitiges Kaufen und Verkaufen wird die relative Stärke des Marktes genutzt.

  • Implementierungsmethode:Handelssignale werden basierend auf der Preisdifferenz oder Korrelation zwischen zwei oder mehr verwandten Vermögenswerten generiert.

5. Statistische Arbitrage-Strategie

  • Strategieidee:Basierend auf statistischen Prinzipien werden vorübergehende Ungleichgewichte zwischen Preisen gesucht, um Arbitrage zu erzielen.

  • Implementierungsmethode:Handelssignale werden generiert, indem nach Ausreißern bei Preisen, Volatilität oder anderen statistischen Indikatoren gesucht wird.

6. Ereignisgesteuerte Strategie

  • Strategieidee:Handelssignale auf Basis des Auftretens bestimmter Ereignisse oder Informationen generieren.

  • Implementierungsmethode:Überwachen Sie Nachrichten, Finanzberichte, Wirtschaftsindikatoren usw. und führen Sie Trades aus, wenn bestimmte Ereignisse eintreten.

7. Machine-Learning-Strategie

  • Strategieidee:Verwenden Sie Algorithmen des maschinellen Lernens, um Muster aus großen Datenmengen zu lernen und zukünftige Preistrends vorherzusagen.

  • Implementierungsmethode:Verwenden Sie Regressions-, Klassifikations- oder Deep-Learning-Modelle und trainieren Sie die Modelle, um Markttrends vorherzusagen.

8. Hochfrequenzhandelsstrategie

  • Strategieidee:Nutzen Sie kleine Preisunterschiede in extrem kurzen Zeiträumen, indem Sie schnell eine große Anzahl von Trades ausführen.

  • Implementierungsmethode:Verwenden Sie leistungsstarke Algorithmen und schnelle Ausführungssysteme, die normalerweise eine große Anzahl von Trades und kurze Haltedauern umfassen.

Diese Strategien sind nur ein kleiner Teil des Bereichs des quantitativen Handels. Tatsächlich gibt es quantitative Handelsstrategien in vielen Formen, und sie können je nach Markt, Anlageklasse und Präferenzen des Traders angepasst werden. Wichtig ist, dass das Design quantitativer Strategien gründliches Backtesting und Überlegungen zum Risikomanagement erfordert, um ihre Wirksamkeit in verschiedenen Marktumgebungen sicherzustellen.

Andere Erweiterungen