2019.07.04
VNPY:中国発の定量分析フレームワークと取引アルゴリズム
始めに
こんにちは。次世代システム研究室のY.R.です。外国人です。
定量分析プラットフォーム/フレームワークは、金融分野でますます重要な役割を果たしており、多くのトレーダーやアナリストが彼らの業務でそれらを利用している。一方、Quantopian [1]、Ricequant [2]、Jointquant [3]などのオープンソースプラットフォームも現れている。このブログでは、 “VNPY”と呼ばれるオープンソースの定量的開発フレームワークを紹介する[4]。その名のとおり、Pythonで実装されているため、定量分析では使いやすいプラットフォームになっている。
実用的な使い方
VNPYプロジェクトの公式紹介によると、300以上の金融機関で利用されている。
次の例は、中国最大の証券会社の1つであるCITIC Securitiesのオプション部でのVNPYの使用方法。
更にあるハイテク企業[5]からのビジネスサポート支援も提供する。
VNPYのアーキテクチャ
使用法と例に入る前に、まずVNPYの概要を見ていく。全体のアーキテクチャは次のように示されている。
VNPYの中核は、イベントエンジン、CTA(Commodity Trading Advisor)エンジン、メインエンジン、データエンジンなど、いくつかのエンジンで構成されている。
Tushare [6]のような多くの種類のデータソースが入力インタフェースとして統合されている。
VNPYは当初CTP(Comprehensive Transaction Platform)[7]を通じて先物市場で利用されているが、暗号通貨を含む多くの種類の市場をサポートしている。
実例
次に、VNPYを使ったdouble MAと呼ばれる有名な取引アルゴリズムの実装を紹介する。
データはSSE 50 Index [8]のインデックスオプションからのものです。 (VNPYのインストールに関する記事[9]を参照してください)。コードスニペットとデータは次のように共有する。VNPYのイベント駆動1つの利点はデータリークを回避することできる。
開発環境
Vnpy 1.9.2, Python 3.7, MongoDB 4.
デモコード(カーネル部分)
全体のJupyter Notebook
https://github.com/renyong/quant_newbie
VNPYのバックテストエンジンによる結果は以下の通り:
ここでVNPYの使い方を示すために、二重移動平均の実装を紹介する。いくつかの取引ストラテジーがVNPYに実装された。
https://github.com/vnpy/vnpy/tree/v1.9.2-LTS/vnpy/trader/app/ctaStrategy/strategy
公式の例を通してVNPYの使い方を学ぶこともできる。
https://github.com/vnpy/vnpy/tree/v1.9.2-LTS/examples/CtaBacktesting
最後に
次世代システム研究室では、ビッグデータ解析プラットホームの設計・開発を行うアーキテクトとデータサイエンティストを募集しています。興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧からご応募をお願いします。
皆さんのご応募をお待ちしています。
参考
[1] Quantopian
[2] Ricequant
[3] Joinquant
[4] VNPY
[5] vnpy.io
[6] tushare
[7] CTP
http://www.sfit.com.cn/5_2_DocumentDown_1.htm
[8] SSE 50
https://www.bloomberg.com/quote/SSE50:IND
[9] VnPy Starter Guide
https://medium.com/@alessandrosolbiati/starter-guide-to-vnpy-911a81539302
グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。
Follow @GMO_RD