バブル相場用の回転ボットのコンセプトとQuantZoneロジック(追記あり)
こんにちは、Hohetoです。
今回のnoteでは、「力強い上昇相場に乗り遅れたときに、リスクを限定しつつ利益を上げるための方法」について検討と実践を行った結果について共有します。
ご注意!
当noteに出てくる手法は特に再現性があるわけではなく、たまたま相場とマッチしてうまくいっただけなので、今後もうまく機能するとは限りません。
ここで書かれている情報については、自己責任でご利用ください。筆者はいかなる損失も補償できませんので、ご承知おきください。
追記!(必ずお読みください)
2021年5月19日の暴落に買いで立ち向かった回転ボットは、あえなくその生涯を閉じました(26万ドルの損失、ゼロカット)。
・4万ドル→40万ドル→30万ドルを退避して10万ドル→26万ドル→ゼロ。
教訓
・下げ相場に入っているのにそのまま運用してしまった。本来は方向を逆にして必ず売りから入る状態にすべき。
・ネガティブスキュー(落ちるときめっちゃ落ちる特性)に下落相場で拍車がかかった。これを予想しそこねた。
・「高勝率だが死ぬときは死ぬロジック」と理解した上で、利益を一部退避させる運用ができていた。これは良い点。
総括
・最後の読み間違い以外は、問題ない立ち回りだった。原資4万ドルで最終的に30万ドルを残せている。
・読み間違いについては、油断・慢心・過信などが原因。下げ相場に変わったと勘づいていたにも関わらず、運用を続行した。
・QuantZoneでは価格情報しか使えないため、今後はきちんとしたボットとして実装しなおして少額で稼働再開させる予定。
やったこと
2020年12月27日~2021年4月24日まで、回転ボットの実装と運用。
回転ボットはFTXのQuantZoneで作成(QuantZoneについては後述)。
運用対象はFTXのETHUSD無期限先物(ETH-PERP)とETHUSD四半期先物です。
「回転ボット」(※この呼称は筆者が勝手にそう呼んでいるだけ)とは、「暴落時にレバレッジをかけてロング&伸びてきたら利確」を繰り返すだけの単純な売買プログラムです。
図1. 2020年11月以降のETH-PERPの日足
結果
初期資産40,000ドル。
2020/12/28~2021/1/16の期間で5回転。5回転目を利確した後の資産残高は、340,000ドル。ここまでで合計損益は+300,000ドル。
※この時期の回転ボットの様子は、下記の一連のツイートで呟いています。
この後、1/22にもう1回転して+58,000ドル。
そして、証拠金を10万ドルまで落として再度稼働し、
2/22の下落で2回転して+36,000ドル。
2/23にも1回転して+9,000ドル。
4/18の下落で1回転して+33,000ドル。
昨日4/23の下落でロングエントリー&本日4/24に手動で決済して+26,000ドル。
獲得合計が+462,000ドルで、概ね+5000万円となりました。
上昇相場が継続するか分からないため、4/24にいったん運用を停止しています。ビットコインが最高値を更新するようであれば、運用を再開します。
そもそもの発端
昨年11月ごろからビットコイン市場は活況で、高値をグイグイと切り上げて、ATH(=All Time High、史上最高値の意)に迫る相場が続いていました。
この時期、ETH価格は過去の最高値(=約1400ドル)には程遠い400~500ドルの水準でした。そこで筆者はバブル相場のための仕込みをしようと思い、FTXのETH-PERPとETH1225を使ってロングポジションを作ったのでした。
ところが11月25~26日にかけてETHは20%超の下落。その後回復に向かうのですが、再度12月1日~10日にかけて下落局面となったことで、
「出た!二番天井や!」
とイキり立ち、せっかく作ったロングポジションを全決済しました。2017年のバブルがトラウマになっていたんですね。
大した値幅を稼げずに失意に暮れていると、なんとその後12月16日ごろから再び高値を更新。凡庸な裁量トレーダーのごとく、見事に振り落とされたのでした。
12月16日といえば、ちょうどビットコインが20000ドルのラインを明確に超えて一気に24000ドルまで続伸した時期です。
力強く価格が伸びていく相場であったため、出来ることならエントリーをし直したい。しかも分厚くロングしたい。
しかし万一ここが天井になったら?ド高値でロングエントリーして裏目を引いてしまったら、資金が大幅に棄損してしまいます。
じゃあどのようなトレードをしよう?と考えた結果、「回転ボット」を走らせよう、という結論になりました。
回転ボットのコンセプト
1)エントリーのコンセプト
大前提として、「力強い上昇相場が続く」と決めつけてしまいます。
「短期的に下落することはあっても、そのうち回復して高値を更新していく相場」ということです。
このように前提を決めつけてしまうと、自然と以下のようなトレードになります。
①下がれば買い。だって必ず高値を更新するんだから。
②含み損が出てもひたすら我慢。だって必ず高値を更新するんだから。
ロング(買い)エントリーのみを行い、ショート(売り)エントリーは行いません。
このとき、もしも前提が間違っており下落相場に転じてしまうと、ゼロカットされます。下落したときはロングポジションを持っており、かつ損切りしないため、当然です。
ゼロカットのリスクがあるため、大きな証拠金を運用できません。
必然的に証拠金は小額に留め、代わりにレバレッジを高めに設定して運用することになります。
高レバにすると逆行したときのゼロカットまでの値幅が狭くなります。ですので、価格上昇時に順張りでエントリーするのではなく、価格が下がったときに逆張りでエントリーするようにします。
2)決済のコンセプト
回転ボットでは、価格が上昇したときに必ずポジションを決済するようにします。
「エントリーで下ヒゲをキャッチしたのであれば、上昇相場と決めつけているならそのままホールドしたほうがよいのでは?」と疑問に思われるかもしれません。
その意見は一理あります(つまり、決済した後にそのまま価格が上昇して置いていかれる可能性がある)。ですが、今回のボットは開始時の証拠金を減らしているため、ここをカバーする工夫が必要になります。
例えば、バブルのような強気相場では、価格がしばしば上に突き抜けてオーバーシュートします。ただし、その上昇は永遠に続くわけではなく、行き過ぎを咎めてどこかのタイミングで反発して下落します。
このような局面では、ロングポジションをホールドしたまま下落に耐えるよりも、事前にさっさと利確しておき、下落局面では再度エントリーの機を伺うほうが理に適っています。
一度ポジションを落とすことで、次のロングのための余力を確保できますし、次回のエントリーでは利確分を含めて複利的に運用することが可能となります。
まさに「回転」ボットですね。
・・・
以上のコンセプトを基に売買ルールを整理すると、以下のようになります。
①必ずロング側からエントリーする。
②開始時の証拠金はゼロカットされても問題ない程度まで少なくする。
③価格下落時にエントリーする。
④価格上昇時に決済する。
こうしてまとめると、普通のことすぎて驚きますね。
ですが、これらを遵守するのはなかなか難しいのです。例えば、このコンセプトに則ってトレードする場合、以下のような点に注意する必要があります。
「上がりそうなときにロングエントリー」してはいけません。必ず「暴落局面でロングエントリー」します。
通常の相場ではなかなかエントリー水準まで価格が落ちてきません。ノーポジの中、グイグイと上昇する価格を指をくわえて見ているしかありません。
だからといって、安易にエントリーの指値を近づけてはいけません。貫通してしまったとき、レバレッジが高いため命取りになるからです。
逆に、いざ暴落局面になると逆張りのロングは恐ろしくて簡単にできるものではありません。
また、「価格が上昇したらホールド」してはいけません。「価格が上昇したら決済して、またエントリーの機会を待つ」のです。反対に、価格が上昇するまでは決済してはいけません。
多少の利益が乗っても、しっかりと価格が上昇するまでは含み益の増減に耐える必要があります。また、上昇局面が訪れた際は「もっともっと上がりそう」という誘惑に負けず、スッパリとポジションを落とす必要があります。
これらの感情に振り回されずにトレードするには、ボット運用はもってこいです。
詳細な売買ルールとQuantZone設定について
ここからは、実際に運用した際の詳細な売買ルールと実際に使用したQuantZoneについての説明です。
筆者は普段はPythonを利用してボット開発を行っています。
ですが、今回使用した売買ルールは価格情報のみを利用した単純なものであったため、簡易的にQuantZoneを利用することにしました。
QuantZoneとは
海外の仮想通貨取引所「FTX」で提供されている自動売買の機能です。プログラムに慣れ親しんでいなくても、トリガーとアクションを設定することで、自動で売買することが可能です。
筆者は過去にQuantZoneに関するマガジンを作っていますので(更新が滞ってますが)、こちらを参考にしてください。
売買ルール1)下落時にエントリー
「レバレッジL倍で、直近N分高値から、R %価格が下がった位置にエントリー指値」
・Lは、2.5~5倍で設定していました。
・Nは、だいたい120~240分程度で設定していました。
・Rは、だいたい7~14 %程度で設定していました。
ここで、NとRのパラメータについての匙加減が重要なわけですが、筆者は市況に応じてその都度裁量で設定していました。
ボット運用をしていたとはいえ、今回の一連の運用は半裁量で行っていたことになります。
R(指値幅)を狭くすればするほど、L(レバレッジ)も小さくする必要があります。その分貫通しやすくなるからです。
QuantZoneでは以下のような設定になります。
再度のご注意!
・ここで紹介するコードは完璧なものではありません。予期せぬ挙動で損失を被ることがあります。その際、筆者は責任を追うことはできないため、参考にする場合は自己責任でお願いします。
・内容を理解しないまま流用すると損失を出しますので、お止めください。
・コードの改善点等のご指摘は筆者twitterまでお願いします
簡単に解説します。
Trigger:
これは、「ETH-PERPのポジションが10枚以下のときエントリー指値を出す」ということです。「10」の部分は想定ポジションに応じて書き換えます。
# Trigger
position_net("ETH-PERP") <= 10
Order Size:
「証拠金をL倍分の枚数」と「現在ポジション数」の差分を発注します。
ただし、差分がマイナスになれば0とします(発注しない)。
「2.5」の部分は、「レバレッジ」のLです。必要に応じて書き換えます。
「120」の部分は、「直近N分」のNです。必要に応じて書き換えます。
「0.9」の部分は、「R%」のRに応じて書き換えます。R=10%であれば、0.9となります。
# Order Size
max(0, collateral * 2.5 / (max_price("ETH-PERP", 120) * 0.9) - position_net("ETH-PERP"))
Limit Price:
ETH-PERPのN分間の高値に、(1-R/100)をかけた価格です。
「120」の部分は、「直近N分」のNです。必要に応じて書き換えます。
「0.9」の部分は、「R%」のRに応じて書き換えます。R=10%であれば、0.9となります。
# Limit Price
max_price("ETH-PERP", 120) * 0.9
売買ルール2)上昇時に決済
「直近N分安値から、R %価格が上がったら位置に決済指値」
・Nは、だいたい120~240分程度で設定していました。
・Rは、だいたい6~10 %程度で設定していました。
エントリーと同じく裁量で都度パラメータを設定していましたが、エントリーよりは若干値幅を狭くしています。下落時より上昇時のほうがスピードが遅いという特徴を考慮に入れたためです。
QuantZoneでは以下のような設定になります。
Trigger:
これは、「ETH-PERPがロングポジションを持っていれば決済指値を出す」ということです。
# Trigger
position_net("ETH-PERP") > 0
Order Size:
現在ポジション数と同数を決済する、ということです。
# Order Size
position_net("ETH-PERP")
Limit Price:
ETH-PERPのN分間の安値に、(1+R/100)をかけた価格です。
「120」の部分は、「直近N分」のNです。必要に応じて書き換えます。
「1.08」の部分は、「R%」のRに応じて書き換えます。R=8%であれば、1.08となります。
# Limit Price
min_price("ETH-PERP", 120) * 1.08
実際の運用
QuantZoneで指値を自動で出してもらうのですが、上述のとおり、実際の運用のときは裁量で値幅を調整していました。
といっても、前回の回転では貫通してしまったから若干広げる、というような簡単な調整です。
例えばOpen Interestが溜まっているような場合は若干広めにする、というように何らかの指標を参照するやり方も考えられますが、特に他の指標は参照にしませんでした(結局どこまで掘るか分からないため)。
一つだけ、運用中に調整が必須なケースがあります。
エントリー指値が貫通して大きく掘り下げてしまった場合、決済指値を離してやらないと十分な値幅を取れずに含み損の状態ですぐに決済指値にかかってしまう場合があります(以下の例を見てください)。
決済指値幅の調整が必要な例
・直近高値が10000ドル、エントリーは8%ライン、決済は6%ラインで設定
・価格がいっきに8500ドルまで落ちた
このとき、9200ドルのエントリー指値が刺さって含み損状態
決済価格は直近安値から計算するため、8500*1.06=9010ドル
・反発して決済ラインにかかったとき、
9200ドルで買い、9010で売り決済 になってしまう。
・掘り下げた時点で決済ラインを6%→10%のように広げる必要がある。
(相場が落ち着いたときに決済にかかってなければ、元通り狭くする)
最も気をつけるべき点は、暴落の際にエントリー指値が貫通してゼロカットを食らうことです。
この対策として、第一にエントリーの指値幅(R)を近づけすぎないこと。続いて、指値を貫通しても致命傷にならないようにレバレッジ(L)を控えめにすることも重要です。
指値を貫通してさらに10%~20%掘り下げても死なない程度のレバレッジに設定しておきます。
筆者は最初はレバレッジ5倍で運用しましたが、指値を貫通してヒヤリとする場面がありました。その後はレバレッジ3倍に引き下げました。
さらにその後、指値を2本用意し、近いほうの指値で2.5倍、遠い方の指値で2.5倍の合計約5倍のレバレッジ設定にしていました。
無事に回転が終了して利益が出たときに、いくぶん証拠金を抜いておくことも重要です。
複利運用をするため、常にゼロカットのリスクと隣合わせです。筆者は2~3回転した後に原資分を証拠金から抜いて確保しています。
失敗談
実は同じような回転ボットを、XRP-PERPおよびUNI-PERP・SUSHI-PERPで動かしました。
XRP-PEPRの下落方向の回転ボット
XRPについては、SEC騒動が起こった後、下落方向で回転ボットを動かしました(上げたら売りから入る、下げたら決済)。
2020年12月22日~12月25日ごろまで稼働させましたが、ボラティリティが思った以上に高く、途中でゼロカットされてしまいました(-4000ドルくらいの損失)。
UNI-PERP・SUSHI-PERPの下落方向の回転ボット
2021年1月22日の下落の際、DeFi銘柄がそろそろ天井ではないかと思いたち、UNIとSUSHIを利用してこれも下落方向で回転ボットを動かしました。
これは方向性を完全に見誤りました。
SUSHIについては、1月25日にできた上ヒゲでゼロカットされました(下記ツイートはそのときの怨嗟のツイートです)。それを踏まえ、UNIの回転ボットも停止しました(こちらも合計で-4000ドルくらいの損失)。
これらの失敗は、
①想定以上のボラティリティ
②前提としていた方向感の根本的な間違い
が原因です。
ではなぜETHの回転ボットがうまく行ったか?というと、はっきり言って運がよかっただけです。
たまたま最初の決めつけと実際の相場がマッチしただけであり、また期間中に-30%を超えるような痛烈な下落に見舞われなかった、ということです。
運が悪ければ、初期資金の40000ドルは、まるまる失っていたでしょう。
まとめと考察
今回の回転ボットの運用では、暴落したら買う、上がったら決済する、という非常に単純なルールで大きな成果を上げることができました。
売買ルールのおさらいです。
①必ずロング側からエントリーする。
②開始時の証拠金はゼロカットされても問題ない程度まで少なくする。
③価格下落時にエントリーする。
④価格上昇時に決済する。
このような単純なルールですが、QuantZoneを使って忠実に実行しただけで思った以上の成果を達成できました(もちろんバブル相場の恩恵が大きかったです)。
バブル相場でトレードに失敗する人は、これらのポイントの逆を行っている場合が多いと思われます。例えば以下のようなトレードです。
・ショート側からエントリーする。
・価格が上昇してきたときに、我慢できずにロングでエントリーする。
・価格が下落したときに、ロングしない、あるいはショートする、あるいはロングを損切りする
どうしても感情に振り回されてしまう!という方も多いと思います。
回転ボットではなくとも、「ルールに則ったトレード」をするために、QuantZoneを利用してみるのもよいかもしれませんね。
・・・
ここで、回転ボットのリスクについて今一度お伝えしておきます。
回転ボットは、暴落や暴騰に対して逆張りで立ち向かう戦略です。非常にリスクが高い戦略で、筆者もETH以外の通貨では失敗して資金を失っています。
回転ボットは「力強い一方方向の相場」であることを前提としています。レンジ相場や反対の相場に入ってしまうと、機能しなくなりゼロカットされてしまいます。また、想定以上のボラティリティが訪れると、ゼロカットされてしまいます。
失っても構わない資金以外は、決してこのようなハイリスクな運用をすべきではありません。
ボラティリティを選好して小型通貨で試すことは、さらにゼロカットのリスクを高めます。
もともとのボラティリティが大きいことに加え、運営のテコ入れや不祥事などで想定外の価格変動やトレンドが起こる可能性が高まるからです。
手を出さない方が無難でしょう(XRP・UNI・SUSHIの経験談)。
・・・
リスクについて幾度もお伝えしましたが、回転ボットについての筆者個人の考えもお伝えします。
まず、「暴落時に周りと逆の行動を取ってロングで立ち向かうことは、リスクリワードが非常に高く、有利なトレードである」ということ(※小型通貨除く)。
コロナショックのような大暴落であっても例外ではなく、かつ、貫通のリスクはレバレッジによってコントロールできます。
また、高値を追わないこの手法は、バブル相場での高値づかみリスクをぐっと減らします。
筆者的に、バブル相場での短期トレードの立ち回りの中で「ひとつのベストプラクティスである」と考えています(勝率と獲得利益が物語っています)。
次のATH更新相場では、筆者は間違いなく、再度この手法を試すでしょう(もちろん失くなっても問題ない資金を使って)。
・・・
最後に、
ビットコインは4月18日に1万ドル暴落して以降、方向感が分からない状態が続いています。
このため、筆者は最後の1回転を手動で利確してボットを停止しています。決済に届くような上昇が起こらずズルズル価格が切り下がっていくようなケースを想定したためです。
もしも再びビットコインが最高値を更新するようであれば、証拠金の一部を抜いた状態で、運用を再開しようと思います。
そのときは筆者twitterでお知らせします。
それではよきトレードライフを!