Allgemeine Finanzanalyse in Python (Teil 1)

Im letzten Artikel wurde untersucht, wie Sie Informationen zu Finanzinstrumenten erhalten können. Als nächstes werden mehrere Artikel veröffentlicht, in denen erläutert wird, was mit den erhaltenen Daten zunächst getan werden kann, wie eine Strategie analysiert und erstellt werden kann. Die Materialien basieren auf Veröffentlichungen in ausländischen Quellen und Kursen auf einer der Online-Plattformen.

In diesem Artikel wird erläutert, wie Rentabilität und Volatilität berechnet und einer der Hauptindikatoren erstellt werden.

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

sber = yf.download('SBER.ME','2016-01-01')

Rentabilität


Dieser Wert gibt die prozentuale Änderung des Wertes der Aktie für einen Handelstag an. Dividenden und Provisionen werden nicht berücksichtigt. Die Berechnung mit der Funktion pct_change () aus dem Pandas-Paket ist einfach.

In der Regel wird die Protokollrentabilität verwendet, da Sie damit Änderungen im Laufe der Zeit besser verstehen und untersuchen können.

#   `
daily_close = sber[['Adj Close']]

#  
daily_pct_change = daily_close.pct_change()

#  NA   0
daily_pct_change.fillna(0, inplace=True)

print(daily_pct_change.head())

#   
daily_log_returns = np.log(daily_close.pct_change()+1)

print(daily_log_returns.head())

Bild

Verwenden Sie die Funktion resample (), um die wöchentliche und / oder monatliche Rentabilität der erhaltenen Daten zu ermitteln.

#   `sber`      
monthly = sber.resample('BM').apply(lambda x: x[-1])

#  
print(monthly.pct_change().tail())

#  `sber`        
quarter = sber.resample("4M").mean()

#  
print(quarter.pct_change().tail())

Bild

Die Funktion pct_change () ist bequem zu verwenden, verbirgt jedoch wiederum, wie der Wert erhalten wird. Eine ähnliche Berechnung, die zum Verständnis des Mechanismus beiträgt, kann mit shift () aus dem Paket aus dem Pandas-Paket durchgeführt werden. Der tägliche Schlusskurs wird durch den vergangenen (um eins verschobenen) Preis geteilt und eine Einheit vom erhaltenen Wert abgezogen. Es gibt jedoch ein kleines Minus - der erste Wert ist NA.

Die Berechnung der Rentabilität basiert auf der Formel:

Bild

Dabei ist p der Preis, t der Zeitpunkt und r die Rentabilität.

Als nächstes wird ein Rentabilitätsverteilungsdiagramm erstellt und die Hauptstatistik berechnet:

#  
daily_pct_change = daily_close / daily_close.shift(1) - 1

print(daily_pct_change.head())

Bild

#  `daily_pct_c`
daily_pct_change.hist(bins=50)

plt.show()

#  
print(daily_pct_change.describe())

Bild

Die Verteilung sieht sehr symmetrisch aus und ist normalerweise um einen Wert von 0,00 verteilt. Um andere Statistikwerte zu erhalten, wird die Funktion description () verwendet. Als Ergebnis ist ersichtlich, dass der Durchschnittswert etwas größer als Null ist und die Standardabweichung fast 0,02 beträgt.

Kumulative Rendite


Die kumulierten täglichen Renditen sind nützlich, um den Wert einer Investition über einen bestimmten Zeitraum zu bestimmen. Sie kann wie im folgenden Code gezeigt berechnet werden.

#   
cum_daily_return = (1 + daily_pct_change).cumprod()

print(cum_daily_return.tail())

Bild

#    
cum_daily_return.plot(figsize=(12,8))

plt.show()

Bild

Sie können die Rendite im monatlichen Zeitraum neu berechnen:

#   
cum_monthly_return = cum_daily_return.resample("M").mean()

print(cum_monthly_return.tail())

Bild

Bei der Analyse von Aktien ist es hilfreich zu wissen, wie Renditen berechnet werden. Im Vergleich zu anderen Aktien ist es jedoch noch wertvoller.

Nehmen Sie einige Aktien (ihre Auswahl ist völlig zufällig) und erstellen Sie ihr Diagramm.

ticker = ['AFLT.ME','DSKY.ME','IRAO.ME','PIKK.ME', 'PLZL.ME','SBER.ME','ENRU.ME']

stock = yf.download(ticker,'2018-01-01')

#    `daily_close_px`
daily_pct_change = stock['Adj Close'].pct_change()

# 
daily_pct_change.hist(bins=50, sharex=True, figsize=(20,8))

plt.show()

Bild

Ein weiterer nützlicher Graph ist die Streumatrix. Es kann einfach mit der Funktion dispers_matrix () erstellt werden, die Teil der Pandas-Bibliothek ist. Daily_pct_change wird als Argument verwendet und der Parameter Kernel Density Estimation wird festgelegt. Darüber hinaus können Sie die Transparenz mithilfe des Alpha-Parameters und die Größe des Diagramms mithilfe des figsize-Parameters festlegen.

from pandas.plotting import scatter_matrix

#   `daily_pct_change`  
scatter_matrix(daily_pct_change, diagonal='kde', alpha=0.1,figsize=(20,20))

plt.show()

Bild

Das ist alles für jetzt. Der nächste Artikel behandelt die Berechnung der Volatilität, des Durchschnitts und der Methode der kleinsten Quadrate.

All Articles