マーケットメイクとは
マーケット・メイキング・アルゴリズム. market making.
売り気配(ask)と買い気配(bid)に指値を供給し, 約定した際の売買差額を利益とする戦略.
指値注文の指値は, 買値(bid)を買い(buy), 売値(ask)で売る(sell)ことに注意. 視点は取引所となり, トレーダーの成行注文を誘い込む.
マーケットメイクという単語は和製英語のようで, 英語では market makingだったりmarket makerで検索するのがいい. Wikipediaがマーケットメイクなのでこのメモでもマーケットメイクを採用する.
マーケットメイキング
売買マッチングのアルゴリズム.
📝マーケットメイカー
マーケットメイクをするトレーダー. マーケットメイカーは高い売値で売って低い買値で買うということを何度も繰り返すことでそのスプレッドを裁定利益とすることができる.
市場の流動性を生み出すために, 取引所はマーケットメイカーの存在を歓迎している.
マーケットメイクの収入源はスプレッド収益
スプレッド(spread)収益がマーケットメイク戦略の収入源.
ref. https://www.investopedia.com/terms/b/bid-askspread.asp
Market makers, many of which may be employed by brokerages, offer to sell securities at a given price (the ask price) and will also bid to purchase securities at a given price (the bid price). When an investor initiates a trade they will accept one of these two prices depending on whether they wish to buy the security (ask price) or sell the security (bid price).
📝マーケット・メイキング・アルゴリズム
📝トレードアルゴリズムのなかで特にマーケットメイクに関わるもの.
市場仲値参照
市場仲値を参照して, その前後に自分の定めたspread分のmarginを取って指値をいれ続ける戦略.
スプレッド(Bid-Ask Spread)が大きいときは, その分marginを広く取ると収益もおおきくなく.
ボラティリティが大きすぎる場合は十分にスプレッドを広くしておかないと, 不利な指値になってしまい損失がでるので, 状況に応じてスプレッド幅を調整する.
基本的には約定したら再び指値を入れることを繰り返す戦略だが, トレンド偏りによって片方向のみポジションが残ってしまうので改善は必要.
リベート獲得
リベートが存在する場合は片側約定したらもう片方の指値を約定価格に指し直す戦略がある. この場合売買によるスプレッド損益は得られないが代わりにリベート損益を得ることが出来る.
自己ポジション参照
売買のどちらがの約定によるポジションを持った場合は, 反対の売買が約定しやすいように指値を指す. トレンドによるポジションリスクの解消が目的.
ずらす幅は固定値でもいいし, 板の厚みを元にパラメータ調整してもいい.
Avellaneda Market Makingでは数式によって適切な在庫量を考慮した価格(reservation priceと呼んでいる)を導出している.
市場実勢価格連動
板の注文状況からトレンドに乗って自分の指した指値を更新し続けいく.
注文のupdate, amend, edit戦略(文脈でいろいろ言われている).
単純に仲値に指し続けていても, トレンドがあるとネットワーク遅延もあり一定時間の遅れが生じて, 実体の仲値とはズレてしまうので, 仲値を予測して先回りして指す方法.
市場流動性活用
📝ペニージャンプ参照.
🎴Avellaneda Market Making
📄High-frequency trading in a limit order book - Avellaneda and Stoikov [2008] をBaseにしたMarket Making Algorithms.
ときどきA&Sとかと略されている.
在庫リスクを低減(📍在庫モデル), 最適なBid-Ask Spreadをもとめるのが目的.
マーケットメイク戦略の古典にして王道な論文であり, must read. みんな読んでるのかな?
簡単にいえば以下を数値的によろしく調整できる.
- 在庫が片方に偏っているならばもう片方を約定しやすく指値価格調整(在庫管理).
- ボラティリティが高ければスプレッドを大きくしてより多くの利益をとる.
📄High-frequency trading in a limit order book - Avellaneda and Stoikov [2008]
- https://www.researchgate.net/publication/24086205_High_Frequency_Trading_in_a_Limit_Order_Book
- https://www.math.nyu.edu/~avellane/HighFrequencyTrading.pdf
💡reservation priceとoptimal spread
基本的なマーケットメイクは仲値の両側に均等にmarginを取って差分を入れるが, この論文の提案は在庫リスクを低減するためにトレンド方向を考慮して仲値をちょっとずらして指値を入れる. 論文の中では, このちょっとずらした値をreservation priceと読んでいる. 杉原論文では主観的ファンダメンタル価格.
reservation price = 仲値(mid price) - offset
また最適なspreadは optimal spreadと表現されている.
- bid 指値 = reservation price - (optimal spread / 2)
- ask 指値 = reservation price + (optimal spread / 2)
そうすると, reservation price とoptimal spreadの2つが求まることでbidとaskのpriceも決めることが出来る.
💡reservation priceの数式の定性的意味
reservation priceを求めるための仲値からの差分, つまりオフセットが重要となる. オフセットが大きいと積極的に在庫を解消する意味を持つ.
qで表される変数は在庫量で, 正負が特に重要. この値が負ならば仲値に対して高く価格を設定(マイナスに対する反転でプラス)する. これは売りポジションを持っていて買いを約定させやすくする.
gammaで表される変数はリスク回避度(risk factor)で, 自分で設定する値. 小さいと仲値とreservation priceの差が小さく, 逆は大きくなる. すなわち大きければ積極的に約定させて在庫の解消を狙う.
sigmaはボラティリティを示す. ボラティリティを計算するインジケータなどを活用. ボラティリティが大きいときはオフセットが大きくなる.
💡optimal spreadの数式の定性的意味
最適なスプレッド. スプレッドが大きければ利益も大きいが, 約定しない可能性(在庫リスク)も高まる.
2つの項の足し算になる.
第1項のgammaとsigmaの掛け算は, ボラティリティとリスク回避度. ボラティリティが大きければ大きな利益も狙えるためスプレッドもおおきく取れる, しかし約定とのトレードオフなためリスク回避度を自分で設定して調整する.
第2項のkappaは流動性(~論文の中では簡単のため板の厚みで扱う)を示し, 流動性が大きいときはspreadを小さくする(kappaは逆数). 解釈としては, 競合がたくさんいるため, スプレッドを小さくすることて約定しやすくする.
💡パラメータをどうやって調整するか
必要になる情報は
- q: 在庫量
- gamma: 任意のリスク回避度
- sigma: ボラティリティ
- kappa: 流動性, 注文の強さ
qの在庫量はトレード時のその場の状況に応じた値となる. APIでpositionを取得する.
gammaのリスク回避度というのは自分で設定する0から1の間のパラメータなので自分で試して決める.
問題は, sigmaとkappa. これらは概念であり, それぞれこれをどうやって推定するかというのが研究テーマとしてありいろいろな人がそれぞれ研究している.
ボラティリティにしてもいろんなインジケータはある. Volatility Indicator.
流動性も約定履歴や板情報から求めるなどいろいろあるものの, 論文では注文の強さを算出している. 具体的な計算方法は論文には書かれていないが以下が参考になる.
以下はHummingbotの実装例.
https://github.com/hummingbot/hummingbot/tree/master/hummingbot/strategy/avellaneda_market_making
板の強さの推定式 y = f(x) = gamma*exp(-kappa*x)は対数をとると log(y) = log(f(x)) = gamma - kappa * x という式に変形できるので単回帰の傾きで実はkappaが求められる??
java - Exponential Fit with apache commons math - Stack Overflow
💡入門として学び改良版papersを追うでは実際のデータを元にいろいろ試してみようと言われている.
注文サイズ調整(ETA)
Order size adjustment.
[Optimal High-Frequency Market Making2018]
の論文において注文サイズ最適化が議論されている(未読なのでブックマーク).
バックテストと技術的課題
理論通りにはいかない.
💡入門として学び改良版papersを追う
2022からみてこの論文は10年以上前のものであり, 当然その発展があるはずなので, それも調べる.
;; https://twitter.com/quant_arb/status/1516630021389131781
Stoikov papers are great/ huge fan of microprice. Just a quick reminder that Avellaneda and Stoikov was 14 years ago and there are newer and better papers since. Please use actual data in your sim w/ actual fill/trade/lob data especially, not a stupid Poisson distribution
📄Dealing with the Inventory Risk. A solution to the market making problem - Guéant, Lehalle, and Fernandez-Tapia[2013]
[1105.3115] Dealing with the Inventory Risk. A solution to the market making problem
;; https://twitter.com/poyothon/status/1061622281292529665
仮想通貨bot界隈、UKIさんが紹介してたAvellaneda & Stoikov(2008)とか杉原(2012)読んでるけど、Guéant, Lehalle, and Fernandez-Tapia(2013)も良いよ。前者の拡張モデルで逆選択リスクやマーケットインパクトも含んでる。
📄High-frequency trading in a limit order book - Avellaneda and Stoikov [2008]の発展. Avellanedaのモデル改良であるが, section6でパラメータの意味について議論されている.
🔗References
Hummingbotのブログでよく解説されている.
- Avellaneda Market Making - Hummingbot Docs
- A comprehensive guide to Avellaneda & Stoikov’s market-making strategy | by hummingbot | Hummingbot Blog | Medium
- A comprehensive guide to Avellaneda & Stoikov’s market-making strategy
- Avellaneda strategy: A technical deep dive
- https://github.com/hummingbot/hummingbot/tree/master/hummingbot/strategy/avellaneda_market_making
- 誰かのゼミの発表資料? 最近の研究を元にAvellaneda改善.
日本語解説.
- 📄執行戦略と取引コストに関する研究の進展 - 杉原慶彦
- ◆指値板における最適提示価格を求めよう ~高頻度取引における在庫モデル~◆ - Qiita
- 仮想通貨の自動取引入門
Pubnubによるマーケット・メイキング
| by Yuya Sugano | Medium - High-frequency trading in a limit order bookと戯れる
実装例. ただし, reservation priceやoptimal spreadをもとめるためのパラメータは固定値で, ここをどう求めるかは扱っていない(論文の範囲ではない).
- https://github.com/fedecaccia/avellaneda-stoikov
- https://github.com/ragoragino/avellaneda-stoikov
- https://github.com/mdibo/Avellaneda-Stoikov
📍マーケットメイクとトレンド対策
トレンドが発生すると2つの損失リスクが発生する.
この2つは独立というよりも, 逆選択リスクがトレンドに対応し, それに従属して在庫が残るという従属関係にあるかも. 要はトレンド対策.
;; https://twitter.com/0xRyuzaki/status/1437512568030089222
this is formally known as adverse selection + inventory risk
adverse selection = your counterparty is informed and you’re def on the wrong side of the trade
inventory risk = your book is skewed long/short due to an imbalance in buyers/sellers (you’d like to be delta neutral)
;; https://twitter.com/0xRyuzaki/status/1437512572584988677
so how do you fix this?
there are roughly two ways
(1) you can try to predict the direction of the market over short time frames and trade with it
(2) you can adjust your quotes dynamically to manage your inventory, keeping your market risk low while capturing spreads
📍マーケットメイクと逆選択リスク
ref. 📝逆選択リスク
逆選択, 逆選抜とは経済学の用語だが, マーケットメイクの文脈ではポジションがトレンドにつられて損失を被るリスクのこと.
通常は逆選択というと間違った方向でポジションを持ってしまうことだが, マーケットメイクの場合は売りと買いの両方に指すという特徴がある. そのため, 売りと買いの指す値を約定しやすい方向に調整するような戦略が考えられる.
more. How does market making work? - Hummingbot Docs
ただし, これはトレンドの短期的な予測問題となり, 必要となるのは📝ディレクショナル戦略の知識. マーケットメイクではない. そして予測は難易度が高い(やる価値はある).
📍マーケットメイクと在庫リスク
マーケットメイクは指値をいれ続けるものの, ポジションの偏りが生じて在庫処分をするのが一つの難しいところ.
そこでポジションを持ったらそれを閉じるということをテイク注文(成行/即時執行可能指値注文)を利用してそのつど調整する方法がシンプルで足がかりとしては実装しやすい.
予測ではなく手持ちのポジションをアルゴリズムに従って操作するので, 📍マーケットメイクと逆選択リスクのイシューよりは取り組みやすい.
マーケットメイクの収益源はスプレッド収益であるが、ポジションを持ったままトレンドに巻き込まれるとポジション損益で損する. もっというと、先にトレンドが発生したあとに指値注文が巻き込まれてポジションを持ったまま損をする.
ヘッジポジション戦略
在庫リスクに対して🎴ヘッジ戦略を活用.
在庫を抱えた場合、その在庫の損失リスクをヘッジするため、他の市場やデリバティブで反対のポジションを取ることも検討できます。例えば、スポット市場で在庫を抱えた場合に、先物やオプションで逆方向のポジションを持つことでリスクを分散します。
🔨トレンドの分類
トレンドにもいろいろあり, それぞれに対して有効なアプローチは細分化出来る.
- 一瞬のヒゲ: 💡ヒゲは大口注文で発生する
- 継続的トレンド: 💡情報の偏り(Imbalance)とはトレンドのこと
- 高騰/暴落: 💡イナゴは群集心理の俗語
📍マーケットメイクとOFI
オーダーフローの偏り, Orderflow imbalance(OFI)をマーケットメイクに応用.
📍高頻度取引戦略: 情報モデルにおける板情報の偏りを利用して市場価格を推定する方法.
板情報の偏り, 流動性の指標の一つとして, 注文の強さが利用される.
ざっくりいうと, 片側の流動性がおおい場合, その逆の方向へ価格が下がる. これは片方の流動性がおおいと反対側に並んでいる注文が約定しやすく, その結果最良価格がより不利な方向へ変わるから.
FXスキャの手動売買のブログをみると, 板読のトピックでしばしば板が厚いとどうなるかということが話題になっているが, いちおう研究としては結論がでているのがおもしろい. それでも傾向というだけで絶対というわけではなさそうだが.
最も単純なのはmid-priceやmid-pointと呼ばれるもの.
mid-priceとそのバリエーションの数式を使わない説明が掲示板にまとめられている.
high frequency - definition of mid price in literature - Quantitative Finance Stack Exchange
ここでは, 各種indicatorをまとめる. ここでいうpriceはpointという用語でも利用されている. mid-point, weighted mid-point… etc.
Bias in the effective bid-ask spread(2021) の研究では weighted mid-price とmicro-priceをおすすめしている.
論文の作者のブログ記事.
Overestimated effective spreads – Björn Hagströmer
さらにこの論文の前半部分はmid-priceとその派生のindicatorをざっとまとめているので一読すると参考になった.
mid-price
📊市場仲値のこと.
最も単純な市場価格推定だがここには情報の偏りがないという前提であり, 実際は情報の偏りがあるためうまく推定出来ないことがおおい.
📊weighted mid-price
mid-priceに重み付けをした改良版, 日本語では加重平均価格.
重み付けはbest bidのvolumeとbest askのvolumeをつかう.
imbalance = (best bid volume) / (best bid volume) + (best ask voume)
weight ask = ask x imbalance
📊depth weighted mid-price
weighted mid-priceの改良版.
best priceをみるとノイズがおおいので, 数個分のbids/asksをみる.
以下のリンクでこのindicatorは最も信頼できると書いてあったもの, その元となる情報がみつからないので調査中…
ref. high frequency - definition of mid price in literature - Quantitative Finance Stack Exchange
<2024-11-05 Tue 12:38>
micro-priceは計算が複雑なのでこれが安易に実装できる最適priceかも.
📊micro-price
weighted mid-priceの改良版.
An estimator of the fair price, given the state of the order book. Instead of mid-price.
注文フローの偏り(OFI)問題の方法.
Avellaneda Market Makingの共著者Stoikovさんの最近の研究.
💡micro-priceの数式の定性的意味
micropriceは現在のmid-priceに過去n回の値動きを考慮した補正値を加減して調整する.
Pn = mid-price + sum(過去n-1回の補正値=g(S, I)).
補正値はspread(ask - bid)とimbalace(bid size / (bid+ask size))からの漸化式で再帰的に計算できる.
解法にはマルコフ連鎖の確率遷移行列の計算が必要
解法にはマルコフ連鎖の確率遷移行列の計算が必要なのでちょっと複雑.
過去のmid-priceの値動きから現在のmicropriceを求めるわけだが, 現実的な運用での計算では過去6つの値動きを元に推定するのがよいらしい. この点で計算コストが少なくHFTの利用つかえるIndicatorというのがキモかもしれない.
以下の記事はとっかかりに参考になる.
📄The Micro-Price: A High Frequency Estimator of Future Prices - Stoikov(2017)
-
url: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2970694
-
tags. 👨Sasha Stoikov
-
https://github.com/sstoikov/microprice
- 本人サンプルコード
-
The Microprice: Estimating the fair price, given the state of the order book. - YouTube
🔗References
- links.
- https://twitter.com/quant_arb/status/1489329508318695426
- Robinhood Trading Fees & Microprice : Sasha Stoikov of Cornell Financial Engineering Manhattan - YouTube
- https://github.com/hummingbot/hummingbot/issues/5409
- https://commonwealth.im/hummingbot-foundation/discussion/3581-research-on-placing-orders-around-a-microprice
- sample codes
-> micro-price
📊VAMP
Volume Adjusted mid price.
weighted mid-priceと似ている概念だが, これは価格ではなくVolume(📊VOI)による重み付けを行う.
📹Where market making meets market microstructure - Sasha Stoikov(2023)の講演のなかで, micro-priceと合わせて, 情報の偏りを考慮した仲値として紹介されていた. 2022なので意外に最近?
💡トレンドと注文の偏りを考慮したbid-ask spread
ref. [Level 2] Strategy #1: Pure Market Making (PMM) Strategy
- 上昇トレンドの場合, bidを小さくしてaskを大きくする.
- 下降トレンドの場合, askを小さくしてbidを大きくする.
トレンドの判定には📍高頻度取引戦略: 情報モデルの偏りを利用(流動性や約定履歴など). 出来高の偏りと注文フローの偏りの2つがある.
Tips for Handling Different Market ConditionsにかかれているOffset Spreadsの部分. トレンドの方向に対して固定値でoffsetを付与する.
最適な仲値を求めることとは少し違うことに注意. mid-priceとその派生インジケータは市場価格の推定であるが, これは将来の値動きの予測.
純粋なマーケットメイクは売り買いのバランスは50:50だが, これはたとえばbest ask/best bidの注文量の比率を考慮して30:70だったり, 80:20になる.
💡片側マーケットメイクとポジション解消手法
同時にマーケットメイクをするのではなく, 売買をバラバラに指しつつも, タイミングをみてポジション解消する.
2週間で利回り4000%超を達成したトレーディングbot構築の考え方|UKI|note
ある投資指標に従い、5秒間隔で買いか売りのどちらかに指値発注する(5秒でタイムアウト)累積ポジションは、反対方向のシグナルが出たときに全決済する(例.0.1の買い注文が3回約定した場合、次の売り注文は0.3を出す)利確・損切は設定しない
マーケットメイクTopics
💡マーケットメイクと平均回帰
ref. アルファ探求「平均回帰」編|Hoheto (仮想通貨botter)|note
マーケット・メイクは、板に指値注文を置きますが、買いの指値注文を置くという行為は、「価格がその水準まで下がってきて約定することを期待(予測)し、かつ、その後、価格が同水準以上に高くなることを期待(予測)する」ということです。これは逆張りのトレードなわけですが、その期待や予測に反して価格が反発せず、約定した状態でそのまま一方方向に動いて行ってしまう、というのが「逆選択をしてしまう」ということです
ref. 📝ミーン・リバージョン戦略 📝仮想通貨トレード: 仮説検証
Aroon オシレーターによるspread調整
アイデアメモ, 後で調べる.
Hummingbot のハッカソンで優勝した戦略がAroon Oscillator.
Aroon Oscillator - Hummingbot Docs
Conformal Predictionとマーケットメイキング
後で調べる.
- https://github.com/valeman/awesome-conformal-prediction
- Application of conformal prediction interval estimations to market makers’ net positions
- https://twitter.com/quant_arb/status/1553677393528766465
💡HFTマーケットメイク戦略のほとんどはIOC注文でありキャンセルされることが害悪
基本知識シリーズ第1弾 HFT|かえるさん |noteより.
個人投資家にとってMM戦略が悪者に見えるのは実際の約定よりキャンセルの多さだ。
この戦略ではIOCで発注されるのが通常。
IOC(Immediate or cancel)という執行条件では全約定しなければ注文はキャンセルされる。それ故約定してないのに大量の注文が来ているように見えてしまい他のアナログ投資家は反応してしまう。
MM戦略の約定率は1桁%でほとんどの注文はキャンセルされる。
板がフラッシュして見える銘柄にはMMが入っていると考え注意が必要。
彼らは相場の上げ下げよりボラティリティとBBOが重要なので上がろうが下がろうが機会があれば入ってくる。
マーケットメイクの注文のほとんどはIOC注文とは新しいインサイトかも.
💡2022: HFTの実体がIOC指値テイクでマーケットメイクでなかった件
🔗References
マーケットメイク入門には英語の良記事がおおい(日本語少ない)印象. 適宜追加.
- マーケットメイク - Wikipedia
- What is market making?
- How does market making work? - Hummingbot Docs
- How Market-Making Works (Poorly Illustrated) | by I Draw Charts (David Holt) | Medium
- Market Making Article 2 (Not Illustrated, but Much More In-Depth) | by I Draw Charts (David Holt) | Medium
👨Sasha Stoikov
マーケットメイキングの研究における有名な教授. Youtubeでちょいちょい動画投稿してるみたい.
- 📄High-frequency trading in a limit order book - Avellaneda and Stoikov [2008]
- 知らない人はモグリ的な論文. これはもう15年以上前のもの.
- 📄The Micro-Price: A High Frequency Estimator of Future Prices - Stoikov(2017)
- マイクロプライスという概念.
📹Where market making meets market microstructure - Sasha Stoikov(2023)
Where market making meets market microstructure - YouTube
2023/02/24に投稿された動画.,学生への講義なのか平易にマーケットメイキングについて解説している👍
Hummingbotを使ってみた感想が面白い. わたしの理論では勝てませんwww
なぜならば, クリプトはドローダウンで一気に負ける, いわゆるパンプダンプで死ぬ. そしてそれは注文の偏りが原因であり, だからこそ📝マーケットマイクロストラクチャーが大事, という話.
English
- Hummingbotの発信している情報も注文.
- https://twitter.com/quant_arb/status/1489329508318695426
- https://twitter.com/quant_arb/status/1553677393528766465
- https://twitter.com/0xRyuzaki/status/1437512538997018633
Papers
- 📄High-frequency trading in a limit order book - Avellaneda and Stoikov [2008]
- 📄The Micro-Price: A High Frequency Estimator of Future Prices - Stoikov(2017)
- [High Frequency Market Making2016