キジトラのブログ

仮想通貨取引botなどについて書いていきたいと思います

遅延があるときのmmbotの挙動

今日は、遅延があるときのmmbotの挙動について書いていきたいと思います。 前回の記事と同じく、簡単なSimをして挙動を見ています。

(参考)前回の記事 mmbotにおけるポジションと注文サイズについて - キジトラのブログ

Sim条件

基本的に前回と同じです。

項目 内容
価格データ bitFlyer FXの適当に選んだ期間のデータ
mmbotロジック 何も考えず現在価格から上下に一定値(50円)離れた価格に注文を出す
注文サイズ 微小 (マーケットインパクトや部分約定を考慮しない。便宜上max_position=0.01BTCでSim&プロット)
ポジション管理 前回の記事でいうlinear
発注→キャンセルの最小時間 約1sec

また、注文/キャンセルが反映されるまでの時間を変数delayとして振ってSimしています。

Sim結果

  • delay=0 f:id:kijitora_2018:20181229123843p:plain ほとんどがmakerとして約定しています。ポジションは0付近に収束しています。利益がほぼ単調増加しており、理想的な形です。

  • delay=約0.3sec f:id:kijitora_2018:20181229123939p:plain delay=0に比べ、takerになってしまう場合が増えます。ポジションはたまに想定最大ポジションを超えます。利益もdelay=0に比べ落ちてきます。

  • delay=約0.8sec f:id:kijitora_2018:20181229124000p:plain さらにtakerになる場合が増えます。ポジションはそこそこはみ出します。利益が出る時間帯もありますが、じわじわ損していきます。

  • delay=約1.5sec f:id:kijitora_2018:20181229124028p:plain さらにtaker約定が増え、じわじわ損します。ポジションもかなりはみ出します。

  • delay=約3sec f:id:kijitora_2018:20181229124045p:plain taker率高いです。そして、ポジションが発振しています。ポジションが0になるようにフィードバック制御しているので、想定外の遅延が入ると発振するのは当たり前ですね。何か対策しないと大事故につながるでしょう。損益はほぼ単調減少です。

まとめ

遅延が大きくなるとtaker率が増えてじわじわ損失を出す挙動をSimで再現できました。めでたしめでたし。

内容で誤りや改善点などなどありましたら、twitterやコメントでご指摘いただけると幸いです。