【独習】0から始めるシストレ!

初学者がシステムトレードに挑戦するブログです

日経平均の抽出

前回は自分が見たい銘柄の株価の抽出を行いました!

でも、トレードで行う上で個別銘柄の分析を行うだけでなく日経やダウ平均等の指標を見てマクロ的な目線も必要ですよね。

今後システムトレードアルゴリズムに組み込もうと考えていますが、

取り敢えず自動で日経平均、ダウ平均を自動でcsvに抜き出すプログラムを作成しようと思います。

 


 

開発環境

開発環境としてはGoogle Collaboratory 

を用いて基本的には開発(言語はpython)を行っていこうと考えています。

Google Collaboratory とは、
Colaboratory(略称: Colab)は、ブラウザから Python を記述、実行できるサービスです。次の特長を備えています。
colab.research.google.com

日経平均、ダウ平均抽出

 それでは、実際に各経済指標を抽出するプログラムを紹介いたします。
 

参照先

 今回は下記のサイトから各経済指標を抽出します。
“FRED® (Federal Reserve Economic Data) =フレッド”を用います。これは米国に12ある連邦準備銀行のうちのひとつ=セントルイス連邦準備銀行が運営している経済統計データ集です。米国経済に関する21,937の時系列データを自由にダウンロードすることができ、このサイトで主要な経済統計の大部分を入手することが可能です。このサイトでは、日経平均等も取得可能となっています。このサイトからAPIを用いて各データを抜き出していきます。

fred.stlouisfed.org

日経平均

fred.stlouisfed.org

ダウ平均

fred.stlouisfed.org

S&P500

fred.stlouisfed.org

他にも様々な指標があるので是非気になる指標を見てみてください!
 

抽出プログラム

 ここでは、上記のサイトから欲しい情報(日経平均、S&P500、ダウ平均)をcsvに抜き出すところまでを実施します。

#import
import datetime
import pandas as pd
import csv
from pandas_datareader import data as web


#取得期間
end = datetime.date.today()#計算日まで取得
start = end - datetime.timedelta(days=500)#任意の期間を指定

#日経平均 NIKKEI225
n225 = web.DataReader("NIKKEI225""fred", start,end)#FREDよりデータ取得
n225.to_csv("nikkei_data_row.csv")

#ダウ DJIA
dow = web.DataReader("DJIA""fred", start,end)#FREDよりデータ取得
dow.to_csv("dow_data_row.csv")

#S&P SP500
sp500 = web.DataReader("SP500""fred", start,end)#FREDよりデータ取得
sp500.to_csv("sp500_data_row.csv")

#取得した経済指標を読み込み
n225_=pd.read_csv('nikkei_data_row.csv')
dow_=pd.read_csv('dow_data_row.csv')
sp500_=pd.read_csv('sp500_data_row.csv')

#祝日等の欠損を処理
n225_ = n225_.dropna(subset=["NIKKEI225"]) #欠損値削除
n225_.reset_index(inplace=True, drop=True)
dow_ = dow_.dropna(subset=["DJIA"]) #欠損値削除
dow_.reset_index(inplace=True, drop=True)
sp500_ = sp500_.dropna(subset=["SP500"]) #欠損値削除
sp500_.reset_index(inplace=True, drop=True)

#欠損値数の確認
#print(n225_.isnull().sum()) #欠損値数の確認
#print(dow_.isnull().sum())
#print(sp500_.isnull().sum())

#日経平均とダウとSP500を一つのCSVで管理できるように出力
#ただし、結合により欠損が生じていることに注意(祝日の差)
stock_means = pd.merge(n225_, dow_, on="DATE", how="left")
stock_means = pd.merge(stock_means, sp500_, on="DATE", how="left" )

#祝日等の欠損を処理
stock_means = stock_means.dropna(subset=["NIKKEI225","DJIA","SP500"]) #欠損値削除
stock_means.reset_index(inplace=True, drop=True)

#CSV出力
n225_.to_csv("nikkei_data.csv")
dow_.to_csv("dow_data.csv")
sp500_.to_csv("sp500_data.csv")
stock_means.to_csv("stock_means_data.csv")

#計算修了確認
print("End of calculation")
グラフ化

ここでは、先に抽出したデータをグラフに可視化します。

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
% matplotlib inline

#グラフ作成
y_n225 = stock_means.iloc[:, 1].values#日経平均
y_dow = stock_means.iloc[:, 2].values#ダウ平均
y_sp500 = stock_means.iloc[:, 3].values#SP500
plt.plot(y_n225, color = 'blue')
plt.plot(y_dow, color = 'red')
plt.plot(y_sp500,color = 'black')

#グラフ形式
plt.title('n225&dow&sp500')
plt.xlabel('Date')
plt.ylabel('Index')

#画像保存
#fnameF='fig_tmp.jpg'
#plt.savefig(fnameF, dpi=200, bbox_inches="tight", pad_inches=0.1)
#グラフ表示
plt.show()