金融データの自己相関係数
やること
金融の実データについて、コレログラムを作成。各指標について、時間依存の関係をみる。
実データはとりあえず以下の指標を使用。
日次リターンと週次リターンの2通りで、時間依存の関係をみる。
参考サイト
pandasで時系列データをリサンプリングするresample, asfreq | note.nkmk.me
pandasの時系列データにおける頻度(引数freq)の指定方法 | note.nkmk.me
使用データ
price.haed(5)
DM1
とかもまざっているけど、今回は対象としないです。
期間は2010/1/1 ~ 2020/4/30までです。
コード
日次リターン
- 日次リターンの算出
log_return_ = np.log(price).diff().dropna() log_return_ *= 100. # % log_return.head(5)
- コレログラム作成
import statsmodels.graphics.api as smg from statsmodels.graphics.tsaplots import plot_acf from statsmodels.graphics.tsaplots import plot_pacf def correlogram(to_show: pd.Series): plot_acf(to_show, lags = 29) plt.show() # 推移律考慮 plot_pacf(to_show, lags = 29) plt.show() return ty1 = log_return['TY1'] es1 = log_return['ES1'] usdjpy = log_return['USDJPY'] # sns.lineplot(data = ty1) # sns.lineplot(data = es1) # sns.lineplot(data = usdjpy) correlogram(ty1) correlogram(es1) correlogram(usdjpy)
- TY1
- ES1
- USDJPY
3資産ともラグ1 ~ 29について強い相関は全くみられなかった。まあ日次リターンやっぱりそっかあ、という感じ。
週次リターン
- 週次リターンの算出
# weekly return w_price = price.resample('W').last() log_w_return_ = np.log(w_price).diff().dropna() log_w_return_ *= 100. # % log_w_return_.head(5)
毎週日曜でリサンプリング。データは月~金のデータしかないので、金曜のデータが使われている。
- コレログラム作成
import statsmodels.graphics.api as smg from statsmodels.graphics.tsaplots import plot_acf from statsmodels.graphics.tsaplots import plot_pacf def correlogram(to_show: pd.Series): plot_acf(to_show, lags = 29) plt.show() # 推移律考慮 plot_pacf(to_show, lags = 29) plt.show() return w_ty1 = log_w_return['TY1'] w_es1 = log_w_return['ES1'] w_usdjpy = log_w_return['USDJPY'] correlogram(w_ty1) correlogram(w_es1) correlogram(w_usdjpy)
- TY1
- ES1
- USDJPY
あ、週次でも強い相関ないんだ。。
(なんちゃって)週次リターン
- なんちゃって週次リターンの算出
週次リターンの算出を最初みすったときに、偶然みつけたんだけども、なんちゃってみたいな週次リターンを算出したら逆に相関が強くなった。
# weekly return # weekly return adj_log_w_return_ = np.log(price).diff(5).dropna() adj_log_w_return_ *= 100. # % adj_log_w_return_.head(5)
各時点について、5営業日前の値と比較した対数収益率をだしてみた。
- コレログラム作成
import statsmodels.graphics.api as smg from statsmodels.graphics.tsaplots import plot_acf from statsmodels.graphics.tsaplots import plot_pacf def correlogram(to_show: pd.Series): plot_acf(to_show, lags = 29) plt.show() # 推移律考慮 plot_pacf(to_show, lags = 29) plt.show() return adj_w_ty1 = log_adj_w_return['TY1'] adj_w_es1 = log_adj_w_return['ES1'] adj_w_usdjpy = log_adj_w_return['USDJPY'] correlogram(adj_w_ty1) correlogram(adj_w_es1) correlogram(adj_w_usdjpy)
- TY1
- ES1
- USDJPY
なぜだ。。全資産に共通してラグが1,6,11と5きざみで相関が高くなる。。火曜の週次リターンは月曜の週次リターンと相関が強いみたいだが、なんか変なことしてる、、?