market making bot.
mmbotとは
- 広義: 📝指値注文の自動売買bot -> 🤖ヒゲキャッチbot
- 狭義: 📝マーケットメイク戦略を📝仮想通貨Botに適用
このメモで狭義の話題をまとめる.
ネット記事やTwitterでは📝高頻度botはmmbotの意味で使われていることが多いがmmbotは高頻度botの部分であり全てではないことに注意. ただ検索ワードとしてはmmbotの代替としてつかってもいいかも.
mmbotは日本語でしか情報はでてこない. 英語だとmarket making(market maker) crypto bot. 元々マーケットメイクは株でのHFTの文脈で注目されてきた. botという個人がやるような話題はcryptoに特有な印象がある. このメモでの表記もmmbotにしておく. 正解はないけど, mmbotが多い印象.
なお, 高頻度でトレンドを予測してテイク注文で利益を上げるタイプのbotは📝狙撃bot(俗語はよくわからない)にまとめてこのメモの範囲外とする.
mmbotのエッジ
mmbotの役割は板に注文を出すことでtight spreadの提供. 在庫管理の報酬としてspread収益を得る.
mmbotの特徴
- pros.
- リスクが少なくコツコツ稼げる.
- 少資金から高い利回りを達成できる.
- cons.
- ある程度稼げるとスケールしない.
- 複利運用ができない.
- 取引手数料無料かつtakerが多い環境でしか利益を上げづらい戦略.
update: mmbotがイージーだったのは過去の話で, 現在2022はボラティリティが少ない中でライバルとパイを奪い合うことになり難易度高い茨の道.
mmbot戦略 概要
既存戦略は大きく分けて2つに分類できる.
つまり利益を最大化させるイシューと損失を最小化するイシューの2つ.
トレンド対策はさらに📝在庫リスクと📝逆選択リスクの2つに分解できる.
mmbotの動作
百聞は一見にしかずということで, この無音の動画がわかりやすかった.
Bitcoin - Market Maker Bot - YouTube
アルゴリズム
- ミッドプライスを取得
- 現在のミッドプライスに基づいて買い注文と売り注文を設定
- 既存の注文があればキャンセル
- 新規に買い注文と売り注文を出す
- 注文の状態を確認し、片方の約定が発生したら再度発注
- 片方の注文が約定した場合、全ての注文をキャンセルして再発注
HFT方式: 片側約定時をトリガーに即時キャンセル/再注文
高頻度bot形式. 価格更新のタイミングは一定時間方式よりも、片方約定したら即時もう片方キャンセルの再発注が、とくに価格が変動しやすいHFTにはいいよといってた.
- 現在のポジションを取得
- のポジションに応じて、買い指値と売り指値の価格を設定
- 発注
- 約定またはキャンセルそして1へ戻る
ref. マーケット・メイクにおける在庫管理と実運用上の懸念点|Hoheto (仮想通貨botter)
時間ベース在庫管理方式: 一定時間をトリガーに再注文
スイングbot形式. 価格更新/指値は一定時間経過後に行う. 流動性が低い市場の戦略.
片方のみ約定した場合、もう片方の注文はキャンセルせずに放置していると、ヒゲキャッチを狙える.
📍mmbot: 適正価格算出
利益を最大化するようなスプレッド(Optimal Spread)を求める. 実効スプレッド(Effective spread, optimal spread)を📝オーダーフロー分析などで算出する.
または, 適正価格(fair price)を予測する. Fair Priceとはbidとaskの適正な価格(つまりfair ask - fair bid = optimal spread). 本来あるべきFair valueと相場の歪みによるmarket valueの差がエッジとなる. ここには, market valueはfair valueに戻るという仮定がある(📝ミーン・リバージョン).
予測とは違うかもしれない. 予測というと上がるだったり下がるだったりの📝ディレクショナル戦略となるが, どちらかいうと算出というニュアンスで, アルゴリズムに従って指値注文で指定するときのの適正な指値を数式によって推定(算出)する(日本語のニュアンスかも… ).
指値の位置における📍統計的有意性とパラメータ選択問題.
通常のスプレッドは最良気配値の差分でBid-Ask Spreadと呼ばれるが, 最良気配値はマーケットメイカーによって価格操作されている可能性もある. 市場の適正なスプレッドを予測してそこに指値をいれる. そうしたほうがより大きな利益を狙うことが出来る.
現在のスプレッドよりも, 未来のスプレッドの動きを予測してそれに対して注文をかける. 以下のリンクがわかりやすかった.
;; https://note.com/akaness_note/n/n3c816e051f8c
これがもし次のt秒間で100150円から100450円の間まで変動すると予測出来たらどうでしょうか。100449円ショートと100151円ロングで差額298円となり単純に最良価格の間に挟むよりも利益が大きくなります。
歩み値や板情報等の分析を行い、このアクティブスプレッドを予測することがこの戦略の要であり、予測精度の高さがそのまま利益に直結すると言えるでしょう。
🤖magito mmbot
magitoさんの書いたnote記事とそのサンプルコード.
- Python3 MarketMaker(MM)BOTのサンプルロジックとソースコード
- https://twitter.com/regolith1223/status/1017419515666108417
初心者登竜門? おそらくネットでさくっと参考できるものとして最も参考になるのでみんなみていそうなnote記事とそのサンプルコード.
よく外でも言及されている.
このmagitoさんのeffective spreadを求める方法が独自の工夫なのか一般的なものなのかはわからない. 数年前に買った2つのnoteにも同じeffective spreadのような計算は乗っていた(有料noteなのでここではリンクはらず).
Rust version.
Avellaneda マーケットメイキング
🔍High-frequency trading in a limit order bookという論文がよくmmbot作成において参照されている.
おそらくUKIさんのブログ記事で紹介されたからかつよつよbotterはみんな読んでるはず.
マーケットメイク戦略の理論 - これからの「お金」の話をしよう
これはAvellaneda Market Makingといわれている.
ここでやっていることは, 最適なspread幅を予測するための一つの方法.
まささんまとめInsights
ref. https://twitter.com/i/events/1015960962959069184
まず、十分に短い期間では「価格はある値を中心に、ある価格帯をランダムに行ったり来たりする」と仮定できます。ボリンジャーバンドに近しい。なので狙いは、その行ったり来たりの値幅でどんどん売り買いすること。「ある値」を上回れば売り注文、下回れば買い注文。
期間が短いほどこの仮定は適用しやすいから、超高頻度で取引。で、「その価格帯の値幅を適切に推定する」ことが肝になりますよね。トレンドがなく一定の幅を往復するだけなら、これでどんどん儲けられます。価格ボラの大きさと、板の厚さ&成行注文量から幅を推定できるらしい
「その価格帯の値幅を適切に推定する」ことが肝になりますよね.
つまり, アクティブスプレッドを予測することがキモ. 板の端の値は見かけ上の虚構の値であり, 意図的になにかを仕掛けているのであり, それが取引全体の最適な値ではない. 予測に対して機械学習をつかったりルールベースでアルゴリズムから算出したり.
約定履歴からEffective Spreadを重み付け調整
ref. Python3 MarketMaker(MM)BOTのサンプルロジックとソースコード|magito|note
「1サイクルの値幅」と「約定のしやすさ」はトレードオフの関係にあるため、この戦略では「X」というパラメータの調整がパフォーマンスの決め手になることが分かります。ちなみに自分は約定履歴を参照し、一度の成行注文の数量を考慮して数量Xを決めていました。
サンプルではAMOUNT_THRU=0.01の固定値となっている部分かな?
OHLCVから取引量を算出してそれを考慮するというところがミソかな?しかしフォワードで負けたと書いてある.
;; https://note.com/tomoatx/n/nda3acdcf37aa
板ごとのタイムスタンプのohlcvについて、板60*4回分(大体1分間)について、板1回分(t-1~tの間)の平均の取引量をbuy,sell側でそれぞれ計算して、buy側で計算したものをsell側で、sell側で計算したものをbuy側で閾値として用いる。
ref. MMbotの在庫ペナルティ付与方法を考える - 仮想通貨マイニングセンター@カブキ
;; https://twitter.com/akagamiv2/status/1103775456262848515
過去見る期間:WINDOW その重み付け:EFFECT 在庫ペナ:PENALTY
みたいなパラメータがある。過去WINDOW期間の標準偏差取って例えば標準偏差100でEFFECT0.5なら50上下に指す。在庫偏り解消のためpos*PENALTYで在庫+(-)なら下(上)方向に指値ずらす。似たやり方してる人多そう。
;; https://twitter.com/akagamiv2/status/1104265174691663873
標準偏差である必然はなくWINDOW期間の高値-安値を擬似スプレッドとしても良い。これはアリさんツイートによる知見。在庫ペナは大きいと損益曲線が平滑になりローリスク・ローリターン、小さいと純粋なナンピンみたいになりハイリスク・ハイリターンになる。
;; https://twitter.com/akagamiv2/status/1104266752282652672
チンパンmmだと急変時は間違いなく焼かれる。だから短期価格予測でアルファ積んだり逃げ成行が重要になる。
これの意味するところは💡optimal spreadの数式の定性的意味における数式の第1項. windowのは標準偏差sigma, effectはgamma.
mmbotの重要パラメータWEP
- window: 過去を見る期間
- effect: 重み付け
- penalty: 在庫ペナルティ
https://twitter.com/akagamiv2/status/1106048211427319808
これら3定数はWEP(ウェップ)と個人的に呼んでいて、最適化してる。指値算出の横軸・縦軸&在庫ペナ。大抵のmmbotはこれの延長で、加えたとしても1〜2パラメータなのではと思っている。
;; https://twitter.com/akagamiv2/status/1106046446652936192
過去見る期間:WINDOW=>短在庫ペナ:PENALTY=>大
なほどRDR(リターン・最大ドローダウン比率)は高。RDRが高いと損益曲線が平滑化されている証拠。逆に、長・小だと平滑化は犠牲になるけど絶対利益に効く。最大DD下げて平滑化してロット増やすか、低ロットで絶対利益を取りにいくかの二択。
注文の強さ, またはスプレッドが開くとはなんだ?
この記事では, spreadが開くということを図で説明してある(わかりやすい!).
スプレッドが上に開くとはどういうことか? それは… 記事参照.
上がりそう!↓ 出してた売り板をキャンセルしないと! or 成行で買わなきゃ!↓ スプレッドが上に開く
食われたことは約定履歴から情報がわかり, 逃げたことは板情報からデータ取得ができる.
📍mmbot: 在庫管理問題
クリプトにおける📍マーケットメイクと在庫リスクについて.
部分約定対策
在庫管理における派生的な問題. 部分約定自体はよくあること.
指値注文で一部のみ約定する場合があるのでこのハンドリング戦略. ポジションずれをどうリバランスするか.
部分約定, 一部約定は特に仮想通貨でつかわれていて一般的には内出来という用語の方が多い気がする. filled/remainingで表されるもの.
一般的かわからないが, Inventry skewとも.
残ってしまった注文に対して注文内容を編集して更新(取引所によってAPIで1回で情報の編集更新がたり, キャンセルと再注文の2回のAPIの組み合わせで実現), または損切りする.
次の注文でorder sizeを変更して調整.
必ず順方向のポジションから作るようにする
https://twitter.com/muzineco/status/1033332390913961984
直近の価格変動を予測して、不利にならない方の指値を必ず先に約定させること(直近で上昇する、と予測するのであれば、必ずロングを約定させた後にショートを入れる)。
なるほど.
結論から入りますが、
「トレンド発生時、必ず順方向のポジションから作るようにする」
という施策によって、強いトレンド相場に入ったときのボットの挙動を安定させることができました。
トレンド判定の方法ですが、すぐに思いつくだけでも以下のように様々なものがあります。
・N分間の騰落率・N分間の移動平均の変化率・N分間の約定ボリューム
筆者はこれらを組み合わせて5分から10分程度の短期のトレンドを検出…
トレンド相場でメイカーボットの安定性・収益力を高めるアイデア|Hoheto (仮想通貨botter)|note
お年玉note(1/19投稿🤔)とTwitterでいっているいうことで効果が高そう.
https://twitter.com/i_love_profit/status/1218841792709193729
動的lot
ポジションが偏ったときの戦略.
- 固定ロット
- メリット: 単純で予測しやすく、アルゴリズムが簡潔であるため、実装も容易です。また、同じ取引数量で取引を繰り返すため、計画通りの在庫リスク管理がしやすくなります。
- デメリット: 偏りが大きくなるとリスクが増大し、ポジション調整に時間がかかる場合があります。市場の急激な変動時に、在庫リスクを速やかに是正できない可能性があります。
- 動的ロット
- メリット: 在庫の偏りが大きくなるほどロットを大きくしてポジション調整を早めることができ、在庫リスクを迅速に緩和できます。例えば、ポジションが大幅に買い側に偏った場合、売りロットを増やしてバランスを取り戻しやすくなります。
- デメリット: 動的にロットを増加させると取引頻度が上がり、スリッページや手数料コストが増える可能性があり、結果的に収益が削られるリスクがあります。また、市場のボラティリティが高い場合、短期間で大きなポジション調整が発生し、損失が膨らむこともあります。
実際の運用では、ハイブリッドなアプローチが効果的
固定ロットと動的ロットの組み合わせが、リスクと効率をバランス良く管理できるため、多くのマーケットメイカーが採用しています。たとえば以下のような方法があります:
- 小規模な偏りではロットを固定し、大きな偏りが発生したときのみロットを増加させる。
- ロット調整の上限を設け、一定以上のロット増加を防ぐことで、コストやリスクを管理します。
- ポジションのスケールに応じた階層的なロット調整(例: 偏りが0.002 BTCを超えたら、ロットを0.0015 BTCに増やす)なども有効です。
ref. ChatGPT
📍mmbot: トレンド対策
📍マーケットメイクと逆選択リスクについて.
トレンドが発生するとmmbotにとっては不利になる. 具体的にはbuy/sellの約定しやすい方から約定し, 不利な方の指値が残されてしまう. 単純な価格の上下への指値は約定しずらい.
逆選択に対してはトレンドの方向を予測して, 在庫リスクに対しては在庫を考慮して呼値を決める.
マーケットメイクは古くから株のHFTで研究されてきているため, 株の研究ノウハウは📍マーケットメイクとトレンド対策にまとめる.
ref. 【bitFlyer - LightningFX】アルゴリズム高頻度取引mmbotの作り方,考え方,サンプルコード紹介
mmbotのアルゴリズムで最も重要になってくるのは短期での価格予想です.利益を出しているmmbotの大半は,本来のマーケットメーカーとしてスプレット収益ではなく,大部分が価格上下による超短期のキャピタルゲインだと考えています.
https://twitter.com/JapaneseMl/status/1394072446848978946
高頻度mmbot簡単に儲かると思う人はとりあえず作って最初lotで放ってみるのが一番だと思います。きれいな直線を描いて資産が減ります。これが手数料と逆選択です。
片方残った場合,
- 価格が戻るまで待つ(どれくらいの時間か).
- 指値update
- 未約定オーダーをキャンセル後約定したオーダーに対し指値注文で反対売買.
- 未約定のオーダーをキャンセル後同方向に指値注文を再度送信する.
- 成行注文で手仕舞いする
- 損切りのタイミングを見極める.
- 片方だけ約定したものを成行で処理.
- 片方だけ約定できなかったものを成行で注文.
- bitFlyerでMMbotを作ってみた結果、在庫管理は利益出すために必須! | 矢野テックの投資ブログ
- mmbotを何種類か作った時のメモ書き|あかネス|note
- onSingleLeg · bitz+rinjani/r2 · GitHub
- 片方が約定しなかった場合の成行注文によるヘッジ機能の追加 bitrinjani/r2
- https://twitter.com/0xRyuzaki/status/1437512538997018633
- 有意義なTwitterスレッド.
- https://threadreaderapp.com/thread/1437512538997018633.html
ネットワーク遅延
ref. マーケット・メイクにおける在庫管理と実運用上の懸念点|Hoheto (仮想通貨botter)|note
まささんmmbotまとめ
なるほどmmbotのキモは在庫管理.
ref. https://twitter.com/i/events/1015960962959069184
ただ、トレンドが発生するとその仮定が崩れ、「在庫」を抱えてしまいます。買ったけど価格が戻らずに売れないとか。在庫は処分しなきゃです。積極的に処分すると、一回ごとの損失は減るけど、勝率も減る。抱えすぎても逆に問題。要はトレードオフです。
この「在庫をどれだけ抱えてよいか」を最適化するのがMM戦略の肝のようです。それは「リスク回避度」と呼ばれ、小さいほど①推定した価格帯の値幅よりも狭めの幅で売り買い注文を繰り返す、②在庫を減らしやすい方向に売り買い注文の幅をずらす、のが基本的な考え方だそう。
💡ペナルティによる指値損切り
不利な状況にどうやって対応するか.
;; https://twitter.com/javeleeer/status/1083654472046239744
mmbot、一定の閾値(評価損、lotなど)を超過したら成行で捨てる処理はナンセンスで許せないけど、在庫管理関数が指値注文にペナルティを乗せた結果、成行レートで約定してしまうのはスマートな実装に思える。あるとおもいます。
;; https://twitter.com/blog_uki/status/1001333128093351938?lang=ja こんにちわ。自分はstopは使っていません。stopで清算という概念ではなく、新しい指値が約定して自然とポジションを0に復元させる、という考え方でやっています。ポジションとは反対側の指値が約定しやすくしています。
from hummingbot
- What is inventory risk?
- Identifying trends
- [Level 2] Selecting markets, identifying trends, and reducing inventory risk
ぽろり収集
;; https://twitter.com/pugoog/status/1205485900408295425
mmbotの損益グラフからドテン君に切り替えるシステムは割と確度高そう
;; https://twitter.com/CryptoNdb/status/1135699999864414208
mmbotって急騰急落時に死ぬと思うんですけどドテン君と同時に走らせたらいいヘッジになりそう。
;; https://twitter.com/Poitan_unyo/status/1079038915535724545 ;; https://twitter.com/kunmosky1/status/1079154764808478720
トレンドフォロー+mmbot の組み合わせにぜひしましょう!
mmbot的なbotがトレンド相場にやられちゃうのはもはや宿命みたいなもんですからね。なんとか対策したいところです(^ ^)
高騰暴落対策
VPINを活用する方法. 別のメモで解説.
ref. VPINによる市場変動予測
💡mmbotはレンジに強くトレンドに弱い
傾向としてレンジ相場に強く, トレンド相場に弱い. そこはそもそも📝マーケットメイクがどうやって利益を上げるかということに関わっている.
基本的にはレンジ相場において価格が上がったり下がったりするのを想定して指値を指し続ける📝レンジ・トレーディングと似た考えで利益を上げる. しかしいったんトレンドが発生するとその前提が崩れるため, 不利な条件でポジションを解消しないといけない(ref. 📍逆選択リスク対応).
mmbot取引所
結局どこの取引所がいいのか問題.
- APIは対応しているか?
- 流動性はあるか?
- 手数料は安いか?
チェックしたいのは24時間の出来高(流動性). 誰も取引してない取引所ではマーケットメイク戦略は難しい.
last updated, 2023/07
🏦国内CEX
- bitFlyer
- coincheck
- GMOコイン
- bitbank
🏦海外CEX
最小ロットが小さく, レバレッジが2倍以上かけられるため, 少ない資金でもBotを動かせるというメリットがある.
海外はつねに規制や取引所リスクにさらされるというデメリットがある.
Exchange | maker | taker |
---|---|---|
Bybit | 0.01 | 0.06 |
OKX | 0.02 | 0.05 |
BTSE | -0.0125 | 0.04 |
Kucoin | 0.02 | 0.06 |
Gate.IO | 0.15 | 0.05 |
Phemex | 0.01 | 0.06 |
maker 手数料0.01%の損益分岐点は5ドルくらい
maker 手数料0.01%のとき, どのくらい内側まで指値をいれても利益が出るのか?損益分岐点は?
結論としては, BTCUSDTが25000程度ならば, 5USDTくらい価格の変動が必要. 薄い利益を取りに行くmmbotには手数料はけっこう手強い.
たとえばlot=0.01, mid priceが25002.5USDTで, その両側2.5USDTに指値を入れるとすると,
- スプレッド収益: 0.05 USDT
- (25005 x 0.01) - (25000 x 0.01)
- 手数料: 0.05 USDT
- ((25005 x 0.01) x 0.0001) + ((25000 x 0.01) x 0.0001)
mmbot Topics
mmbotトピックまとめ. 市場動向つねに変化しているため, 古い情報は今とは乖離があるかも.
高速化についてはこちらも参照: 📍HFT bot高速化
📜利益出せるMMbotが販売されているわけないだろ - まさお
感動した.
ref. https://twitter.com/masao_FX/status/1018791703346495488
利益出せるMMbotが販売されているわけないだろ……
💡mmbotの収益源がマーケットメイクでない?
マーケットメイク自体が悪いというわけではなく, 同じようなアルゴリズムが大量に板で動いているとき.
仮にこの仮説が真であるなら, 取り組むべきイシューの方向性は大きく変わる. そしてこの事実はmmbotのmmがマーケットメイクなため, このアルゴリズムに従えば理論的には利益が積み上がっていくに違いないという見方の裏に隠れていた真実かもしれない.
💡高頻度取引の損益 はスプレッド損益とポジション損益でありさらに5秒を超えると価格が下がるリスクがあるという研究結果もあり, もうマーケットメイクで確実な利益を狙えるのは5秒でその後はトレンドが起こるリスクを想定しつつ手仕舞い戦略を考える必要がある.
ref. https://twitter.com/blog_uki/status/1002344718972272640
mmbotが流行り始めてるけどフィーが貰えると言っても何かエッジを積んでないと絶対にいつか破綻する。それも含めて市場は効率化している。mmbotのエッジとは、①短期的な値動きの予測力、②指値の位置の統計的優位性。特に②は他のメイカーのロス(損失とういか不合理性)が自分の収益に転換される。
ref. 【bitFlyer - LightningFX】アルゴリズム高頻度取引mmbotの作り方,考え方,サンプルコード紹介
利益を出しているmmbotの大半は,本来のマーケットメーカーとしてスプレット収益ではなく,大部分が価格上下による超短期のキャピタルゲインだと考えています.
📍統計的有意性とパラメータ選択
📜最小ロットでのフォワードが何より重要だ! - 片道切符マン
高頻度botはバックテストではなくフォワードテストでどんどん検証していくという考え方もある. なぜならば, 高頻度であるゆえいろんな影響を受けやすくバックテスト通りに期待が動かないから.
ref. 高頻度botを雑に作るイメージ|片道切符マン|note
最小ロットでのフォワードが何より重要だ!
📜Botのロジック作成とは期待値を正にすること
しかしその一方でパラメータは算出するべきともある.
ref. 【bitFlyer - LightningFX】アルゴリズム高頻度取引mmbotの作り方,考え方..
mmbotなどの高頻度取引においては,人間の感覚でパラメータを決めることは避けるべきです.
高頻度取引は1円,2円の差で運用成績は大きく左右します.HFTも含め多くのファンドは,そのような人間の感でパラメータの設定はしていません.
mmbotの作成において必ず考慮しなければいけないのは,統計的に有意性があるか,ということです.アルファやエッジとも呼ばれますが,高頻度で取引をする自動売買においては,取引回数を無限と近似し,統計的にみて根拠がある方向やパラメータで指値を供給・キャンセル,することが絶対的に必要です.
“統計的”とは,相関関係がある指標をもとに価格の上下を予測し,パラメータ調整には精度の高い評価ができているか,ということです.
これはBot勉強会プレゼンの, 12スライド目より.
Botのロジック作成とは期待値を正にすること
- refs.
💡mmbotにおけるロット数と並行トレード
1つのbotのロットを上げるべきか, 複数のbotで小さいロットにするか問題.
以下Twitterサルベージ.
- https://twitter.com/AAAAisBraver/status/1034605157592395776
- アンケートが参考になるかも. 0.01~0.1が25%.
- https://twitter.com/akagamiv2/status/1103130547537080320
- AKAGAMIさんのツイート. 0.04~0.1くらい.
- https://twitter.com/yanoteck/status/1357600266887917569
- たくさん分割して在庫管理しながら指値している例.
up: より一般的な話題, 💡バックテストでのベッドサイズの決定.
2種類のmmbot
- 取引指標が示す方向に指値を入れるbot.
- スプレッドを意識してask/bidの両建てをするbot.
;; https://twitter.com/asupega/status/1025777982273540098
mmbotと呼ばれるものにも2種類あって、uki氏のnoteにあったような、とにかく指標が示す方向に(成行になってもいいから)指値を入れ続けるタイプのbotと、スプレッドを意識してaskとbidの両方に入れ続けるbotがあるような気がしていて、後者が爆益してるような感じがするんですよね……
mmbot自体が造語なので正解はないかも.
投資戦略の項目
https://italiajin.com/marketmake/
- 相場の勢い
- 在庫リスク
- 板の厚み
- 想定期間経過後の相場予測
高頻度取引の限界
ref. 100万円を1000万円にする取引戦略を考えてみる(主に取引回数と利回りの関係について) - マクロは3:2:5
MMbotは複利運用が難しく,これから改良を続けても自分の能力と照らし合わせて考えて,おそらく日次50万程度が限界.取引手数料無料かつ,takerが多い環境でしか利益を上げづらい戦略なので,実質bitflyerFXでしか稼働が不可能.
現在ではどうかわっているか?
mmbot同士の戦いは熾烈なので、BTCJPYで今から勝つのはほぼ不可能
ref. 暗号通貨で勝てるのか? 結論mmbotが唯一の可能性 | (^・^
)猫にビットコイン
結論高性能mmbotを作る。方法は人それぞれ、運用が肝。
- 自分で作る。C++、JAVAなどコンパイル系言語による高速化は可能性あるかも
- 作ってもらう(多分高額)
高速化で差別化をはかるというインサイトは得た.
株取引は板のAPIは公開されていないと思うので、mmbotは運用できない。
もし出来たらボロ儲けでしょう。
2022年は公開されている. 株取引API
天下一BOT大会
2018年6月に行われたbotの収益を競うイベント.
最強の仮想通貨自動売買botはどれだ!?第一回天下一BOT会(仮)開催!エントリー受付開始 | ALIS
天下一BOT会でmmbotが驚異的な強さを発揮したとかで注目度アップ.
「天下一BOT会」ドラゴンボールではなく仮想通貨自動売買ボット対決! | 銭ナビ
第2回.
「第二回天下一BOT会 令和元年記念大会」開催!今回はLiquidで | 銭ナビ
mmbotと手数料
mmbotでは買いと売りを両方注文するので手数料はそこも考慮. 理想的には手数料無料がいい.
一般人の成行注文を刈る
あなたの知らないbotの世界. 裁量トレーダーがbotのやっていることを知って驚くツイートをたまに見かける.
結局どこの取引所がいいのか問題
bitFlyer全盛時代が2018年にあったようだが, そこから決定的なものはないのかな?
収益安定化 - from UKI
https://twitter.com/blog_uki/status/1001827689446035456
1.トレード損益の改善。タイムアウトまでに約定できる範囲で指値の幅をできるだけ広く取る。2.トレード数。limit制限いっぱいまで打ち続けてレンジ相場のうちに利益を掻き集める。3.トレンド対策。不意のトレンドの損失を抑えるようポジション管理。
優先度設定の参考になる. インパクトとその相談.
mmbotダマシ
価格操作によりmmbotを攻撃する手法もあるらしい.
ref. 第1回墨汁会議 価格操作対策とMMBOTを攻撃する手法
- 墨汁うまいと学ぶ仮想通貨の世界
how to beat market makerとかで検索すると情報がでてくる. このマッチョなおっさんは筋肉でマーケットメイカーを破壊しそう.
How To Destroy The Market Maker - YouTube
mmbotの利益の仕組み
この記事がオススメ↓
手動で売買したい一般人の成行注文をとる
ビットコインを買う場合, 販売所と取引所があり, 普通の人は販売所は手数料が高いので取引所をできれば使いたいのだ. しかし, 取引所というのは交換によって売買するため, そもそも売っている人がいないと買うこともできない.
そこでbotは買いたいひとに対してあらかじめ指値で注文を出すことによって板に注文を並べておくことによって一般人から成行注文で買ってもらうことを待つ. この時, 実際の値段よりもちょっと高く売りに出すことが大事でこれが利益の厳選になる. ビットコインをすぐ買いたいけど販売所の手数料が嫌な人が販売所よりも安いならば若干の損でもbotの注文を買ってくれる.
botは安く買って高く売れればそれが利益になるが, このマーケットメイクのうまいところは, あらかじめ売りと買いの両方に注文を出して売りたい人と買いたい人の両方を相手にすること.
これをすることで, 安く買う -> 高く売るということをやろうとしたときに, 買ってから売るという順番ではなくて, 買いつつ売るというような状況になり, 結果2倍の速度で1サイクルを回すことができる. ここがマーケットメイクの秀逸点.
仮に同時行わないとする, 例えば高く売ることに成功すると, JPYの残高は増え, BTCの残高は減る. このあとさらにもう一度BTC高く売るためにはどこかからJPYでBTCを買ってBTCを安く仕入れる必要がある.
💡bitbank mmbot sample repositoriesからのインサイト
https://github.com/bitbankinc/sample-market-making-bot
bitbankの公式マーケットメイクサンプルのREADMEにはこんな戦略がありますよ, というのが乗っている(ここはサンプルコードではない, アイデアのみ).
大きな板が最終約定価格付近に存在した場合、その手前に板を置く例えば最終約定価格から50円、100円、200円離した価格にそれぞれ売り板/買い板を置く botのロジックを他のユーザに悟られないよう、発注数量をランダム値にするオーダーブックの売り数量が買い数量を極端に上回っていた場合、様子を見て買い注文は出さない等約定履歴APIを利用し、自分の直近の約定結果から不利にならないような位置に板を置くボラティリティが大きい局面を判定し、そのときだけはbotの動作を停止させる、または数量を小さくする
💡様々な市場に応じたマーケットメイクTips
ref. Tips for Handling Different Market Conditions
トレンドを検出したら,
- Order Delay: 約定しやすい方を遅れて出す.
- Offseting Spreds: トレンドによって約定しやすい方向の呼値を多くして逆を少なくする.
- どうやって比率を決定するかは書いてない.
- 固定値+50とかを付与するとか.
- 板の厚みや約定履歴から情報の偏りをみるか.
💡高頻度botの頻度とは300回/時
このツイート面白い, 高頻度とはこのくらいだよというツイートとGIF画像.
- https://twitter.com/bufujini/status/1610295529598259200
- https://twitter.com/bufujini/status/1613327737070186497
💡mmbotを動かすための最小資金
売りと買いの両サイドに指値注文を出す必要があるので, 最小注文量 x 2となる. さらに, 📝部分約定をする場合を考えると, 部分約定文を次回マーケットメイクサイクルのときに上乗せする必要がある.
すると, mmbotを動かすために必要な最小資金は最小ロット x 3(両サイド + 部分約定解消)が必要. レバレッジをかけると安くできる.
(最小ロット) x 3 ÷ (レバレッジ倍率)
仮にBTCJPYが4000000円, 最小ロットが0.01だとすると, 4000000 x 0.01 x 3 = 120000円が必要. 国内取引所はレバレッジ2倍なのレバレッジをかけるならば60000円となる.
海外取引所だと, 日本よりもロットが小さく(0.001), レバレッジはかなりかけられる.
✨mmbot Insights
mmbotに対する個人的感想.
📗mmbot開発日誌
- 🌱常勝HFTはアルゴリズムによる労働の超高速化
- 💭自分のmmbotはなにか根本的に間違っているのかもしれない(2022/10/21)
- 💭HFTにおける速度の重要性を腹に落として理解していない(2022/11/03)
- 💭もはやHFTはmmbotの時代ではなくmtbotの時代だった(2023/01/07)
- 💭mmbot弍号機を町田中町botと名付ける(23/06/19)
- 💭海外CEXのmaker手数料0.01%の壁がつらいのでmmbot挫折(23/06/20)
- 💭なんだかんだでmmbotはbitFlyerかもしれない(23/06/23)
- 💭ランボー怒りのbitFlyer mmbot再挑戦の巻!(24/10/29), 3200円の損失で撤退. 奇跡すら起きず徹底的に損失が積み上がるbot.
ネットの情報よりも書籍や論文で学ぶ
はじめはこのwikiにネットに転がっている情報を集めまくったものの, 効率が悪かったと思った.
mmbotを作成するためには📝マーケット・メイキング・アルゴリズムを正しく理解することが大事であり, そのための近道はブログ解説記事だったりツイートではなく, 書籍や論文から学ぶほうがいい気がした.
杉原論文は全体像を学ぶのがいい. さらに📄HFTのアグレッシブな株式発注戦略とは - 辰巳健一(2017) の1-3は冒頭でそもそもHFTを未知なものなので調べてみました的なノリでHFTの知識を整理してくれているので杉原論文よりもわかりやすいかも. 逆に言えば, サンプルコードを動かしたあとに, さあ改善しようとしたときに, ここに書かれている用語がまずわからないと戦略が立たない.
個々のブログはどうしても断片を切り取ったものになり, それを自分の知識体系として統合するのは大事だが, 構造化された知識を上からまずは把握してから各論に入るほうが効率がいい.
そこまで情報は多くないものの, 仮想通貨ではなく株取引としてのマーケットメイク理論は昔から今に至るまでずっと研究されているようでバリエーションもたくさんある. 📝アルゴリズム取引においてはマーケットメイクとアービトラージはニ大鉄板戦略的な位置づけにある.
はじめに言葉ありき
botを開発するときにまずやることはコードを書くことではなく, 言葉を覚えるところから. まずは言葉を覚え, その概念を理解する.
言葉がわからないとコードの変数名すらつけることができない. 一つ一つわからない単語を調べてメモしながら地味に言葉から覚えていく.
🤔Hummingbotのマーケットメイクを民主化という理念はかっこいい
マーケットメイクは従来, ウォールストリートやヘッジファンドだけが知っている秘密の知識だった. しかし, その隠された知識によって米国株取引の約半分がHFTのマーケットメイクによって執行されているという都市伝説まがいのことが起こっている(2012の調査). そして日本におけるHFT業者は1つしかなく, さらに株式取引は金融庁への届け出がないと禁止されている.
一体なにがおこっているのだろうか? そもそもHFTについて日本語の資料を調べてみると東京証券取引所のワーキングペーパーがよくでてきて, HFTとはなんなのか調べてみました的なものが見つかる. 実際にmmbotについての日本語情報なんていくら漁ってもよくわからないじゃないか.
そしてHummingbotはこのマーケットメイクという秘密の知識を民主化することを目指すという.
What is Market Making? Interview with Hummingbot CEO Michael Feng - YouTube
わたしは正直, この理念をあまり理解していない. 食うか食われるかの📝ネガティブサム・ゲームにおいて, botterのポロリは死を意味する. 儲かる方法を民主化するということはアフィリエイトだと自爆のようなインチキのような匂いすら醸し出す(🎓稼げてる人は稼げると言わない).
そしてこの理念の背後には, 📝オープンソースの理念があるのかもしれない. つまり知識を解放することでより面白い次元を目指す的な.
実際のところ, わたしはオープンソースの理念もあまり理解していないし, だからこそこのHummingbotのマーケットメイクを民主化するという試みには若干の不信感と好奇心が入り混じっている. ただし, その混ざりあった違和感を感じつつ, Hummingbotの活動や情報発信にはとても惹かれている.
websocket対応は必須
個人的な経験談.
明らかにBotをWebsocketに対応させると, mmbotは負けにくくなった.
🔗References
理論
- Where market making meets market microstructure - YouTube
- by 👨Sasha Stoikovさん.
- マーケットメイク戦略の理論 - これからの「お金」の話をしよう
- 高頻度botを雑に作るイメージ|片道切符マン|note
- 【bitFlyer - LightningFX】アルゴリズム高頻度取引mmbotの作り方,考え方,サンプルコード紹介-2021年1月最終更新|mmbotxxx|note
- 無料は考え方のみ. サンプルコードは有料パート.
- 匿名投稿だが, 句読点にカンマとピリオドをつかっているのでもうこれで誰が書いたかわかったかもしれない. 技術文書にこの記法を用いる人は限られているしこだわりがあって使っているはず.
- High-Frequency Trading: A Practical Guide to Algorithmic Strategies and Trading Systemを読んでのメモ(その3)|しゃしゃしゃしゃ|note
- 1-4まで有益だが3がmmbotについて.
入門情報まとめ/やってみた
初心者, またはこれからの情報.
- 既存戦略調査 (1) mmbot|j26|note
- HFTを作りたい|さきやま|note
- 仮想通貨トレードで参考にした公開情報|ひよっこ|note
- mmbotとは何者か? 天下一BOT会で圧勝してる短期高速スキャ系ボット流行の兆し | 銭ナビ
yuyasugano
- 仮想通貨の自動取引入門
環境構築
. 仮想通貨に限らず自動取引は取引時に人手を介さず、リスクのコントロールおよびリター… | by Yuya Sugano | Medium - 仮想通貨の自動取引入門
テクニカル指標
. 仮想通貨に限らず自動取引は取引時に人手を介さず、リスクをコントロールしつつコスト… | by Yuya Sugano | Medium - 仮想通貨の自動取引入門
Backtestingによるバックテスト
| by Yuya Sugano | Medium - 仮想通貨の自動取引入門
Pubnubによるマーケット・メイキング
| by Yuya Sugano | Medium
サンプルコードあり
magito mmbotが入門としてよく言及されている. BitMEXのセミナー動画(Youtube)とそのGitHubコードもおすすめ.
- mmbot作って動かしたけど勝てる気がしないので、コードを公開して一旦諦める
- https://github.com/BitMEX/sample-market-maker
- BitMEXのGitHub repoにmmbot.
- おそらくサンプルの中で一番よくできている. 在庫管理のposition調整も.
- トレンド方向予測は諦めて在庫調整をしながら指し続ける戦略.
- 解説動画: https://www.youtube.com/watch?v=Dm65PAbkQUw
- https://github.com/bitbankinc/sample-market-making-bot
- bitbankのmmbot
- https://github.com/ondra-novak/mmbot
- GitHubのスターも100超えていて2022でも更新されている. C++製.
<2024-11-01 Fri 11:13>
未だにupdateされつづけている.
- https://github.com/ko0hi/pybotters-wrapper/blob/main/sample/mm/main.py
- https://github.com/vishnugovind10/MarketMaking
戦略/Tips
ある程度取り組んだ視点からの解説記事. 基礎とサンプルからの改善.
- mmbotを何種類か作った時のメモ書き|あかネス|note
- 片道切符マンさん
- むじネコさん
- 【Rust】 高頻度BOT|rinov|note
- 期待値をリアルタイムに推定して指値を入れるロジック.
- Hummingbot
- 高頻度botのオープンソースプロジェクト.
- ブログやYoutubeでがっつりマーケットメイク関係の情報発信がされている.
- 2週間で利回り4000%超を達成したトレーディングbot構築の考え方 - note UKI
<2024-11-01 Fri>
に久しぶりに情報収集.
- Kairon Labs | Understanding Market-Making Models in Crypto, 2024に登場したトレード企業?
- What is Crypto Market Making? A guide
- https://medium.com/zmquant/an-overview-of-market-making-strategies-bdc4319335ae
- How To Build A Market Maker Bot (python 2024) - YouTube
Papers
仮想通貨というよりも株を対象にしたマーケットメイク戦略の論文がおおいので📝マーケットメイクにまとめる.
- 📄執行戦略と取引コストに関する研究の進展 - 杉原慶彦[2012]
- 📄High-frequency trading in a limit order book - Avellaneda and Stoikov [2008]
Medias
動画は少ないものの, やっぱり動画はテキストよりもわかりやすい.
- 仮想通貨高頻度botを大解説!新作botを実況してみた!【高頻度bot実況#1】 - YouTube
- 新bot投入したら一瞬で追い抜いた!【高頻度bot実況#2】 - YouTube
- Bitcoin Algo Trading and Market Making Seminar 22 Mar 2017 - YouTube
- おそらくBitMEX CEO直々のmarket making セミナー動画.
- How To Build A Market Maker Bot (python 2023) - YouTube
- Pythonによるstep by stepのライブコーディングシリーズ.
- ちょっと長いのでおすすめしない.
- Bitcoin - Market Maker Bot - YouTube
- 無音でhummingbotの動作する様子がbinance のチャートとともに流れる.
- Market Making Explained by Cryptohopper - YouTube
- Cryptohopperの3分解説動画.
mmbotベンチマーク
収益を自動で毎日更新しているので大まかなトレンドがわかる.
- ドースーさんのブログ: https://www.dosu0217.com/
- ぶーちゃん日次報告: https://x.com/hashtag/%E3%81%B6%E3%83%BC%E3%81%A1%E3%82%83%E3%82%93%E6%97%A5%E6%AC%A1%E5%A0%B1%E5%91%8A
👉Related
up: 🔖仮想通貨Bot戦略