數字貨幣算法交易指南

在本文中,我們將探討加貨幣中交易算法的設計和實現。特別是,我們專注於執行算法,做市商算法和幾個市場微觀結構考慮因素。我們還研究了實踐偏離理論的地方,特別是在處理加密貨幣市場的特性方面。
執行算法
執行算法的目標是將投資組合狀態轉換為不同的狀態,同時最大限度地降低這樣做的成本。例如,如果你希望將BTCUSD曝光率提高1000,你可能不希望立即將市場訂單猛烈的打入BitMEX的交易通道,從而導致大量滑點。相反,你可以考慮通過多個不同交易所的市場和限價訂單組合,慢慢得到你想要的頭寸。
執行算法通常有3層:macrotrader,microtrader和smart router。
macrotrader層將大的初始訂單或父訂單拆分為跨越時間的較小子訂單。這實際上是整個算法的調度部分。VWAP,TWAP和POV是macrotrader算法的常見的簡單示例。通常,有許多不同的市場影響模型可用於設計復雜的macrotrader層。市場影響模型的設計着眼於市場對執行的反應。市場是否會在執行后保持原狀?或者進一步走遠?或者是否會回到某種程度上?兩個最具開創性的市場影響模型是Almgren-Chriss(1999,2000)永久市場影響模型和Obizhaeva-Wang (2013)瞬態市場影響模型。基於此,在實踐中,市場影響並非永久性的,所以Obizhaeva-Wang似乎更符合現實,而且從那時起,已經有許多新模型來解決其不足之處。

延申閱讀:執行算法交易后市場影響力開始衰變 1412.2152.pdf
microtrader層決定每個子訂單,是將其作為市價訂單還是限價訂單執行,如果作為限價訂單,則應指定什么價格。關於microtrader設計的文獻很少,這是因為子訂單的大小通常是整個市場的一小部分,因此怎樣執行它並不重要。然而,數字貨幣市場是不同的,因為流動性非常稀薄,並且即使對於在實踐中的普通尺寸的子訂單,滑點也是非常明顯的。Microtrader的設計通常關注時間和深度,隊列位置以及市場微觀結構的其他特征。市價訂單(如果我們忽略延遲,則與限價訂單相同)可以保證執行,而限價訂單沒有這樣的保證。如果無法保證執行,你可能會落后於macrotrader設置的交易計划。
smart router層決定如何將訂單導向不同的交易所。例如,如果Kraken擁有60%的流動性且GDAX(Coinbase ProPrime)擁有40%的流動性在一些特定的價格水平,那么microtrader應該把訂單分別以百分之60和40的比例導入到Kraken和GDAX交易所。
現在你可以說市場中的套利者和做市商將流動性從一個交易所轉移到另一個交易所,所以如果你在Kraken執行一半的訂單並等待幾秒鍾,那么一些流動性就會從arbers和stat arbers補充到GDAX對Kraken的流動性,你可以以類似的價格完成其余的工作。然而,即使在這種情況下,arbers也會為了自己的利潤而向你收取額外費用,並將自己的對沖費用轉嫁給Kraken的做市費。此外,一些市場參與者發單的數量超過了他們想要在多個交易所進行的規模,並且一旦被止損就會取消超額的規模。
最終,最好擁有自己的本地smart router。此本地smart router還具有針對第三方smart router服務的延遲優勢。在前一種情況下,你可以直接route到交易所,而在后一種情況下,你首先需要向第三方router服務發送消息,然后他們將你的訂單發送到交易所(此外,你必須向第三方支付router費用)。三角形的任意兩條腿的總和大於第三條腿。
做市商算法
做市是指為其他市場參與者提供即時流動性並得到補償。你承擔庫存風險以換取正的預期價值。最終,做市商得到了補償有兩個原因。 首先,市場接受者有很高的時間偏好,並且需要即時性。 作為交換,為流動性提供便利的做市商可以彌補他們較低的時間偏好和耐心。其次,做市商的PnL利潤是左傾的,通常大多數交易者有右傾偏好。換句話說,做市商類似於博彩市場,賭場,保險公司和國家彩票中的博彩公司。他們經常小贏,不經常大輸。作為對這種非預期的的回報利潤,做市商可獲得預期價值的補償。

延申閱讀: 偏態 https://en.wikipedia.org/wiki/Skewness
從一個高級別的角度講,限價訂單是其他市場的免費期權。其余的市場有權但沒有義務以限價訂單的限價買入或賣出資產。在一個信息完全已知的市場中,沒有人會出售免費期權。這是因為市場總體上並不是一個信息完全已知的市場且銷售免費期權永遠不會有意義。另一方面,如果市場信息是完全未知的,那么風險中性的做市商願意以極小的價差出售這些免費限價單期權,因為所有交易都是噪音。顯然,真實市場參與者魚龍混雜,每個參與者都具有獨特的信息已知與未知程度。
在設計做市商算法時,有三種觀點可以考慮:做市商的,市場參與者的和其他做市商的。
做市商自己的觀點以他們的庫存為代表。如果你已經有太多的資產風險,那么你可能會將你的報價降低,反之亦然。你這樣做有兩個不同的原因。首先,作為一個公司,你有一定程度的風險規避(可能少於個人,但你的貨幣效用曲線仍然是凹形的)。
這種效用函數的形狀有許多結構(例如CARA,CRRA,更有HARA等)。其次,作為市場上的被動的流動性提供者,你將面臨逆向選擇風險。積極的流動性接受者可能會知道你沒有的東西,或者只是比你更聰明。這基本上是向市場出售免費期權的問題。
此外,即使在機械操作層面,按市價訂單的市場訂單也會以按市價計價的方式降低價格,同時提高報價的市價訂單會按市價計價。在任何交易的確切時刻,你總是站在錯誤的一邊。除此之外,做市商的報價會產生被動的市場影響。換句話說,將訂單發送到未成交訂單簿中的行為至少會使市場遠離你。

延申閱讀:風險厭惡函數 https://en.wikipedia.org/wiki/Risk_aversion
市場接受者的觀點由訂單流表示。作為深度函數的訂單到達的體積加權頻率應該具有一些關鍵屬性。
該函數應該是:
-
1)遞減,
-
2)凸形(這里的用直覺難以解釋,但在經驗上是明確的),
-
3)隨着深度變為無窮大漸近為0,一些公式需要這種強度函數連續兩次可微分以易於處理,這是一個精細合理的假設,但最終也是不必要的。此外,有關如何計算“從訂單簿的頂部的深度或距離”的不同公式。你通常可以使用一些“合理的中間價格”或每個相應交易方的最佳報價。這兩種方法之間存在不同的權衡,我們不會在這里進行討論。
除此之外,還有一個未知的因素是“公平的中間價格”應該是多少。當發送和撤銷深度訂單時,最佳買價和最佳賣價之間的中間價格易受到噪音價格的影響。
此外,鑒於兩個具有相同訂單簿形狀的案例,后一個訂單簿的最佳出價將表明公平價格低於前一個訂單簿的最佳報價。還有一個問題是訂單簿的歷史是否重要,如果重要,我們應該仔細在價格時間還是交易量時間方面去關注?那么考慮到市場流動的特征,做市商的最佳限價訂單應該放在哪?如果你在訂單簿的頂部收緊深度,你的深度訂單會很豐富,但每次都很少。如果你在訂單簿的底部收緊深度,你的深度訂單會很稀薄,但每次都很多。
這實際上是具有唯一全局最大值的凸優化問題。另一個考慮因素是訂單流量跨時間到達,看起來有點像“泊松過程”(https://zh.wikipedia.org/wiki/泊松過程)。有人認為它更接近“霍克斯進程”(http://jheusser.github.io/2013/09/08/hawkes.html) 此外,做市商試圖捕獲的買賣反彈是均值回歸的最短期版本。由於這種超短期均值回歸是通過局部波動來縮放的,因此做市商在高價時擴大報價是有意義的,並且在成交量較低時收緊報價。

延申閱讀:order arrival intensity with respect to depth (https://arxiv.org/pdf/1204.0148.pdf)

延申閱讀:霍克斯進程 (http://jheusser.github.io/2013/09/08/hawkes.html)
其他做市商的觀點由本訂單簿代表。訂單簿揭示了其他做市商的一些信息。訂單簿頂部附近的買價多於賣價,表明其他做市商更願意出售而不是購買。這些做市商可能已經存在大量的不平衡的庫存積壓,或者他們只是認為價格在短期內更有可能下降而不是上漲。無論是哪種情況,作為做市商,你可以根據圖訂單簿的偏差調整報價。
此外,當做市商互相競爭時,如果價格跳動很小,你經常會看到這種“一分錢價格跳動”行為。做市商通過互相爭奪價格,直到達到一個投降點並且只有一個“優勝者”獲取了優先權。在確定獲勝者之后,亞軍通常會在下一個最佳出價或出價之前回落到前一個價格跳動。如果你丟失了報價優先級,你可能會獲得第二個報價優先級。這導致一個回歸現象,即勝利者現在在亞軍面前退回到一個價格調動並且同一個梯子,兩個攀爬者的游戲重新開始。

延申閱讀:http://parasec.net/transmission/order-book-visualisation/
最后,長期定向的信號可以覆蓋做市算法,其中做市算法的目標不再是保持庫存持平或不變,而是考慮到一些長期目標以及相應的偏差使其成為現實。
速度
速度很重要有兩個主要原因。首先,你可以在取消之前成交訂單簿中的訂單。其次,你可以在訂單被成交之前取消訂單簿中的訂單。換句話說,你想要在訂單成交和撤銷上時刻占有主動權。套利算法(主動)和執行算法(主動)更關心前者,而做市算法(被動)更關心后者。
通常,原則上說,從速度中獲益最多的策略是那些判斷邏輯最簡單的策略。任何復雜的邏輯都必然會減慢往返時間。這些復雜類型的算法策略是交易世界的F1方程式賽車。數據驗證,安全檢查,硬件設置,編排方式等都可能被剝奪,都是為了以利於速度。跳過OMS,EMS和PMS(項目組合管理系統),直接將GPU上的計算邏輯連接到同位的交易所的二進制API接口。一個快速而危險的游戲。
另一類速度敏感類策略,相對統計套利策略,服務器實際位於多個交易所之間,而不是與單個交易所共存。雖然它們不會是來自任何單個交易所的數據最快的,但它們將在任何其他策略之前獲得價格並可以對相關和協整數據采取行動。

延申閱讀:世界上最大的證券交易所的最佳中間交易節點位置(https://www.alexwg.org/publications/PhysRevE_82-056104.pdf)
在速度游戲中,贏家通吃。在最簡單的例子中,如果存在套利機會,那么任何能夠首先獲得套利機會的人都會獲得利潤。第二名得到面包屑,第三名得不到任何東西。收益很可能以冪定律的方式進行分配。(關於冪定律:https://zh.wikipedia.org/wiki/冪定律)
速度游戲也是一場競爭。 一旦每個人都從光纖網絡升級到微波或者激光網絡,大家又都會回到公平的競爭環境中,任何初始優勢都會被商品化。
價格跳動的大小,搶占優先級和隊列位置
大多數匹配訂單的引擎遵循價格優先,然后時間優先(按比例匹配是一種不太常見的替代方案,但我們現在不考慮這些)。在價格更差的限價訂單被執行前,更好的價格會被執行。對於相同價格的限價訂單,之前發送的訂單將在稍后發送的訂單之前執行。
Binance將訂單拆分至最多8位小數。如果交易的價格為.000001,則.00000001的價格為交易的1%。如果交易的價格為.0001,則.00000001的價格為1bps(也就是一跳)。這是一個巨大的差異。在前一種情況下,跳過一個大訂單需要花費一個完整點,因此時間優先級更重要,而在后一種情況下,它要便宜100倍,因此價格優先級更重要。
換句話說,如果你必須支付1%的全額以獲得成交優先權,那么它可能不值得,因為你支付了相對較大的金額,同時增加了被相對較小的數量成交的可能性,而且可能更好的選擇是排隊等候,但如果你只需要支付1個bps來獲得交易優先級,你可以這樣做,因為你減少了相對較小的邊際成本,同時增加了相對較大數量的成交概率。較小的價格跳動有利於價格優先,較大的價格跳動有利於時間優先。
這自然會導致下一個問題:你的隊列位置的價值是多少?(延伸閱讀:https://moallemi.com/ciamac/papers/queue-value-2016.pdf)

訂單簿Deltas
只有兩種方式可以減少訂單簿中訂單的交易數量:要么是被主動撤銷的,要么是被成交的。如果減少是由交易過程引起的,那么除此價格之外的所有其他價格也會因為交易的過程而減少。我們可以通過排列排序這些這些交易記錄,並標記每個減量是因為成交的還是被撤銷的。
直觀地說,交易意味着雙方同意以特定價格進行交易,而取消則意味着一方決定不再願意以特定價格買賣了。因此,從表面上看,我們可能會說,以最佳報價取消是一個非常強烈的信號,表明市場價格將在短期內向下移動,然后是交易價格緊隨其后。
另一方面,訂單簿中的價格開始上升,只有一種可能就是:增加剩余限價訂單的數量。
訂單簿中的增量和減量都顯示市場參與者的私人意願,從而提供短期價格運動的信號。
更好的價格指數和最優交易費用
目前,大多數價格指數都是從多個交易所獲取交易數據並將它們匯總在一起以獲得成交量-加權平均價格。特別是,Tradeblock指數,還會增加交易所權重的處罰機制,因為交易所權重與不活躍以及價格偏離太遠的交易所有密切關系。除此之外,我們還能再改進些什么呢?
在GDAX上,maker手續費為0個基點,taker手續費為30個基點,比如顯示交易價格為$4000/BTC,實際上是賣方賣出價格為$4000/BTC,買家買入價格為$4012/BTC。這筆交易的“合理價格”應該接近$4006/BTC而不是實際顯示的價格。另一方面,由於Bittrex的25bps的費用同時地適用於maker和taker,因此實際價格就是顯示出來的價格。換句話說,$4000/BTC的顯示價格實際上是購買者以$4010/BTC的價格買入,賣家以$3990/BTC的價格賣出,平均價格為顯示價格本身。
因此,從價格發現的角度來看,交易記錄的價格在交易所之間不具有直接可比性,而應該在構建價格指數考慮到以上的情況后進行標准化。當然,這里有一些基於成交量而導致的不同的佣金的復雜因素,比如有的交易所按照成交量的大小來制定和收取taker和maker費。這也暗示了兩個有趣的推論。
首先,價格發現是有限的,在某些方面,同時加強分裂了交易所之間關於maker和taker費用的的不對稱性。假設GDAX的大多數賬戶都是0/30個基點的maker和taker費用等級並且GDAX在其BTCUSD訂單簿上通常有1 penny的差價,那么每筆交易在出價中顯示的價格大約是“公允價值”,比現貨和每筆交易高低15個點內,在這之間的顯示價格約為“公允價值”。因此,在平靜時期的“公允價格”在這兩點之間迅速振盪,而它們之間的價格發現沒有被進一步的細化。

GDAX訂單簿
其次,與生產者和消費者之間的稅收關系一樣,maker和taker之間在費用發生率方面存在一定的等同性。如果你向maker收取相對較多的費用,他們會擴大訂單簿並將一些費用轉嫁給taker。如果你對taker收取的費用相對較多,那么maker就會收緊訂單簿並吸收一些taker的費用。
這里的一個極端的案例是你非常喜歡maker,以至於訂單簿在點差上擠成了價格的一跳(就像我們經常在GDAX上看到的那樣)並且訂單簿變得不能再緊了。基於此,任何額外的費用現在都會成為收入損失而落在交易所本身上。
除了這個極端的例子,我們可以看到在哪一方收取費用並不重要,而重要的是taker和maker費用的總和。最終,與Laffer Curvein稅收政策一樣,交易所面臨收費政策中的收入優化問題。我們可以看到利潤收入與稅收政策相同。如果交易所不收取任何費用,他們就不會收入。如果交易所收取100%的費用,就沒有交易,因此他們也沒有收入。通過一些額外的研究,很明顯,總費用水平的交換收入是具有唯一最大值的凹函數 。

名詞解釋:拉弗曲線(https://en.wikipedia.org/wiki/Laffer_curve)
未完待續
