ボットの戦い:暗号通貨取引所でのマーケットメーカーとの戦い

2017年12月から2018年3月までの数か月間に、約5,000万ドル相当の暗号通貨のマーケットメイキング取引を実行するボットを構築しました。これは、私がどのように市場に参入したか、ボットのアルゴリズムの背後にある理論、そして市場メーカー間で成長した競争の物語です。

フォモ

2017年11月—ビットコインの価格は10,000ドルに向かって急速に上昇しています。価格の指数関数的な上昇により、毎週主流の意識に押し付けられ、さらに多くの投資家を引き付け、価格をさらに押し上げています。

この間、私は休日に2人の友人と離れています。これらの友人の両方は、ビットコインに取るに足りない量の自分のお金を投資しており、価格の上昇から利益を得ていました。これまで投資を検討したことがなかった3人のうちの1人として、私は見逃しているように感じます。

旅行から帰宅したとき、私が最初にすることの1つは、オンラインの暗号通貨交換を見つけて、アカウントに500ドルを預けることです。波に乗ってみたい、私の計画は簡単です:500ドル相当のビットコインを購入し、利益が見られたら投資を増やします。

スプレッド

500ドルの投資の引き金を引く前に、奇妙なことに気付きました。私が取引していた取引所には大きな「広がり」があります。スプレッドとは何か、そしてなぜこれが重要なのかを理解するには、エクスチェンジがどのように機能するかについての基本を調べる必要があります。

通常、株式のような取引所で取引される資産を考えるとき、それを固定価格で購入または売却できると考えます。たとえば、Apple(AAPL)の株価が100ドルだと考えるかもしれません。実際には、単一の価格ではなく、2つの異なる価格があります。

  • 入札価格。これは、取引所の誰もが資産に対して支払う意思がある最大額です。
  • 売値。これは、取引所の誰もが資産を売却する意思がある最低額です。

ほとんどの買い手は売り手が売ろうとする金額よりも安く支払う意思があるため、資産の入札価格は常に売値を下回ります。

Apple株の場合、これら2つの価格は非常に近い可能性があります。入札価格は99.99ドル、売値は100.01ドルです。これら2つの数値($ 0.02)の違いは、スプレッドと呼ばれるものです。

Appleのような人気のある安定株のスプレッドは小さい。これは、常に多くの人々が株式を購入する意思があり、それによって入札価格が上昇し、販売する意思が十分にあるため、売値が押し下げられるためです。買い手と売り手の両方の競争は、入札価格と売り価格を互いに近づけます。

しかし、私が最初にビットコイン取引所を調べ始めたとき、スプレッドははるかに大きく、しばしば最大100ドルでした。この間、ビットコインは約10,000ドルで取引されていました。つまり、スプレッドは合計値の最大1%になる可能性があります(Appleの例ではわずか0.02%でした)。

Bitcoinのスプレッドの大きさは、2017年12月に出現した市場の混乱の結果でした。個人投資家、つまり私、路上にいる平均的な人は、市場に殺到していました。その結果、価格は非常に不安定であったため、スプレッドは決して安定しませんでした。

大きなスプレッドは悪いことのように聞こえるかもしれませんが、ある程度は利益を生む可能性もあります。

ビットコインの入札価格が$ 9,900、売り価格が$ 10,000で、スプレッドが$ 100だとします。 1つのビットコインを$ 9,900で購入し、すぐに$ 10,000で販売できる場合は、$ 100の利益を得ています。

メーカーとテイカー

これが本当であるには余りにも良いと思われるなら、あなたは正しいです。あなたが上記に懐疑的であるかもしれない1つの理由は質問から来ます:交換手数料はどうですか?これに手数料がどのように収まるかを確認するには、交換がどのように機能するかについてもう少し迂回する必要があります。

9,900ドルの入札価格と10,000ドルの売り値で取引されているビットコインを購入するとします。これについては、大きく2つの方法があります。

まず、メーカーの注文を送信できます。ここでは、売値まで(つまり0ドルから10,000ドルまで)と購入する数量を指定します。あなたの注文は、誰かがやって来てあなたをその注文に引き継ぐことを決めるまで、取引所に置かれます。これは、価格の高さと取引所のボリュームに応じて、ミリ秒または数日後に発生する可能性があります。

または、テイカー注文を送信することもできます。これはメーカーの注文の正反対であり、ビットコインを即座に購入することができます。キャッチは、しかし、あなたのテイカーの注文は、すべての売りメーカーの注文の最低価格と一致していることです。当然のことながら、これは誰もが喜んで販売できる最低価格であるため、これは売値になります。

先に進む前に、メーカーとテイカーの注文について注意すべき重要な点がいくつかあります。

  1. ビットコインが販売または購入されるたびに、1つのメーカーと1つのテイカー注文が関係します。 2つのメーカー、または2つのテイカーと取引することはできません。
  2. メーカールートに進む場合、売り手が注文を受け取る可能性を高めるために、入札価格以上の価格を提示する必要があります。
  3. 最後に、メーカーの注文により、流動性と呼ばれるものが市場に追加されます。取引所の他のユーザーが売買するためのオプションを提供します。彼らの名前は、彼らが流動性を作るという事実に由来しています。これとは対照的に、テイカー注文は取引所からメーカー注文を削除するため、市場から流動性を奪います。

この最後のポイントは、ほとんどの取引所が持っている料金体系を説明するのに役立つため、重要です。取引所は流動性を最大化することを望んでいるため、通常、テイカー注文ではメーカー注文よりも高い手数料を請求します。私が使用していたものを含むいくつかの交換は、受取り手数料のみを請求します。メーカーの注文には0%の手数料がかかります。

前の例に戻ります。メーカーの注文のみでビットコインを9,900ドルで購入し、10,000ドルで販売できる場合、取引するビットコインごとに100ドルの純利益が得られます。

メーカー注文を使用する必要があるのは、手数料を回避するためだけではなく、テイカー注文を使用して購入した場合、売り出し価格である10,000ドルを支払う必要があるという事実からも生じます。その後、テイカーオーダーで販売した場合、入札価格(9,900ドル)で販売する必要があり、100ドルを失います。

したがって、メーカーの注文を使用して、入札価格で購入し、売値で販売することで、利益をほぼ保証できます。ただし、最後に1つの問題があります。これは、これをプログラムで実行できるアルゴリズムを作成することに対する最大の課題を提示しました。

先ほど触れたように、メーカー注文は、取引が発生する前に、テイカー注文を取得して「テイク」する必要があります。テイカーの注文は常に最高の価格で「テイク」されます。メーカーの注文でビットコインを購入したい場合、テイカー注文が注文と一致するようにするには、入札価格を少し上回る価格で入札する必要があります。提供する入札価格をいくら超えてもかまいません。1セント程度の金額になります。 9,900.01ドル。

したがって、マーケットメイキングボットを作成する最初のステップは、現在の入札価格を少し上回る買い(メーカー)注文を出すことができるようにすることです。これには、入札価格を確認するための1つのAPIリクエストと、注文を送信するための別のリクエストが必要です。

理論的には、入札価格を1セント上回って入札しても構いません。ただし、実際には、入札価格を確認してから注文を送信するまでの間に、入札価格が頻繁に変更されます。注文が他のすべての購入注文よりも高くなり、新しい入札価格が設定されるようにするには、現在の入札価格よりも5〜10¢高く入札することをお勧めします。

これにより、(テイカー)売り注文が入った場合、それは(メーカー)買い注文と照合され、料金に何も失うことなくビットコインを購入します。

セルサイドで、今やったこととまったく正反対のことができます。現在の売値を確認し、その数セント下で入札します。これにより、(テイカー)買い注文が入った場合に、(メーカー)売り注文と照合されます。

スプレッド(ビッド価格とアスク価格の差)に、取引できるビットコインの量を掛けたものにほぼ等しい清profitな利益を得ました。

コンペ

これがあまりにも簡単すぎて真実ではないと考えているのなら、あなたはまだ正しい。利益の明らかな機会があるたびに、トレーダーは山積みになり、これが競争を生み出します。これの最も明白な例は、入札価格を設定するために互いに争っているマーケットメーカーによって作成された競争を見ることによって見ることができます。 (覚えておいてください、次に売り手のテイカー注文が入るとき、取引を実行するために買値を入札価格で持っている必要があります)

2017年12月にさかのぼると、競争は非常に激しく、入札価格は通常1秒間に複数回変化します。多くの場合、トレーダーは入札価格を設定する時間を最大化するために互いに競い合いながら、できるだけ低い価格を提供したいので、1または2セントだけ増加します。

ボットは最初に入札価格をチェックし、1¢高く入札しました。これが最初のように思えたので、私の注文が完了するまでに、私はしばしば(常に変化する)入札価格よりも数セント低くなることに気付きました。

これを回避し、できるだけ多くの注文が現在の入札価格を上回るようにするために、入札価格が通常100ミリ秒ごとにどの程度変化するかを測定しました。これにより、ボットは入札価格よりも十分に高い価格(〜5¢高い)を提供できるようになったため、注文の処理中に他のトレーダーが価格を上回ることはありませんでした。

また、スプレッドのサイズが現在の入札価格に対してどのくらい喜んで提供するかを考慮することも始めました。前に見たように、取引による利益はスプレッドの大きさに正比例します。これにより、スプレッドが大きいときに入札価格を上回ることがさらに重要になりました。このため、スプレッドのサイズに基づいて、提示する入札価格よりもどれだけ高いかを変化させる式を書きました。

これまで、主にマーケットメイキングの購入の側面について説明してきましたが、販売はまったく同じです。 Bitcoinを購入したら、すぐに(より高い)Ask価格でオフロードする必要があります。入札価格と同じように、売値で競争が発生するため、現在の売値よりも数セント低い販売価格を提示することにより、競合他社を引き下げる必要があります。

ただし、2017年後半から2018年初頭にかけては、通常、売値の競争ははるかに少なかった。当時、これはビットコインの供給よりも需要の方が多いためだと思い、売り手より買い手の間で競争が多かった理由を説明しました。

市場操作

市場操作とは、不公正な優位性を得るためにトレーダーが市場で採用するさまざまな悪意のある戦術を指します。規制されていない市場として、暗号通貨取引所は市場操作で熟していました(そして今もそうです)。最も頻繁に行われる操作は、スプーフィングと呼ばれるもので、単に市場の状況の外観を変更するために注文する行為です。

これがどのように機能するか例を示すために、9,900ドルの入札価格と10,000ドルの売値を使用した前述の例を検討してください。ここでのスプレッドは100ドルであり、マーケットメイクの良い機会を提供します。しかし、誰かが来て、$ 9,999.99の価格で買い注文をすると、スプレッドはわずか1¢に縮小します。スプレッドが非常に小さいため、マーケットメイキングから利益を得ることが不可能であるように見え、すべての活動が停止します。

メーカーの注文を売値より1¢低くする買い手は、市場操作ではありません。実際、取引所がメーカー手数料を請求しない場合、これはビットコインを購入する迅速かつ効率的な方法です。ただし、問題は、これらの買い注文が表示されるたびに、通常は可能な限り最小の金額になることです。 0.00001ビットコイン、約10¢相当。

別のマーケットメーカーが売り値のすぐ下にこのような小さな買い注文を出す理由は天才です。別のマーケットメーカーが入札価格でビットコインを購入できるようになった場合、彼らはできるだけ早く売り価格でビットコインを販売するインセンティブを持ちます。ビットコインを売るのに時間がかかるほど、売値(ひいてはスプレッド)が変動し、利益が変動するリスクが大きくなります。

確かに、この時期に価格が下落する可能性と同じくらいの可能性があると言うかもしれません。ただし、マーケットメーカーはこれを気にしません。彼らの仕事は価格を推測することではなく、できるだけ早く乗り降りすることです。

価格の下落を防ぎ、売り手側の競争が売り値を押し下げるのを防ぐために、マーケットメーカーは売り注文を売り値のすぐ下に置き、新しい注文のすぐ下に(「スプーフィング」)買い注文を挿入します。価格を尋ねる。この後者の注文の注文サイズは可能な限り小さくなります(0.00001ビットコイン)。

これには2つの効果があります。

  1. 他の売り手はその売り手の売り値を打ち負かすことはできません。売値より1セント下がれば入札価格になり、取引所はメーカーが入札価格以下でメーカー注文を出すことを許可しません。
  2. スプレッドをわずか1¢に減らします。マーケットメイキングボットがこのような小さなスプレッドを見ると、利益が得られないため、一時的にオフになる可能性があります。

この2番目のポイントは非常に重要です。これは、偽造された購入注文が売値を下回ると、事実上すべてのマーケットメイキングボットがオフになる理由を説明しているためです。しかし実際には、スプレッドはわずか1¢に見えますが、それでもチャンスはあります。

次の売り手の注文が1ビットコインで入ってきたとしましょう。最初の0.00001ビットコインは、なりすまし注文でマーケットメーカーに販売され、その注文を取引所から除外します。次の0.99999ビットコインは、新しい入札価格で注文に販売されます。これは、スプーフィングされた注文よりも高い価格の注文です。

ボットに加えた最大の改善点の1つは、スプレッドの計算でスプーフィングされた注文を無視できるようにしたことです。売値は入札価格よりも1¢高いだけかもしれませんが、ボットは偽造注文を過ぎて、偽造注文(まだ50〜100ドルである場合)のスプレッドを調べます。このスプレッドが機会を提供するのに十分な大きさである場合、スプーフィングされた注文の後に最高価格の買い注文を出すために競争します。売り手のテイカー注文が入ったとき、これは数セントのビットコインがスプーファーに売られ、残りが私に売られることを意味していました。

2018年

2018年の最初の数ヶ月は激動しました。 12月にビットコインが2万ドルに上昇した後、車輪が外れ始め、価格は急落していました。

投資家にとっては悪いことですが、これはマーケットメーカーにとって大きな機会となりました。買い側と売り側の両方で高レベルのボリューム(より多くのテイカー注文が入る)により、効率的なマーケットメーカーが実行できる1日あたりの取引量が大幅に増加しました。

しかし、この機会は比較的短命でした。 1月と2月の熱狂の後、ボリュームは枯渇し始め、利益を得る機会が少なくなりました。取引量の減少にもかかわらず、新しいボットが取引所に入ったため、マーケットメーカーの数は増え続けました。

取引所でのマーケットメーカーの増加により、買値と売値の競争が激しくなり、スプレッドが狭まりました。また、追加の競合他社は、注文が送信されるとすぐにあなたよりも多くの競合他社があなたを上回る準備ができているため、注文は通常短期間入札価格で行われることを意味しました。

競争が激化し、利益を得る機会が減ったため、3月までにすべてのボットをオフにしましたが、それ以降はボットをオンにしませんでした。多くの取引所でメーカーの手数料が高くなったため、マーケットメイキングゲームに戻るのを思いとどまりましたが、今でもチャンスをつかむのに十分な才能のある人にはまだチャンスがあります。

全体として、2017年12月から2018年3月の間にROIが20.2である約5,000万ドル相当のビットコインを取引しました。