MMbotの作成に注力して2ヶ月。bitFlyer用でMMbotを作成して、あれこれ調整し、やっと利益出るようになりました。最初は国内の取引所どうなん、、って思ったけど、やってみるとよく分かった。利益出ますね。記事にまとめてみます。
MMの理論と仕組み
MMとは、Market Make の略で、売り板、買い板の上下に指値し、両方が成約した際のスプレッド(買値と売値の価格差)を利益とする利ザヤを稼ぐ手法です。
理論がよくわかるブログ
botterのあいだでは、有名なこの方の記事。内容はかなり高度なのですが、一読しておくことをおすすめします。
MMbotは利ザヤを稼ぐスキャルピング
「買い」「売り」の両建てで、利ザヤを得るので、頻度は上げないとまとまったお金になりません。
また、同時間にエントリーしないと、BTCの価格はすぐ流れるので、botでしか出来ない手法にもなります。人間の手入力でのエントリーは不可能な手法です。
必然的に、エントリー頻度は多いスキャルピングの手法となります。
MMの問題点(これをクリアしないと利益でない)
板の上下にエントリーするだけなので、理論だけみると簡単なのですが、やってみると結構色々な問題に直面します。ざっと挙げてみると以下のとおりです。
取引所の取引手数料
めちゃくちゃ大きい問題です。
MMでは「買い」と「売り」を同時に注文しないといけない。
手数料が高いと、相当スプレッドが広がった時でないと出来ません。
0.1%の手数料のところでは、ほぼ不可能。0.01%だと、頻繁に出来ます。
片張りは必ず発生する!どう処理するか?
両建てで、利ザヤを稼ぐので、高頻度でやろうと思うと、直面するのが「片張り」の問題。片張りとは、売り、もしくは買いのどちらかが約定し、片方が残る事。
売りと買いのそれぞれの注文が同時に決済されるわけじゃないってことです。当たり前だけどね、板にある価格を成行注文するわけじゃないので、成約するまで待たないといけない。
誰かが買ってくれて初めて成約するわけですから、片方が残る事が頻繁に発生します。
片方残ったらどうするか?。この処理は必須です。
- 価格が戻るまで待つ(どれくらいの時間?)
- 損切りのタイミングはどうする?
- 片張り中にチャンスがあったら次の売買はしないの?(マルチスレッド)
これらの処理は必須ですね。
トレンドに超弱い
片張りの問題からの続きなのですが、トレンドが発生したときにエントリーすると大変です。
あっという間に、マイナスになり、損切りせざるを得なくなります。
したがって、MMが成り立つのは、レンジ相場の時のみだと思います。
レンジをどうやって検知するかが、プログラミングの腕の見せどころかも。
在庫管理の問題
MMの理論でも紹介した、専門家のサイトでも書いていた、「在庫管理」。
これが、MMでの大きな問題点ですね。
片張りした後、現在の価格のスプレッドが大きく広がったとき
エントリーするにも、片張り中だと、売りか買い待ちになる。チャンスを逃すわけです。
別スレッド立てて、一方は待ち状態。もう一方で新しくエントリー。みたいな処理にするか、いっその事、シンプルにシングルスレッドにするか。いずれにせよ、しっかり管理しないと訳が分からなくなります。
資金力は必要
常に両建てなので、結構資金力は必要ですね。
以下、秒単位で取得したBid(売値)とAsk(買値)ですが、だいたい2000円くらいは、常にスプレッドがあります。だだし、1BTCでの話です。
買い1BTC、売り1BTCでの話なので、400万ずつの売り買いの約定で、2000円の利益。
2000円得ようと思ったら、800万も資金が必要なわけです。
当然のことながら、これが1万円分の売買だと、利益は400分の1になります。
だいたい、5円くらい^^;
実際は手数料もあるので、もっと少ない。
所持金が少ないとマジかっていくくらい、一回の利益額は低いです。
必然的に高頻度取引になります。
取引所は選ぶ必要あり!
取引所の問題は、とても大きいです。どこでbotを動かすが、1番のポイントになると思います。
手数料問題
問題点にも書きましたが、取引手数料はバカに出来ません。
というか、binanceのような、0.1%のところでは、出来ないと思っていいです。
最初は、binance用でMMbotを作ったんですが、利益になりませんでした(というか勝ってもマイナス)。売り買い同時両建てが基本なのですが、ある程度取引手数料が低くないと、利益にならないのです。
0.01%で、利益になる程度。
理想は取引手数料無料ですね。
Taker、Makerで違う取引所でも同じです。
一応解説
- Taker = 板にある価格を指値注文
- Maker = 板にない価格を指値注文
理想は、Makerでマイナス手数料のところです。
マイナス手数料は取引すると増えますw。
最低取引枚数の問題
取引所ごとのAPIの仕様で違いますが、どの取引所も最低取引枚数というのが設定されています。
は?というような枚数になっているところもあるのです。
例えば、国内だと
bitFlyerは5000円分が最低取引枚数だけど、コインチェックは0.005BTC
2020年2月の1BTCの価格は430万なので、21500円。
この仕様、価格がいつのときの設定値だよ。。
こういうところでは、いきなりbotは作れません。コインチェックは手数料無料なので魅力的ではありますが、最初は少額でみっちりテストしたい。
国内の取引所は魅力たっぷり
bot作って分かったのが、不満は多いのですが、国内の取引所はやりやすいです。
例えば、binanceは取引所のシステムが完璧すぎて、スキがないんですよ。APIの応答しかり、BTCのスプレッドしかり。
でも、国内の取引所に替えたとたん、チャンス大でした。
国内の取引所は、どこも少し貧弱なんです。
例えば、しょっちゅう、サーバーが固まることがある。
その間は、値段が動かない・・・・
動きだしたとき、めっちゃ大きなスプレッド発生!。みたいな。
メンテナンスで取引できない時も同様です。止まって動き出した最初の一発目が、大チャンスです。
おそらく、裁量トレードしていたら、イライラしていたでしょう。でも、botの場合は、こういう「取引所の不具合」がチャンスになります。
海外の大手は、取引所の不具合が少ないですね。
実行結果
ビットフライヤーで10日間動かした結果。ビットコインの価格に左右されますが利益率としては1日1〜2%
あまり目立ちたくないとか、色々勘案して、低頻度にしてます。
ご質問はコメント欄からお願いします
コメント一覧 (6件)
取引履歴の画像を見ると手数料を引くとマイナスの感じがするんですが手数料に計算はどうなってるのでしょうか?
3000円の差でも利益が出るのでしょうか?
コメントありがとうございます。MMbotは、あまりうまくいっていなくて、現在は開発中断してます。いくらの差では計算していなくて、手数料はbot内で計算して(最大の0.15%)、利益発生した際に利確するようにしています。ただ、損切りも設定しているので、かなりの確率で損切りばかりになってます。MMbotは手数勝負になると思うので、損切りと勝ちのバランス設定、急なトレンド発生時の片張りになったときの処置など、色々考えないと継続しての利益が難しい感じです。
非常に参考になりました。
botterの方々は基本的にどこの取引所を使っているのでしょうか?また、現物取引をbotですることは少ないですか?(手数料を勘案して)
コメントありがとうございます。僕もくまなく探したのですが、どの取引所を使うかは、ストラテジーと並んで、botterの肝になる部分で、なかなか公開している方は少ないです。特に高頻度タイプや、MMは手数料が、とても痛いです。僕は、bitFlyerを使ってます。他のbotterもbitFlyerを使っている方がいたので使ってますが、なんとなく理由はわかりました。手数料は、そこそこですが、日中の出来高(板が活発)という面で、国内の取引所では良い方かなと思います。まずは、現物で動かして利益出てから、レバレッジ上げると良いかと思います。自分は、まだまだな感じなので、現物だけでやってます。
参考までに具体的には在庫管理はどのようにされていましたか?
マルチスレッドで、listで管理です。在庫管理の仕組み考えるだけで、めっちゃ頭痛くなります。英語でも含めて、色々と、ググってみると良いかと思います。