我對(duì)“冰山算法”剛好有一些了解,可以給大家講講。很多人對(duì)“量化交易”的理解實(shí)在太過(guò)片面,基本上把它等同于生錢(qián)工具,我不贊同這種觀點(diǎn)。交易首先是交易本身,有它自身的經(jīng)濟(jì)學(xué)意義,忽略這一點(diǎn)而單純把它看成使錢(qián)增值的工具,很容易就會(huì)迷失本心。
我也不認(rèn)為算法本身有什么稀奇,再好的算法也是死的,真正的核心價(jià)值一定是掌握和使用算法的人。實(shí)際上我講的東西也都是公開(kāi)的信息,但是即便了解了技術(shù)細(xì)節(jié),能真正做好的人也寥寥無(wú)幾。
希望這個(gè)回答可以讓你對(duì)量化和高頻交易有一個(gè)更清醒的認(rèn)識(shí)。
首先我相信不少人概念里的高頻交易還是這個(gè)樣子的:
.jpg)
但對(duì)高頻交易來(lái)說(shuō),這種信息是非常粗糙的。所以這里先要對(duì)不熟悉背景的同學(xué)介紹一下什么叫做Order Book?,F(xiàn)在主流的交易所一般都使用Order Book進(jìn)行交易,交易所在內(nèi)部的Order Book上記錄所有買(mǎi)家和賣(mài)家的報(bào)價(jià),比如像這樣:
.jpg)
Bid表示買(mǎi)家,Offer表示賣(mài)家,這張報(bào)價(jià)單表示買(mǎi)賣(mài)雙方發(fā)出的所有報(bào)價(jià)單(Limit Order)。這張表才是高頻交易最關(guān)心的信息。任意時(shí)刻,買(mǎi)家的出價(jià)總是低于賣(mài)家(比如這里的98對(duì)101)。所以報(bào)價(jià)雖然一直在變化,但是只有報(bào)價(jià)是不會(huì)有任何成交的。
什么時(shí)候會(huì)產(chǎn)生交易呢?有兩種情況,第一是任一方發(fā)出市價(jià)單(Market Order),比如一個(gè)買(mǎi)家發(fā)出一張單量為10的市價(jià)單,就可以買(mǎi)到賣(mài)方在101價(jià)格上掛的10份,這個(gè)交易成功之后,Order Book會(huì)變成這樣:
.jpg)
第二是發(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ā)給所有人,所以所有的買(mǎi)家和賣(mài)家都可以自己維護(hù)一個(gè)同樣的數(shù)據(jù)結(jié)構(gòu),相當(dāng)于交易所Order Book的鏡像。通過(guò)跟蹤分析自己手里這份的鏡像變化,來(lái)制定交易策略,是高頻交易算法的核心思想。
基礎(chǔ)知識(shí)介紹完畢,下面為了方便大家理解,我采用一種更形象的方式來(lái)表示Order Book:
.jpg)
這張圖對(duì)應(yīng)文章開(kāi)始時(shí)的那個(gè)Order Book,應(yīng)該可以明白地看出,橫軸表示價(jià)格,縱軸表示訂單量,綠色表示買(mǎi)家,紅四表示賣(mài)家。這樣做的目的是為了引出本篇討論的主題:冰山訂單。
通過(guò)上述基本分析大家可以看出,交易所內(nèi)的交易數(shù)據(jù)是完全公開(kāi)的,市場(chǎng)上任意時(shí)刻,有誰(shuí)想要買(mǎi)/賣(mài)多少,所有人一目了然,沒(méi)有任何秘密。這樣做本身是有經(jīng)濟(jì)學(xué)意義的,因?yàn)橹挥姓故境鲑I(mǎi)賣(mài)的需求,才會(huì)吸引潛在的商家來(lái)交易,所以在市場(chǎng)上一定程度的公開(kāi)自己的需求是必要的。但這樣同時(shí)帶來(lái)一個(gè)嚴(yán)重的后果,一旦有某個(gè)人想要大量買(mǎi)/賣(mài),他所發(fā)出的巨額限價(jià)單會(huì)直接展示給所有人。比如一個(gè)買(mǎi)家掛出巨額買(mǎi)單后,Order Book會(huì)像這樣:
.jpg)
這對(duì)他非常不利,因?yàn)樗腥硕紩?huì)利用這個(gè)信息來(lái)跟他做對(duì)。大家會(huì)判斷,現(xiàn)在市場(chǎng)上存在大量的買(mǎi)壓,于是會(huì)出現(xiàn)一大批為了賺錢(qián)而沖進(jìn)來(lái)的人搶購(gòu),價(jià)格會(huì)快速上升,這樣原來(lái)這個(gè)人可以在98這個(gè)價(jià)位買(mǎi)到的東西,很快就變得要在更高的價(jià)位上才能買(mǎi)到。這種情況,那些后來(lái)的人做的就是Front running,而原來(lái)的那個(gè)人則面對(duì)逆向選擇風(fēng)險(xiǎn)。
為了解決這個(gè)問(wèn)題,交易所提供了一種針對(duì)性的工具,就是所謂的冰山訂單(Iceberg Order)。這種訂單可以很大,但只有一小部分是公開(kāi)出來(lái)的,大部分則隱藏起來(lái),除了交易所和發(fā)單者本人誰(shuí)也看不到,真的像一座“冰山”一樣。比如像這樣:
.jpg)
灰色的部分就是冰山訂單隱藏的部分。這樣,只有當(dāng)有對(duì)應(yīng)隱藏量的交易發(fā)生時(shí),交易所才會(huì)通知其他人,就避免了別人利用顯示訂單的信息來(lái)做Front running。
凡事有一利必有一弊。冰山訂單雖然保護(hù)了發(fā)單者的利益,但是對(duì)于其他市場(chǎng)參與者來(lái)說(shuō)卻又變成了一種不公平的規(guī)則。那些有真實(shí)的交易需求的參與者,會(huì)因?yàn)閷?duì)局勢(shì)的誤判而損失慘重。所以接下來(lái)的問(wèn)題就變成,如何發(fā)現(xiàn)市場(chǎng)上的冰山訂單?
首先有一種最簡(jiǎn)單的方法。有的時(shí)候,冰山訂單是掛在較優(yōu)買(mǎi)價(jià)和賣(mài)價(jià)之間(spread),像這樣:
.jpg)
對(duì)于這種情況,有一個(gè)非常簡(jiǎn)單的探測(cè)方法,即發(fā)一個(gè)最小額度的限價(jià)單在spread里,緊跟著取消這個(gè)訂單。比如這個(gè)例子中,發(fā)出一個(gè)賣(mài)價(jià)為99的限價(jià)單然后取消。因?yàn)檫@個(gè)價(jià)格本身對(duì)不上顯式的買(mǎi)價(jià)(98),如果沒(méi)有冰山單的存在,一定不會(huì)成交。但有冰山單的情況下,一旦交易所收到這個(gè)賣(mài)單,會(huì)立刻成交冰山單中對(duì)應(yīng)的量,而之后的取消指令就無(wú)效了。這樣,以一種微小的成本,就可以發(fā)現(xiàn)市場(chǎng)中隱藏著的訂單。事實(shí)上,的確有人會(huì)做這種事情,頻繁的發(fā)單然后取消,在較優(yōu)價(jià)差之間形成一種高頻擾動(dòng),用來(lái)探測(cè)隱藏單。
為了應(yīng)對(duì)這種擾動(dòng)探測(cè),大家一般都不會(huì)直接掛單在spread里。而是會(huì)像之前那樣和普通的限價(jià)單掛在一起,這樣發(fā)生交易之后,你就很難推測(cè)消耗掉的究竟是正常的限價(jià)單,還是冰山訂單。那么應(yīng)該怎么做呢?
首先有一個(gè)直接的思路。冰山訂單的存在,一定程度上反映了掛單人對(duì)市場(chǎng)情況的解讀,認(rèn)為有必要使用冰山訂單而做出的判斷。需要強(qiáng)調(diào)的是,使用冰山訂單并不是沒(méi)有代價(jià)的,因?yàn)槟汶[藏了真實(shí)的需求,在屏蔽掉潛在的攻擊者的同時(shí),也屏蔽掉了真正的交易者!而且會(huì)使得成交時(shí)間顯著增加--因?yàn)闆](méi)人知道你想買(mǎi)/賣(mài)這么多,你只能慢慢等待對(duì)手盤(pán)的出現(xiàn)。所以當(dāng)有人下決定發(fā)出冰山訂單的時(shí)候,也會(huì)有對(duì)市場(chǎng)情況的考慮,只有合適的時(shí)機(jī)才會(huì)做這種選擇。
什么是合適的時(shí)機(jī)?有一些數(shù)據(jù)應(yīng)該是相關(guān)的,比如買(mǎi)賣(mài)價(jià)差spread,買(mǎi)單量對(duì)賣(mài)單量的比值等。對(duì)這些數(shù)據(jù),你可以在歷史數(shù)據(jù)上做回歸分析,建立起他們和冰山訂單之間的線性/非線性模型。通過(guò)歷史數(shù)據(jù)訓(xùn)練出來(lái)的這個(gè)模型,就可以作為你在實(shí)時(shí)交易時(shí)使用的冰山訂單探測(cè)器。這是 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ò)之類(lèi)的高級(jí)模型,但基本思路是一致的:通過(guò)盤(pán)口分析計(jì)算存在冰山訂單的概率。
上面說(shuō)的這個(gè)方法,看起來(lái)很高級(jí),實(shí)際效果如何呢?我想大家也看出來(lái)了,這種建模不是很精確。作為事后分析手段用來(lái)說(shuō)明什么情況下可能會(huì)出現(xiàn)冰山訂單還不錯(cuò),但是作為實(shí)時(shí)交易的探測(cè)器就不是很放心。因?yàn)槭褂玫男畔⑻:?,而且說(shuō)到底建模的對(duì)象只是一種相關(guān)性,沒(méi)有什么保證冰山訂單的發(fā)送者一定是按照這個(gè)邏輯出牌的。
所以接下來(lái)介紹的,才是真正具有高頻玩家神采的方法,來(lái)自 Prediction of Hidden Liquidity in the Limit Order Book of GLOBEX Futures 這篇論文。
高頻世界里,有一條永恒的建模準(zhǔn)則值得銘記:先看數(shù)據(jù)再建模。如果你看了上面的介紹就開(kāi)始天馬行空的思考數(shù)學(xué)模型,那基本上是死路一條。我見(jiàn)過(guò)很多年輕人,特別有熱情,一上來(lái)就開(kāi)始做數(shù)學(xué)定義,然后推導(dǎo)偏微分方程,數(shù)學(xué)公式寫(xiě)滿(mǎn)一摞紙,最后一接觸數(shù)據(jù)才發(fā)現(xiàn)模型根本行不通,這是非常遺憾的。
而看了數(shù)據(jù)的人會(huì)怎么樣呢?他很可能會(huì)發(fā)現(xiàn),對(duì)于冰山訂單的處理,交易所的規(guī)則是非常值得尋味的。有的交易所是這樣做的:一個(gè)冰山訂單包含兩個(gè)參數(shù),V表示訂單總量,p表示公開(kāi)顯示的量。比如V=100,p=10的冰山單,實(shí)際上隱藏的量是90。如果有針對(duì)這個(gè)訂單的交易發(fā)生,比如交易量20,交易所會(huì)順序發(fā)出三條信息:
1.成交10
2.Order Book的Top bid size -10
3.新Bid +10
這三條信息一定會(huì)連續(xù)出現(xiàn),并且第三條和第一條的時(shí)差dt很小。
因此,一旦在數(shù)據(jù)中觀察到這個(gè)規(guī)律,我們就可以非常有把握的判定市場(chǎng)中存在冰山訂單,并且連p的值都可以確定!接下來(lái)的關(guān)鍵問(wèn)題是,如何確定V的值,即判斷這個(gè)冰山訂單的剩余存量有多少?
這個(gè)問(wèn)題從本質(zhì)上說(shuō)沒(méi)法精確求解,因?yàn)閂和p都是由下單人自己決定的,可以是任意值。但可以從兩點(diǎn)考慮:第一,兩個(gè)值都是整數(shù);第二,人類(lèi)不是完美的隨機(jī)數(shù)生成器,下決定會(huì)遵循一定規(guī)律。
從這兩點(diǎn)出發(fā),可以對(duì)V和p建立概率模型,即計(jì)算一個(gè)給定的(V,p)值組合出現(xiàn)的概率是多少?這里不去深入探討數(shù)學(xué)分析,感興趣的朋友可以自己去看原文。簡(jiǎn)單說(shuō),可以在歷史數(shù)據(jù)上通過(guò)kernel estimation技術(shù)來(lái)估算他們的概率密度函數(shù)的形狀。順帶一提,如果你親手編寫(xiě)過(guò)這種估算程序,就會(huì)理解我為什么在“要想成為一名優(yōu)秀的 Quant 需要什么樣的編程水平?”這個(gè)答案中如此強(qiáng)調(diào)編程的重要性。一個(gè)可能的概率密度函數(shù)的樣子是這樣的:
.jpg)
這樣,當(dāng)你在實(shí)時(shí)數(shù)據(jù)中觀測(cè)到一個(gè)p的值時(shí),就可以得出對(duì)應(yīng)的V值的條件概率密度函數(shù),即上圖的一個(gè)切面,比如(p = 8):

接下來(lái)顯然就很容易計(jì)算V最可能是什么值了。這條函數(shù)曲線還有一個(gè)重要的作用是幫助你動(dòng)態(tài)評(píng)估剩余存量,比如當(dāng)你觀察到已經(jīng)有5份p被消耗掉,即可推出V>=40,由上圖即可推出新的V值和剩余存量(V-5p)。
綜上,算法的核心在于,通過(guò)在實(shí)時(shí)數(shù)據(jù)中監(jiān)測(cè)短時(shí)間內(nèi)連續(xù)出現(xiàn)的三條相關(guān)記錄判斷冰山訂單的存在,而對(duì)冰山訂單的量化則通過(guò)由歷史數(shù)據(jù)訓(xùn)練出的概率模型來(lái)完成。
相信你也會(huì)看出,這種算法并不是什么作弊神器。它只是利用市場(chǎng)上的公開(kāi)數(shù)據(jù)所做的一種推測(cè)。而且這個(gè)推測(cè)也僅僅是基于概率的,更多的應(yīng)該是作為一種參考。它對(duì)做市商這種流動(dòng)性提供者很有意義,可以使他們避免因?yàn)閷?duì)局勢(shì)的誤判而遭受損失。但如果你想用它來(lái)作為一種攻擊手段,覺(jué)得自己能發(fā)現(xiàn)隱藏大單而去Front run,那實(shí)在是很不明智的選擇。
最后,這種算法也只是針對(duì)特定的交易所。其他的交易所也許不會(huì)采用同樣的冰山訂單處理方式。所以真正有價(jià)值的是這種從實(shí)際數(shù)據(jù)出發(fā)的建模思路,具體的算法并不值錢(qián)。
這個(gè)小算法給你展示了高頻交易領(lǐng)域的“冰山一角”。它看起來(lái)也許不算很復(fù)雜,但是我卻很喜歡。因?yàn)樗逦卣故玖耸裁唇凶鱿扔兴悸?,再有量化。因?yàn)橛?ldquo;冰山訂單”這樣一個(gè)從經(jīng)濟(jì)學(xué)基本的供需關(guān)系出發(fā)的真實(shí)需求,通過(guò)分析實(shí)際數(shù)據(jù)找到一絲線索,最后通過(guò)數(shù)學(xué)模型刻畫(huà)出定量的策略,這才是漂亮的策略研發(fā)。
如果違背這個(gè)原則,一上來(lái)就去搬各種高級(jí)的模型去套數(shù)據(jù),指望模型自動(dòng)給你生成交易信號(hào),這在我看來(lái)無(wú)異于癡人說(shuō)夢(mèng)。遺憾的是,這個(gè)夢(mèng)的確太過(guò)誘人,而這個(gè)世界也從來(lái)不缺少莽夫。
量化金融分析師(簡(jiǎn)稱(chēng)AQF,Analyst of Quantitative Finance)由量化金融標(biāo)準(zhǔn)委員會(huì)(Standard Committee of Quantitative Finance,SCQF)主考并頒證,是代表量化金融領(lǐng)域的專(zhuān)業(yè)水平證書(shū)。 >>>點(diǎn)擊咨詢(xún)AQF證書(shū)含金量
.png)
課程適合人群:
金融工程/數(shù)學(xué)專(zhuān)業(yè)背景的同學(xué)/工作人士,希望進(jìn)一步學(xué)習(xí)Python編程以及在量化投資的實(shí)戰(zhàn)應(yīng)用;
非金融工程專(zhuān)業(yè)背景的同學(xué)/工作人士,希望迅速成為寬客;
金融相關(guān)人員,希望學(xué)習(xí)如何系統(tǒng)的做量化策略;
個(gè)人投資者,希望系統(tǒng)學(xué)習(xí)掌握量化投資相關(guān)的實(shí)務(wù)技能,從模型開(kāi)發(fā),回測(cè),策略改進(jìn),搭建穩(wěn)定的量化交易系統(tǒng)。
量化金融分析師AQF核心課程體系:
1、《量化投資基礎(chǔ)》
主要涵蓋了量化投資領(lǐng)域的必備知識(shí),包括:基本面分析、技術(shù)分析、數(shù)量分析、固定收益、資產(chǎn)組合管理、權(quán)益、另類(lèi)投資等內(nèi)容。
2、《Python語(yǔ)言編程基礎(chǔ)》
包含了Python環(huán)境搭建、基礎(chǔ)語(yǔ)法、變量類(lèi)型、基本函數(shù)、基本語(yǔ)句、第三方庫(kù)、金融財(cái)務(wù)實(shí)例等內(nèi)容。旨在為金融財(cái)經(jīng)人提供最需要的編程方法。
3、《基于Python的經(jīng)典量化投資策略》
包含了最富盛名,最基本的量化交易思想和交易策略。例如:海龜交易模型、Logistics模型、配對(duì)交易模型、波動(dòng)擴(kuò)張模型、Alpha模型、機(jī)器學(xué)習(xí)(隨機(jī)森林模型、主成分分析)、深度學(xué)習(xí)(人工神經(jīng)網(wǎng)絡(luò))等內(nèi)容。
4、《量化交易系統(tǒng)設(shè)計(jì)》
旨在學(xué)習(xí)量化交易系統(tǒng)的具體知識(shí),包括過(guò)濾器,進(jìn)入信號(hào),退出信號(hào),倉(cāng)位管理等詳細(xì)內(nèi)容,并指導(dǎo)學(xué)員設(shè)計(jì)涵蓋個(gè)人交易哲學(xué)的量化交易系統(tǒng)。
5、《量化實(shí)盤(pán)交易》
旨在為解決實(shí)際量化交易策略搭建過(guò)程中的一些問(wèn)題提供較優(yōu)解決方案。 >>>點(diǎn)擊咨詢(xún)AQF相關(guān)問(wèn)題
掌握Python及量化投資技能,我們能做什么?
1、熟悉中國(guó)主要金融市場(chǎng)及交易產(chǎn)品的交易機(jī)制;
2、熟知國(guó)內(nèi)外期貨交易、股市交易的異同點(diǎn)和內(nèi)在運(yùn)行機(jī)制;
3、掌握經(jīng)典量化交易策略細(xì)節(jié)及其背后的交易哲學(xué);
4、掌握金融、編程和建模知識(shí)基礎(chǔ),擁有量化交易實(shí)盤(pán)操作能力;
5、具備獨(dú)立自主地研發(fā)新量化交易策略的能力;
6、掌握量化交易模型設(shè)計(jì)的基本框架,以及風(fēng)險(xiǎn)管理和資產(chǎn)組合理論的實(shí)際運(yùn)用;
7、掌握從策略思想——策略編寫(xiě)——策略實(shí)現(xiàn)餓完整量化投資決策過(guò)程;具備量化投資實(shí)戰(zhàn)交易能力。 >>>需要試聽(tīng)AQF課程的點(diǎn)我咨詢(xún)
更多內(nèi)容推薦閱讀:
2019年量化金融分析師(AQF)全國(guó)統(tǒng)一考試報(bào)名簡(jiǎn)章
Wind、Excel和Python三大金融技能兼修,下一個(gè)金融分析大神就是你
金程推薦: AQF培訓(xùn) AQF培訓(xùn)機(jī)構(gòu) AQF是什么意思
咨詢(xún)電話(huà):400-700-9596
AQF考友群:760229148
金融寬客交流群:801860357
微信公眾號(hào):量化金融分析師
原文鏈接:
https://www.zhihu.com/question/23667442/answer/28965906
文/圖:董可人 來(lái)源:知乎




