Cover Image for 妄想!株の自動トレードでひと儲け!する方法
妄想!株の自動トレードでひと儲け!する方法

株でひと儲けを妄想しながら、アルゴリズムトレードライブラリ(zipline)を使ってバックテストをやってみた。
image

ども、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キーが発行されます。

image

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 をダウンロードし、インストール。

https://repo.continuum.io/archive/Anaconda3-5.0.0-Windows-x86_64.exe

4. Anaconda Promptでバーチャル環境を作成します。

Anaconda Prompt(Windowsのメニューから選択)で下記のコマンドを実行します。

AnacondaPrompt
conda create -n env_zipline python=3.5

5. git-bash Promptでziplineを実行します

5-1. バーチャル環境を起動します。

git-bash
source activate env_zipline

5-2. condaコマンドでziplineをインストールします。

git-bash
conda install -c Quantopian zipline

5-3. グラフ表示ライブラリ(matplotlib)をインストールします。

git-bash
pip install matplotlib

5-4. ziplineのサンプルで使うデータを取得します。

git-bash
QUANDL_API_KEY=${取得したAPIキー} zipline ingest -b quandl

5-4. ziplineのサンプルを動かします。

git-bash
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を参考に対処しました。

image

グラフが表示されました!

300日平均移動曲線(long_mavg)が100日平均移動曲線(short_mavg)を超えている時期は取引しなくても、Appleの株(AAPL)でシミュレーションではこんなに儲かるのですねwww

image

まとめ

サンプルで売買アルゴリズムがいくつかあるので試してみる予定。ここを見ると仮想通貨でも使えそうなので時間を見つけて遊んでみたい。
機械学習と組み合わせたらシステムトレードでひと儲けできたらいいなww

Pythonは環境構築で各ライブラリの整合性を保つのが大変なので、かならずバーチャル環境(venv)を使ったほうがいいと思いました。

参考URL

© 2022 k69

本サイトを通じて、たくさんの人がプログラミングに興味を持ち、 これがキッカケでモノづくりの楽しさに触れることができれば幸せです!