知識ゼロから仮想通貨を半年勉強してB級botter(月次10万)になったお話
何の記事か
仮想通貨もpythonも何も知らない奴の奮闘記
botで爆益したいけどイマイチ踏み出せない人って沢山いらっしゃるかと。
そういった方へ向けて、実際にプラスになったよーと自慢する記事。
びみょうに長いので結論
この半年で色々勉強してbot作ったら、元手5万で月次10万超えました。
そして、仮想通貨取引には、夢がある。
botterのランクとは
B級botterはbotでの月次が10万以上の人たちの事を指します。
ただ仮想通貨界隈は魔窟です。界隈のTLを眺めているとここ最近は月次100万が当たり前、「月次1億から人権」のような舐めた風潮なので現在ではこの基準から一桁か二桁、上がっているかもしれません。
そうだ、botで爆益しよう
2021年2月3日にこの記事に出会いました。
強化学習のbotで月10万…!?
なんなら1週間で達成してる???
正直、衝撃が走りました。これはやるしかない。
仮想通貨って…なに?
機械学習なり強化学習なりを使って上がりやすい下がりやすい特徴量を見つけだせれば勝ちのゲーム。楽勝か。
いや、まて。
ワイ、仮想通貨の 「か」 の字も知らん。
ということで国内の販売所・取引所を調べてみました。(正確でない部分もあると思います。当時作成した資料が残っていたので載せます。)
ちなみにこの時、取引所と販売所の違いすら知らなかったです。
もちろん、テイカー/メイカーなんて聞いたこともありませんでした。
「販売所を使う奴情弱過ぎwwwwwww」と煽られる事がありますが、実際に並べてみると凶悪ですよね。調べてた頃のビットバンク(販売所)のスプレッド、約15万。なんつー手数料ヤクザ。
とりあえず調べてみて分かったのは販売所・取引所・商品によって
・スプレッド(取引手数料)
・ロールオーバー
・ロスカット手数料
・レバレッジをかける手数料
・入出金、送金手数料
・通貨間のコンバート手数料
・SFD(bitFlyerのみ)
・FR
・ガス代
などなど、多種多様なあの手この手でまるで毒状態にかかっているかのように手数料が搾取されることがわかりました。
botの種類・勉強方法について
調べてみると何やら
・mmbot
・HFT
・パンピーが思い浮かべる普通のbot
というのがあるらしい。mm? market make?
HFT は聞いたことあるけど、それってスプレッド負けしないの?
この時参考にさせて頂いたのはUKIさんのブログやQiitaの記事など。
で、何からすればいいのかぜんぜんよくわからん。
聞いてみよう。
めっちゃ丁寧に返して下さって感謝しかない。
とりあえず仮想通貨で勝ってそうな人たち、botterアカウントを片っ端からリストに突っ込んでいきポロリをしないか常に見てました。たぶん50人以上は非公開リストに入れてます。
かつbotの組み方やそもそも取引所を開くところから行い、ある程度の下地を作りました。ここまでの期間、3週間ほど。
そしてそこから1週間程、pythonの環境構築・変数宣言など1から学習し、bot制作にとりかかりました。
bot初号機、発進
確か3月の頭には作成していたと思います。
ロジックとしては非常に簡単で先行指標となる価格を監視し、乖離があれば乖離を埋める方向にポジションを持つという単純なものです。(いわばアビトラ的な。)
かなり短い時間で取引を行うbotだった為、あまり意味は為さないとわかりつつもとりあえずバックテストを行っていました。
・1番上が価格。
・2番目が赤い棒がポジション量の想定。
・3番目が想定利益。(4番目の3本分の合計)
・4番目が各乖離率に達した時にポジションを持った場合の想定利益。
グラフの横軸は24時間。
1ポジ0.001枚の想定だったので、手持ち3万程あれば実行可能なはず。
平均で+4k/日 のパフォーマンス。良ければ1日で+15k程度。
いやいや、ほぼ負けなしwwwこりゃ人生アガッたわwwwwwwwワロタンバリンシャンシャン
……何かがおかしい。
バックテストも好調、実装までもかなり早かった。もはや怖いものは何もない。と思っていた。
ただ実際はどうだろうか。稼働させてみた初日は+150円。
勝利の喜びを噛み締めていたが、次の日も、その次の日も負けた。
ずっと元手付近をうろうろしている状態。当落線上。
やはり私では勝つことは出来ないのか。
2週間ほどプログラムの修正とパラメーターの微調整を行ったが結果は出せず、ふとおもった。
もう、やめたほうがいい。
そうして私は、短期での売買を諦めた。
価格予測へシフト
話は冒頭へ戻り、強化学習の勉強に着手することにした。
なぜ最初から強化学習をやらなかったのか?
むずかしそうだから。(ドンッ)
なぜ今更になって強化学習に着手したのか?
ぱっと飛びついた手法で結果が出せなかったから(ドドンッ)
なんと情けない話である。
ここからまた更に試行錯誤を行い、
・深層強化学習による価格予測
・R言語のARCH・GARCHを用いた価格予測
・ProphetやLGBMによる価格予測
などを一か月程で諸々試してみたがうまいこと精度が出せなかった。ちなみに、強化学習の本は以下を使用しましたがライブラリに頼らず1からスクラッチするので非常におススメです。
この時、機械学習関連で参考&モチベーションにさせて頂いたのはrichmanさんの記事。
ただ凡人の私にはこの記事を読んだだけだと高精度な価格予測をさせられませんでした。
そもそも、価格予測は可能なのか
ここ1年ぐらい、ずっと悩み続けてた命題。
個人的には、
機械学習による価格予測結果を用いて、
実際に収益をあげられるレベルの価格予測は不可能
という前提でいます。
richmanさんのように非常に賢い方ならばそれを可能にできるのでしょうが、まず凡人では不可能と割り切ってよいと思っています。
基本的に価格変動はランダムウォークです。
ランダムと言えばサイコロでしょう。どの目も均等な確率で目が出現するとして5回連続で1の目が出たならば、次は1が出易いのか?
そんなわけありません。
価格予測を行うというのは、いわば次のサイコロの出目を予測することと大差ないように考えています。
幾つかの方法で価格予測を試みてきましたが、高い精度を得ることが出来なかった喪失感とやはり価格推移は "基本的には" ランダムである価格予測を行う事自体が間違っているという思考に切り替えました。少なくとも、上下当てができると思っているのはただの妄想です。
もう、やめたほうがいい。
そうして私は、価格予測することを諦めた。
再び、エッジを探す旅にでる
以前は無料公開されていましたが、今は非公開になっているよーぶんさんの手法が載っている記事を読んだ人はどれぐらい、いらっしゃるのでしょうか。かなりの反響があったことだけは覚えています。
その記事の中で特筆すべき点は以下の2点。
・Liquidation(清算)… 強制ロスカットされた量
・OI(未決済建玉)… 決済されていないロング・ショートの量
為替だけやっているプレイヤーだと2億パーセントの確率で知らないと思います。よーぶんさんの記事の中ではこの2つについて説明がありました。
画像が小さくて見辛いですが、例えば2021年5月7日 3時30分
この時間に400万ドル以上のロングが強制ロスカットがされていることがLiquidationから分かります。
また、こういった乱高下はOIを確認することによりある程度事前にわかる場合があります。OIが上昇基調であるならばそれは市場全体として抱えるポジションが多くなってきているので決済されるポジション量が多くなるからです。
……といったことが記載されていたような気がします。
細かい内容までは覚えていないのですが、この2つの値を使えば真にエッジのあるトレードができるのではないかと考えて今のbotに組み込んでいます。
bot弐号機、発進
これらの値をどのように利用すればいいのかを思考し、バックテストを行いました。情報収集するためのプログラムを作成するのに今度は3週間程かかり、同時並行でエクセルバックテストを1週間ほど行いました。
エクセルバックテストの最後の3日間のデータで損益を出してみたところ、1BTCでポジションをとっていきナンピンなしで+3,144ドルの結果が出ました。
ロバスト性を損なわないように極力ソフトなパラメーターに設定した状態でこの結果だったので非常に期待が持てた瞬間だったことを鮮明に覚えています。
botの性質上、ヒゲやド底を狙いにいくのですが養分ポジの素質を多分に含んでいたので私はこのbotを「全力養分bot」と名付けることにしました。
稼働後、上々の滑り出し
5/4 から実際に稼働させ、5/7時点で+137ドル(+13.7%)となりました。
実際には途中でプログラムを修正しつつ稼働させていたので延べ3日程度。
ロットはある程度抑えており、計算上だと資金$1,500ドルに対して、ビットコインの値動きが5,000ドルまでなら踏まれてもギリギリ大丈夫なぐらいにはしています。
ヒゲ取りを全力でしにいっているのである程度は踏まれてしまいますが…w
それでも、かなり良さげなポイントでポジションを持ってくれます。
この日以降も、スケーリング対応、中途半端な枚数が指さった場合、手数料を極力抑えるロジック、対応が苦手な部分への対処、リアルタイムにポジションをツイートする機能、などを加えていきました。
そして、B級botter爆誕…かと思われた
5/12、稼働して9日で+178ドル。(+17.8%)
このままのペースでいけば後はロットを上げるだけで自動的にB級botterへ。
そう考えていたのですがどうやら、B級botter達成が泡沫の夢として儚く散ってしまう日が訪れてしまったようです。
来たるXデー。
2021/5/13に最大で1万ドル以上の下落が発生しました。
売りが売りを呼ぶ展開に為す術もなくただ只管ナンピンをしてゆく我がbot
6000ドル幅程度は耐えており、33000ドル前半までは生きていましたがその後、あっさりと息を引き取りました。
「1日で5000ドル幅以上動く展開なんてそうそうないだろう」
という思い込みをロジックの大前提として考えてしまっていたことを酷く後悔しました。
bot参号機、活動限界
逆張りロジックがダメなら、順張りロジックにすればいいじゃない!
あたいってば、てんさい!
エクセル上のバックテストは順調だったが、完全にド底とド天井を掴んだ後は両建てが解除されるまで常にポジションを持ちっぱなしの状態になったので、あえなくbot参号機を廃棄。
もう少し考え直してみた。
何がどうなればプラスのトレード結果となるのか?
答えは単純で、プラスをマイナスより多く積み上げる事。要はRRのリスク比率を限定的にしつつもリワード比率を高めていくことを重点に考えなければならない。
それに照らし合わせ、無限ナンピン逆張りbotの何がダメだったのか。
損切をしないゴミロジックだったという事。
bot肆号機ではポジションを持つタイミングで必ず±1%のプライスにSLを入れるという戦略をとりました。
これもエクセルバックテスト上はそこそこの成績が出ていたので実践投入してみたところ、なんか無限に負け続けてる。(黄色線がBTCのプライス、青い面グラフが損益です)
とりあえず、稼働期間中に5000ドル幅の上げ、からの4000ドル幅の下げに対して逆張りを続けても飛ばなかったのは当初の絶対に死守したい挙動だったので一先ず褒めてつかわす。
ただね。
圧倒的トレンドが発生してる時になんで損失を出し続けるの!?
その理由としては逆張り & 1%で損切を徹底すると、圧倒的に上げる・下げるタイミングでポジション構築・即切りが連続で何度も発生してしまっていました。
価格推移の仕方や時間の掛かり方などがうまー--く噛み合えばテンポよく利益を積み重ねていけるのですが、いくら損失を限定的にしたところでリワードを伸ばせなければただのジリ貧でしかないということを痛感しました。
でも私は、botを作ることを諦めなかった。
これまでの全ての失敗を改善した、全力養分bot
これまでの失敗を踏まえ得た一つの解として、リスクを抑えつつリワードを多く得るには
「トレンドフォローをさせつつ必ずSLを引く」
という何だか、極々当たり前の結論を導き出しました。
いやもう当たり前すぎてたぶん誰の心にも響かないと思うんですが、同一ロジックで淡々と取引をさせた時に相場の雰囲気やらファンダとかを一切取り入れずに勝ち続ける一つの方法論を見つけられたのは非常に大きな進歩でした。
この考え方を取り入れたロジックに修正した際の想定利益として、5/29 ~ 6/8 でBTC1枚をベースとして稼働させた結果、+6850ドルでした。(青い線がBTCのプライス、オレンジの線が想定利益)
上記の想定利益を見てもらえれば分かりますが、10日も稼働させているのにポジション数が少ない(ジグザグの数)です。加えてポロリになりますが使用している条件に時間的な縛りを使っておりました。また、損切幅を固定で1%としていること、これらの改善に注力しました。
上記の問題点に対する改良を重ねた結果、飛躍的な進化を遂げました。
・1日のポジション数の増加 ⇒ 収束を早められる
・条件から時間の要因を排除 ⇒ オーバーフィッティングを避け柔軟に判定
・適切な損切幅をポジションごとに設定 ⇒ RRの改善
5/29 ~ 6/14 でBTC1枚をベースとして稼働させた結果、+6800ドルでした。
損益結果が修正前と同じじゃんかと思うかもしれませんが、修正前のロジックだとこの期間での想定利益は+3000ドル後半まで落ちてしまっていました。
もう少しパラメーターを工夫すれば+8000ドルあたりまでは改善できたのですが、ほとんど損失を出さずにプラスを積み重ねられる方がスケーリングを適用させ易いと考え、安定志向にしました。
ステージ50 最終決戦
バックテストで利益を出せるロジックなんて無限にあるわけですよ。
大事なのは実際に稼働させてフォワードテストで勝てるかどうか、だけがほんとの本当に重要なことです。ハイ、ドン
ロジックの改良をして実際に稼働させた 6/16~7/15 までの損益グラフになります。
………アレ、想定利益 +6,800ドルのパフォーマンスはいずこへ……???
まぁ、多少は勝ってたんですが、想定と同じ枚数にしても一か月で+1000ドル前後でしたし、なるべくソフトなパラメーターにするように気を付けはしていたものの
・それでもやはりオーバーフィッティングしてしまっている
・トレンドが上手い事フォロー出来ていない
これらの点がかなり気がかりでした。
このままでは終われない。
更なる改修に取り組みました。
ステージ51 ホントの最終決戦
botの挙動と実際の相場とをめちゃめちゃにらめっこしつつ、こういう動きをした時はこういう処理を追加した方がいいとか削ったりしながら、アホほどバグを埋め込んでいっては改修を繰り返しました。
その中でも、以下にツイートした内容の改修が非常によかったです。これは個人的にマジで特大級のポロリ。
さて、諸々の改修を加えてどうなったか。
2021/8/1 ~ 2021/8/4(黄色線がBTCのプライス、青い面グラフが損益です)
+250ドル
2021/8/5 ~ 2021/8/31 (アカウントを作り直したので結果が分かれてます)
+1,441ドル
合計で+1,691ドル。(今のレートで185,840円)
8月27日以降損益に変化がないのは、WSOT参加でインバース取引しかさせていないからです。
基本は定ロット。要所要所で枚数上げてますが
これにてめでたくB級botterへと進化出来ました。
おわりに
実はこの記事、5月時点で8割程度は執筆完了していました。
その時点でB級botterにまで昇格できる強い自信があったからです。
実際にはそこから更に3か月もかかってしまいましたが……w
ただここに辿り着くまでに非常に多くの事を学び、経験し、藻掻き、苦しみ、挫折を繰り返してきました。これまでの全ての学びがこのbotに集約されており、報われたと思えたときは本当に嬉しかったです。
これからbotterになろうと考えている方の参考になったかどうかはわかりませんが、LiquidationとOIを主軸(というかロジックの95%と言っても過言じゃない)にしているので個人的にこの記事はかなりのポロポロリです。
記事の中でも言及しているように(超)短期的な売買でもmmbotでもないので私と同じロジックを組まれても私の損には(恐らく)ならないですし寧ろスケーリングするのは余裕だと思っているという点と、botter界隈の皆さんも無料でしかも超絶有益(!)な情報を出して下さっているので、その流れに乗りたいという思いでロジックに使用している主要部分を書きました。
当初、思っていた以上にbotで利益を出すことは難しいですが、それでも挑戦する価値は十分にあると思いますので共に頑張っていきましょう!
末筆ではございますがここまで読んで頂き、ありがとうございました( ˇωˇ )
最後にちょっと宣伝ですが、現在開催中のWSOTという仮想通貨の大会終了後、アフィリエイトを踏んでもらえれば私のbotを無料で配布しようと思っていますので、その際はまたnoteを書こうかと思います。
また、botのポジションは以下のアカウントでリアルタイムで9割方ツイートさせているので、こちらもよろしければフォローをお願いします。