mmbotについての一考察

kapipara180です。

はじめに

mmbotです。mmbotですよみなさん。
BOTというと、テクニカル指標(移動平均やRSIやストキャスティクス等々)を組み合わせて、買いと売りのシグナルを見極めて売買するものがほとんどです。それらのBOTの根底にあるのは「上昇や下落の値動きを予測して値幅を取ることで利益を上げる」という考え方です。

これに対し、最近(2018/4ぐらいから?)脚光を浴びているmmbotは前述したBOTとは根底にある考え方が違います。mmbotはまるで取引所側の人間であるかのように、マーケット参加者からスプレッドを徴収します。こんな稼ぎ方があったのか!と衝撃を受けました。ここでは、mmbotについて調べた内容や私なりの考察を書こうと思います。(ちなみにタイトルは論文みたいにしてみました。ちょっと気に入っています)

 

mmbotとは

mmbotとは、マーケットメイクBOTの略称です。
mmbotという名前を付け、その効力を世に知らしめたのはUKIさんだと認識しています。おそらくmmbotと同じロジックを回している人は結構いたと思うのですが、理論立ててmmbotを解説したのはUKIさんのこのnoteが最初だと思います。(そしてこのほかにmmbotについて詳細に書いている記事もないと思います。)

界隈で言うと、「UKI」さんの他に「らっちょ」さんや「まさお」さんもmmbot使いとして日々利益を上げられていますね。

UKIさんの金言

UKIさんはmmbotの開祖だと思っているので、開祖の言葉は非常に重要。
UKIさんがちょこちょこmmbotについて発言している中で、mmbot構築のヒントになりそうだなと思ったのが以下のtweet。

 

mmbotの仕組み

理論や考え方はUKIさんのnoteにほぼ書かれているのですが、もっとかみ砕いて読みたいという方は以下のnoteが役に立ちます。

こちらは、mmbotの仕組み+bitflyer用のmmbotソースコードを無料で公開したnoteになります。
このnoteが公開されるまで、mmbotのソースは世に出ていなかった(高額有料はちょいちょいあったが)ので、非常に注目されました。

仕組みについてはご紹介した2つの記事を見ればほぼほぼ理解できたと思います。
ここからようやく考察に入っていきます。

mmbotの勝敗を分かつ要素

この章では、mmbotの勝敗を分かつ要素を4つ挙げ、それぞれについて解説してきます。

アクティブスプレッド

用語の認識合わせからです。任意のタイミングのbest ask とbest bidの乖離幅をスプレッドと呼び、任意のタイミングから単位時間(1sでも10sでも)にtakerに売買される量をMIDに近い注文から順番に排除したレートをactive ask , active bid、その乖離幅をアクティブスプレッドと呼びましょう。

スプレッド/アクティブスプレッドイメージ

スプレッド/アクティブスプレッドイメージ

ここで定義したアクティブスプレッドがmmbotが単位時間に取りうる利幅のMAXです。(ごめんなさい。best ask, best bidの絵が間違ってますね。修正します。。)
ですので、アクティブスプレッドを正確に見積り、アクティブスプレッドいっぱいの場所にlimit注文を打ち続けることができれば、理論上最も利益が上がります。以下3つの要素を記載しますが、最終目標はこのアクティブスプレッドを正確に見積もることになります。

 

テイカーボリューム

アクティブスプレッドを求める際に、takerに売買される量をMIDに近い順に排除したレートを使いました。このtakerに売買される量をテイカーボリュームと呼びましょう。

マーケット形式の取引所には、メイカーとテイカーがいます。メイカーは指値注文を出して板を作っていく人で、テイカーは逆指値、成行注文を出して板を崩していく人です。

mmbotの利益の源泉は、テイカーが支払うスプレッドです。テイカーは買い又は売りをした瞬間にスプレッド分の損をします。この損がmmbotの利益になるのです。

そして、テイカーが単位時間あたりにどれだけの買い売りを行うかを予測することがmmbotの最も重要な作業になります。mmbotでは同量の買いと売りを単位時間で行い、ポジションをスクエアにすることが求められますので、注文する量は「テイカーボリュームの小さい方」になります。

テイカーボリュームを予測する方法として単純なのは、次の単位時間は、一つ前の単位時間と同じだけテイカーボリュームがあると仮定する方法です。この場合、取引所から約定情報を取得し、一つ前の単位時間で約定した量を合計することで算出することができます。

この方法はどっちつかずでちゃぶついている相場においては非常にうまくワークします。しかし、相場の転換点(上がっていたのに下がり始める、下がっていたのに上がり始める、ちゃぶついていたのに一方に大きく動き出す)においてはワークせず、損失が発生してしまいます。

なぜなら、相場の転換は、買いよりも売りが優勢になったり、そもそものボリュームが変化することによっておこるため、必然的に一つ前の単位時間と次の単位時間のテイカーボリュームが乖離してしまうためです。

 

テイカーボリュームの変動予測

転換点におけるテイカーボリュームを正確に見積もるために、テイカーボリュームの予測を追加しましょう。

基本的には一つ前のテイカーボリュームが次の単位時間のテイカーボリュームと等しいという考え方を使用しつつ、テイカーボリュームの変動予測に基づいた値で調整を行います。

テイカーボリュームの変動予測としてはいくつか手法が考えられますが、私はテイカーボリュームのモメンタムを算出し、このモメンタムに従ってテイカーボリュームを調整するという方法に芽があるのではないかと考えています。あるいは、テイカーボリュームが大きく変化するタイミングは収益よりも損失の可能性が大きくなるのでmmbotを停止するという処理もありかもしれません。

この予測の部分はmmbotの中でも自由度が高く、作り手の力量が試される部分ですね。

 

リスクオフマージン

テイカーボリュームが正確に予測できれば、アクティブスプレッドいっぱいの場所に指値を入れればいいのですが、実際にはテイカーボリュームを正確に予測することはできません。mmbotにおいて一番のリスクは、片方のポジションを持ったまま不利な方向に相場が走り、ポジションをスクエアにできないという状態なので、これを避けるために利益を削ってでも、即スクエアに持っていけるように指値位置を調整します。このテイカーボリュームの値よりもMID側に指値を移動する幅をリスクオフマージンと呼びましょう。

リスクオフマージンは買い、売りそれぞれの約定のしやすさを鑑みて別々の値を設定します。次の単位時間で上がると予想した場合は、売りは約定しやすく買いが約定しにくいという予想ができますので、買いに対して大きめのリスクオフマージンを設定するという具合です。

このリスクオフマージンは、テイカーボリュームの予測の結果から約定しにくい方を大きくするという方法しかないと考えています。あとは大きくする幅ですね。大きくすればするほど、約定しやすくなりますが、利益は小さくなります。この辺はmmbotを動かしてみて、最適値を探ってみるしかないと思っています。

 

あとがき

取り急ぎ書いてみましたが、書いているうちに頭が整理できていいですね。随時mmbotを開発・実験した結果を記事にフィードバックしたいと思います。

また、mmbotをnoteで販売もしていますので、ぜひ見ていってください。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です