7
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【python】DataReaderで経済データを取得する

Posted at

twitterで下記チャートを紹介しました。
VIX_SP500rtn.png
このチャートは、

横軸はVIX(恐怖指数)、縦軸はその後100日(約半年)騰落率。VIXの水準とその後の騰落率には正の相関がありランダムウォークではない。今のVIXが40程度なので、過去ケースから見ると半年後のリターンがマイナスになることはなさそう(投資は自己責任!)

ということを意味しています。

このチャートは、Pythonのpandas_datareaderを使ってセントルイス連銀ウェブサイトからVIX(恐怖指数)とS&P500株価指数を取得して作りました。

ここにそのコードを保存しておきます。

まずライブラリの読み込み。

import pandas as pd
import numpy as np
import pandas_datareader.data as web

import datetime
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

#1.DataReaderでデータを取得

#取得するデータの開始日と最終日を指定
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2020, 5, 1)


#S&P500のデータを取得
# 'SP500'がS&P500のティッカーシンボル。
# 'fred'が、データソースとしてセントルイス連銀を指定する。
#あとは開始日と最終日。
eq = web.DataReader('SP500', 'fred', start, end)

#VIXのデータを取得
# 'VIXCLS'がVIXのティッカーシンボル。
vix = web.DataReader('VIXCLS','fred', start, end)

#取得したデータを1つのデータフレームにまとめる
df = pd.DataFrame(index = eq.index)
df['Equity'] = eq
df['VIX'] = vix
df.dropna(inplace = True)

セントルイス連銀からは様々な経済・金融データを取得できます。
セントルイス連銀ウェブサイト各データのURLの、一番最後がシンボルティッカーです。

例:VIXの場合は下記アドレスの最後、VIXCLSとなります。
https://fred.stlouisfed.org/series/VIXCLS

#2. グラフを作成

#グラフを作る関数
def chart(days):
    dfd = df.copy()
    dfd['Return'] = (dfd['Equity'].shift(-days) /  dfd['Equity'] -1)
    dfd.dropna(inplace = True)
    plt.figure(figsize = (8,4))
    plt.scatter(x = dfd['VIX'], y = dfd['Return'], alpha = 0.6, c = dfd['VIX'])
    plt.xlabel('VIX')
    plt.ylabel(str(days)+' days Return')
    plt.title('VIX and S&P500 '+str(days)+' days Returns (USD base)')
    plt.savefig('VIX_SP500rtn',bbox_inches="tight")

#何日間のリターンを計算するかを指定して関数実行
chart(100)

↓このグラフが作られます。

VIX_SP500rtn.png

plt.scatter(x = dfd['VIX'], y = dfd['Return'], alpha = 0.6, c = dfd['VIX'])
↑このコードのc = dfd['VIX']によって、VIXの値に応じてグラフ内の点の色を変えて、グラデーション効果を出しています。

おまけ1:VIXチャート

df['VIX'].plot(title = 'VIX', figsize = (8,4))

VIX.png

おまけ2:SP500チャート

df['Equity'].plot(title = 'S&P500', figsize = (8,4))

VIX.png

おわりに

DataReaderでは、セントルイス連銀の経済データだけでなく、株価や為替など、様々なデータを取得することができます。詳しくはDataReaderのドキュメントをご参照ください。

7
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?