Python プログラミング

【Python】pandas-datareaderでVIX(恐怖指数)をスクレイピングで取得する

この記事は約3分で読めます。

 

 

日経ソフトウェア2018年9月号を読んでいたら恐怖指数がうんたらかんたらみたいな特集があって、サンプル通りに実行したら途中で、エラーになる謎コードがあり、前後関係も完全にイミフな内容だったので、書き直してみました

 

 

<開発環境>

  • Python3.6
  • JupyterLab
  • Windows10

 

スポンサーリンク
スポンサーリンク

pandas-datareaderでVIX(恐怖指数)をスクレイピングする

 

# ライブラリの読み込み
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import pandas_datareader.data as web
import pandas as pd

# fredからVixを取得する
vix = web.DataReader("VIXCLS", "fred", "1949/1/1")

# fredからSP500を取得する
sp500 = web.DataReader("SP500", "fred", "1949/1/1")

 

 

FREDというのはアメリカにあるセントルイス中央銀行のデータベースのことです。ここには日経平均など主要な金融データが保存されています。

 

関連記事:【Python】pandasで日経平均の株価データをスクレイピングする

 

pandas-datareaderは仕様上時々死ぬことがあるので、コード実行に失敗した人は、ここここからcsvを落として以下のコードを実行して読み込んでください。(ディレクトリは任意で調整してください)

 

# pandasでcsvを読み込む
vix = pd.read_csv('vix.csv', index_col='DATE')
sp500 = pd.read_csv('sp500.csv', index_col='DATE')

 

ちなみに引数のindex_col='DATE'がないとインデックスがずれて後々エラーを吐くので、忘れないように注意してください。

 

# 対数変化率を計算する
vol = (np.log(sp500).diff().dropna().rolling(20).std() * np.sqrt(365) * 100)

# データを結合する
ts = pd.concat([vix, vol], axis=1)

# 欠損値を削除する
ts = ts.dropna(how='any')

# 列名を変更する
ts.columns = [ 'vix', 'vol']

 

<実行結果>

 

 

関連記事:【Python】k-Mean法でクラスタリング+エルボー法で最適クラスタ数の決定

 

 

コメント

  1. […] 関連記事:【Python】pandas-datareaderでVIX(恐怖指数)を取得してk-Mean法でクラスタリング […]

タイトルとURLをコピーしました