見出し画像

初心者の仮想通貨botterが最初に作ってみればいいbot

こんにちは、あいば(https://twitter.com/aiba_algorithm)です。
これから毎月1記事ずつ初心者に向けて書いていこうと思い立ち、これが1つ目の記事になります。


はじめに

今回はbot始めたいがどんなものを作ればいいか見当もつかないという方むけの記事になっています。作りたいものがある人やバックテストをしてそこそこ強いものができたぞという方は最短でそれらをデプロイするのが第一優先です。

執筆したのは2024年1月ですがビットコインの価格も上昇して新規の参加者も増えてきているように感じます。今からの時期でbotで勝てないと多分ずっと勝てないので今が一番初心者が参入したらいい時期だと個人的には思います。下の記事はなぜバブルでbotterが儲かるかの記事です。


積立bot

まず最初は積立botです。よく積立nisaとか聞きますよね。それの仮想通貨版をbotでやろうというものです。ビットコインなどの現物を買いたいけど価格が下がっている時は買いたくなくなりますよね?そういうのを気にせず買い続けてくれるのでおすすめです。発注までのコードも定期的に一定数発注するだけなので超簡単です。参考サイト貼っておきます。

積立bot発展型

ただ積み立てるだけじゃなく色々工夫もできます。例えば成り行き注文で買うのではなく、指値注文で買うことが考えられます。成り行き注文の場合基本的に手数料が高かったり、スリッページがあります。なので自分の欲しい枚数に達するまでベスト(板の一番高い買い指値の価格)に指値を出し続けるといった機構を入れてもいいでしょう。


回転bot

これはhohetoさん(https://twitter.com/i_love_profit)さんが考えたロジックです。具体的なロジックは以下の記事で説明されています。

簡単に説明すると

・直近N分における高値に対してR %下に指値を出し続ける
・指値が約定してポジションを持った場合も直近n分おける安値に対してr %上に指値を出し続ける

というものです。
コンセプトとしてはバブル時の下落を拾っていくものです。単純なロジックなのですごい下落がきたらロスカットされます。リスク管理は口座にどれだけ資金を入れるかでしたほうがいいです。低資金でレバレッジを高くするみたいな運用が良さそうです。
そんな単純なロジックで勝てるのか?と言われるとあれなんですが、バブル時にビットコイン(もしくは他の仮想通貨)が下落しても価格が上がり続けるということを信じられるなら回していいbotだと思います。
コードは定期的に直近の価格のデータを取得してポジションを持っているか確認して指値注文を出すみたいな、積立botよりも少し複雑ですが至って簡単なコードで作成できます。

回転bot 発展型

基本的に回転botはレバレッジをかけて運用することになります。それがリスキーで嫌だなという方は、下落したら現物を積み立てていくbotにしてもいいと思います。単純な積立botとどっちがいいかはわからないですが、基本的に下落してから買うほうが安く買えはするので買う量とどこに指値を置くかによっては回転bot型の積立botの方が良いっていうのはあり得ると思います。

あと発展型というよりかは作り方ですが、まず直近何分のデータを使うかと何 %下落したら買うかを決めるのはかなりセンスが問われます。感覚でエイヤで決めるよりかは以前の半減期後のデータなどからNとRのパラメータを決めたりするといいと思います。いわゆるバックテスト的なことですね。ここで自分なりの工夫ができるのでbotterとしても楽しくなってくるのではないでしょうか?
あとは銘柄選択です。ビットコインでやってもいいですが、アルトでやった方がより爆益を狙いやすいです。これも過去のデータからアルトコインがどんな動きをしていたか見たり、binanceの24時間出来高上位X位までの銘柄でやるとどうなるか?とか時価総額X位までの銘柄でやるとどうなるか?とか色々シュミレーションできます。ロジックの検証してるーーーって感じがbotterぽくて楽しいですね。


積み増しbot

界隈で養分botって言われたbotです。よーぶんさんが考案したからです。
本家の記事とかはないですが以下が参考記事です。

ロジックとしては価格が上がったら設定したレバレッジになるまで買うというものです。これも基本的にバブルなどの価格が上昇することを前提としています。単純に現物を買うよりかは積み増しbotを動かしてレバレッジをかけることでより利益を得られます。ただ現物と違ってレバレッジをかけるのでロスカットのリスクはあります。リスク回避型の人はレバ1.2とかで回してもいいですし、爆益目指したい人はレバ2以上とかで回しつつ他に現物も買っていくみたいなのでもいいかもです。
コードも現在の価格と口座残高を取得して注文するかどうか判定するだけの単純なコードになります。

下はinitial_priceでbotを回し始めて、current_priceで終了すればどれだけ利益が得られるかのシュミレーションです。sep_dollar上昇すれば買い増しする設定です。

leverage = 2.0
initial_usdt = 10000
sep_dollar = 10
initial_price = 35000  # Initial price of Bitcoin
current_price = 300000  # Current price of Bitcoin

price = initial_price
balance = initial_usdt
diff_price = current_price - initial_price
buy_times = int(diff_price // sep_dollar)
for i in range(1, buy_times+1):
    r = sep_dollar / price
    profit = r * balance * leverage
    balance += profit
    price = initial_price + sep_dollar * i
    print(i, 'price:', price, 'balance:', balance, 'profit:', balance - initial_usdt, 'profit rate:', ((balance - initial_usdt) / initial_usdt) * 100, '%')

積み増しbot 発展型

積み増しbotも回転botと同様に絶対ビットコインでやらないといけないみたいなのはないです。どの銘柄で何倍のレバレッジですると積み増し成功(狙いの価格までロスカットされずに到達)したかを過去データから見て回してみたらいいと思います。
あとは回転botとの組み合わせで価格が上昇したら買うんじゃなくて、下落した時に設定したレバレッジになるようにポジションを追加するみたいなのもいいと思います。回転botのエグジットしないようなバージョンですね。


アービトラージ

いわゆるアビトラとか裁定取引って言われるものです。アビトラは取引所間や銘柄間の価格差をとるロジックです。

一番単純なロジックを説明します。
例えば、ビットフライヤーの価格が500万円でコインチェックの価格が510万円の時にビットフライヤーでビットコインを購入してコインチェックで売却します。すると10万円分の鞘が抜けることになります。現物ですると取引所に現物をそれぞれ所有する前提になるので、それぞれの取引所で積立botを回しながらアビトラ機会があればアビトラするみたいな感じでもいいかもです。現物を持ちたくないという方はbybitのperpとかでヘッジショートしてもいいかもです。
コードとしては定期的に複数の取引所の価格を取得して鞘があれば注文するだけです。


アービトラージ 発展型

アビトラの発展型となれば無限にある気がしますが、取り敢えず簡単なものを紹介します。例えば上で説明した例でも注文を指値注文にしたりすることで手数料を安く抑えられます。あとどれだけ鞘がひらけば注文するかの閾値設定は、手数料で負けない以上の鞘であることは大前提として過去データからどれぐらいの鞘がどれぐらいの頻度で生まれているか確認するのもありです。それが難しかったりめんどくさい方は、取り敢えずこれだけ鞘が開いていればまぁ負けないでしょっていう閾値設定しておけばおkです。

あとはdex-cex間のアビトラ、dex-dex間のアビトラ、FR差のアビトラ、統計的裁定取引など色々あります。複雑になっていくのと自分がアビトラを主分野にしてないので割愛します。ご自身で調べてみてください。

参考記事


おわりに

どうだったでしょうか?
最初にも書いた通り、作りたいbotが全く思いつかない方向けの記事です。作りたいbotがある人は、それに向けて最短で仮設検証してbotを回し始めるのがいいです。
今回紹介した簡単なbotでも過去データから仮設検証することがあったりと、自分なりの工夫ができるので楽しいと思います。

自分で作ったbotが動いてると嬉しいと思うので取り敢えずはbotを動かしてみるという目標で始めてみたらいいと思います!よきbotterライフを!


Xのフォローもよろしくお願いします

→ https://twitter.com/aiba_algorithm



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