わたねこコーリング

野良プログラマ発、日々のアウトプット

Pandas 演習としてのテクニカル指標計算 〜 ボラティリティの巻

今回はボラティリティを。価格変動の激しさを捉える指標ですね。「変動」といっても見方は様々で、前回のボリンジャーバンドで算出した株価の標準偏差も「個々の株価と一定期間平均とのバラツキ度合い」なので変動のいち表現と言えます。いっぽうで「前日との価格差」に着目した指標もあり、ヒストリカル・ボラティリティと呼ばれています。例えば一定期間内で株価が前日の1%増しで上昇していった場合、標準偏差ではそれなりの値を示しますが、ヒストリカル・ボラティリティでは変動率に変化が無かったとしてゼロが算出されます。

例によって、日経平均プロフィルさんから株価データ取得のコードは、シリーズ第1回目を参照ください。

ヒストリカル・ボラティリティは、株価変動率(前日価格との比率を自然対数化したもの)の標準偏差で求められるので、下記のようになります。

# 計算期間(日数)
BB_DAYS = 25

# 株価変動率を計算
df['variability'] = df.close.rolling(2).apply(lambda price: np.log(price[1]/price[0]))

# ヒストリカルボラティリティを計算
df['hv'] = df.variability.rolling(BB_DAYS).std()

# 比較用の標準偏差ボラティリティも計算
df['std'] = df.close.rolling(BB_DAYS).std() / df.close.rolling(BB_DAYS).mean()

という訳で、株価・ヒストリカルボラティリティ標準偏差ボラティリティのグラフはこんな感じ。

f:id:mariyudu:20190421130349p:plain
株価・ヒストリカルボラティリティ標準偏差ボラティリティ

コード一式と実行結果は Google Colaboratory でどうぞー↓。

colab.research.google.com