Python
スクレイピング
pandas
経済指標

FXで重要な経済指標をWebスクレイピングで取得する方法

Tweets by Motty37623114


概要

 投資をやる上で2種類の分析方法がある。1つは、経済的要因から未来の値段を予測するファンダメンタルズ分析と、過去の値動きから未来を推測するテクニカル分析だ。テクニカル分析に関してはチャートを見て判断するが、ファンダメンタル分析は外部から情報を取得しなければいけない。

そこでプログラミングを用いて、スクレイピング(欲しい情報のみを引き出すこと)を行った。


使用言語:Python

 使用言語はPythonとした。各目的に合わせたライブラリが豊富で、プログラミング文章も読みやすいので

わかりやすいと思った。


使用ライブラリ:Pandas

スクレイピングといえば、BeautifulSoup4とUrllibを組み合わせて情報を抜き取るのが一般的だが、必要な情報がHTMLテーブル上に存在する時は、Pandasを使うことでかなりシンプルなコードで抜き取ることができる。


取得する情報:経済指標

ある国の経済が良いか悪いかを判断する材料として使われる数字が「経済指標」。FXにおいて、経済指標はとても重要なファンダメンタル材料であり、経済指標の発表予定がどの程度あるかによって、その国の通貨の値動きの多さや方向感がある程度予想できる。効率よくトレードを行うためには、直近に発表される経済指標を把握するべきだ。

経済指標は「みんかぶFX」のサイトにまとめてある。発表時間と指標名だけでなく、前回その指標の発表によってどの程度値動きがあったのかを示してくれているので、重要度がわかりやすくなっている。

 2018-12-12 18.43.03.png


早速スクレイピングしてみた

サンプルコードは以下の通り。


minkabu01.py

import pandas as pd

url = 'https://fx.minkabu.jp/indicators' #みんかぶFXの経済指標URLを取得
dfs = pd.read_html(url) #テーブルのオブジェクトを生成


実行結果がこちら。

 2018-12-12 18.42.37.png

あまり綺麗とはいえない表になってしまった(>_<)。少しデータを綺麗にする必要がある。

今回処理したい点は2つ

・列名が読み込まれてないので、手動で追加する

・必要のない列、行を削除する


もう一度スクレイピングしてみた


minkabu02.py

import pandas as pd

url = 'https://fx.minkabu.jp/indicators' #みんかぶFXの経済指標URLを取得
dfs = pd.read_html(url) #テーブルのオブジェクトを生成

#前処理開始

dfs1 = dfs[0].dropna(subset = [4]) #4番にNaNが入っている行はバグなので、削除
dfs2 = dfs1.drop(2,axis =1) #2番目の列を削除。axis = 1は列を削除するオプション
dfs2.columns = ["発表時間", "経済指標", "前回変動幅(USD/JPY)","前回","予想","結果"] #列名を手動で追加。

#前処理終了

dfs2 #テーブルを表示


 #実行結果

 2018-12-12 20.24.11.png

かなりスッキリしました。