2019.07.04

VNPY:中国発の定量分析フレームワークと取引アルゴリズム

Pocket

始めに

こんにちは。次世代システム研究室のY.R.です。外国人です。

定量分析プラットフォーム/フレームワークは、金融分野でますます重要な役割を果たしており、多くのトレーダーやアナリストが彼らの業務でそれらを利用している。一方、Quantopian [1]、Ricequant [2]、Jointquant [3]などのオープンソースプラットフォームも現れている。このブログでは、 “VNPY”と呼ばれるオープンソースの定量的開発フレームワークを紹介する[4]。その名のとおり、Pythonで実装されているため、定量分析では使いやすいプラットフォームになっている。

 

実用的な使い方

VNPYプロジェクトの公式紹介によると、300以上の金融機関で利用されている。

次の例は、中国最大の証券会社の1つであるCITIC Securitiesのオプション部でのVNPYの使用方法。


更にあるハイテク企業[5]からのビジネスサポート支援も提供する。

VNPYのアーキテクチャ

使用法と例に入る前に、まずVNPYの概要を見ていく。全体のアーキテクチャは次のように示されている。
VNPYの中核は、イベントエンジン、CTACommodity Trading Advisor)エンジン、メインエンジン、データエンジンなど、いくつかのエンジンで構成されている。

Tushare [6]のような多くの種類のデータソースが入力インタフェースとして統合されている。

VNPYは当初CTPComprehensive 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

https://www.quantopian.com/

[2] Ricequant

https://www.ricequant.com/

[3] Joinquant

https://www.joinquant.com/

[4] VNPY

https://www.vnpy.com/

[5] vnpy.io

https://www.vnpy.io/

[6] tushare

http://tushare.org/

[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