OrbのCTOの山田さんとご飯食べている時に、そういえばおなじFintechだし勉強会やりましょうよ、勉強会、という話をしていたら、山田さんがあれよあれよというまに企画していただき勉強会することになりました。
僕は、いつも、どちらかというと金融機関の皆様を対象にAIのジェネリックな話をするのですが、久しぶりにガチな勉強会なのでガチな話をしようとおもって、今のAlpacaの技術スタックの情報をかき集めています。
で、最近にわかに盛り上がっている時系列データベースですが、AlpacaではMarketStoreと呼んでいるgo言語でフルスクラッチ実装した自社開発の時系列データベースを利用しております。MarketStoreの面白い点は、時系列データベースながらSQL構文をサポートしており、内部的には、
select tickcandler('25Min',Open,High,Low,Close,Sum:Volume, Avg:Open, Avg:Close) from `AAPL/1Min/OHLCV` limit 10;
や
insert into `AAPL/5Min/OHLCV` (Open,High,Low,Close,Volume_SUM) select tickcandler('5Min',Open,Sum:Volume) from `AAPL/1Min/OHLCV` limit 10; Query returned 10 rows, inserting into: AAPL/5Min/OHLCV
のようなSQL構文を発行して、様々な操作を金融時系列に対して実施することができます。実行結果はnumpyバイナリとして出力され、pythonのpandasのデータフレームとしてロードされます。これをChainerなどのディープラーニングのライブラリを通して利用することで、時系列データベースからディープラーニングのエンジンへのデータデリバリーを高速に実現しています。
MarketStoreの特色は上記のような柔軟性を保持しつつ極めて高速に動作することです。日本株式3700銘柄に対するある程度の規模のクエリが1秒程度で完了する速度がその強みです。実際、我々の現在のメイン業務である金融の予測システムの構築にはそのクエリ速度がものをいいますから、このようなデータストレージの強みがそのまま予測システムの強みになるように設計をしています。
このあたりのこてこてにマニアックな話を僕からはしようとおもうので、ご興味の有る方はぜひいらしてください!