移動平均乖離率を使って投資できるか?
時系列解析: 自己回帰型モデル・状態空間モデル・異常検知 (Advanced Python)
の1.8章は移動平均乖離率です。
P18に
「乖離率とチャートの関係性を観察し乖離率の閾値を決めることで変化点の検出に役立てることができる。」
とあります。
これは株価の解析に使えるかも知れません。
移動平均乖離率とは
移動平均乖離率は、次の式で表されます。
移動平均乖離率 = \frac{(原系列の値-移動平均値)}{移動平均値} ×100
これは、rollingを使えば簡単にできます。
まずdf_end_value
に、index``として年月日を
Datetime`で、値として終値を入れました。
#日付
#2020-01-06 1759.0
#2020-01-07 1789.0
#2020-01-08 1765.0
#2020-01-09 1794.0
#2020-01-10 1800.0
#Name: 終値, dtype: float64
このデータを使って、移動平均の計算方法は、
#rollingで移動させて、meanで平均を取る。
ma24 = df_end_value.rolling(24).mean()
#原系列のデータから移動平均値を引いて、移動平均値で割ります
diff_ma24 = (df_end_value - ma24) / ma24 * 100
#これはグラフ
plt.plot(df_end_value.index,ma24,c='r',label='price_average')
plt.plot(df_end_value.index,df_end_value,c='b',label='price_real')
plt.ylabel('topix_price',fontsize=16)
plt.xticks(rotation=45)
plt.legend()
plt.show()
これが移動平均ですが、これでなくても、前回説明したstatsmodesl
のtrend
で、同じようなトレンド成分が計算できますので、これで計算してみましょう。
#statsmodelsのインポート
import statsmodels.api as sm
#25日間周期で加法モデルで時系列解析を行う
ts = sm.tsa.seasonal_decompose(df_end_value, freq=25,model='additive')
#frq25なので前後の値を削除して、乖離率を計算に、
res = (df_end_value.values.flatten()[12:-12] - ts.trend[12:-12])/ts.trend[12:-12] * 100
plt.plot(df_end_value.index,ts.trend,c='r',label='price_trend')
plt.plot(df_end_value.index,df_end_value,c='b',label='price_real')
plt.ylabel('topix_price',fontsize=16)
plt.xticks(rotation=45)
plt.legend()
plt.show()
plt.hist(res)
plt.xlabel('乖離率',fontsize=16)
plt.ylabel('頻度',fontsize=16)
plt.show()
plt.plot(df_end_value.index[12:-12],res)
plt.xticks(rotation =45)
plt.ylabel('乖離率',fontsize=16)
plt.show()
計算自体は簡単です。
ざっと傾向を見てみましょう!!
20年の解析
結果の解析結果です。
一番上のグラフが移動平均線。真ん中が、乖離率のヒストグラム、一番下が乖離率の時系列です。
コロナで大きく落ちて、20年3月の大きく乖離したところがありますが、それ以外は、だいたいプラスもマイナスも3%近辺で反転しています。
この計算で乖離率が3%近くなったら、逆張りすれば価格はトレンド線へ戻ろうとしますので、利益が出ます。
では他の年は?
19年の解析
19年だと2%くらいのあたりで反転しています。
18年の解析
18年は乖離率が若干大きくて3%から4%で反転しています。もう忘れてしまっていますが、18年も大きく株価が下落した年でした。
17年の解析
17年は、1%程度で半単しているところが多くなります。
毎年微妙に乖離率が異なります。このあたりは経済状況とか、他の要因が効いていると思われるので、時系列解析だけでは、乖離率何%が良いのかは少し無理があるかもしれません。他の予測で閾値を決められるかは考えたいと思います。まぁ、今はだいたい2~3%で逆張りで大丈夫そうです。
逆張り投資はこれで可能かもしれません。
逆張り投資で大儲け!!
次回は、株価に自己相関・定常性があるか検定を行っていきたいと思います。こちらは順張り投資で儲けられるかの検討です。