[PYTHON] Zeitreihenzerlegung

Überprüfen Sie den Kalendereffekt der monatlichen Retouren

Experimentieren Sie mit der Zerlegung von Statistikmodellen, ob Sie den Kalendereffekt Halloween-Effekt, Verkauf im Mai usw. sehen können.


import numpy as np
import pandas as pd

import statsmodels.api as sm
import pandas_datareader.data as web

import warnings
warnings.filterwarnings('ignore')

import matplotlib.pyplot as plt
plt.style.use('seaborn-darkgrid')
plt.rcParams['axes.xmargin'] = 0.01
plt.rcParams['axes.ymargin'] = 0.01

window = 250*3

'''S&P500 Datenerfassung'''
data1 = web.DataReader("^GSPC", "yahoo", "1980/1/1").dropna()

#Treasury Yield 10 Jahre Datenerfassung
data2 = web.DataReader("^TNX", "yahoo", "1980/1/1").dropna()

#Tägliche jährliche Volatilität= 10%Nutzen Sie angepasste Einstellungen
ret = pd.DataFrame(data1['Adj Close'] / data1['Adj Close'].shift(1) - 1)
ret = 0.1 * ret / (ret.rolling(252).std()*np.sqrt(252)).shift(1)
data1 = 100*((1 + ret).cumprod()).dropna(axis=0)

data1_freq = data1.resample('M').last().fillna(method='ffill')
data1_freq['ret1'] = data1_freq['Adj Close']/data1_freq['Adj Close'].shift(1) - 1

#Erstellen Sie monatliche Runden neu
data1_freq_equity_curve = 100*((1 + data1_freq['ret1']).cumprod()).dropna(axis=0)
data1_freq_equity_curve.index = pd.to_datetime(data1_freq_equity_curve.index)

#10 Jahre für das ganze Jahr(120 Monate), 5 Jahre(60 Monate)
res_all = sm.tsa.seasonal_decompose(data1_freq_equity_curve, freq=12)
res_10Y = sm.tsa.seasonal_decompose(data1_freq_equity_curve[-120:], freq=12)
res_5Y = sm.tsa.seasonal_decompose(data1_freq_equity_curve[-60:], freq=12)

seasonality = pd.concat([res_all.seasonal, 
                         res_10Y.seasonal, 
                         res_5Y.seasonal], axis=1)

seasonality.columns = ['1981-', '10Y', '5Y']
m_seasonality = seasonality.groupby(seasonality.index.month).mean()

# Creat Figure
month = m_seasonality.index
height = m_seasonality * 100

bar_width = 0.3

plt.figure(figsize=(10, 4), dpi=80)
plt.bar(month, height['1981-'], tick_label=month, 
        width=0.3, label='1981-')
plt.bar(month + bar_width, height['10Y'], tick_label=month, 
        width=0.3, label='10Y')
plt.bar(month + 2*bar_width, height['5Y'], tick_label=month, 
        width=0.3, label='5Y')
plt.xticks(month + bar_width, month)
plt.legend()
plt.title("Average Return by Month")
plt.xlabel("Month")
plt.ylabel("Ave.Ret(%)")
plt.show()

Betrachtet man die Renditen in der Saison

M_ret.png

Decomposition(Trend, Seasonality, Residual)

res_10Y.plot()
plt.show()

Decomp.png

Recommended Posts

Zeitreihenzerlegung
Python-Zeitreihenfrage
RNN_LSTM1 Zeitreihenanalyse
Zeitreihenanalyse 1 Grundlagen
TOPIX-Zeitreihen anzeigen
Zeitreihendiagramm / Matplotlib
Zeitreihenanalyse Teil 4 VAR
Zeitreihenanalyse Teil 3 Prognose
[Python] Zeichnen Sie Zeitreihendaten
Zeitreihenanalyse Teil 1 Autokorrelation
Berechnung der Zeitreihen-Kundenbindung
Python: Zeitreihenanalyse: Vorverarbeitung von Zeitreihendaten
Umsatzprognose für die Zeitreihenanalyse
Zeitreihenplot gestartet ~ Python Edition ~
Über Zeitreihendaten und Übertraining
Differenzierung von Zeitreihendaten (diskret)
Bewegungsstatistik zur Vorhersage von Zeitreihen
Zeitreihenanalyse 3 Vorverarbeitung von Zeitreihendaten
LSTM (1) zur Zeitreihenvorhersage (für Anfänger)
Vorhersage von Zeitreihendaten durch Simplex-Projektion
Zeitreihenanalyse 2 Stabilität, ARMA / ARIMA-Modell
Vorhersage von Zeitreihendaten mit einem neuronalen Netzwerk
So vergleichen Sie Zeitreihendaten-Derivative DTW, DTW-
Ich habe versucht, Zeitreihen zu analysieren! (AR-Modell)
Zeitreihenanalyse Teil 2 AR / MA / ARMA
[Python] Beschleunigt das Laden von Zeitreihen-CSV
Zeitreihenanalyse 4 Konstruktion des SARIMA-Modells
Erkennung von Zeitreihendatenanomalien für Anfänger
Zeitzone
matplotlib Schreiben Sie Text in ein Zeitreihendiagramm
Umgang mit Zeitreihendaten (Implementierung)
OpenFOAM-Zeitreihendaten lesen und Daten einstellen
Zeitreihenanalyse Nr. 6 Gefälschte Rückkehr und republikanischer Teil
Python: Zeitreihenanalyse: Erstellen eines SARIMA-Modells
Holen Sie sich mit Python Zeitreihendaten von k-db.com
Python: Zeitreihenanalyse: Konstanz, ARMA / ARIMA-Modell
Zusammenfassung der Kaggle-Kernel-Methode [Tabelle Zeitreihendaten]
Erfassung von Zeitreihendaten (täglich) von Aktienkursen
Glättung von Zeitreihen und Wellenformdaten 3 Methoden (Glättung)
Zeigen Sie Details zu Zeitreihendaten mit Remotte an
Lesen von Zeitreihendaten in PyTorch