概要
最近、シストレの勉強を始めました。
もともと趣味でFXをやっているので投資に関する知識はそれなりにあるつもりですが、シストレに関しては全くの素人であるため何をやれば良いのかいまいちわかっておりません...。
そこで、何はともあれまずは為替レートを取得し、あわよくばそれをチャートに起こすところからスタートしたいなと思い、色々試行錯誤した結果をメモ書きしておきます。
仕様
- Docker
- Python3
- Jupytar Notebook
Jupytar Notebookとは: Webブラウザ上でPythonを記述・実行できる統合開発環境の事。
環境構築
Jupytar Notebookを利用する方法は色々あるみたいですが、今回は公式が配布してくれているイメージを使いDockerでサクッと環境構築していきたいと思います。(めちゃくちゃ簡単でした。)
各ディレクトリ&ファイルを作成
$ mkdir jupyter-note-book-docker
$ cd jupyter-note-book-docker
$ mkdir work
$ touch docker-compose.yml
最終的に次のような構成になっていればOK。
jupyter-note-book-docker
├─ work
├─ docker-compose.yml
docker-compose.ymlを編集
version: "3"
services:
notebook:
image: jupyter/datascience-notebook
ports:
- "8888:8888"
environment:
- JUPYTER_ENABLE_LAB=yes
volumes:
- ./work:/home/jovyan/work
command: start-notebook.sh --NotebookApp.token=''
コンテナを起動
$ docker-compose up -d
localhost:8888 にアクセスし
こんな感じの画面が表示されれば成功です。
コードを実装
「work」ディレクトリへ入り、「Notebook」から「Python3」を選択。
するとこんな感じでコードを記述できるようになるので、ここに色々と書いていきます。
ライブラリをインポート
まず最初に、今回の作業で必要になる各種ライブラリをインポートしておきます。
import pandas_datareader.data as pdr # 株やFXをはじめとする各金融商品のデータが取得できるライブラリ。
import datetime
from matplotlib import pyplot as plt # データを可視化(チャートなどの形で表示)するためのライブラリ。
import seaborn as sns # 同上
sns.set()
上部バーの「▶︎」を押すとコードの実行ができるのですが、このままだと失敗してしまいました。
「ModuleNotFoundError: No module named 'pandas_datareader'」
つまり「pandas_datareaderが見つからないよ」と言われています。とうやらJupyter Notebookにはデフォルトで入っていないライブラリみたいなので、次のコマンドでインストールしていきます。
!pip install pandas_datareader
もう一度「[1]」を実行してみてエラーなどが起こらなければ成功です。
為替レートを取得
それでは、実際に為替レートを取得してみましょう。(今回はドル円)
コードは以下の通り。
def get_excahnge_rate(currency_pair, data_source, start, end):
selected = f'{currency_pair} = X'
df = pdr.DataReader(selected, data_source, start, end).drop(['Volume', 'Adj Close'], axis = 1)
return df
end = datetime.date.today()
start = end - datetime.timedelta(days = 365)
usd_jpy = get_excahnge_rate('USDJPY', 'yahoo', start, end)
usd_jpy.head
3行目のDataReader()に渡す引数がポイントとなります。
引数 | 説明 |
---|---|
第一引数 | データ名(通貨ペアなどを指定) |
第二引数 | データソース(どこからデータを取得するか) |
第三引数 | 取得開始年月日(datetime型) |
第四引数 | 取得終了年月日(datetime型) |
データソースとしては、
- FRED
- OECD
- Yahoo
など様々なところが指定できるみたいです。今回はYahooを指定しています。
参照: 公式ドキュメント
Jupytar Notebookから上記コードを実行すると、1年前から今日までのUSD/JPYレートが取得できているはず。
チャートとして可視化
↑で取得した為替レートをチャートとして可視化してみましょう。
fig = plt.figure(figsize = (10, 8))
ax = fig.add_subplot(1, 1, 1)
ax.set_title('USD/JPY')
sns.lineplot(x = usd_jpy.index, y = usd_jpy.High, ax = ax)
plt.tight_layout()
こんな感じでチャートが表示されていれば成功です。
あとがき
だいぶザックリではありましたが、為替レートを取得してチャートとして可視化するまでの手順を紹介させていただきました。これだけではまだまだ実際のシストレには程遠いでしょうが、最低限入り口くらいには立てたと思います。これをベースに色々と分析など行っていきたいなと。
自分はPythonに入門したばかりの初心者なので説明が不足していたり雑になってしまったりしている部分はありますが、何となく雰囲気だけでも伝われば幸いです。これから当分シストレの勉強は続けていくつもりなので、随時更新していくかもしれません。
※追記: 同じような要領でバックテストを実行したので別記事にまとめました。