Bitflyer health考察
Bitflyerのhealthについてまとめました。
概略と私なりの対処法をまとめています。
概要
Bitflyerには取引所のhealthという概念があり、APIで取得可能。
Normal, busy, Very Busy, Super Busy, No Order, STOPの6種類。
APIの仕様書上はSuper Busy以上が支障が出そうと書いてある。
https://lightning.bitflyer.com/docs?lang=ja
上記リンクから引用
NORMAL: 取引所は稼動しています。
BUSY: 取引所に負荷がかかっている状態です。
VERY BUSY: 取引所の負荷が大きい状態です。
SUPER BUSY: 負荷が非常に大きい状態です。発注は失敗するか、遅れて処理される可能性があります。
NO ORDER: 発注が受付できない状態です。
STOP: 取引所は停止しています。発注は受付されません。
実際の状況
当然、常にレイテンシは発生しているが、データを見ていると、BUSYを超えるとデータの配信が遅れてくる。
面倒なのは自己のポジションも古いデータが送られてくること。プログラムが自分のポジションを誤認するという状態が発生する。
当然、BUSYを超えて、VERY BUSYの方が遅延がひどいし、SUPER BUSYになるともっと酷い。この辺になると、注文も通らなくなってくる。
収益性との考察
期待収益の観点で考えると、相場が荒れている時/ボラティリティが高いときほど収益チャンスが多い。つまり、healthがBUSY, VERY BUSY, SUPER BUSYになるにつれて、収益チャンスは拡大する。
NormalやBUSYの時は注文も通るし、遅延なくデータを受け取れるが収益チャンスは少ない。一方、VERY BUSYやSUPER BUSYの時は遅延が発生するし注文も通りにくくなるが収益チャンスは大きい!
私の対処法
私のbotはどうしているのかといえば、SUPER BUSY以上を検知すると、ポジションを0にして、しばらくの間トレードをとめる。
ただ、収益チャンスを逃すし、相場が荒れている時にポジションを0にする場面で大損をしている。
他の方を見ていると、ポジションを自炊(自己ポジションをAPIでリクエストするのではなく、約定データから自分のポジションを計算すること)するという手法が流行っているようだ。私も使い始めてみている。
まとめ
Bitflyerのhealthは取引を行う上でとても重要である。
healthが高負荷になってくると、さまざま問題が発生するが、往々にして収益性が高いちゃんすでもある。
高負荷は避ける手もあるが、ポジションを自炊する形で対抗している人もいる。