2018年04月12日 01:04
Alpacaは、弊社が様々なマーケット予測の実証実験・金融機関向け予測システムのプロダクション環境で利用している時系列データストレージ「MarketStore」をオープンソースとして公開致しました。ソースコードはGithubのMarketStoreのページからどなたでも取得することができます。
MarketStoreとはAlpacaが独自に設計・開発した金融データ向けに最適化した時系列データストレージです。金融マーケットデータに特化することで、各時系列における最速で秒頻度での更新やミリ秒以下のクエリレイテンシを実現した、スケーラビリティが高く、あらゆるシステムからRPC経由でアクセス可能です。開発言語にはGoを採用しています。
インターフェイスにはWebSocketを含むHTTPを採用
サーバーとクライアント間の通信にはWebSocketを含むHTTPを採用しつつ、高速なバイナリシリアライゼーションフォーマットであるMessagePackを取り入れることで効率性の高さを実現しています。
データの特性に合わせて読み書に最適化したストレージフォーマット
多くの分析系データベースにおいては最適な読み出しの為に列指向型が採用されていますが、MarketStore内部に蓄積されるデータが全てが時系列データと想定し、時間毎の行指向型を採用しています。
スパースファイルの活用
時間帯によるデータの有無(マーケットが夜間にクローズするなど、金融データに特有の事象)を考慮してスパースにファイルに書き込むことで、近年のファイルシステムの機能による効率的なデータの圧縮が可能となり、物理ディスク上におけるファイルサイズを最小限に抑えています。
様々な時間軸に対応
1分足、5分足等の様々な時間軸がエンジンとして搭載されており、ニーズに合わせてフレキシブルな利用が可能です。
あらゆるタイムゾーンに対応
日足の集計や一日の区切りを米株であればESTに、FXであればUTCに設定するなど、各マーケットのタイムゾーンに対応しています。
クライアントサポート
GoのみならずPythonクライアントにも対応。サーバーからのレスポンスを簡単にデータフレームにコンバートすることができる上にスケーラビリティを確保することができます。
データの取り込み
プラグインシステムを導入することでMarketStoreへのデータの柔軟な取り込みも可能となりました。クリプトカレンシーについてはGDAXから取得できるサンプルモジュールを搭載しているので直ちにBitcoin、Ethereum、Bitcoin Cash、Litecoinデータを取り込み格納することができます。
OSS公開の背景
Alpacaが目指すAIドリブンなトレーディングを実現するためにはクラウド環境で超高速に動作し、最高のパフォーマンスとメンテナンス性を発揮する、そんな時系列データベースが必要でした。社内でディスカッションを重ねた結果、一から開発したのが「MarketStore」です。現在、Alpacaはすべてのプロダクトにおいて、時系列データ処理をこのMarketStoreを通して行っています。この「MarketStore」という新たな技術を、同じような問題を抱えてきた皆様により広く利用して頂くことで更に良いものになると信じて、今回のオープンソース化を決定するに至りました。このような形での技術の共有がAlpacaが目指すCapital Market Tradingの世界に対する貢献への第一歩となればと願っています。
GitHub内のMarketStore公開ページのアドレス: https://github.com/alpacahq/marketstore