Von Gestern werden wir weiterhin Finanzdaten analysieren.
Bei der Analyse eines Aktienportfolios geben die Renditen normalerweise eine prozentuale Änderung des Vermögenspreises an. Die prozentuale Änderung des Aktienkurses gegenüber dem Aktienkurs von Apple finden Sie in Yahoo! Finance.
Pandas-Datenrahmen verfügen über leistungsstarke Funktionen zur Frequenzumwandlung.
Funktion | Erläuterung |
---|---|
resample | Konvertieren Sie Daten in feste Frequenzen |
reindex | Weisen Sie Daten einem neuen Index zu |
Weitere Datenrahmenfunktionen finden Sie in der Referenz (http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.html).
[Angepasster Schlusskurs](http://www.yahoo-help.jp/app/answers/detail/p/546/a_id/45316/~/%E8%AA%BF%E6%95%B4%E5%BE % 8C% E7% B5% 82% E5% 80% A4% E3% 81% A8% E3% 81% AF) (Adjusted Closing Values) ist ein Split, um Daten kontinuierlich vor und nach einem Aktiensplit oder einer Dividende zu erfassen. Es wird auf den späteren Wert eingestellt.
Der Renditeindex ist ein Index, der die Wertentwicklung unter Berücksichtigung der Dividende der Aktie anzeigt und Zeitreihendaten enthält, deren Wert die Anlageeinheit darstellt. Apples Rückgabeindex wird nach der Cumprod-Methode berechnet.
import pandas as pd
import pandas.io.data as web
#Erworbener bereinigter Schlusskurs der Apple-Aktie seit 2010
price = web.get_data_yahoo('AAPL', '2009-12-31')['Adj Close']
returns = price.pct_change()
ret_index = (1 + returns).cumprod() #Berechnung des Renditeindex
ret_index[0] = 1 #1, weil die erste Zeile NaN ist.Auf 0
print ( ret_index )
# =>
# Date
# 2009-12-31 1.000000
# 2010-01-04 1.015602
# 2010-01-05 1.017330
# 2010-01-06 1.001136
# 2010-01-07 0.999309
# 2010-01-08 1.005974
# 2010-01-11 0.997087
# 2010-01-12 0.985731
# 2010-01-13 0.999654
# 2010-01-14 0.993828
# 2010-01-15 0.977239
# 2010-01-19 1.020490
# 2010-01-20 1.004789
# 2010-01-21 0.987410
# 2010-01-22 0.938432
# ...
# 2014-02-19 2.653155
# 2014-02-20 2.622445
# 2014-02-21 2.593315
# 2014-02-24 2.604671
# 2014-02-25 2.577565
# 2014-02-26 2.554310
# 2014-02-27 2.605263
# 2014-02-28 2.598203
# 2014-03-03 2.605708
# 2014-03-04 2.622889
# 2014-03-05 2.628419
# 2014-03-06 2.620470
# 2014-03-07 2.618939
# 2014-03-10 2.621309
# 2014-03-11 2.646835
#Berechnen Sie die kumulierte Rendite
m_returns = ret_index.resample('BM', how='last').pct_change()
print( m_returns['2014'] ) #Show 2014
# =>
# Date
# 2014-01-31 -0.107696
# 2014-02-28 0.057514
# 2014-03-31 0.018718
#Die kumulative Rendite kann auch durch erneutes Abtasten während der Aggregation berechnet werden.
m_returns = (1 + returns).resample('M', how='prod', kind='period') - 1
print( m_returns['2014'] ) #Show 2014(Gleiches Ergebnis)
Wenn Sie die Informationen eines großen Datenrahmens drucken (), werden diese automatisch weggelassen und Anfang und Ende werden angezeigt.
Lassen Sie uns die Kursentwicklung des Aktienportfolios im Finanz- und IT-Sektor darstellen und uns dabei auf die drei Jahre seit 2010 konzentrieren, insbesondere nach dem Erdbeben bis zum 11. März dieses Jahres.
def get_px(stock, start, end):
return web.get_data_yahoo(stock, start, end)['Adj Close']
names = ['AAPL', 'GOOG', 'MSFT', 'DELL', 'GS', 'MS', 'BAC', 'C']
px = pd.DataFrame( {n: get_px(n, '1/1/2010', '3/11/2014') for n in names} )
px = px.asfreq('B').fillna(method='pad')
rets = px.pct_change()
result = ((1 + rets).cumprod() - 1)
plt.figure()
result.plot()
plt.show()
plt.savefig("image.png ")
Von hier aus können Sie die Rendite Ihres Portfolios über einen bestimmten Zeitraum berechnen und Ihre Strategie mit verschiedenen Visualisierungen testen.
Durch den Umgang mit Finanzdaten in einem Datenrahmen, der einfach zu visualisieren ist und über zahlreiche Funktionen verfügt, haben wir festgestellt, dass Ad-hoc-Analysen ohne Verwendung teurer und kostenpflichtiger Software durchgeführt werden können.
Einführung in die Datenanalyse mit Python-Datenverarbeitung mit NumPy und Pandas http://www.oreilly.co.jp/books/9784873116556/
Recommended Posts