Algo-Trading Teil 1 So empfängt man Kursdaten
Eine der wichtigen Herausforderungen beim Algo-Trading ist es, 1000 und mehr Aktien zu scannen und mit den Kursdaten etwas Spannendes anzufangen. Aber wie kommt man an die Kursdaten?
Wie bekommt man die Kursdaten?
Es gibt unzählige Projekte auf GitHub, um Kursdaten zu beziehen, und mein Favorit ist yfinance.
Das folgende Beispiel zeigt, wie man die Aktienkurse von Microsoft abrufen kann:
import yfinance as yf
msft = yf.Ticker("MSFT")
# get stock info
msft.info
# get historical market data
hist = msft.history(period="max")
Die Bibliothek benötigt ein Ticker-Symbol, um historische Marktdaten herunterzuladen. Daher brauchen wir eine Datenbank mit allen wichtigen Aktiensymbolen.
Wie bekommt man die Aktiensymbole?
Für dieses Problem habe ich selbst eine Bibliothek geschrieben. Sie heißt pytickersymbols und ist für jeden frei zugänglich.
Die Syntax ist denkbar einfach:
import yfinance as yf
from pytickersymbols import PyTickerSymbols
stock_data = PyTickerSymbols()
sp100_yahoo = stock_data.get_sp_100_nyc_yahoo_tickers()
sp500_google = stock_data.get_sp_500_nyc_yahoo_tickers()
dow_yahoo = stock_data.get_dow_jones_nyc_yahoo_tickers()
us_stocks = sp100_yahoo + sp500_google + dow_yahoo
for us_stock in us_stocks:
stock_data = yf.Ticker(us_stock)
data = stock_data.history(period="max")
# save data for analysis purposes
data.to_csv(f'{us_stock}.csv', sep='\t', encoding='utf-8')
# do magic stuff wit price data
data['SMA(5)'] = data.open.rolling(5).mean()
data['SMA(15)'] = data.open.rolling(15).mean()
df['Buy'] = df['SMA(5)'].ge(df['SMA(15)'])
data.to_csv(f'{us_stock}.csv', sep='\t', encoding='utf-8')
Mit dem obigen Skript können wir Kursdaten von 640 verschiedenen Aktien herunterladen und mit dem einfachen SMA-Algorithmus Kaufsignale generieren. Wow :D