編者按:本文來自 Medium文章《Battle of the Bots: How Market Makers Fight It Out on Crypto Exchanges》
原文作者:Mack Grenfell,前加密貨幣交易所做市商
編譯:蘆薈。
2017 年 12 月至 2018 年 3 月的幾個月里,我寫了一個機器人,執行了價值約 5000 萬美元的加密貨幣做市商交易。接下來我將會講我如何進入做市商的故事、機器人演算法背後的理論、以及做市商之間日益激烈的競爭。
FOMO
將時間撥回 2017 年 11 月,當時比特幣價格正迅速上升至 10,000 美元大關,這一價格的指數式上漲使得比特幣走向主流的速度加快,隨著更多的投資者的進入,價格得以進一步上漲。
在這段時間裡,我和兩個朋友外出度假。 這兩位朋友都在比特幣上投入了不少本金,並在不斷上漲的價格中獲利。 作為三人中唯一一個之前沒有考慮過投資的人,我覺得自己好像錯過了什麼。
度假回來後,我做的第一件事就是找到一個加密貨幣交易所,並在自己的賬戶中存入了 500 美元,我的計劃很簡單: 購買價值 500 美元的比特幣,如果我看到回報,就增加投資。
價差(spread)
在我投入 500 美元之前,我注意到一些奇怪的現象: 我正在進行交易的交易所有一個很大的「價差 」。
在闡述這個現象之前,為了理解什麼是價差,以及為什麼價差這麼重要,我們需要了解一些關於交易所如何工作的基礎知識。
當我們想到交易所的交易資產比如股票時,我們一般會認為它有一個固定的價格可以買賣。 例如,蘋果 (Apple) 股票的價格為 100 美元。 但實際上,價格並不單一,而是有兩種不同的價格:
出價 / 買家價格(bid price), 這是交易所中任何人願意為一項資產支付的最高金額。
要價 / 賣方價格(ask price),這是交易所中任何人願意出售資產的最低價格。
大多數買家願意支付的價格往往低於賣家願意出售的價格,因此出價總是低於要價。
就蘋果股票而言,這兩個價格可能非常接近。 買方價格為 99.99 美元,賣方價格為 100.01 美元。 這兩個數字之間的差距 (0.02 美元) 就是我們所說的價差。
對於像蘋果這樣受歡迎且穩定的股票來說,價差很小。 這是因為總是有很多人願意購買這支股票,這導致了買方價格的上升,也有很多人願意賣出,從而壓低了賣出價。 買家之間和賣家之間的競爭,實際上推動了買賣雙方的價格接近。
不過,當我第一次開始研究比特幣交易時,價差要大得多,通常高達 100 美元。 在此期間,比特幣的交易價格約為 10,000 美元,這意味著其價差可能高達其總價值的 1% (相比之下,蘋果的交易價差僅為 0.02%)。
比特幣的價差規模是 2017 年 12 月市場混亂的結果。 包括你我以及普通民眾在內的散戶投資者湧入市場,這導致的結果是,價格波動太過劇烈,由此價差永遠無法穩定。
巨大的利差聽起來似乎是一件壞事,在某種程度上確實也是。但與此同時的是,高利差也提供了一個獲利的機會。
假設比特幣的買方價格為 9900 美元,賣方價格為 10000 美元,價差為 100 美元。 如果你能夠以 9900 美元買入一枚比特幣,然後立即以 10000 美元的價格賣出,那麼你就獲得了 100 美元的利潤。
掛單與吃單(Makers and Takers)
如果你覺得這情況太理想,反而不像是真的,那你就對了。你之所以懷疑,是因為想到了交易手續費怎麼辦? 為了了解手續費是如何與之相適應的,我們必須在交易所的運作方式上再繞上一圈。
假設你想買比特幣,它的買入價為 9900 美元,賣出價為 10000 美元。 大致有兩種方法可以做到這一點:
首先,你可以提交一個掛單(maker order)。 在這裡,你可以指定一個價格,最高可以達到賣方價格(也就是 0 美元到 1 萬美元之間) ,以及一個你願意購買的數量。 你的訂單一直停留在交易所,直到有人出現並決定接受你的訂單,至於是幾秒還是幾天後發生,這取決於你的價格有多高和交易所的交易量。
或者,你可以提交一個吃單(taker order)。 這跟掛單完全相反,需要你即時購買比特幣。 但問題是,你的吃單匹配的是所有賣家掛單中最低的價格。當然,這也是要價/賣方價格,即交易所中任何人願意出售資產的最低價格。
在我們繼續之前,關於 maker & taker 訂單有幾件重要的事情需要注意:
·每當比特幣在交易時,都會涉及到一個掛單和一個吃單,你不能和兩個掛單或者兩個吃單進行交易;
·如果你決定走掛單路線,你出的價必須等於或高於買方價格,以便有一個很好的機會讓賣方接受你的訂單。
·最後,掛單增加了市場的流動性,它們為交易所的其他人提供了更多的買賣選擇。 與此相反,吃單從市場中抽走流動性,因為他們從交易所中移除了掛單。
最後一點至關重要,因為它有助於解釋大多數交易所的收費結構。 由於交易所希望最大限度地提高流動性,所以它們通常會對吃單收取比對掛單更高的費用。 有些交易所,包括我正在使用的交易所,只收取吃單的手續費,對掛單收取 0% 的費用。
回到我們之前的例子。 如果我們能夠以 9900 美元的價格購買比特幣,通過掛單以 10000 美元的價格出售,那麼我們每交易一個比特幣就能獲得 100 美元的純利潤。
掛單不僅僅是為了免手續費,還來自於這樣一個事實:即如果我們使用吃單購買,我們必須得以賣方價格支付,也就是 10,000 美元。 接著如果我們繼續通過吃單出售,我們必須以 9900 美元的買方價格出售,那麼就會損失 100 美元。
因此,使用掛單,我們通過在買方價格買入,在賣方價格出售,可以很大程度上保證利潤。然而,還有一個最後的問題,就是它對可以通過編程實現這一點的演算法設計提出了最大的挑戰。
正如我們前面提到的,在交易發生之前,需要一個掛單和一個吃單一起。 吃單的人往往會 「吃」 到最好的價格。 如果你想通過掛單買到比特幣,那麼為了讓吃單人與你的單子相匹配,你必須出價略高於買方價格。 你的出價高出多少並不重要,你也可以只多出一分錢,比如 9,900.01 美元。
因此,編寫做市機器人的第一步就是能夠掛一個出價高於當前買方價格的買單。 這需要一個 API 查詢買方價格,另一個 API 來提交訂單。
理論上,只要出價比買方價格高出一個百分點就可以了。 然而,在實踐中,在查詢買方價格和提交訂單之際,買方價格往往會發生變化。 為了確保你的訂單高於所有其他買入訂單,因此買入價格通常建議設置為高於當前買方價格 5–10 美分 。
這確保了,如果一個賣家的吃單來了,它將與我們的買入掛單相匹配,以後我們無論買多少比特幣都不會損失任何費用了。
然後,我們可以做與我們剛才所做的完全相反的事情。在出售方面。 我們查詢當前的賣方價格,並出價比那低幾美分。 這可以確保,如果一個買家的吃單訂單來了,它與我們的賣出掛單匹配。
我們已經獲得了一筆可觀的利潤,大致等於比特幣交易價差 (買賣價差) 乘以我們能夠交易的比特幣數量。
競爭
如果你還是覺得這太容易,反而不真實,那麼你仍然是對的。只要有明顯的盈利機會,交易者就會蜂擁而至,這就造成了競爭。這方面最明顯的例子可以從做市商之間為設定買入價而相互競爭中看出來。
早在 2017 年 12 月,因為競爭太激烈,以至於買方價格通常每秒變化多次, 通常只會增加 1 或 2 美分,因為交易員之間相互爭鬥,以最大化他們設定買入價格的時間,同時也希望儘可能低價。
最初,我的機器人在查詢買方價格之後,往往以高出 1 美分的價格掛買單,儘管看起來很明智,但我發現,當我的訂單通過審核時,我的價格往往比 (不斷變化的) 買方價格低幾美分。
為了避開這個問題,並確保儘可能多的訂單將擊敗當前的買方價格,我測量了每 100 毫秒買方價格通常會變化多少。 這使得我的機器人能夠提供比買方價高出足夠多的價格(0~5 美分) ,這樣以來,其他交易員就不會在我的訂單處理過程中超過我的價格。
我也開始考慮,價差的大小將如何影響我買單超出買方價格的部分。 正如我們之前看到的,任何交易的利潤都與利差的大小成正比,這使得在價差很大時擊敗買入價格變得更加重要。 也正因為如此,我寫了一個公式,這個公式根據價差的大小,決定我的出價得比買方價格高出多少。
到目前為止,我主要談論的是做市的買入方面,但賣的工作是完全一樣的。 一旦你購買了比特幣,你就想要以 (更高的) 賣價出售它。 在賣價上會有競爭,就像在買價上有競爭一樣,所以你必須提供比當前賣方價格低幾美分的價格來削弱你的競爭對手。
不過,2017 年末 / 2018 年初,賣方價格的競爭通常要少得多。 我認為之所以買家之間的競爭比賣家之間的競爭更激烈,這是因為當時比特幣供不應求。
市場操縱
市場操縱是指交易者為了獲得不公平的優勢而在市場上使用的各種惡意策略。 作為一個不受監管的市場,加密貨幣交易所在市場操縱方面已經成熟(現在仍然如此)。 最常見的操縱形式是所謂的欺騙 —- 僅僅為了改變市場狀況而下單的行為。
怎麼操縱呢?舉個例子,在前面的說明中,買方價格 9900 美元、賣方價格 10000 美元,價差是 100 美元,這是一個很好的市場機會。 然而,如果有人下了一個價格為 9,999.99 美元的買單,那麼價差就會縮小到僅僅 1 美分。 利差太小,使得不可能從做市中獲利,那麼所有的交易活動都會陷入停頓。
買家掛一個低於賣價 1 美分的訂單,本身並不是市場操縱。 事實上,如果你的交易所不收取比特幣掛單費用,這是一個快速有效購買比特幣的方式。 但問題是,每當出現這些買單的時候,它們的量都是最小的 0.00001 比特幣,價值約 10 美分。
做市商之所以會下這麼小的買單,而且恰好低於賣出價的原因十分天才,是因為如果做市商剛剛能夠以買入價買入比特幣,那麼他們就有動機儘快以賣出價賣出比特幣。 他們出售比特幣所需的時間越長,賣出價格變動的風險就越大,他們的利潤也會發生變化。
當然,你可能會說,這段時間價格上漲的可能性和下跌的可能性是一樣的。 做市商並不關心這個,他們的工作不是投機價格,而是儘可能快的進出。
為了阻止價格下跌,並阻止賣方競爭壓低賣方價格,做市商將他們的賣出價定在要價的正下方,並在新的賣出價正下方插入一個 (「假的」) 買入指令。後一個訂單的訂單大小將儘可能小(0.00001 比特幣)。
這有兩個影響:
·沒有其他賣家能打敗那個賣家的要價。 如果你低於要價 1 美分,你就是在買方價格,交易所不允許賣家以低於買方價格/出價的價格掛單。
·它將利差減少到僅僅 1 美分。 當一個做市機器人看到如此小的價差,它可能會暫時關閉,因為沒有利潤可賺。
這第二點是至關重要的,因為它解釋了為什麼當一個欺騙性的買單以剛剛低於賣方價格/要價的價格進入,幾乎所有的市場機器人都關機了。實際上,即使利差看起來只有 1 美分,還是有機會的。
讓我們假設下一個賣家要吃一個 1 比特幣的單。第一個 0.00001 比特幣將以偽造的指令賣給做市商,將該指令撤出交易所之後,下一個 0.99999 比特幣將以新的出價出售給訂單,這個新出價是低於偽造訂單的最高價格。
我對我的機器人做出的最大改進之一是讓它在計算傳播時忽略欺騙訂單。 即使賣出價可能只比買入價高 1 美分,我的機器人也會查看欺騙訂單,找出如果沒有欺騙訂單 (仍可能是 50 美元至 100 美元) 的價差。 如果這個價差大到足以提供一個機會,它就會在欺騙性訂單之後競爭下一個最高價格的買單。 這意味著,當賣家的吃單到來時,價值幾美分的比特幣將被賣給欺騙者,然後剩下的賣給我。
2018 年
2018 年的前幾個月是動蕩不安的。 去年 12 月比特幣升至 2 萬美元後,價格開始下跌。
但這為做市商提供了巨大的機會。 買賣雙方的高交易量(這意味著更多的吃單),大大增加了一個有效率的做市商每天可以執行的交易量。
然而,這一時期的機會相對來說是短暫的。 在 1 月和 2 月的瘋狂之後,成交量開始枯竭,意味著獲利機會減少。 儘管交易量下降,但隨著新的機器人進入交易所,做市商的數量不斷增加。
交易所的做市商越多,買賣價格的競爭就越激烈,價差進而收窄了。 額外的競爭對手也意味著,訂單通常會在較短的時間內以買方價格出價,因為一旦你提交了訂單,就會有更多的競爭對手準備出價高於你。
由於競爭的加劇和盈利機會的減少,我在 3 月份關閉了所有的機器人,從那以後再也沒有重啟過。許多交易所提高了做市商的費用,這阻止了我重返做市商行列的步伐,但對於那些足夠聰明、能夠把握時機的人來說,仍然有機會。
總而言之,我在 2017 年 12 月到 2018 年 3 月間交易價值約 5000 萬美元的比特幣,投資回報率為 20.2。
冷萃財經原創,作者:Awing,轉載請註明出處:https://www.lccjd.top/2019/06/27/%e6%9c%ba%e5%99%a8%e4%ba%ba%e5%a4%a7%e6%88%98%ef%bc%9a%e5%81%9a%e5%b8%82%e5%95%86%e5%a6%82%e4%bd%95%e5%9c%a8%e5%8a%a0%e5%af%86%e8%b4%a7%e5%b8%81%e4%ba%a4%e6%98%93%e6%89%80%e5%a5%97%e5%88%a9%ef%bc%9f/?variant=zh-tw
文章評論