Github: https://github.com/quantopian/zipline
ZiplineはPythonicアルゴリズムトレーディングライブラリです。 これはバックテストのためのイベント駆動型システムです。 Ziplineは現在、バックテスティングとライブ取引エンジンとしての生産にQuantopianを使用しています。Quantopianは 、コミュニティ戦略を構築し、実行するためのコミュニティ中心の無料のホスティングプラットフォームです。
- 私たちのコミュニティに参加する!
- ドキュメンテーション
- 貢献したいですか? 開発ガイドラインをご覧ください
特徴
- 使い易さ: Ziplineは、あなたがアルゴリズム開発に集中できるように、道を離れようとします。 コード例については以下を参照してください。
- “バッテリが含まれている”:移動平均や線形回帰などの多くの一般的な統計情報は、ユーザ作成アルゴリズム内から簡単にアクセスできます。
- PyData統合:履歴データの入力とパフォーマンス統計の出力は、既存のPyDataエコシステムにうまく統合するためのPandas DataFramesに基づいています。
- 統計と機械学習ライブラリ: matplotlib、scipy、statsmodels、sklearnなどのライブラリを使用して、最先端の取引システムの開発、分析、視覚化をサポートすることができます。
インストール
pip
インストールする
Python以外のすべての依存関係が必要であると仮定して(以下の注を参照)、Ziplineをpip
インストールすることができます:
$ pip install zipline
注: pip
を使用してZiplineをインストールすることは、平均的なPythonパッケージよりも少し複雑です。 pip install zipline
サイエンスPythonパッケージをインストールしたことがなければ、 pip install zipline
を実行pip install zipline
だけで失敗する可能性があります。
複雑さが増す理由は2つあります。
- Ziplineには、CPython C APIへのアクセスを必要とするいくつかのC拡張が含まれています。 C拡張をビルドするために、
pip
はあなたのPythonインストール用のCPythonヘッダファイルにアクセスする必要があります。 - ZiplineはPythonの数値配列計算のコアライブラリであるnumpyに依存しています。 Numpyは、 LAPACK線形代数ルーチンを利用できるかどうかに依存します。
LAPACKとCPythonヘッダーはバイナリの依存関係であるため、インストールする正しい方法はプラットフォームによって異なります。 Linuxでは、一般的に、ユーザーはapt
、 yum
、またはpacman
ようなパッケージマネージャーを介してこれらの依存関係を取得します。 OSXでは、 Homebrewは同様の機能を提供する人気のある選択肢です。
特定のプラットフォームのバイナリ依存関係を取得する方法の詳細については、 Zipline Install Documentationを参照してください。
コンダ
conda
をインストールするもう1つの方法は、 Anacondaの一部として提供されるconda
パッケージマネージャーを使用する方法と、 pip install conda
です。
セットアップが完了したら、 Quantopian
チャンネルからQuantopian
インストールすることができます:
$ conda install -c Quantopian zipline
現在サポートされているプラットフォーム:
- GNU / Linux 64ビット
- OSX 64ビット
- Windows 64ビット
注意
Windows 32ビットが動作するかもしれません。 ただし、現在のところ、継続的な統合テストには含まれていません。
クイックスタート
スタートガイドのチュートリアルをご覧ください。
次のコードは、単純な二重移動平均アルゴリズムを実装しています。
from zipline.api import order_target, record, symbol
def initialize(context):
context.i = 0
context.asset = symbol('AAPL')
def handle_data(context, data):
# Skip first 300 days to get full windows
context.i += 1
if context.i < 300:
return
# Compute averages
# data.history() has to be called with the same params
# from above and returns a pandas dataframe.
short_mavg = data.history(context.asset, 'price', bar_count=100, frequency="1d").mean()
long_mavg = data.history(context.asset, 'price', bar_count=300, frequency="1d").mean()
# Trading logic
if short_mavg > long_mavg:
# order_target orders as many shares as needed to
# achieve the desired number of shares.
order_target(context.asset, 100)
elif short_mavg < long_mavg:
order_target(context.asset, 0)
# Save values for later inspection
record(AAPL=data.current(context.asset, 'price'),
short_mavg=short_mavg,
long_mavg=long_mavg)
Zipline CLIを使用してこのアルゴリズムを実行できます。 デフォルトのデータバンドルを取り込むには、 Quandl APIキーが必要です。 キーを取得したら、コマンドラインから次のコマンドを実行します。
$ QUANDL_API_KEY=<yourkey> zipline ingest -b quandl
$ zipline run -f dual_moving_average.py --start 2014-1-1 --end 2018-1-1 -o dma.pickle
これにより、quandlから資産価格データのデータがダウンロードされ、指定された期間にわたりアルゴリズムによってストリームされます。 結果のパフォーマンスDataFrameはdma.pickleに保存され、Python内から解析を読み込むことができます。
他の例はzipline/examples
ディレクトリにあります。
質問ですか?
バグを見つけたら、問題を開いて問題のテンプレートを記入してください。
貢献する
すべての寄稿、バグ報告、バグ修正、ドキュメントの改善、強化、アイデアは大歓迎です。 開発環境の設定方法の詳細は、 開発ガイドラインに記載されています。
Ziplineコードベースの作業を開始するには、GitHubの[Issues]タブに移動し、興味深い問題を調べます。 時には、 初心者フレンドリーまたは募集要請された問題があります。