Python Quantitativ
Quantitativer Handel mit Python bezeichnet den Prozess der Nutzung der Programmiersprache Python zusammen mit zugehörigen Bibliotheken und Werkzeugen zur Durchführung von Finanzmarktdatenanalysen, Strategieentwicklung und Handelsausführung.
Python ist aufgrund seiner Einfachheit, leichten Erlernbarkeit, seines leistungsstarken Ökosystems und seiner reichhaltigen Finanzbibliotheken zu einer der bevorzugten Programmiersprachen für den quantitativen Handel geworden.
Quantitativer Handel wird im Finanzbereich weit verbreitet eingesetzt. Er ermöglicht es Händlern, Handelsstrategien durch systematische Methoden zu entwickeln und auszuführen, wodurch die Handelseffizienz und die Wissenschaftlichkeit der Entscheidungsfindung verbessert werden.
Die quantitative Analyse verwendet hauptsächlich mathematische und statistische Methoden, kombiniert mit Computertechnologie, um Finanzmärkte quantitativ zu analysieren und dadurch Handelsstrategien zu entwickeln und auszuführen.
Für mehr Inhalte zum quantitativen Handel mit Python siehe:Python-Quantitativer-Handel。
Beispielanwendungen
Als Nächstes sehen wir uns ein einfaches Anwendungsbeispiel für den quantitativen Handel mit Python an. Wir können eine Gleitende-Durchschnitt-Strategie mit Daten von Yahoo Finance verwenden.
Die Grundidee dieser Strategie besteht darin, Kauf- und Verkaufssignale durch den Vergleich kurzfristiger und langfristiger gleitender Durchschnitte zu erzeugen.
Bevor wir mit diesem einfachen Beispiel fortfahren, müssen Sie drei Pakete installieren:
pip install pandas yfinance matplotlib
Paketbeschreibungen:
- Pandas ist eine leistungsstarke Open-Source-Bibliothek zur Datenverarbeitung und -analyse, die speziell für effiziente Datenanalyse und -manipulation entwickelt wurde.
- yfinance ist eine Bibliothek zum Abrufen von Finanzdaten, die das Abrufen von Aktien, Indizes und anderen Finanzmarktdaten von Yahoo Finance unterstützt.
- Matplotlib ist eine 2D-Plot-Bibliothek, mit der statische, animierte und interaktive Datenvisualisierungen erstellt werden können.
Historische Aktiendaten abrufen
Verwenden Sie yfinance, um historische Aktiendaten abzurufen. Hier ist ein einfaches Beispiel:
Beispiel
# 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())
Das Ausgabeergebnis ist wie folgt:
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 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 wird wie folgt angezeigt:

Backtesting der Moving-Average-Crossover-Strategie
Backtesting ist der Prozess der Simulation und Bewertung einer Handelsstrategie anhand historischer Marktdaten.
Das Folgende ist Beispielcode für einen einfachen Moving-Average-Crossover-Strategie-Backtest. Die Strategie kauft, wenn der 50-Tage-Moving-Average den 200-Tage-Moving-Average nach oben kreuzt, und verkauft, wenn er nach unten kreuzt. Die Performance der Strategie gibt Kennzahlen wie Gesamtrendite, annualisierte Rendite und maximalen Drawdown aus.
Beispiel
import pandas as pd
import matplotlib.pyplot as plt
# Aktiendaten abrufen
symbol = "600519.SS"
start_date = "2021-01-01"
end_date = "2023-01-01"
data = yf.download(symbol, start=start_date, end=end_date)
# Gleitende Durchschnitte berechnen
data['SMA_50'] = data['Close'].rolling(window=50).mean()
data['SMA_200'] = data['Close'].rolling(window=200).mean()
# Crossover-Signal-Spalte initialisieren
data['Signal'] = 0
# Crossover-Signale berechnen
data.loc[data['SMA_50'] > data['SMA_200'], 'Signal'] = 1
data.loc[data['SMA_50'] < data['SMA_200'], 'Signal'] = -1
# Tagesrenditen berechnen
data['Daily_Return'] = data['Close'].pct_change()
# Berechne die Rendite basierend auf Strategie-Signalen (shift(1) wird verwendet, um Look-Ahead-Bias zu vermeiden)
data['Strategy_Return'] = data['Signal'].shift(1) * data['Daily_Return']
# Kumulierte Renditen berechnen
data['Cumulative_Return'] = (1 + data['Strategy_Return']).cumprod()
# Strategie-Performance ausgeben
strategy_performance = {
'Gesamtrendite': data['Cumulative_Return'].iloc[-1] - 1,
'Annualisierte Rendite': (data['Cumulative_Return'].iloc[-1] ** (252 / len(data))) - 1,
'Maximaler Drawdown': (data['Cumulative_Return'] / data['Cumulative_Return'].cummax() - 1).min(),
}
print("Strategie-Performance:")
for key, value in strategy_performance.items():
print(f"{key}: {value:.4f}")
# 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()
Das Anzeigediagramm sieht wie folgt aus:

Bitte beachten Sie, dass dies nur ein einfaches Beispiel ist. Anwendungen in der Praxis erfordern komplexere Strategien und zusätzliche Überlegungen.
Andere Erweiterungen