株のシステムトレードをしよう - 1から始める株自動取引システムの作り方

株式をコンピュータに売買させる仕組みを少しずつ作っていきます。できあがってから公開ではなく、書いたら途中でも記事として即掲載して、後から固定ページにして体裁を整える方式で進めていきます。

アイデア:Websocketによるリアルタイム配信と、backtraderによるfetchの差を埋めるプロキシサーバを用意する

kabu STATION APIのラッパを作ってくださっている方がいらっしゃるので、ありがたく使わせていただく。

qiita.com

ところが、これではバックテストをうまく回せない。なぜなら、株価配信の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。仕方ないので、自前で用意するしかなさそうだ。


  1. ドキュメントはあるが、サンプルレスポンスは無い

(C) 2020 dogwood008 禁無断転載 不許複製 Reprinting, reproducing are prohibited.