讓程序化交易真正進(jìn)入公眾視野的是兩年前震驚全市場的光大證券烏龍指”事件,當(dāng)時(shí)滬指在一分鐘之內(nèi)拉升超過5%,原因正是這家券商ETF套利的高頻交易程序出現(xiàn)了訂單生成和執(zhí)行的錯(cuò)誤。
從中國金融期貨交易所的“7·31新政”,到滬深交易所連續(xù)公布對(duì)三批次賬戶采取限制交易措施,再到近日融券“T+0”交易改為“T+1”,監(jiān)管層對(duì)程序化交易連續(xù)展開圍剿。尤其是中金所7月31日出臺(tái)的收取申報(bào)費(fèi)措施,對(duì)程序化交易者可謂滅頂之災(zāi)。待到融券交易從“T+0”改為“T+1”時(shí),一些程序化交易者甚至已經(jīng)麻木了。
本文來源于知乎,是知乎用戶“董可人”于2014年8月對(duì)“高頻交易都有哪些著名的算法?”問題的回答,時(shí)至今日,正好是一年。我們?cè)賮砜催@個(gè)回答,或許會(huì)有不一樣的理解和收獲。
對(duì)題目中提到的“冰山算法”,我剛好有一些了解,可以給大家講講。很多人對(duì)“量化交易”的理解實(shí)在太過片面,基本上把它等同于生錢工具,我不贊同這種觀點(diǎn)。交易首先是交易本身,有它自身的經(jīng)濟(jì)學(xué)意義,忽略這一點(diǎn)而單純把它看成使錢增值的數(shù)字游戲,很容易就會(huì)迷失本心。
我也不認(rèn)為算法本身有什么稀奇,再好的算法也是死的,真正的核心價(jià)值一定是掌握和使用算法的人。實(shí)際上我講的東西也都是公開的信息,但是即便了解了技術(shù)細(xì)節(jié),能真正做好的人也寥寥無幾。
希望這個(gè)回答可以讓你對(duì)量化和高頻交易有一個(gè)更清醒的認(rèn)識(shí)。
首先我相信不少人概念里的高頻交易還是這個(gè)樣子的:
但對(duì)高頻交易來說,這種信息是非常粗糙的。所以這里先要對(duì)不熟悉背景的同學(xué)介紹一下什么叫做Order Book?,F(xiàn)在主流的交易所一般都使用Order Book進(jìn)行交易,交易所在內(nèi)部的Order Book上記錄所有買家和賣家的報(bào)價(jià),比如像這樣:
Bid表示買家,Offer表示賣家,這張報(bào)價(jià)單表示買賣雙方發(fā)出的所有報(bào)價(jià)單(Limit Order)。這張表才是高頻交易最關(guān)心的信息。任意時(shí)刻,買家的出價(jià)總是低于賣家(比如這里的98對(duì)101)。所以報(bào)價(jià)雖然一直在變化,但是只有報(bào)價(jià)是不會(huì)有任何成交的。
什么時(shí)候會(huì)產(chǎn)生交易呢?有兩種情況,第一是任一方發(fā)出市價(jià)單(Market Order),比如一個(gè)買家發(fā)出一張單量為10的市價(jià)單,就可以買到賣方在101價(jià)格上掛的10份,這個(gè)交易成功之后,Order Book會(huì)變成這樣:
第二是發(fā)出一個(gè)價(jià)格等于對(duì)方最優(yōu)報(bào)價(jià)的限價(jià)單,也會(huì)產(chǎn)生和上述情況相同的結(jié)果。
需要強(qiáng)調(diào)的是,雖然真正的Order Book只存在于交易所內(nèi)部,所有交易都在交易所內(nèi)完成,但是交易所會(huì)把每筆報(bào)價(jià)和市價(jià)單都轉(zhuǎn)發(fā)給所有人,所以所有的買家和賣家都可以自己維護(hù)一個(gè)同樣的數(shù)據(jù)結(jié)構(gòu),相當(dāng)于交易所Order Book的鏡像。通過跟蹤分析自己手里這份的鏡像變化,來制定交易策略,是高頻交易算法的核心思想。
基礎(chǔ)知識(shí)介紹完畢,下面為了方便大家理解,我采用一種更形象的方式來表示Order Book:
這張圖對(duì)應(yīng)文章開始時(shí)的那個(gè)Order Book,應(yīng)該可以明白地看出,橫軸表示價(jià)格,縱軸表示訂單量,綠色表示買家,紅四表示賣家。這樣做的目的是為了引出本篇討論的主題:冰山訂單。
通過上述基本分析大家可以看出,交易所內(nèi)的交易數(shù)據(jù)是完全公開的,市場上任意時(shí)刻,有誰想要買/賣多少,所有人一目了然,沒有任何秘密。這樣做本身是有經(jīng)濟(jì)學(xué)意義的,因?yàn)橹挥姓故境鲑I賣的需求,才會(huì)吸引潛在的商家來交易,所以在市場上一定程度的公開自己的需求是必要的。但這樣同時(shí)帶來一個(gè)嚴(yán)重的后果,一旦有某個(gè)人想要大量買/賣,他所發(fā)出的巨額限價(jià)單會(huì)直接展示給所有人。比如一個(gè)買家掛出巨額買單后,Order Book會(huì)像這樣:
這對(duì)他非常不利,因?yàn)樗腥硕紩?huì)利用這個(gè)信息來跟他做對(duì)。大家會(huì)判斷,現(xiàn)在市場上存在大量的買壓,于是會(huì)出現(xiàn)一大批為了賺錢而沖進(jìn)來的人搶購,價(jià)格會(huì)快速上升,這樣原來這個(gè)人可以在98這個(gè)價(jià)位買到的東西,很快就變得要在更高的價(jià)位上才能買到。這種情況,那些后來的人做的就是Front running,而原來的那個(gè)人則面對(duì)逆向選擇風(fēng)險(xiǎn)。
為了解決這個(gè)問題,交易所提供了一種針對(duì)性的工具,就是所謂的冰山訂單(Iceberg Order)。這種訂單可以很大,但只有一小部分是公開出來的,大部分則隱藏起來,除了交易所和發(fā)單者本人誰也看不到,真的像一座“冰山”一樣。比如像這樣:
灰色的部分就是冰山訂單隱藏的部分。這樣,只有當(dāng)有對(duì)應(yīng)隱藏量的交易發(fā)生時(shí),交易所才會(huì)通知其他人,就避免了別人利用顯示訂單的信息來做Front running。
凡事有一利必有一弊。冰山訂單雖然保護(hù)了發(fā)單者的利益,但是對(duì)于其他市場參與者來說卻又變成了一種不公平的規(guī)則。那些有真實(shí)的交易需求的參與者,會(huì)因?yàn)閷?duì)局勢的誤判而損失慘重。所以接下來的問題就變成,如何發(fā)現(xiàn)市場上的冰山訂單?
首先有一種最簡單的方法。有的時(shí)候,冰山訂單是掛在最優(yōu)買價(jià)和賣價(jià)之間(spread),像這樣:
對(duì)于這種情況,有一個(gè)非常簡單的探測方法,即發(fā)一個(gè)最小額度的限價(jià)單在spread里,緊跟著取消這個(gè)訂單。比如這個(gè)例子中,發(fā)出一個(gè)賣價(jià)為99的限價(jià)單然后取消。因?yàn)檫@個(gè)價(jià)格本身對(duì)不上顯式的買價(jià)(98),如果沒有冰山單的存在,一定不會(huì)成交。但有冰山單的情況下,一旦交易所收到這個(gè)賣單,會(huì)立刻成交冰山單中對(duì)應(yīng)的量,而之后的取消指令就無效了。這樣,以一種微小的成本,就可以發(fā)現(xiàn)市場中隱藏著的訂單。事實(shí)上,的確有人會(huì)做這種事情,頻繁的發(fā)單然后取消,在最優(yōu)價(jià)差之間形成一種高頻擾動(dòng),用來探測隱藏單。
為了應(yīng)對(duì)這種擾動(dòng)探測,大家一般都不會(huì)直接掛單在spread里。而是會(huì)像之前那樣和普通的限價(jià)單掛在一起,這樣發(fā)生交易之后,你就很難推測消耗掉的究竟是正常的限價(jià)單,還是冰山訂單。那么應(yīng)該怎么做呢?
首先有一個(gè)直接的思路。冰山訂單的存在,一定程度上反映了掛單人對(duì)市場情況的解讀,認(rèn)為有必要使用冰山訂單而做出的判斷。需要強(qiáng)調(diào)的是,使用冰山訂單并不是沒有代價(jià)的,因?yàn)槟汶[藏了真實(shí)的需求,在屏蔽掉潛在的攻擊者的同時(shí),也屏蔽掉了真正的交易者!而且會(huì)使得成交時(shí)間顯著增加--因?yàn)闆]人知道你想買/賣這么多,你只能慢慢等待對(duì)手盤的出現(xiàn)。所以當(dāng)有人下決定發(fā)出冰山訂單的時(shí)候,也會(huì)有對(duì)市場情況的考慮,只有合適的時(shí)機(jī)才會(huì)做這種選擇。
什么是合適的時(shí)機(jī)?有一些數(shù)據(jù)應(yīng)該是相關(guān)的,比如買賣價(jià)差spread,買單量對(duì)賣單量的比值等。對(duì)這些數(shù)據(jù),你可以在歷史數(shù)據(jù)上做回歸分析,建立起他們和冰山訂單之間的線性/非線性模型。通過歷史數(shù)據(jù)訓(xùn)練出來的這個(gè)模型,就可以作為你在實(shí)時(shí)交易時(shí)使用的冰山訂單探測器。這是 On the Dark Side of the Market: Identifying and Analyzing Hidden Order Placements 這篇論文使用的方法。
基本模型可以定義為:F(spread,bidSize/offerSize,……) = Probability(Iceberg)
如果你想玩高深的,還可以在此基礎(chǔ)上做HMM,SVM,神經(jīng)網(wǎng)絡(luò)之類的高級(jí)模型,但基本思路是一致的:通過盤口分析計(jì)算存在冰山訂單的概率。
上面說的這個(gè)方法,看起來很高級(jí),實(shí)際效果如何呢?我想大家也看出來了,這種建模不是很精確。作為事后分析手段用來說明什么情況下可能會(huì)出現(xiàn)冰山訂單還不錯(cuò),但是作為實(shí)時(shí)交易的探測器就不是很放心。因?yàn)槭褂玫男畔⑻:?,而且說到底建模的對(duì)象只是一種相關(guān)性,沒有什么保證冰山訂單的發(fā)送者一定是按照這個(gè)邏輯出牌的。
所以接下來介紹的,才是真正具有高頻玩家神采的方法,來自 Prediction of Hidden Liquidity in the Limit Order Book of GLOBEX Futures 這篇論文。
高頻世界里,有一條永恒的建模準(zhǔn)則值得銘記:先看數(shù)據(jù)再建模。如果你看了上面的介紹就開始天馬行空的思考數(shù)學(xué)模型,那基本上是死路一條。我見過很多年輕人,特別有熱情,一上來就開始做數(shù)學(xué)定義,然后推導(dǎo)偏微分方程,數(shù)學(xué)公式寫滿一摞紙,最后一接觸數(shù)據(jù)才發(fā)現(xiàn)模型根本行不通,這是非常遺憾的。
而看了數(shù)據(jù)的人會(huì)怎么樣呢?他很可能會(huì)發(fā)現(xiàn),對(duì)于冰山訂單的處理,交易所的規(guī)則是非常值得尋味的。有的交易所是這樣做的:一個(gè)冰山訂單包含兩個(gè)參數(shù),V表示訂單總量,p表示公開顯示的量。比如V=100,p=10的冰山單,實(shí)際上隱藏的量是90。如果有針對(duì)這個(gè)訂單的交易發(fā)生,比如交易量10,交易所會(huì)順序發(fā)出三條信息:
成交10
Order Book的Top bid size -10
新Bid +10
這三條信息一定會(huì)連續(xù)出現(xiàn),并且第三條和第一條的時(shí)差dt很小。這樣做的原因是盡管冰山訂單存在隱藏量,但是每次的交易只能對(duì)顯示出的量(p)發(fā)生,p被消耗掉以后,才會(huì)從剩余的隱藏量中翻新出一分新的p量。這樣,每個(gè)人從交易所收到的信息仍然可以在邏輯上正確的更新Order Book,就好像冰山訂單并不存在一樣。
因此,一旦在數(shù)據(jù)中觀察到這個(gè)規(guī)律,我們就可以非常有把握的判定市場中存在冰山訂單,并且連p的值都可以確定!接下來的關(guān)鍵問題是,如何確定V的值,即判斷這個(gè)冰山訂單的剩余存量有多少?
這個(gè)問題從本質(zhì)上說沒法精確求解,因?yàn)閂和p都是由下單人自己決定的,可以是任意值。但可以從兩點(diǎn)考慮:第一,兩個(gè)值都是整數(shù);第二,人類不是完美的隨機(jī)數(shù)生成器,下決定會(huì)遵循一定規(guī)律。
從這兩點(diǎn)出發(fā),可以對(duì)V和p建立概率模型,即計(jì)算一個(gè)給定的(V,p)值組合出現(xiàn)的概率是多少?這里不去深入探討數(shù)學(xué)分析,感興趣的朋友可以自己去看原文。簡單說,可以在歷史數(shù)據(jù)上通過kernel estimation技術(shù)來估算他們的概率密度函數(shù)的形狀。順帶一提,如果你親手編寫過這種估算程序,就會(huì)理解我為什么在“要想成為一名優(yōu)秀的 Quant 需要什么樣的編程水平?”這個(gè)答案中如此強(qiáng)調(diào)編程的重要性。在數(shù)據(jù)上估算出來的概率密度函數(shù)可能會(huì)是這樣的:
這樣,當(dāng)你在實(shí)時(shí)數(shù)據(jù)中觀測到一個(gè)p的值時(shí),就可以得出對(duì)應(yīng)的V值的條件概率密度函數(shù),即上圖的一個(gè)切面,比如(p = 8):
接下來顯然就很容易計(jì)算V最可能是什么值了。這條函數(shù)曲線還有一個(gè)重要的作用是幫助你動(dòng)態(tài)評(píng)估剩余存量,比如當(dāng)你觀察到已經(jīng)有5份p被消耗掉,即可推出V>=40,由上圖即可推出新的V值和剩余存量(V-5p)。
綜上,算法的核心在于,通過在實(shí)時(shí)數(shù)據(jù)中監(jiān)測短時(shí)間內(nèi)連續(xù)出現(xiàn)的三條相關(guān)記錄判斷冰山訂單的存在,而對(duì)冰山訂單的量化則通過由歷史數(shù)據(jù)訓(xùn)練出的概率模型來完成。
相信你也會(huì)看出,這種算法并不是什么作弊神器。它只是利用市場上的公開數(shù)據(jù)所做的一種推測。而且這個(gè)推測也僅僅是基于概率的,更多的應(yīng)該是作為一種參考。它對(duì)做市商這種流動(dòng)性提供者很有意義,可以使他們避免因?yàn)閷?duì)局勢的誤判而遭受損失。但如果你想用它來作為一種攻擊手段,覺得自己能發(fā)現(xiàn)隱藏大單而去Front run,那實(shí)在是很不明智的選擇。
最后,這種算法也只是針對(duì)特定的交易所。其他的交易所也許不會(huì)采用同樣的冰山訂單處理方式。所以真正有價(jià)值的是這種從實(shí)際數(shù)據(jù)出發(fā)的建模思路,具體的算法并不值錢。
這個(gè)小算法給你展示了高頻交易領(lǐng)域的“冰山一角”。它看起來也許不算很復(fù)雜,但是我卻很喜歡。因?yàn)樗逦卣故玖耸裁唇凶鱿扔兴悸?,再有量化。因?yàn)橛小氨接唵巍边@樣一個(gè)從經(jīng)濟(jì)學(xué)基本的供需關(guān)系出發(fā)的真實(shí)需求,通過分析實(shí)際數(shù)據(jù)找到一絲線索,最后通過數(shù)學(xué)模型刻畫出定量的策略,這才是漂亮的策略研發(fā)。
如果違背這個(gè)原則,一上來就去搬各種高級(jí)的模型去套數(shù)據(jù),指望模型自動(dòng)給你生成交易信號(hào),這在我看來無異于癡人說夢。遺憾的是,這個(gè)夢的確太過誘人,而這個(gè)世界也從來不缺少莽夫。 責(zé)任編輯:張文慧 |
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān)。本網(wǎng)站對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。
本網(wǎng)站凡是注明“來源:七禾網(wǎng)”的文章均為七禾網(wǎng) levitate-skate.com版權(quán)所有,相關(guān)網(wǎng)站或媒體若要轉(zhuǎn)載須經(jīng)七禾網(wǎng)同意0571-88212938,并注明出處。若本網(wǎng)站相關(guān)內(nèi)容涉及到其他媒體或公司的版權(quán),請(qǐng)聯(lián)系0571-88212938,我們將及時(shí)調(diào)整或刪除。
七禾研究中心負(fù)責(zé)人:劉健偉/翁建平
電話:0571-88212938
Email:57124514@qq.com
七禾科技中心負(fù)責(zé)人:李賀/相升澳
電話:15068166275
Email:1573338006@qq.com
七禾產(chǎn)業(yè)中心負(fù)責(zé)人:果圓/王婷
電話:18258198313
七禾研究員:唐正璐/李燁
電話:0571-88212938
Email:7hcn@163.com
七禾財(cái)富管理中心
電話:13732204374(微信同號(hào))
電話:18657157586(微信同號(hào))
七禾網(wǎng) | 沈良宏觀 | 七禾調(diào)研 | 價(jià)值投資君 | 七禾網(wǎng)APP安卓&鴻蒙 | 七禾網(wǎng)APP蘋果 | 七禾網(wǎng)投顧平臺(tái) | 傅海棠自媒體 | 沈良自媒體 |
? 七禾網(wǎng) 浙ICP備09012462號(hào)-1 浙公網(wǎng)安備 33010802010119號(hào) 增值電信業(yè)務(wù)經(jīng)營許可證[浙B2-20110481] 廣播電視節(jié)目制作經(jīng)營許可證[浙字第05637號(hào)]
技術(shù)支持 本網(wǎng)法律顧問 曲峰律師 余楓梧律師 廣告合作 關(guān)于我們 鄭重聲明 業(yè)務(wù)公告
中期協(xié)“期媒投教聯(lián)盟”成員 、 中期協(xié)“金融科技委員會(huì)”委員單位