[bot研究]マーケットメイク戦略の理論的背景

トレード

この記事では、過去に研究したbot理論として、オークション方式の市場において大量の指値を供給することでその見返りとしてスプレッド分の利益を得るマーケットメイクを応用した、「マーケットメイク戦略」の理論的背景を紹介してみます。

個人的な備忘録であるため誤謬・誤植などあるかもしれませんが、ご了承ください。

主な引用文献

とりあえずざっくり概要を把握したい方は日本語の文献が参考になると思います。

上記文献で引用されている以下のペーパーのうち、特に後者について詳しく見ていきます。

マーケットメイク戦略の最適化

効用関数の準備

マーケットメイク戦略では板に「売り指値」と「買い指値」を提示し、自身の利益を得るものです。

価格の変動により上下両方の指値が約定した場合、当然キャッシュが増えます。もし片方のみ約定した場合、ポジションを自身が抱えることになります。

数学的には、ある一定期間Tを経た後の自身の資産価値を最大化する指値の幅を求める問題として表現します。

ここで、自身の資産をキャッシュ + ポジションの時価評価として表現することにします。マーケットメイク理論の慣習に従い、ポジションを在庫(inventory)と呼びます。

在庫は市場の価格変動に晒されています(在庫リスク)。単純に自身の資産を最大化するのではなく、在庫リスクにペナルティ(リスク回避度)を課した効用関数を最大化するという問題に帰着します。

γ:リスク回避度、Ct:t時点のキャッシュ、qt:t時点の在庫、St:t時点の中央値として、以下のように効用関数uを定義します。

効用関数

指値関数の準備

売り指値と買い指値を置く位置は、市場のファンダメンタルズ価格Stを基準として、それぞれδask、δbid離れた位置として表現します。Stは直近の売買価格と乖離している点がポイントです。詳細は割愛しますが、Stを中心にビッドオファーを考えることが最適となります。

すると、売り価格PaskはSt+δask、買い価格PbidはSt-δbidと表せます。

つまり、先ほどの効用関数uを最大化させるδask、δbidを求めることを目指します。そのために市場のモデリングもしていくことになります。

市場のモデリング

市場のモデリングは単純すぎると現実と乖離してしまい、複雑に記述すると数学的な取り扱いが困難になり数値解法でしか解けなくなります。

よく使われる理論ですが、中央値Stの価格変動は分散σ2のブラウン運動を仮定します。複雑になるためドリフトは考慮しません。

板の厚みは各価格帯に置かれた指値を累積することで求めることができ、中央値Stに近い価格帯での指値が多くなることを表現するため、それぞれの指値に対応する指値注文の厚さをStからの距離に応じた指数関数で近似します。

また、単位時間当たりにStのまわりで、どの価格帯でどれだけ注文が約定するかを考える必要があり、注文の強さ(trading intensity)を導入します。板の厚みとその時点で流入してくる成行注文の量で表現することができ、注文の強さをλ(δ) = A・exp(-kδ)として指数関数で表現します。

最適化のポイント

最適化を考えるにあたり、δaskとδbidを個別に考えるのではなく、δask+bidとStの差をオフセットSoffsetとして求めます。

ここから目的関数の最適化を行っていくというわけですね。

結果的に、「スプレッドが広がったら内側にエントリーしていく」というトレードになるわけです。