標籤:

乾貨:高頻交易在怎麼掙錢?

>>>>寫在前面

2016年7月30日,交易門的主角,高頻交易員李奧應香港受交通大學香港校友總會之邀,做了一場題為《量化金融與高頻交易》的主題分享會。徵得李奧同意,交易門獨家首發這次分享會的內容。本講稿經過李奧修訂,謝謝李奧。

我講的內容會偏IT一點,因為一直都是在做IT。因為我沒有正規學過數學和統計,所以可能看起來不那麼正規,有一些小道消息和自己做交易以後的經驗。

我會講四個類型的交易策略,再大概講講數學和IT方面的東西。

Quantitative Trading,顧名思義可以分為兩個部分,一個是Quantitative,一個是Trading。

Quantitative跟傳統的手工交易相比,很多東西通過模型去量化,而不是靠直覺。Trading就是跟風險控制緊密關聯,不是手工交易,通過程序化來完成。

Quantitative Trading分很多類,講一周一個月都可以。Fundamental部分有一些Long/ Short Equity,有一些 Alpha Strategy。還有一類Pricing Quant,比如做Option Pricing,怎樣去定價。還有一個類型是純的Market Data的Quant。也就是說他只看Price和Volume,在Price和Volume上面做的技術分析,純的Market Data。

高頻交易基本上就用純的Market Data,因為它本身對數據要求高一點。Market Data是時刻在變的,但Fundamental啊,News啊,一般來說不會時時刻刻在變。

什麼是高頻交易?首先是自動化。高頻交易沒有可能用手去做,不在一個時間的水平上,要有很多計算能力,需要強大的計算機,然後是大量的下單,不會像人手一樣,可能每秒,每毫秒,都在交易。

當然這個單也包括很多撤單,大量的報撤單。有的策略撤單很多,可能報了100多萬單,只成交一萬多單。另外就是非常高的速度。還有定義說,需要複雜的演算法——我打個問號,因為有的演算法其實是比較簡單的,並不複雜,可能就是小學數學的水準。

在繼續談論之前,我先介紹幾個時間的概念。我們平時計時,小的單位可能都是以秒,甚至以分鐘記。在秒之下,還有毫秒:千分之一秒。人眨一下眼睛大概就是300毫秒的樣子。上海到深圳的數據傳輸,一個ping大概是30毫秒左右。再往下有微秒,千分之一毫秒,百萬分之一秒。在高頻交易裡面,做一個交易決定大概是10-20微秒,當然可以通過一些硬體的方式做到2個微秒左右。微秒下面還有一個納秒,千分之一微秒。這就太極速了。

比較下:

眨下眼睛,350毫秒;高頻交易做1000個Trade Decision,只用15個毫秒。

我們常說眨眼之間,眨眼之間高頻交易可以做超過一萬次交易決定。所以高頻交易的時間軸是不一樣的,對高頻交易來說,一秒鐘已經太久。

1、下面講講高頻交易的幾個主要策略類型。

做市策略

做市商策略主要目的在市場上提供流動性,去Bid/Ask掛單,讓Bid/Ask收窄,賺取中間的差價。聽起來很簡單,但是有很多模型啊,Risk Control啊,IT上面的軍備競賽啊。

就是說,這裡面的幾個大佬都做得比較好。

裡面有很多東西可以談,比如怎麼去控制你的持倉,你的風險。還要做很多 Prediction。怎樣去Ppredict Volatility和Price。這裡面IT問題非常重要,因為競爭非常激烈。怎麼提供更快的報價,怎樣更快的撤單,都是非常重要的問題。

IT的成本很高,因為大家都在競爭,大家都想更快,從Co- Location,到FPGA,現在微波都上了。競爭很激烈。正是因為門檻很高,所以剩下的幾家都做得不錯。

對於普通投資者來說,做市的存在,讓他買賣的差價更小,是有好處的。

這是去年8月12日我的一個策略在上證50股指期貨的表現。那天整個市場的交易量22.5萬手,我的策略佔到4.1%(9180手),P&L 也還行,Drawdown也比較小。Capital需求也很低,一整天只需要50萬本金,賺了21萬多,收益43.5%。

去年7月份,因為股災,中金所開始在股指期貨上對部分投資者進行限制。可以看到,7月份這幾天Bid/Ask Spread有拉大的跡象,到9月7日,中金所開始對投機戶進行限制,持倉保證金提高至40%,平倉手續費提高至萬分之二十三,單個品種單日開倉交易量不超過10手。市場的成交量降低到不足以前的1%。因為做市策略不好做了,10手做市策略根本沒法玩兒,有的被關掉了。大家可以看到Bid/Ask Spread的陡然變化。

所以做市策略可以增加市場流動性,讓Bid/Ask Spread收窄,買賣量大時不致於有很多滑點。

做市策略需要大概估計一下,什麼是更加合理的價格。股指期貨做市,有人會用一籃子股票去預測股指的合理價格。

統計套利

這裡面每個都是很大的Topic。我只是大概討論下。

統計套利涉及到概率、數據挖掘、建模,交易執行,怎樣做Data Cleaning。

數據挖掘非常重要,這個處理不好有時候是非常頭疼的事情。有一句很經典的話叫做:Garbage in,Garbage out。很多Quant很多時間都花在數據處理上。有時候會發現非常激動人心的結果,回頭髮現數據搞錯了。

一個最簡單的套利模型就是歷史價格的波動率,在兩邊加上一些執行區間。比如奶粉,花100塊錢從香港買,到內地120塊錢賣掉。中間你花了10塊錢路費,最後掙了10塊錢。這就是你的套利空間。

又比如黃金,國內外市場都有標準合約,理論上價值是一樣的,拿出來都是兩塊金條。但是價格會有波動,我們去算這個價差,如果發現它偏離歷史統計區間,譬如Brexit的時候,會發現中國的黃金便宜了,美國的黃金貴了。那我們可以去買入價格偏低的,賣出價格偏高的進行套利。當然,實際操作中,會有流動性等因素造成的影響,這需要一些經驗。

預測

通過過去的市場數據和當前市場環境的比較,預測未來的價格走勢:Price=a+b+c。這個「未來」可以是下一秒,下一分鐘,下一個交易日,下一周,下個月。如果你的模型預測很準的話那就超NB了,不管是下一秒、下一分鐘還是下一周。只要你的模型很有效,就很NB。這不是一個很容易的工作,需要基礎,經驗。這個我也還在學習,沒有太多經驗。

這個基本的過程是先把數據搞好,再搞清楚,到底是哪些因素在影響市場。

你可以很快開始,拿個均線搞一下,可能很快出結果,但你模型的穩定性到底能穩定多久,這都需要去不停的Tuning,不停循環。你去Training、Evaluate這個Model,然後去Optimize你的Factor。

當然現在有很多Factor,有些人的做法就是,扔進去500個Factor。他的模型可以告訴他哪些Factor有用,哪些Factor沒有用,也可以把很高Correlation的Factor自己去除掉。但這個東西,我還在學,我沒有太多經驗。我只是知道有這些做法。

一個Super Simple的——並不是說簡單就不管用,最簡單的一個預測模型,就是價格會回到均線。均線是什麼周期的,自己去琢磨。這個中間的複雜性,大部分來自Data。Model的話,R裡面有很多Package,可以幫你做到還不錯的自動化。很多Indicator可以自動,圖也很有幫助。

Data和Factor都需要不停琢磨。再去套這些Model。

Micro Structure

這個就偏高頻了,一般的Quant可能不會用到。比如股票交易裡面經常聽說支撐位、壓力位,就是簡單的Micro Structure。可能看到這個是支持位,有很多單,很多Bid在那裡。

看一下去年美國的證監會做了一個調查。

Spoofer,在市場里Bluffing的一些Player。本來市場很正常,買單都是10,20,突然有個Player進來說我要買1000。大家都以為有個很大的買單,都去搶著買。股票的走勢從微觀角度來講都是供需關係。買的人多了就會漲上去。有人放個100萬的單,開始往上漲。然後他就開始賣。這個就是Spoofing。美國證監會嚴格定義為操控市場的行為,是違法的。

貼兩個很有意思的鏈接:

How to Catch a Spoofer

bloomberg.com/graphics/

Iceberg Orders

marketdelta.com/blog/20

數學,從我的經驗來講,小學數學和PhD數學都會用到。不要小看小學數學,也會栽很多坑的。高級一點的,像Pricing是很專業的。怎樣去Price一個Interest Rate的Option。

還有Predictive Modelling,這個很廣,可以講很久,很多公司都在用。很多Quant都會做的事情。

高頻的短板就是,容量很小。就好比你給他50萬,他賺20萬。你給他500萬,他可能還是賺20萬。

2、IT

IT。大家都知道「光大烏龍指」事件。另外,騎士資本曾經半小時虧了4.4億美金。程序員升級系統,可能8台生產機,有一台沒有升級,導致有一個錯誤的指令執行了,就不停地交易。關鍵是還交易了30分鐘。我不知道它怎麼做到30分鐘沒有發現的。

這兩個案例就是說,IT很重要,可以讓你虧很多錢(「光大烏龍指」是賺錢了,但被罰了很多錢)。

IT System主要分為上面四個部分。

Price Data相對簡單一點,更多的像Fundamental Data、Unstructured Data就比較複雜一點,需要很多的程序員碼代碼,怎樣去收集、格式化、統一化、Access。作為一個Quant,我就想拿某天的數據去畫個圖出來。我們現在基本上就是這個狀況,很容易就可以拿一堆數據做一堆事情,另一端的Quant就寫很少的代碼。因為我們把很多的數據結構、數據介面都統一化。不管是用C++、C#,還是從Scala,拿這個數據都是同樣的格式,這樣就會很方便。

當然你不能錯,你的容錯和你檢查錯誤的能力也要非常高。之前我們就出現過這樣的情況,回測非常好,天天都賺錢,結果發現數據錯了。非常愚蠢的錯誤。經常發生,相信以後也會發生。不過以後再看到很NB的回測結果,我們會更加懷疑。

這個Execution就是各種API,各種market access,各種風控。在高頻領域,速度是非常重要的。因為很多數據都是公開的,很多人都看得到。當很多人都看到一個機會的時候,只有最快的人可以拿到它。每個市場都有不同的API,也有統一的協議,比如Fix協議,但不一定是每個交易所都支持,但是Fix協議本身也比較慢。高頻的話一般都是C++、FPGA的下單模塊,我們一般都是C++、FPGA。我們現在有小部分策略是放在FPGA上面的,不通過OS。

Back Testing,有時候Quant想出來的東西,可能你的回測系統還不支持,你需要去改回測的框架。

Visualization很重要的。你不能說,給我生成一堆數,看不來的嘛。看到圖更加一目了然。我們花了很多力氣在Scala裡面畫圖,在R裡面畫圖。因為一堆圖和一堆數據解釋是不一樣的。

回測的速度也很重要。比如回測一個策略,一年的數據,你需要一個星期。誰去等一個星期看你的結果啊!一分鐘可能還能接受一點。策略裡面的參數存在一個迭代的過程,比如參數,我想從1試到100看看怎麼樣。你每個測試用5分鐘,優化的時候我可能有10萬個參數需要測試,那就不能等了。

這裡面我們也做了很多優化,比如怎樣去拿數據,怎樣去緩存,在中間提高它的性能。以前,我在上一家公司還做了一些雲計算的嘗試,把一些回測的Engine全部Distribute到很多伺服器上。這樣的話,一個Request過去,有很多機器同時在跑。你可以把它做到互相不影響。每個參數都是獨立的。都可以並行地去計算。

還有一個就是Monitoring。這裡面很多自動化在裡面。又有很多策略。需要人工盯著不太現實。

怎樣去Monitor風險,怎麼樣去Alert,這也是一個很重要的環節。像我們現在的策略都是自動化運行,所有策略的監控,每個策略的風險水平不能超過多少,超過會報警。特別是我們還交易夜盤,讓程序員經常熬夜的話,也不太現實。所以如果有Critical Error,就會直接打電話到手機上。現在我們就會輕鬆很多。

當你交易的品種很多的時候,基本上沒有可能都是人在那裡盯著,所以要做很多監控。

Tick to Oder,我不知道有多少人知道。簡單來講,就是從你看到數據到下單,這中間需要的時間。Tick就是你的市場數據。你看到市場上有個數據,做出某個決策,下單,中間過的時間。這個可能是過於技術的東西了,我就不展開講了。

3、推薦閱讀:

Flash Boys

Quantitative Trading: How to Build Your Own Algorithmic Trading Business

The Quants: How a New Breed of Math Whizzes Conquered Wall Street and Nearly Destroyed It

The Problem of HFT - Collected Writings on High Frequency Trading & Stock Market Structure Reform

Inside the Black Box: A Simple Guide to Quantitative and High Frequency Trading

Algorithmic Trading: Winning Strategies and Their Rationale

Quantitative Trading with R: Understanding Mathematical and Computational Tools from a Quants Perspective

quantstart.com/articles

zhihu.com/publications/

推薦閱讀:

知乎Live拒了我。。。

TAG:财经 | 交易 |