ArbitrageWin v1.1.0.2-リリース

APIエラー時にどう対応する?

今のボットは、裁定取引機会の検索を実行し続け、発注するときにAPIエラーしても自動で停止しないです。これは、利益を積極的に獲得するためです。なんですが、日本の取引所では、たまにメンテナンスのために深夜に数分間サーバーをアクセスできない時もがあります。対策としては最良の方法では?

基本的に2つの方法があります。
1. 主に発注の時にAPIサーバーからエラーが発生した場合、すぐにボットを停止します。安全は安全ですが、ちょっと不便のどころがあります。もしも取引所側で毎日ただの数分間の停止の場合、毎日ボ​​ットを再起動する必要があるため、効率的ではないようです。

2. APIで発注するときエラーが発生した場合、ボットを数分間一時的に停止し、次の裁定取引チャンスの検索を自動的に再開します。ある時間中でAPIエラー続くの場合は停止する。

ArbitrageWinの新しいリリースでは、方法「2」に改良をします。

⇒ 発注するたびに、APIエラー時に10分間停止する。
⇒ 12時間以内、もしAPIエラー時に6回続くの場合は、完全にボートを停止します。ユーザーにLINEで通知する。その場合はユーサーが手動で再起動が必要です。

このロジックを入れれば、APIエラーを最小限することができると思います。

 

裁定取引オーダー順番を調整

最近、8/23にBitbankとBinance間、こな裁定取引のシナリオを見ました。シナリオは次のとおりです。

BitbankでAPIから返された買いの入札価格は0.00708xxがあって、BinanceやBittrexなどの他の取引所の平均価格は0.00721xxxでしたが、2つのスプレッドの差が1.8%利益取れるの意味です。

裁定戦略の観点からみると、利益を獲得する良い機会のようですね。したがって、ボットエンジンが次の通りを実行します。

1.売り注文をBinanceに発注する
2.売り側は完了してから、買いをBitbankに発注して、利益を獲得つもりです。

しかし、今回の裁定取引は売り買いはすべて完了しませんでした。 Bitbankでの買いは約定しなかったため、リープオーダーになった。

実際に調べたら、Bitbankの歩み値を見て、0.00708xxの価格で約定してたの取引がなかった。Bitbankのチャートに表示された画面にも、0.00708xxという約定の価格はどこでも表示されませんでした。

何で0.00708xx板をAPIから返されたと不思議でした。可能性としては、他の取引ボットで、ミリ秒単位で0.00708xxという低い指値を出したり、キャンセルしたりと繰り返ししてました。ちょどその時に、システムがこの板を取れましてスプレッドを計算しました。裁定取引機会が存在するかどうかを判断して発注出しました。

このシナリオを回避する最良の方法とは?
ーーーーーーーーーーーーーーーーーーーー

取引所からの価格板を確認する方法はないので、裁定ロジックを少し調整が必要と思います。

「各取引所でのスプレッドを確認しながら、どちらが先に発注するかと判断するのことです。スプレッドが大きや取引量が少ないの取引所は先にオーダーをだして、約定すれば、次の取引所にも約定の可能性が高くなる。」

先ほどのシナリオの場合は、Bitbankのスプレッドの方が大きい:

1.買い注文をBitbankに発注する
2.買い側は完了してから、売りをBinanceに発注して、利益を獲得。
3.買い側は完了しなかったら、Bitbankのオーダーをキャンセルして、それでおわり。

 

強気と弱気市場での設定

前回のブログで、アービトラージを実行する際に初期のコイン数がずれるの理由について述べました。リープオーダーが多いほど、元々の残高から外れるすることが多くなります。リープオーダーとは、片方の取引が完了したことを意味し、反対側のオーダーは約定待ちの状況です。

強気市場では、流動性が高い場合、買いと売りオーダーを約定する可能性が高くなります。したがって、利益を獲得することができます。しかし、弱気相場では、投資家は売りと買いすることに慎重であるため、買いまたは売りのどちらかで約定される可能性は比較的低くなります。この期間では、リープオーダー数も多い場合がなります。

それを避けるための最善の方法とは?

下記の例で説明しましょう
総資産:1 BTCと20 ETH

強気市場では、次のように設定します。
=> 最大サイズ= 2 ETH(ETHポジションの10%)
=> スプレッド= 0.80%

最大サイズを大きく設定する主な目的は、買いと売りを約定するのが比較的約定しやすく、大きな利益を獲得することができるでしょう。また、強気相場では、スプレッドは弱気相場よりも広くなる傾向があります。高いスプレッドを設定すると、各裁定取引の利益を最大にすることを可能にするでしょう。

弱気市場では、次のように設定します。
⇒ 最大サイズ= 0.5 ETH(ETHポジションの2.5%)
⇒ スプレッド= 0.40%

リープオーダーが多いためにスタートポジションから外れるリスクを減らすため、最大サイズを小さく設定しました。また、弱気相場ではスプレッドが狭くなる傾向があるため、スプレッドを低く設定します。可能であれば0.40%より低く設定しません。何でならば、裁定取引で得られるの小さい利益よりも、高いのマーケットリスクを回避するためです。

最後、あんまりも最初ポジションと外れたの場合、週に2回くらいの買い戻すたや売るすることが大事です。

注:これは個人的な経験です。あくまで参考用です。

Setting in Bull and Bear Market

In previous blog, I mentioned about the various risk and why the altcoin balance is deviate from initial balance when performing arbitrage. We understand how leave order happen. The more leave order, the more the deviation from the original start position if it doesn’t get filled. Leave order means you have done one way transaction and the other side of the order is waiting to be filled. Either buy or sell.

In a bull market when the liquidity is high, you have higher possibility of filling buy and sell orders. Hence, capture the profit. But in bear market, investors are more cautious in buying the selling, therefore, the chances of being filled in either buy or sell is relatively lower. In this period, you may find number of leave order is higher in your Exchange.

What is the best way avoiding it?

Let’s take this as example in my portfolio:
My total position : 1 BTC and 20 ETH

In bull market, I would set as below:
=>  Max size = 2 ETH(10% each time of my total ETH position)
=>  Spread = 0.80%

The main point of setting higher in Max Size is to capture bigger profit because I understand the buy and sell order would be relatively easy to be filled. Also, in bull market the spread tend to be wider than bear market. Setting higher spreads would allow me to avoid those smaller profit and maximize the profit in each arbitrage.

In bear market, I would set as below:
=>  Max size = 0.50 ETH (2.5% each time of my total ETH position)
=>  Spread = 0.40%

I set it lower in max size because I want to reduce the risk of being off from my starting position due to the large number of leave order. Also, I would set the spread lower because the spreads tend to be narrower in bear market. If possible I wouldn’t set it lower than 0.40% to avoid higher market risk for the smaller profit captured in arbitrage.

Last but not least, I will always buy back or sell the extra position to adjust my position back to original start position every once or twice a week

Note: This is based on personal experience of performing arbitrage. This is not financial advice and strictly for reference only