高頻交易都有哪些著名的演算法?

來源於:巴菲特說「高頻交易並沒有提供流動性」是否屬實?高頻交易究竟能否提供流動性?

高頻交易裡面一個很著名的演算法是冰山演算法(tow the iceberg)

還有沒有其他有名的演算法呢?


高頻交易的演算法非常依賴於所處市場的具體交易細則和交易所的IT架構,所以想要一招吃遍天下肯定是不行的。但其實高頻交易對應的數學比較簡單,更多的是一個速度的比拼。

首先一個高頻交易演算法必須要對市場微結構有非常細緻的認識。
交易所向所有的交易所成員發送的市場數據有很多類型,但大體上分成兩類:
@董可人 介紹的冰山演算法里所用的訂單簿模型,屬於價位訂單簿(level-based order book),也就是說,你從市場訂單里,可以看到每個價位總的訂單量,但看不到具體有多少個訂單。這樣做的交易所有不少,其中最有名的是芝加哥商品交易所(CME)。

借用董哥一張圖。


這樣的市場數據里,你不知道每個價位上究竟有多少訂單,只知道總體的訂單量。

另外一種市場數據是顯示訂單的訂單簿(order-based order book,實在不知道怎麼翻譯了)

這種市場數據里,每個交易成員都能看到每個價位上有多少訂單,每個訂單的大小是多少。

這種市場數據里,每個交易成員都能看到每個價位上有多少訂單,每個訂單的大小是多少。
同時很重要的一點,通過配對交易所回執里的ID和市場數據里的ID,也能在市場數據里看到自己下的訂單。最大的作用就是做成交預測:當你看到市場數據里自己的訂單消失了,即使還沒收到交易所的成交回執,你也知道這個訂單成交了,並且可以第一時間干該乾的事情。要知道,幾十毫秒(甚至微秒)的差別就能決定一次交易的盈利。

大前提說完了。下面開始介紹具體的策略。

在08年之後,合法的高頻交易其實大部分只是兩類策略:

  • 做市:在單一品種上(比如個股)提供流動性,賺取買賣價差
  • 套利:在多個品種上尋找短期的定價偏離

------------------------------------------------------------------------------

沒想到大家這麼熱情,兩天時間就過百贊了。那我就繼續更新了,哈哈。
評論里明顯有同行,對交易所的數據協議研究很深,畢竟對於高頻交易程序來說這是最重要的數據源。答主我也只是略懂一二,有不準確之處還請指教。

在這裡我會給大家做一個基本的介紹,但想真正拿這些方法賺錢,那估計你會發現實操里的坑不要太多。這也是這一行競爭逐漸激烈,並且競爭演變成軍備競賽的原因。你在劉易斯的《閃電小子》這本書里看到的大部分已經不符合現實,但是其中『為了幾微妙縮短延遲,鋪設筆直的光纖』這種事情仍然在發生,而且現在連橫跨大洋的微波網路都已經普及,FPGA也是業內公開的秘密,大家都在為了節約那幾個微秒甚至納秒不惜代價。

首先是做市。做市是個歷史悠久的策略,其實在高頻交易尚未出現,甚至在交易所還是這樣的時候就已經出現了。

做市商的工作就是提供流動性:具體來說,做市商同時掛買單和賣單,賺取其中的差價。
為什麼需要有做市商呢?因為有人想買,有人想賣,但是他們不一定同時出現,也不一定願意等自然的對手方出現,所以他們願意支付一定的錢和做市商做對手方,做市商就賺這麼一點差價。

先來看最單純的個股做市:
假設某股票現在的order book是這樣的:


那麼現在的價格是9.7/10.1。一個圖森破的做市商(不考慮其他風險)會在儘可能靠裡面的價位掛單:

於是最好的買價和最好的賣價都被這個做市商佔領了。

於是最好的買價和最好的賣價都被這個做市商佔領了。
這樣如果有人想立刻買(下市價單,或者下限價單,限價在賣一),做市商的單子是第一個成交的,成交之後做市商就有了倉位。如果股價維持不變,遲早會有人想賣,於是做市商掛在買一的單子也會成交,平倉之後凈賺1塊錢,扣除手續費清算費各種費之後之後怎麼也能剩個5毛吧。

沒錯,和那種一下子就豪擲千萬的對沖基金不一樣,做市商就是一小本生意,每次賺點小錢。
估計你也發現了,這裡的大前提就是『如果股價在做市商持倉期間維持不變』,還有很多小前提(手續費夠低,做市競爭不激烈,沒莊家操縱股價)。

然而這很明顯不是現實的情況。很多時候在你的第一個訂單成交,有了倉位還沒平倉的時候,市場就急轉直下,朝著對你不利的方向走去,這時候大部分做市商會平倉止損,虧一點小錢。這樣的做市策略最喜歡的平穩的市場,活躍但價格穩定(活躍怎麼價格穩定呢?),最討厭的就是一個大單一下子吃掉幾個價位(甚至幾十個價位),倉位全砸在手裡了。一般市場消息發布的時候這種策略都會關掉或者調成保守,但有時候市場突發重大消息,或者外匯又出什麼事情了,某個推特又大嘴了,導致價格異動,那十有八九是會虧的,而且賺一虧十。

做市商的盈利,大部分是來自於規模化,一個策略可以在幾千個個股上跑,每支股票一天賺幾百塊,以及自動化的風控和止損策略,還有很重要的一點就是交易所提供的返佣和報價補貼(畢竟交易所也希望自己的品種流動性更好)。

衍生品的做市就是完全不同的邏輯了,因為倉位是可以被部分對沖或者完美對沖的,因此可以鎖定利潤,所以這就包括在我們接下來要介紹的『套利』策略。

套利,其實字典里已經給了完美的解釋:
the simultaneous buying and selling of securities, currency, or commodities in different markets or in derivative forms in order to take advantage of differing prices for the same asset.
同時買賣高度相關的品種,並且從『理論上價格應該一樣,但是現在市場上價格不一樣』的品種里獲利。一般來說,在兩種品種之間套利,兩種品種的價格遵循簡單的線性關係,其理論價差可能來源於手續費/基差/利率等一些因素。當現實的價差偏離理論價差,你就可以買賣價差(同時買賣兩種品種)建倉了。

這裡也分兩種情況:

  • 相關品種的套利 (Correlated Assets Arbitrage)
  • 可替代的品種的套利 (Fungible Assets Arbitrage)

相關品種套利:比如期貨的不同交割月的合約之間的套利,上海金和倫敦金的套利,等等。但最重要的是,兩種品種並不是同一個東西,並不能簡單抵消彼此,所以其實本質上相當於量化里的統計套利,並不能保證盈利,可能會積累巨大的價差頭寸。

可替代品種套利:比如個股和其存托憑證之間,股指期貨大合約和小合約之間,ETF和其成分股/成分資產之間。這樣的兩個品種之間是可以相互轉化的,比如存托憑證可以讓發行的銀行轉化成普通股,不同交易所發行的股票可以轉移股票位置(depot switch),ETF可以讓發行機構申贖成其成分,或者按凈值贖回現金,期貨可以在『交割價交易』市場上以交割價買入賣出,等等。這樣就可以在發現套利機會的時候就鎖定利潤,因為在兩種品種上積累的頭寸可以互相抵消。

越高頻的策略,其本質上就越簡單,就越需要低延遲的下單和市場數據,越需要巨量的IT投資,其盈利模式也更多的偏向規模化,這就是為什麼高頻交易公司總是贏家通吃,很多小公司最後做不下去就關了,或者是轉向量化交易了。

期權做市則是另外一個市場了,因為期權的非線性特徵和做市商主導的市場,對於速度的要求可能沒有其他品種那麼高,更多的需要數學知識和複雜策略等,同樣的品種還有流動性很差的ETF(比如其成分不在公開市場上交易),和『在交易時間時,其成分不在交易時間』的衍生品,比如港股在美國的ETF。還有一些場外衍生品或者語音報價的OTC產品,其盈利模式又不一樣了。

答主也並非這個領域的專家,請大家多多指教。


對題目中提到的「冰山演算法」,我剛好有一些了解,可以給大家講講。很多人對「量化交易」的理解實在太過片面,基本上把它等同於生錢工具,我不贊同這種觀點。交易首先是交易本身,有它自身的經濟學意義,忽略這一點而單純把它看成使錢增值的數字遊戲,很容易就會迷失本心。

我也不認為演算法本身有什麼稀奇,再好的演算法也是死的,真正的核心價值一定是掌握和使用演算法的人。實際上我講的東西也都是公開的信息,但是即便了解了技術細節,能真正做好的人也寥寥無幾。

希望這個回答可以讓你對量化和高頻交易有一個更清醒的認識。

~~~~~~~~~~~~~~~~~~

首先我相信不少人概念里的高頻交易還是這個樣子的:


但對高頻交易來說,這種信息是非常粗糙的。所以這裡先要對不熟悉背景的同學介紹一下什麼叫做Order Book。現在主流的交易所一般都使用Order Book進行交易,交易所在內部的Order Book上記錄所有買家和賣家的報價,比如像這樣:

Bid表示買家,Offer表示賣家,這張報價單表示買賣雙方發出的所有報價單(Limit Order)。這張表才是高頻交易最關心的信息。任意時刻,買家的出價總是低於賣家(比如這裡的98對101)。所以報價雖然一直在變化,但是只有報價是不會有任何成交的。

什麼時候會產生交易呢?有兩種情況,第一是任一方發出市價單(Market Order),比如一個買家發出一張單量為10的市價單,就可以買到賣方在101價格上掛的10份,這個交易成功之後,Order Book會變成這樣:


第二是發出一個價格等於對方最優報價的限價單,也會產生和上述情況相同的結果。

需要強調的是,雖然真正的Order Book只存在於交易所內部,所有交易都在交易所內完成,但是交易所會把每筆報價和市價單都轉發給所有人,所以所有的買家和賣家都可以自己維護一個同樣的數據結構,相當於交易所Order Book的鏡像。通過跟蹤分析自己手裡這份的鏡像變化,來制定交易策略,是高頻交易演算法的核心思想。

~~~~~~~~~~~~~~~~~~

基礎知識介紹完畢,下面為了方便大家理解,我採用一種更形象的方式來表示Order Book:


這張圖對應文章開始時的那個Order Book,應該可以明白地看出,橫軸表示價格,縱軸表示訂單量,綠色表示買家,紅四表示賣家。這樣做的目的是為了引出本篇討論的主題:冰山訂單。

通過上述基本分析大家可以看出,交易所內的交易數據是完全公開的,市場上任意時刻,有誰想要買/賣多少,所有人一目了然,沒有任何秘密。這樣做本身是有經濟學意義的,因為只有展示出買賣的需求,才會吸引潛在的商家來交易,所以在市場上一定程度的公開自己的需求是必要的。但這樣同時帶來一個嚴重的後果,一旦有某個人想要大量買/賣,他所發出的巨額限價單會直接展示給所有人。比如一個買家掛出巨額買單後,Order Book會像這樣:


這對他非常不利,因為所有人都會利用這個信息來跟他做對。大家會判斷,現在市場上存在大量的買壓,於是會出現一大批為了賺錢而衝進來的人搶購,價格會快速上升,這樣原來這個人可以在98這個價位買到的東西,很快就變得要在更高的價位上才能買到。這種情況,那些後來的人做的就是Front running,而原來的那個人則面對逆向選擇風險。

為了解決這個問題,交易所提供了一種針對性的工具,就是所謂的冰山訂單(Iceberg Order)。這種訂單可以很大,但只有一小部分是公開出來的,大部分則隱藏起來,除了交易所和發單者本人誰也看不到,真的像一座「冰山」一樣。比如像這樣:


灰色的部分就是冰山訂單隱藏的部分。這樣,只有當有對應隱藏量的交易發生時,交易所才會通知其他人,就避免了別人利用顯示訂單的信息來做Front running。

凡事有一利必有一弊。冰山訂單雖然保護了發單者的利益,但是對於其他市場參與者來說卻又變成了一種不公平的規則。那些有真實的交易需求的參與者,會因為對局勢的誤判而損失慘重。所以接下來的問題就變成,如何發現市場上的冰山訂單?

首先有一種最簡單的方法。有的時候,冰山訂單是掛在最優買價和賣價之間(spread),像這樣:


對於這種情況,有一個非常簡單的探測方法,即發一個最小額度的限價單在spread里,緊跟著取消這個訂單。比如這個例子中,發出一個賣價為99的限價單然後取消。因為這個價格本身對不上顯式的買價(98),如果沒有冰山單的存在,一定不會成交。但有冰山單的情況下,一旦交易所收到這個賣單,會立刻成交冰山單中對應的量,而之後的取消指令就無效了。這樣,以一種微小的成本,就可以發現市場中隱藏著的訂單。事實上,的確有人會做這種事情,頻繁的發單然後取消,在最優價差之間形成一種高頻擾動,用來探測隱藏單。

為了應對這種擾動探測,大家一般都不會直接掛單在spread里。而是會像之前那樣和普通的限價單掛在一起,這樣發生交易之後,你就很難推測消耗掉的究竟是正常的限價單,還是冰山訂單。那麼應該怎麼做呢?

首先有一個直接的思路。冰山訂單的存在,一定程度上反映了掛單人對市場情況的解讀,認為有必要使用冰山訂單而做出的判斷。需要強調的是,使用冰山訂單並不是沒有代價的,因為你隱藏了真實的需求,在屏蔽掉潛在的攻擊者的同時,也屏蔽掉了真正的交易者!而且會使得成交時間顯著增加--因為沒人知道你想買/賣這麼多,你只能慢慢等待對手盤的出現。所以當有人下決定發出冰山訂單的時候,也會有對市場情況的考慮,只有合適的時機才會做這種選擇。

什麼是合適的時機?有一些數據應該是相關的,比如買賣價差spread,買單量對賣單量的比值等。對這些數據,你可以在歷史數據上做回歸分析,建立起他們和冰山訂單之間的線性/非線性模型。通過歷史數據訓練出來的這個模型,就可以作為你在實時交易時使用的冰山訂單探測器。這是 On the Dark Side of the Market: Identifying and Analyzing Hidden Order Placements 這篇論文使用的方法。

基本模型可以定義為:F(spread,bidSize/offerSize,……) = Probability(Iceberg)

如果你想玩高深的,還可以在此基礎上做HMM,SVM,神經網路之類的高級模型,但基本思路是一致的:通過盤口分析計算存在冰山訂單的概率。

~~~~~~~~~~~~~~~~~~

上面說的這個方法,看起來很高級,實際效果如何呢?我想大家也看出來了,這種建模不是很精確。作為事後分析手段用來說明什麼情況下可能會出現冰山訂單還不錯,但是作為實時交易的探測器就不是很放心。因為使用的信息太模糊了,而且說到底建模的對象只是一種相關性,沒有什麼保證冰山訂單的發送者一定是按照這個邏輯出牌的。

所以接下來介紹的,才是真正具有高頻玩家神採的方法,來自 Prediction of Hidden Liquidity in the Limit Order Book of GLOBEX Futures 這篇論文。

~~~~~~~~~~~~~~~~~~

高頻世界裡,有一條永恆的建模準則值得銘記:先看數據再建模。如果你看了上面的介紹就開始天馬行空的思考數學模型,那基本上是死路一條。我見過很多年輕人,特別有熱情,一上來就開始做數學定義,然後推導偏微分方程,數學公式寫滿一摞紙,最後一接觸數據才發現模型根本行不通,這是非常遺憾的。

而看了數據的人會怎麼樣呢?他很可能會發現,對於冰山訂單的處理,交易所的規則是非常值得尋味的。有的交易所是這樣做的:一個冰山訂單包含兩個參數,V表示訂單總量,p表示公開顯示的量。比如V=100,p=10的冰山單,實際上隱藏的量是90。如果有針對這個訂單的交易發生,比如交易量10,交易所會順序發出三條信息:

  1. 成交10
  2. Order Book的Top bid size -10
  3. 新Bid +10

這三條信息一定會連續出現,並且第三條和第一條的時差dt很小。這樣做的原因是儘管冰山訂單存在隱藏量,但是每次的交易只能對顯示出的量(p)發生,p被消耗掉以後,才會從剩餘的隱藏量中翻新出一分新的p量。這樣,每個人從交易所收到的信息仍然可以在邏輯上正確的更新Order Book,就好像冰山訂單並不存在一樣。

因此,一旦在數據中觀察到這個規律,我們就可以非常有把握的判定市場中存在冰山訂單,並且連p的值都可以確定!接下來的關鍵問題是,如何確定V的值,即判斷這個冰山訂單的剩餘存量有多少?

這個問題從本質上說沒法精確求解,因為V和p都是由下單人自己決定的,可以是任意值。但可以從兩點考慮:第一,兩個值都是整數;第二,人類不是完美的隨機數生成器,下決定會遵循一定規律。

從這兩點出發,可以對V和p建立概率模型,即計算一個給定的(V,p)值組合出現的概率是多少?這裡不去深入探討數學分析,感興趣的朋友可以自己去看原文。簡單說,可以在歷史數據上通過kernel estimation技術來估算他們的概率密度函數的形狀。順帶一提,如果你親手編寫過這種估算程序,就會理解我為什麼在「要想成為一名優秀的 Quant 需要什麼樣的編程水平?」這個答案中如此強調編程的重要性。在數據上估算出來的概率密度函數可能會是這樣的:


這樣,當你在實時數據中觀測到一個p的值時,就可以得出對應的V值的條件概率密度函數,即上圖的一個切面,比如(p = 8):


接下來顯然就很容易計算V最可能是什麼值了。這條函數曲線還有一個重要的作用是幫助你動態評估剩餘存量,比如當你觀察到已經有5份p被消耗掉,即可推出V&>=40,由上圖即可推出新的V值和剩餘存量(V-5p)。

綜上,演算法的核心在於,通過在實時數據中監測短時間內連續出現的三條相關記錄判斷冰山訂單的存在,而對冰山訂單的量化則通過由歷史數據訓練出的概率模型來完成。

相信你也會看出,這種演算法並不是什麼作弊神器。它只是利用市場上的公開數據所做的一種推測。而且這個推測也僅僅是基於概率的,更多的應該是作為一種參考。它對做市商這種流動性提供者很有意義,可以使他們避免因為對局勢的誤判而遭受損失。但如果你想用它來作為一種攻擊手段,覺得自己能發現隱藏大單而去Front run,那實在是很不明智的選擇。

最後,這種演算法也只是針對特定的交易所。其他的交易所也許不會採用同樣的冰山訂單處理方式。所以真正有價值的是這種從實際數據出發的建模思路,具體的演算法並不值錢。

~~~~~~~~~~~~~~~~~~

這個小演算法給你展示了高頻交易領域的「冰山一角」。它看起來也許不算很複雜,但是我卻很喜歡。因為它清晰地展示了什麼叫做先有思路,再有量化。因為有「冰山訂單」這樣一個從經濟學基本的供需關係出發的真實需求,通過分析實際數據找到一絲線索,最後通過數學模型刻畫出定量的策略,這才是漂亮的策略研發。

如果違背這個原則,一上來就去搬各種高級的模型去套數據,指望模型自動給你生成交易信號,這在我看來無異於痴人說夢。遺憾的是,這個夢的確太過誘人,而這個世界也從來不缺少莽夫。

且行且珍惜。


市場就是江湖,買賣雙方永遠在博弈, 這是交易過程中永恆的主題。買方也就是所謂的buy-side, 而做市商是sell-side, 因此我們不仿把高頻(HFT)策略分為買方策略和做市商策略。從名子也能看出來這兩方互為對手。

先說買方吧, 這個買方當然就是指prop trading, HF之流。買方常見的高頻策略有以下幾種:

Market Order
以最高速下市價單(market order)是買方最基本的策略

Looking for Price Discrepancies
這個就是高頻統計套利(high frequency statistical arbitrage)

Indulging in Momentum Ignition
人為製造價格上的spike誘使其它演算法交易策略下單

Poke for Bargains
發不同的Immediate Or Cancel Order來試探市場, 反製做市商的Hide Your Best Prices策略

Join the Makers
買賣兩邊下限價單(limit order)

Reserve Orders/Iceberg Orders/Time Slicing
隱藏真實交易量

有矛就有盾,我們再來看看做市商怎麼接招:

Wait for the Other Side
被動等待單子成交是做市商最基本的策略

Lean Your Market
主動變更報價以消化庫存(inventory)

Scratch for the Rebate
提供流動性(liquidity),拿回扣

Hide Your Best Prices
隱藏最佳報價

Take Out Slow Movers
仗著速度快吃掉其它做市商的錯價

Penny Jump
微量加價

Push the Elephant
跟蹤巨量訂單,一路拉升價格從巨量訂單上賺錢

Tow the Iceberg
探測市場交易意圖, 這個直接反制買方的Iceberg Orders.

Jump the Delta
期權做市商用動態Delta Hedging對衝風險

最後提一句, 不論你身處買賣雙方的哪一邊,你都該牢記,HFT是一種生意,而做生意的目的就是謀利,如果你真想make the world a better place,還是去Silicon Valley吧! :)


貌似大家都有所保留,也可以理解,交易演算法和策略是賺錢的獨門秘器。我也來補充一點吧,但不知道是否能回答到點子上。我願意盡量來回答很大原因是我不是從事這一行的,也不指望從中交易,而是從academic角度來討論。但缺點是門外漢,沒有實踐經驗,只能是自己一廂情願的想想而已。不見的契合這個問題,大家就隨便看看把

鄙人最近恰好寫了一篇論文,當然論文並不是探討交易演算法和賺錢,只是一篇典型的學術論文。但藉助這個問題想探討一些能將學術研究恰當應用化的可能性。該論文是Time-reversal asymmetry in financial systems 如果您沒有下載SD論文許可權的話,可以從預印本文庫arxiv上下載http://arxiv.org/abs/1308.0669,該版本與最終的發表版本完全一致,只是排版不一樣。

由於精力有限,我不準備在這裡詳細介紹我的數學模型和詳細,我假設讀者先自己粗略讀了論文後再來討論。簡言之,在我們論文中,通過引入殘餘波動率,刻畫了金融市場在經歷大波動事件前後的動力學弛豫行為,並計算其動力學指數,利用非平衡態統計物理的理論來分析這些指數間的關係。以往的理論認為金融市場在金融危機時便進入非穩態,但我們的研究表明只有是外部事件驅動的大波動才驅使系統進入非穩態,而內生型的大波動並不必然導致非穩態。

更重要的是,我們發現內生型和外部事件驅動的大波動在弛豫行為上存在顯著不同,可見論文中的圖。由於是學術論文,我們並未在論文中提及其可能的應用。但是我個人認為這些結果可能有助於我們建立一些基於events driven的交易策略和量化交易模型。譬如,利用不同事件驅動的波動率行為,我們可以預測接下來的波動率行為,並估測其風險水平,這對於我們的風險管理也是具有重要參考價值的。比如,我們明確提出大波動之後,市場的風險水平呈冪律下降。

----------------------------------------------------------------
實際上,證券市場大波動的動力學行為和地震有很大的相似之處,稱之為Omori Law。在發生一次巨大地震後,往往會跟隨大量的餘震,震幅逐漸降低。證券市場發生一個大波動後,接下來波動率呈冪率下降,即具有長程關聯,也就是有記憶性。大地震之後的餘震我們可以部分地預測,因此,我們有理由相信證券市場也是如此,在經歷一次巨幅波動後,我們可以預測接下來的小波動。當然更重要的問題是,能否預測大波動的發生,目前也有關於此的研究,下次再來介紹。

-----------------------------------------------------------------

這兩天比較忙,先簡單寫到這裡,如果大家都興趣的話,等忙過這幾天再來補充更詳細的內容


iceberg is not used in HFT
HFT"s goal is to make profit thru trading. Not building up portfolio
iceberg is used to build up portfolio, this is the kind of idea used in (banks") execution service. In other word, that is an execution algorithm.

Basically, there are three kinds of strategies in HFT. One is simply front runner. Another one is Market Micro structure. The last one is more interesting, called maker-taker.
Front runner is using the flow information you have and taking advantage of your own super fast infrastructure.
Market Micro structure is focusing of estimating the order position in a queue. Also some people called this scalping.
The Maker-taker model will provide rebate for market maker ( BATS has taker-maker model), and those market makers are simply focusing on that rebate. It is also called passive algo.


謝邀
不過考慮幾天決定放棄作答這個問題,泛泛而談的東西大家都可以從百度、google、wiki上搜到,但答的太深入是在砸自己飯碗。

如果有興趣可以看一些關於市場微觀結構的論文,裡面會對高頻的一些演算法有所涉及。


不是裝逼
這個問題是好問題,但是我估計絕對不會有特別詳細的答案
答多了涉及核心的東西就是泄密了
我給幾個關鍵詞吧 都是可以做高頻交易的「理念」
conversion arbitrage
market maker
event driven
可惜 Virtu Financial的IPO推遲了 要不它上市了以後可以看看它怎麼做的


我理解HFT是一種交易類型的統稱,並且對於什麼是高頻也有不同的見解,總之要很高就是了.而演算法是一個交易策略的局部,一個策略可能有一個或者多個演算法.這樣看來,更恰當的是給交易策略起一個響亮的名字。

你說的那個冰山演算法我沒有找到,只在google中查到了數據挖掘中的冰山檢索演算法,可能相差比較大.總之,並沒有聽說過專門的HFT演算法。

謝邀!我才疏學淺,回答不正確就摺疊我吧。


高頻交易的實現必須具備四個條件:
1.充分的市場流動性
2.強大的計算設備
3.急速的網路
4.低廉的手續費
沒有這4點的支持,任何演算法都無法很好的實現高頻交易。一個交易演算法往往是針對某個市場特點和歷史高頻數據設定的。未必國外很好的演算法就能很好的適應國內市場。國內最具備高頻交易條件的當屬股指期貨了。能力有限,目前還未掌握有效的高頻交易模型,也沒有實施的條件。


最多的就是兩種:套利和信號交易,把套利價差也算一種信號的話,其實也就是信號處理,和火車調度的原理也差不多


這裡不少回答不大入行,礦風太濃。講點實際有用的高頻交易方法。不酷炫,但真賺錢。

第一個方法穩賺不賠。大家要問:怎麼可能?完全違反 EMH 啊,而且還講出來?其實沒必要遮遮掩掩地賣關子,因為 the devil is in the details。

肯定賺錢的方法,就是套利(arbitrage)。譬如這幾年,中國的股指期貨,是相當好的套利市場(雖然做的人越來越多,但空間依然有),尤其是前段時間,做這個的高頻 fund 都有天上撒錢的感覺,撿錢撿到手軟(補充:後面評論有人沒明白,所以這裡寫清楚點:這個方法是平時賺小錢,暴漲暴跌的時候賺大錢,尤其是暴跌的時候賺得最多... 可謂唯恐天下不亂)。

方法做的人都知道。最簡單的,就是不同交割期的期貨之間的 convergence(跨期套利),期貨和現貨之間的 convergence(期現套利)。做大了就再去研究跨品種、跨市場套利。最近的股指期貨太瘋狂,上竄下跳,完全是在送錢。所以國家都看不下去了。

而關鍵,在於執行的細節,如進去和出去的時機和方法,在於執行的速度,在於 infrastructure,你的機器放在哪裡(colocate),你的路由和網卡,以至 OS 的網路棧(甚至直接上 FPGA)的速度。這個就是技術活了。

這個對於中國市場有用,對於成熟市場的成熟 asset 來說基本上沒有這樣的套利空間(除去那些非常時刻,像前不久某天納指開盤的時候)。不過,世界上有的是不成熟的市場,和不成熟的 asset 。

那麼這就來到了第二個方法,存在一定風險,但更通用,而且確實有 alpha。這是許許多多 fund 在做的事情。就是假如 A 和 B 相關,現在 A 動了,你就去動 B(有時可以再 hedge 一下)。特別簡單,特別直接,還確實符合市場規律,確實可以賺錢。而關鍵就在於細節了,比如是真動假動?動到什麼時候?執行速度毫無疑問也很重要。

不舉現代的例子了。舉個古老的例子。從前很流行 risk on risk off,比如 ES 一動就去動 AUDUSD 啊 COMMODITY 什麼的。是不是有點傻,但大家都這麼做,所以也就變成了規律。這也確實有道理,可以用理論來建模和解釋。

還有幾個方法,但玩好以上這兩個方法,已經夠你做到 1b us$ AUM。沒必要到 flash boy 的層次。太快其實意味不大。快進快出的,小 fund 玩玩可以,做不大。作為輔助就好。

最後,回應高票答案,如果要 make the world a better place,不要去 Silicon Valley 搞什麼 O2O SNS。還是要搞實體的,最苦X的,最坑爹的製造業,才是立國之本,所以我去跳坑了,哈哈。要做就做最好的,歡迎看看我們的產品:首頁-Blink稟臨[稟臨科技]-淘寶網 。


高頻交易,看上去很美。老漢我說點別的,有一個類似的,我就差一個編程的,中文版

「我就差一個編程的」

E 版: http://www.cs.uni.edu/~wallingf/blog/archives/monthly/2010-12.html#e2010-12-01T15_45_40.htm

作為我們大學計算機系的系主任,我經常收到一些聲稱得到了能造就下一個奇蹟的好主意的人的來信和電話。這些電話有的十分的有趣!打電話的人有時是一
位急切的創業者,醉心於他的想法,認為那是一個能取代Google,超越Facebook,或者是能改變當前的商業面貌,變革整個互聯網的好想法。有時打
電話的人不是我們學校的,有時是我們大學工商科目、大多是主修商業的學生;年輕人的電話都透露出了富有感染力的創業熱情。他們希望能改變這個世界,他們需
要我去幫助他們!

他們就差一個編程的。

他們需要有人能接受他們的想法,把這個想法轉變成PHP,SQL,HTML,CSS,Java和Javascript代碼。這些創業者知道他們現在缺少什麼。我是否應該找一兩個計算機專業的學生加入他們的項目,幫他們實現呢?


多數他們這樣的項目永遠找不到計算機專業的學生來實現。有很多的原因。學生們都在忙於課程和生活。大多數計算機專業的學生都有了他們喜歡的工作。他們的工
作是付現金的(如果不是拿不了的情況下),這比一個不確定的將來才會有的財富的許諾來說對學生們更有吸引力。這些想法和點子對其他人來說並不像對想出他們
的這些創業者那樣令人興奮,不像這些創業者由於擔心會產生創世紀的成就而坐卧不安。

很多這樣有想法的人由於找不到計算機專業的學生或其他編
程人員而一而再、再而三的聯繫我,希望能從我這得到好消息。年輕的創業者們會越來越泄氣。他們希望其他人也能像他們一樣為這樣的想法而激動。(樂觀的年輕
人呀!)我一直希望他們能找到什麼人幫助他們把想法變成現實。這個過程會是令人興奮的。他們也能從中學到很多東西。

當然,他們似乎也從來沒有想到自己是可以去學編程的。

前段時間,我在微博上聊了幾句關於接到這些電話的事情。Andrei Savu用簡單的語句對於遇到的這些現象進行了總結:

@wallingf 這就是說,他們把軟體開發者當作一種工具。產品 = 行動 != 點子

我在最近寫的一篇博客里詳細的談論了這個問題,一個產品的價值來源於擁有一個想法和執行這個想法的組合。你單具備了前者或只有執行後者的能力都不太有價值。你必須把它們組合到一起。

很多「手握絕世好想法的人」都傾向於認為大多數或全部的價值都來源於創造出了這個想法。程序員只是一個工具,就像個雞毛撣子,拿起來就可以撣灰。編程是個小事情,不是嗎?


一方面,一些程序員樂意認為大多數或所有的價值都來源於實施了這個想法。可是你不能去實施你還沒有的想法呀。這就好像我和我的同事們圍坐在一盤左宗棠雞前
惋惜我們失去的財富。可實際上沒有人失去。財富從未與我們為鄰。事實上我們缺少一個致命的條件。沒有時間機器或其它機器能使時光倒流。

我仍
然希望這些身負好點子的人中,一些人自己該會編程,或想去學編程,這樣他們就可以自己來實現自己的想法。這樣,他們也可以有機會知道只有超人有力量什麼不
做也能把理想變為現實。在過去,學習計算機編程是使用計算機的人的必然後果。可遺憾的是,現在全變了。如今使用計算機的必然後果看起來是可以讓人接觸到一
些自己也許認識,也許不認識的人或者只是看看Youtube視頻。

哦,想想吧,如果你發現了一個能夠賽過Google和Facebook的
好想法,那將會是什麼樣子。時不時的,我非常想告訴那些給我打電話的創業者,他們的想法基本上不會有改變這個世界的希望。但是我沒有,至少有兩個理由。第
一,他們並沒有想徵求我的意見。第二,總有一段時間後會有另外一個微軟或Google出現來改變這個世界。誰又能想到這會是無數想法中的哪一個?如果我和
我的同事能夠重新回到2000年,去告訴我們的年輕人有關Facebook的事,這些年輕人會有足夠的遠見來坐下來開發出這個網站嗎?我猜不會。


如何能知道哪一個會是能夠改變這個世界的好想法呢?開發出來,努力工作,用你的手指把想法變成人們需要和想要的東西。把程序開發出來的能力是這些有想法的
人缺少的一個必要因素。他們去尋找有這種能力的人,這很對。我很想知道,如果每個人都能夠把自己的想法變成現實,這個世界將會變成什麼樣子。

有人說老漢文不對題,確實,那麼我說點自己的內容:

交易本身有其自身的規律,也就是計算機演算法工程師們特別看不起的行業經驗。而實際上,即使你能夠從行業經驗翻轉過來,通過高頻數據的演算法實現,或者演算法交易的編程,實際中還是需要用到交易策略,也就是說,無論原來的交易員多麼稀缺演算法工程師幫他實現演算法,實際交易的策略必須要有,而交易策略只能從交易實踐過程中學習到,機器學習的那些演算法回測,很難學習出交易策略。

所以,我在這裡只是說了戰略上如何看待演算法和編程,如果是交易員,可能對演算法實現不太重視,而演算法工程師通常能感受到這種忽視,而反其道行之,過於強調演算法的重要性,編程的科學性。

交易的盈利來自於交易本身,演算法,就算是處理了高頻數據 [很嚇人哦] 的演算法,或者大數據 [吹爛了的詞]的處理平台,那也只是為交易決策供參考,並不會直接帶來贏利。演算法提供的結果無非就是:標的物、盈利比例和這個盈利將要發生的概率,而交易策略是展現不出來的。

=========== 後面在分割線之下有從事演算法交易的程序員實例舉證 ============

同時,交易演算法僅用高頻交易的數據過於微觀,會有一葉障目,不見泰山的感覺。同樣,僅想通過演算法就能解決交易全部的思路,也有類似感覺。紙上談兵的程序員們會認為演算法能解決一切,問題就是能否寫段代碼運行在某些電腦上,然後就躺著賺錢呢? 有這個可能,作為市場參與人員,代表市場歡迎你們,尤其是歡迎左手演算法右手實戰的人。

特別討厭那些只說不練的分析師,同樣也討厭只推公式、口爽演算法不進市場操作的程序員。

最後,作為不靠譜的代碼工程師,還是哆嗦點演算法的事吧,要不就真成了假把式了。

通常高頻交易、交易和套利等等,涉及這些問題應歸屬於時間序列範疇的事,而金融的時間序列不同於普通的時間序列,普通序列如語音的時間序列,金融時間序列它有獨特的特徵,主要是多元 multivariate、非線性 nonlinear , 非平穩 nonstationary,不確性 uncertain,就方向上不要偏太遠了。也有人將交易問題歸屬於複雜系統,但對於複雜系統的研究是最近幾年才剛剛興起,很多解決方法思想上都還不成熟,有廣闊的道路可以走,尤其是將交易敷設進複雜系統的語境下進行問題求解,估計能出幾篇像樣的論文。人類作為碳水化合物的生物體,對於圖 graph (or complex network )的理解還不深。作為弱爆且各種不著調的人就不具體展開來了。

關於高頻交易的數據描述,低頻日線交易OHLC【開盤、最高、最低、收盤、均價、金額】,可以視為一個標量,古典的時間序列研究的是,Scalar (ohlc) 的排列序。在高頻數據中有所不同,單獨採樣期內就可以視做向量,因為不僅可以看到分時的時間片內價格變動,還有成交方向,即撮合狀態下是按買價成交還是賣價成交(如果採樣間斷時段內成交額超過買賣掛單則可視做冰山單),還有即時下買單堆入還是賣單堆入(類似冰山單未成交部分)【我發現這兩者的影響並非總是很顯著,可能的主要原因是市場上初級的參與者眾多(比如肉眼看屏交易人)且只關心了價格變動】,這些特徵都是低頻數據所沒有的,也是古典金融學比如 black-scholes 時代因技術的因素所未能觀察到的交易實際存在。這些高頻交易數據堆起來,數據量也是非常大的,每天的量基本就能比較一個海量數據倉庫的稍小的規模;在高頻數據概念內延中還有時延和時間隔的兩個特徵,如果不是做股指期貨或統計套利,過於關注這兩個參數會將開發的注意力轉移,【很多科普類文章一直強調小時延,比如誇張到宣稱要盡量剪短光纖之類】。列位客官可以用自我的賬戶上進行實驗,可以在中大盤交易冷門股票的第5檔位置掛單實驗證券公司從電腦下單到交易軟體彈出值的時間是多少,那些動則強調納秒的文獻科普資料就可以呵呵了。

好吧,我這裡說的不是高頻交易,是高頻交易數據下的微觀市場結構。

程序員在開發相應演算法之前,需要自我評估與上舉例類似的數據環境情況,便於認知自我的能力外延界,已期達到最快速實施。僅憑閱讀文獻進行設想或者單靠思維實驗的漫遊,較難認知全局的狀況。要謹慎從事。

回復中有人表示不忿,要我我也不忿啊。為什麼你能做我不能做啊?你嚇唬我啊~!

因為:敝國股市開市二十多年了,數數看有幾個操盤手做超過兩個大波周期的? 基金操盤手為什麼還要開老鼠倉啊? 從公募跳出來做私募怎麼就會死了? 流亡海外的、跳樓自殺的、欠債潛逃的、離婚妻離子散的還少么?

最近股市大漲,每個人都以為自己會超過索羅斯巴菲特,年入超過100%,甚至月入超過100% 也輕鬆啊。市場不光比誰掙的多,還比誰活的時間長,今年掙很多,明年虧死了就沒法繼續玩了。等著看好了,不到明年就到後年,再回來看看,還有多少人持續活著。

============ 2017.11.15 新增內容 可恥的分割線 ===================

【在此舉個例子,非褒非貶】微博上清華某博士14萬粉絲,炒美股有一年了,看樣子是採集財報數據進行預判,然後下注,最近一年美股漲幅喜人,某博士也春風得意,但其實他沒有什麼交易策略,也不管交易的風險,這種操作就像是賭博,和下注一樣,賭對了就賺錢,錯了就虧錢,搞IT寫代碼的人通常都會走入這個誤區,這種交易跟賭博沒區別(呼應分割線之上的內容)。最後他公布的交易單是搜狗上市,下注了側股sohu押上漲,並且還下注了同方向的期權,出現虧損了虧損額必然是擴大的。


近兩年量化之風傳遍金融界,但是,很難想像一個對企業,對金融沒有任何長期研究的計算機,數學學位的畢業生,能夠對路的做一個預測股市的模型,即使這模型也沒什麼用。國內都以為美國量化牛逼上天,我們要和國際接軌,但事實殘酷的告訴你,2016年美國排名前20量化基金的平均收益僅為2%,遠遠低於同期標普十個點漲幅。巴菲特很不屑的說,量化交易就是看後視鏡開車。我和做量化的同行無冤無仇,我只是認為計算機只能提高我們的效率,也就是在高頻交易有所作為,其他都是南轅北轍,要知道,你想用一個函數關係一勞永逸獲利,這本身就是假設股市有一個完全規律性,但恰恰股市的規律是變化的函數關係。你可能以為我是持有股市無法預測的隨機遊走派,但你又錯了,我恰恰認為股市可以預測,但絕不是應該用統計模型來預測的,這是現在金融學發展的一個天大的誤區。我2015年開始預測股市拐點,九成正確率,現在在財務自由的道路上高歌猛進。若干年後,我們回過頭來看會發現,人類曾經走過的量化彎路實在可笑,就如幾百年前人類所痴迷的鍊金術,不老葯。


高頻交易至少具備兩個特點:1、程序化的自動化成交;2、快速、大量的交易。通常高頻交易指的是機器在一秒鐘內執行成百上千次交易,絲毫不知疲倦。

高頻交易的盈利邏輯在於,積累大量的小盈利,最終達到大盈利。而要達到這樣的效果就需要頻繁的交易。而通過交易員去實現,顯然不夠科學,因此才交給計算機去執行。相比人類交易員,計算機不知疲倦,不受主觀情緒影響,而且永不出錯。

高頻交易的四種演算法

1、軟體演算法

(1)「冰山(iceberging)」:其特點在於將大筆訂單拆分,把那些單筆數額大的單子劃分成隨機大小的小訂單,起到向市場上的其他投資者隱藏動機和作為的目的。http://bbs.ihoms.com冰山演算法受到市場認可,應用也比較頻繁,因為它能夠減小股價的大範圍波動。

(2)「捕食演算法(predatory
algos)」:捕食演算法是與冰山相對應的演算法。她被用來專門對抗冰山演算法,可密切監視市場上這種化整為零的隱匿方式,並且加以利用。

(3)「統計套利(statisticalarbitrageur)」:是通過對歷史數據做分析,統計最高價位,尋找各種數據點和價格的相關性。利用收集到的數據及其相關性分析建立預測模型,並且和市場上的最新報道和股價聯繫起來,在最快的速度下給出買或賣的結論。

它不僅需要實時關注市場的動向,尋找新的相關性並做出決策方面的第一手變化,而且還需要與競爭對手的同類系統競爭,在速度上甚至在毫秒的級別上克敵制勝,1秒或1美分的落後都會被對手佔得先機。另外,在某一套相關性系統失靈之後,後備部隊就需要重寫演算法做快速轉移。

(4)「資金暗池(dark
pools)」:這類系統始終處於買賣大單的準備狀態,而且不會向其他市場參與者公布報價。要知道暗池買賣的價位,可PING之,在得到暗池的回應價格後,可選擇接受該價格並完成交易,也可遲些再PING並找尋新的價格點。


高頻的盈利理念來自市場波動和市場無效性,方式方法很多。不過沒人會給你答案。


告訴你一個,用的是state-space model,轉移方程和觀測方程的推導是不會告訴你的。都是矩陣操作,在dsp模塊里用2ms完成一次預測。


打板。


tow the iceberg 根本不能算高頻演算法。
高頻是個比較模糊的詞,貌似是新聞界給的名號而不是金融業自己給的。所以很多人把演算法交易,市商和高頻搞在了一起,但其實還是有很多本質的區別。
很多常見的高頻交易策略其實大家都知道,關鍵是速度,沒速度你知道策略也沒用。


超級自負的一個老師,很多話說的在理。玩高頻交易存活並賺錢的,是不會讓別人知道任何技術信息的。大家娛樂一下挺好,真正通過高頻交易賺錢才是有意思的,極少數人的遊戲。


銀行家演算法(逃


推薦閱讀:

量化投資中有沒有完美的參數尋優方式?
Python 在金融領域的主要應用是什麼?有哪些分類以及什麼類型的金融公司會來應用?

TAG:寬客 (Quant) | 高頻交易 | 量化交易 |