pythonで株価の対数差収益率を求める方法【時系列データの対数差分をとる】

今回は、pythonを使って株価の対数差収益率を計算してみるという内容。

 

 

pythonの場合、numpyモジュールとpandasモジュールを使う2つの方法がありますが、この記事ではpandasを使います。(どっちも方法はほとんど同じ)

スポンサーリンク

計算式を確認しておく

プログラムの話をする前に、対数差収益率の計算式を確認しておきます。

 

まず、私たちがよく使っている一般的な収益率の計算式はこちら。

$$\frac{x_{t-1}}{x_t-x_{t-1}}$$

 

x_tを当時株価終値。x_t-1を前日株価終値とするとニュース等で一般的に使われる日々の変動率になります。

 

一方、この収益率を対数で表す計算式はこちら

$${\log x_t}-{\log x_{t-1}}$$

 

とてもシンプル!!

 

この式の面白いところは、対数化してもその値が実際の変動率と近似する点です。

$$\frac{x_{t-1}}{x_t-x_{t-1}}\approx{\log x_t}-{\log x_{t-1}}$$

 

ただし、近似は変動率が高くなればなるほどズレが大きくなります。この記事は、数式の解説が本題ではないのでこれ以上は割愛します。

スポンサーリンク

pandasを使えば対数差収益率は簡単に出せる

さて、小難しい数式の話は置いといて、pythonで対数差収益率を出してみます。

 

こんな感じの富士フィルム(4901)のデータを使います。

df['ratio_log']=np.log(df['close'])-np.log(df['close'].shift(1))
df['ratio']=(df['close']-df['close'].shift(1))/df['close'].shift(1)

こうして普通の収益率と対数差収益率を二つ計算。

 

np.log()で指定した列を対数化できます。とっても簡単。結果部分だけピックアップするとこんな感じ。左が対数差収益率、右が通常の収益率です。

対数収益率が完璧でないにせよ、収益率と近似している様子がわかると思います。

 

 

数値を対数化すると通常は、尺度が全く変わってしまい慣れないと数値の変化がわかりにくく感じてしまうことがあります。しかし、対数差収益率は対数化する前の数値と近似するため、感覚的にもとても使いやすいです。

 

 

 

pythonだとわずか数行で大量のデータを対数化することが可能です。株価を分析する際に、必ず対数化する必要はないとは思いますが、手法として知っておくと便利だと思います。

 

〜まとめ〜

pandasの対数計算にはnp.logを使う!



統計・数学
もぐたろうをフォローする
この記事を書いた人
もぐたろう

薄給サラリーマン。まなれきドットコムを運営しています。
趣味はブログ・プログラミング・投資。

もぐたろうをフォローする
まなれきドットコム

コメント