株でひと儲けを妄想しながら、アルゴリズムトレードライブラリ(zipline)を使ってバックテストをやってみた。
ども、k69 です。
機械学習を学ぶための教材として、システムトレード(株の自動売買)で遊んでみようと思いシステムトレードについて調べ始めると、バックテスト(過去の株価情報で売買ルールを検証)が必須であることが分かった。
じゃ、「バックテストをゼロから作るのは大変なので、OSSで何かないかなと探したろころziplineを見つけたのでちょっと試してみた」のがこの記事です。
※ ツッコミなどコメントお待ちしてます m(_ _)m
対象読者
- システムトレードに興味がある人
- バックテストを試してみたい人
- 株で一儲けを妄想している人w
前提条件
- git client(git-bash) インストール済み
手順
基本的には公式HPの手順に従います。
1. APIキーを取得します。
https://docs.quandl.com/docs#section-authentication の
You can find your API key on your account settings page.でアカウントを作成するとAPIキーが発行されます。
2. Ziplineをgit clone します。
任意のディレクトリでgit clone し、サンプルがあるディレクトリに移動します。
git clone https://github.com/quantopian/zipline.git
cd zipline/zipline/examples
--- ここから 2018/07/04 追加修正 ---
最新版のanacondaだとエラーが発生するので少し古いバージョン(Anaconda3.5.0.0)をインストールする手順を追加した。
3. Anaconda 3.5.0.0 を取得しインストールします。
Anaconda3.5.0.0 をダウンロードし、インストール。
4. Anaconda Promptでバーチャル環境を作成します。
Anaconda Prompt(Windowsのメニューから選択)で下記のコマンドを実行します。
conda create -n env_zipline python=3.5
5. git-bash Promptでziplineを実行します
5-1. バーチャル環境を起動します。
source activate env_zipline
5-2. condaコマンドでziplineをインストールします。
conda install -c Quantopian zipline
5-3. グラフ表示ライブラリ(matplotlib)をインストールします。
pip install matplotlib
5-4. ziplineのサンプルで使うデータを取得します。
QUANDL_API_KEY=${取得したAPIキー} zipline ingest -b quandl
5-4. ziplineのサンプルを動かします。
zipline run -f ./zipline/examples/buyapple.py --start 2016-1-1 --end 2018-1-1 -o buyapple_out.pickle
--- ここまで ---
下記エラー発生した場合は、Anaconda Navigator で「gevent」のチェック☑を外します。
ImportError: cannot import name 'RLock'
こちらの issue 2208を参考に対処しました。
グラフが表示されました!
300日平均移動曲線(long_mavg)が100日平均移動曲線(short_mavg)を超えている時期は取引しなくても、Appleの株(AAPL)でシミュレーションではこんなに儲かるのですねwww
まとめ
サンプルで売買アルゴリズムがいくつかあるので試してみる予定。ここを見ると仮想通貨でも使えそうなので時間を見つけて遊んでみたい。
機械学習と組み合わせたらシステムトレードでひと儲けできたらいいなww
Pythonは環境構築で各ライブラリの整合性を保つのが大変なので、かならずバーチャル環境(venv)を使ったほうがいいと思いました。
参考URL
- pythonのアルゴリズムトレードライブラリ
https://qiita.com/neka-nat@github/items/334a567d13f8a0c34ece - 公式ページ
https://docs.quandl.com/docs#section-authentication
http://www.zipline.io/#
https://github.com/quantopian/zipline - Install Help - when loading zipline get " ImportError: cannot import name 'RLock' " #2208
https://github.com/quantopian/zipline/issues/2208 - zipline のカスタムデータバンドルを自作する
https://speakerdeck.com/2casa/zipline-falsekasutamudetabandoruwozi-zuo-suru