アルゴリざむらい

主にpythonを用いて投資のアルゴリズムを検討します。連絡はalgorisamurai[at]gmail.comまで([at]は@にしてください)

損が出にくい設定について

注文が滑って損が出る

市場が大きいと取引所間の鞘も小さくなりがちですが、市場が小さい場合は、おそらく競合者の存在によって価格が大きく動き、損が出る場合があります。

現在、成行注文がAPIでできない取引所では、実質成行注文になる「絶対買える、売れるレンジの価格設定の指値注文」を行っています。普段は板の真上での約定に成功するものの、注文が滑ると、成行注文化するために設定した不利な価格で取引されてしまいます。
また、成行注文ができる取引所でも同様のことは発生し得ます。

対策① 競合を避ける

競合者がいなければこういうことは起こりにくいので、ちょっとマイナーな通貨ペアを選ぶのは戦略のひとつです。ただし、取引量が少なすぎると板が動かないので注意が必要です。

対策② 最大取引量を設定する

片方の取引所のみに大きな注文が入って大きな鞘が発生するとき、この鞘は速やかに解消されます。このチャンスにうまく約定できる場合は利益をあげられますが、注文が滑るリスクはかなり大きいです。

そこで、取引に最大量を設定する(現行のアルゴリズムでは鞘に対して「できるだけ利益をあげるため、残高めいっぱいまで注文をいれる」挙動をします)ことで、こうした板の大きな変動時のリスクを軽減し、パフォーマンスを安定させることができます。

具体的にはたとえば

trade_val = np.round(min(val_up*0.8, tradable_value), ex.amount_prec)

となっているところを

trade_val = np.round(min(val_up*0.8, tradable_value, 0.1), ex.amount_prec)

と「0.1」を書き加えることで、一度の取引で0.1(なんらかのアルトコイン)以上の取引をしなくなる、というわけです。