遅延があるときのmmbotの挙動
今日は、遅延があるときのmmbotの挙動について書いていきたいと思います。 前回の記事と同じく、簡単なSimをして挙動を見ています。
(参考)前回の記事 mmbotにおけるポジションと注文サイズについて - キジトラのブログ
Sim条件
基本的に前回と同じです。
項目 | 内容 |
---|---|
価格データ | bitFlyer FXの適当に選んだ期間のデータ |
mmbotロジック | 何も考えず現在価格から上下に一定値(50円)離れた価格に注文を出す |
注文サイズ | 微小 (マーケットインパクトや部分約定を考慮しない。便宜上max_position=0.01BTCでSim&プロット) |
ポジション管理 | 前回の記事でいうlinear |
発注→キャンセルの最小時間 | 約1sec |
また、注文/キャンセルが反映されるまでの時間を変数delayとして振ってSimしています。
Sim結果
delay=0 ほとんどがmakerとして約定しています。ポジションは0付近に収束しています。利益がほぼ単調増加しており、理想的な形です。
delay=約0.3sec delay=0に比べ、takerになってしまう場合が増えます。ポジションはたまに想定最大ポジションを超えます。利益もdelay=0に比べ落ちてきます。
delay=約0.8sec さらにtakerになる場合が増えます。ポジションはそこそこはみ出します。利益が出る時間帯もありますが、じわじわ損していきます。
delay=約1.5sec さらにtaker約定が増え、じわじわ損します。ポジションもかなりはみ出します。
delay=約3sec taker率高いです。そして、ポジションが発振しています。ポジションが0になるようにフィードバック制御しているので、想定外の遅延が入ると発振するのは当たり前ですね。何か対策しないと大事故につながるでしょう。損益はほぼ単調減少です。
まとめ
遅延が大きくなるとtaker率が増えてじわじわ損失を出す挙動をSimで再現できました。めでたしめでたし。
内容で誤りや改善点などなどありましたら、twitterやコメントでご指摘いただけると幸いです。