kabu STATION APIのラッパを作ってくださっている方がいらっしゃるので、ありがたく使わせていただく。
ところが、これではバックテストをうまく回せない。なぜなら、株価配信のAPIはWebsocketによるpush配信であるからだ。なおかつ、その配信は「値が更新される際に配信され」るので、土日や引け後ではそもそも値が流れてくることすら、観測できないのである。
※PUSH配信は、値が更新される際に配信されます。場間(昼休み)、引け後での配信はございません。
auカブコム証券, kabuステーション API |株のことならネット証券会社【auカブコム証券】, 2021年8月20日閲覧
RESTで価格を取れるエンドポイントも用意されているようだが、レスポンスが遅いそうだ。
restで価格を取ろうとしても1銘柄当たり最悪数秒かかる
tsuchinaga, kabusapiを使った仮想証券会社を作る - tsuchinaga, 2021年8月20日閲覧
このため、Websocketでリアルタイムに流れてくるメッセージを保存しておき、kabu STATION APIに代わってRESTのエンドポイントで株価を提供する、ということを考えた。
これをやろうとすると、バックテスト用と、ストラテジ開発用にダミーサーバが必要になる。
バックテスト用には、仮想日時におけるある証券の現在価格を返すようなサーバをイメージしている。これを返すためには、時系列データを持っている必要がある。より具体的に言うと、歩み値である。これは以前紹介した方法で取得できる。
how-to-make-stock-trading-system.dogwood008.com
how-to-make-stock-trading-system.dogwood008.com
how-to-make-stock-trading-system.dogwood008.com
ストラテジ開発用には、実際にWebsocketに流れてきたメッセージを予め何らかの方法で蓄積しておき、それを読み込みつつ再生するかのようにWebsocketに流し直すサーバのイメージを持っている。これは歩み値のデータだけでは作れない。実際のメッセージを流さないと、リアルタイムトレードに使えないので意味が無い。しかし、auカブコム証券はサンプルレスポンスを公開していない1。仕方ないので、自前で用意するしかなさそうだ。