Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
104
Help us understand the problem. What are the problem?

posted at

updated at

Pythonで為替レートを取得しチャートとして可視化するまでの手順

概要

最近、シストレの勉強を始めました。

もともと趣味で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を編集

./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 にアクセスし

スクリーンショット 2021-03-08 0.23.39.png

こんな感じの画面が表示されれば成功です。

コードを実装

スクリーンショット 2021-03-08 0.26.15.png

「work」ディレクトリへ入り、「Notebook」から「Python3」を選択。

スクリーンショット 2021-03-08 0.28.05.png

するとこんな感じでコードを記述できるようになるので、ここに色々と書いていきます。

ライブラリをインポート

まず最初に、今回の作業で必要になる各種ライブラリをインポートしておきます。

import pandas_datareader.data as pdr # 株やFXをはじめとする各金融商品のデータが取得できるライブラリ。
import datetime

from matplotlib import pyplot as plt # データを可視化(チャートなどの形で表示)するためのライブラリ。
import seaborn as sns # 同上
sns.set()

スクリーンショット 2021-03-08 0.36.53.png

上部バーの「▶︎」を押すとコードの実行ができるのですが、このままだと失敗してしまいました。

「ModuleNotFoundError: No module named 'pandas_datareader'」

つまり「pandas_datareaderが見つからないよ」と言われています。とうやらJupyter Notebookにはデフォルトで入っていないライブラリみたいなので、次のコマンドでインストールしていきます。

!pip install pandas_datareader

スクリーンショット 2021-03-08 0.40.21.png

もう一度「[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を指定しています。

参照: 公式ドキュメント

スクリーンショット 2021-03-08 1.06.55.png

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()

スクリーンショット 2021-03-08 1.11.34.png

こんな感じでチャートが表示されていれば成功です。

あとがき

だいぶザックリではありましたが、為替レートを取得してチャートとして可視化するまでの手順を紹介させていただきました。これだけではまだまだ実際のシストレには程遠いでしょうが、最低限入り口くらいには立てたと思います。これをベースに色々と分析など行っていきたいなと。

自分はPythonに入門したばかりの初心者なので説明が不足していたり雑になってしまったりしている部分はありますが、何となく雰囲気だけでも伝われば幸いです。これから当分シストレの勉強は続けていくつもりなので、随時更新していくかもしれません。

※追記: 同じような要領でバックテストを実行したので別記事にまとめました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
104
Help us understand the problem. What are the problem?