見出し画像

トレンド相場でメイカーボットの安定性・収益力を高めるアイデア

皆様、明けましておめでとうございます(遅い)。

最近もボット開発で消耗しているHohetoです。

年が明けてからBTC相場は強気に推移しています。半減期前の期待感(本当かどうかはさておき)やイランによるアメリカ軍基地攻撃などのいくつかのファンダメンタルが重なり、年初から昨日(1月18日)にかけて既に20%以上の上げ相場となっています(図1)。
※本日さらに上がり、一時は現物価格も100万円を突破しました。

画像1

図1. 2020年1月1日以降のbitFlyer FXBTCJPY 2時間足 via TradingView

BTC相場の特徴として、買いが買いを呼び(売りが売りを呼び)、時折短期間での急激なトレンドができることがあります。

図2は、1月17日のお昼前後の1分足で、FXBTCJPYが100万円をつけにいったときのチャートです。
シンプソンチャートのような急変ではなく、出来高を伴いながら数時間のうちに3万円(約3%)以上動くという、典型的なトレンド相場でした。

画像2

図2. 2020年1月17日 bitFlyer FXBTCJPY 1分足 via TradingView

トレンド相場における高頻度取引ボットの挙動

一般的に、上下に売り指値と買い指値を入れるようなオーソドックスな逆張りタイプの高頻度取引ボットは、このような一方方向の値動きは苦手とする傾向にあります。
売りと買いのスプレッドよりも値動きのほうが大きくなるため、上下に約定させていってもトータルで見るとマイナスになるためです。

単純に指値幅を広げるというアイデアもあるのですが、何の策もなしにそれだけを行ってしまうと、約定率が落ちて「持ったポジションを決済できず逆行してしまう」といった事態が発生しやすくなります。そういったケースでは、結果的に損益曲線が安定しづらくなります。

今回の記事では、急激なトレンド発生時にボットの安定性と収益力を高める方法はないか?を模索した結果、単純ながら効果的な方法を1つ発見しましたので、共有したいと思います。

トレンド検出時のボットへの施策

結論から入りますが、

「トレンド発生時、必ず順方向のポジションから作るようにする」

という施策によって、強いトレンド相場に入ったときのボットの挙動を安定させることができました。以下、詳細を解説します。

そもそも「トレンド方向のポジションから先に作る(トレンドに逆行するポジションからは作らない)」というのは、短期でポジションを回転させるようなトレードでは鉄則です。
上昇トレンドでは落ちて来たところでまずは買いポジションを作り、再び上がったところで売り決済する、ということです。

これは短期トレードを行う人であれば必ず一度は耳にしたことがあるような方法なのですが、ボットによる高頻度取引となれば話が変わります。
「必ず一方方向からエントリーする」という施策は、ポジションを取る機会を減らしてしまうため、全体としての収益を下げてしまうのです。
そのため、筆者はこれまでは高頻度ボットに対してこのような施策は行っていませんでした。

今回、いろいろと試行錯誤を繰り返す中で、ABテストのような形でこの施策を試していたところトレンド相場が訪れ、そのときのパフォーマンスが思ったよりも安定したため、再評価したという次第です。

損益への影響

こちらは、2020年1月に入ってから、強めのトレンドができたときの筆者のボットの損益グラフです。
「bF1」というボットは、典型的な通常の両面差しタイプのメイカーボットです。一方、「bF2」というボットは、bF1のロジックに「トレンドが発生したときには、必ず片側しか入らないようにする」ためのフィルターを加えたものです。

200114_損益

図3. 2020年1月14日 8時~14時の各ボットの損益とbFFXのLTP

200117_損益

図4. 2020年1月17日 10時~17時の各ボットの損益とbFFXのLTP

フィルタを加えたbF2は、トレンドが発生したときにドローダウンが少なく、ぐいぐいと資産を伸ばしている様子が分かります。

トレンド判定の方法

トレンド判定の方法ですが、すぐに思いつくだけでも以下のように様々なものがあります。

・N分間の騰落率
・N分間の移動平均の変化率
・N分間の約定ボリューム など

筆者はこれらを組み合わせて5分から10分程度の短期のトレンドを検出し、それが大きなトレンドとなっていれば、片側からしか入らないようなロジックにしていました。

この手法のデメリット

一方、この手法はトレンド相場でない定常相場ではポジションを取る機会が減ってしまうため、全体の収益期待値がかなり下がってしまいます。
ですので、定常相場のときはフィルターを外すなどして、トレンド相場になった時だけフィルターをオンにするなどの工夫が必要でしょう。
実際に運用するときは以下のどちらかのパターンになると思います。

1)閾値を定めておき、ボットが自動的にオンオフを切り替える。
2)人間がトレンド相場を判断し、自らオンオフを切り替える。

筆者は定常相場での収益を毀損してしまうのを嫌い、手動で設定しようと考えました。そして、設定ファイルにこのパラメーターを外出しして手動で設定&反映できるように実装しました。
※追記:本日1月19日の10時ごろの上げ相場では、筆者が外出中のためこのフィルタをオンにできませんでした…やはり自動化しようかな。

もう一度繰り返してお伝えしますが、かなり強いトレンドでない限りは、ボットの収益期待値が下がってしまいます
直近では、1月7日・1月8日・1月14日・1月17日のような強いトレンドができたとき、収益力がアップし、それ以外では基本的には収益の絶対額は下がっています。
そのあたりを十分認識した上で、ご自身のボットのロジックにマッチしているかも含めて検証してみるのがよいと思います。

終わりに

今回、ボットの収益改善に成功した具体的なアイデアをnoteで共有しました。これにはいくつか理由があります。

1)現在の新規流入が少ない市場では、他の人のボットの収益が上がると食い合いになってしまう場合が多いが、今回のケースはそれに該当しないと思っている。
強いトレンド相場ではボット以外のトレード参加者が増え、ボットの収益源が定常相場に比べて圧倒的に多くなります。
ですので、今回のアイデアを共有することによってbotterがマイナス方向に受ける影響は小さいのでは?と考えています。

2)下火になりつつあるbotter界隈が少しでも賑わってほしい。
仮想通貨デリバティブはレバレッジ2倍規制や板規制の話が出ており、先行きが暗い状況です。
規制の内容が確定するまではボットの改善を据え置いたり、一時的に開発を中断するという方もおられるではないでしょうか。
僕がお伝えしたいことは2つあり、
①何らかの試行錯誤を繰り返すことで、損益を改善できる余地がまだまだたくさんあること
②実際に手を動かした経験は、仮想通貨デリバティブが下火になったり無くなったりしても自分の知見として蓄積され、そのうちのどれかは役に立つときが必ずくる、ということ です。


ということで、今回のnoteでは具体的なアイデアを共有させていただきました。

最後に、今回うまくいったと報告させていただいたのですが、あくまでここ数日の相場環境、かつ筆者のボットの環境およびロジックに適用した際の結果です。
ご自身の環境やロジックに適用した際は、必ずしも収益が上がると断定できるわけではありません。
また、変動時におけるトレードの話ですので、遅延などのイレギュラーにより想定外の挙動になる・あるいは想定した挙動であっても損失が発生する可能性は十分あります。
万一損失が出たとしても筆者が補填することは出来かねますので、ご使用の際は自己の判断・責任の元で行って頂くようお願いいたします。

それでは良きbotterライフを!


この記事が気に入ったらサポートをしてみませんか?