本文主要面向兩類讀者,第一類是正在努力尋找一份基金管理公司量化交易員工作的求職者,第二類是期望嘗試開啟自己「散戶」算法交易事業的人士。
量化交易是數量金融學(注1)中一個極其艱深複雜的領域。若要通過面試或構造你自己的交易策略,就需要你投入大量的時間學習一些必備知識。不僅如此,它還需要你在MATLAB、R或Python至少一門語言上具備豐富的編程經驗。隨著策略交易頻率的增加,技術能力越來越重要。因此,熟悉C/C++是重中之重。
策略識別:搜索策略、挖掘優勢(注2)、確定交易頻率。回溯測試:獲取數據、分析策略性能、剔除偏差。交割系統:連接經紀商、使交易自動化、使交易成本最小化。風險管理:最優資本配置、最優賭注或凱利準則、交易心理學。
我們首先來談談如何識別一個交易策略。
所有量化交易流程都肇始於一個初期研究。這個研究流程包括搜索一個勝率差策略、檢驗它是否適合你可能正在運作的策略組合、獲取任何測試策略時所需數據、努力優化策略使其收益更高且(或)風險更低。如果你是一個「散戶」交易員,一定要清楚自己的資金是否充足,以及交易成本對策略的影響。
通過各種公開數據搜索可盈利的策略實際上十分簡單,並沒有大家想的那麼難。研究學者會定期發表理論交易結果(雖然大多為交易成本總額)。一些數量金融學主題博文也會詳細討論策略。交易期刊還會簡報一下基金管理公司使用的一些策略。
你可能會問,個人與公司怎麼可能願談他們的可盈利策略,特別是當他們知道,如果其他人「複製相同的策略」,長期而言它終將失效。原因就在於,他們通常不會透露具體的參數以及他們所使用的調參方法,而這些優化技能才是把一個表現平庸的策略調成一個回報豐厚的策略所需的關鍵技術。實際上,若要創建你自己的、獨一無二的策略,一個最好的法子就是尋找相似的方法,爾後執行你自己的優化程序。
我這裡提供幾個網站,你可以藉此尋找策略性思想:
SocialScienceResearchNetworkarXivQuantitativeFinanceSeekingAlphaEliteTraderNuclearPhynanceQuantivity
你所看到的很多策略都可歸入均值回歸交易策略、趨勢跟隨或動量交易策略兩類。均值回歸策略試圖利用這麼一個事實:「價格序列」(如兩個關聯資產的價差)存在一個長期均值,價格對均值的短期偏離終將回歸。動量交易策略則試圖「搭上市場趨勢的順風車」,利用投資心理和大基金結構信息在一個方向積聚動量,跟隨趨勢直至回歸。
定量交易還有一個重要方面,即交易策略的頻率。低頻交易(LowFrequencyTrading,LFT)通常指持有資產超過一個交易日的策略。相應地,高頻交易(HighFrequencyTrading,HFT)通常指持有資產一個交易日的策略。超高頻交易(Ultra-HighFrequencyTrading,UHFT)指持有資產的時常達秒級與毫秒級的策略。雖然散戶可以進行HFT與UHFT交易,但也只是在你掌握了交易「技術棧」(注3)與訂單簿動力學(注4)的詳細知識後才有可能。本篇入門文章,我們不會對這些問題做任何深入探討。
策略或策略集合一旦確定,現在就需要在歷史數據上測試其盈利能力,這就進入了回溯測試的工作範圍。
回溯測試的目標是提供證據,佐以證明通過以上流程所確定的策略,無論是應用於歷史(訓練)數據還是測試數據(注5)均可盈利。它可以反映該策略未來在「真實世界」中的預期表現。由於種種原因,回溯測試不能保證一定成功。這或許就是量化交易最為微妙之處,由於它包含了大量的偏差,我們必須儘儘力仔細審查並剔除它們。我們將討論幾種常見類型的偏差,包括先窺偏差(注6)、倖存者偏差(注7)與優化偏差(亦稱「數據窺視偏差」,注8)。回溯測試中其他幾個重要方面,包括歷史數據的可用性與清潔度、真實交易成本及可靠回測平臺上的決定。我們會在後續「交割系統」一節深入討論交易成本。
策略一旦確定,我們就需要獲取歷史數據,並藉此展開測試,如有可能還可改進策略。現在賣數據的很多,所有資產類型的數據都有。通常,數據的質量、深度、時間間隔不同,其價格也不同。剛入門的量化交易員(至少零售等級)最初使用雅虎金融板塊(YahooFinance)的免費數據就行。對於數據供應商,這裡不再贅言。我想重點談一談處理歷史數據時,時常遇到的問題。
對於歷史數據,人們主要關心的問題,包括數據精度或清潔度、倖存者偏差、應對如分發紅利、拆分股票等公司行為的調整。
精度與數據整體質量有關,無論數據是否包含錯誤。有時錯誤容易識別,比如使用一個窄帶濾波器(注9),就可以找出時間序列數據中的「窄帶」並更正它們。其他時候,錯誤又很難甄別,經常需要根據多個數據供應商提供的數據進行對比檢查。倖存者偏差通常是免費數據集或廉價數據集的一個」特徵「。對於一個帶有倖存者偏差的數據集,它不包含已經不再交易的資產數據。不再交易的證券,則表示已經退市或破產公司的股票。如果數據集中含有此類偏差,策略在此數據集上的測試表現可能比在」真實世界「裡表現的更好,畢竟歷史」贏家「已經被預先篩選出來,作為訓練數據使用。公司行為即公司開展的常引發原始價格階梯形變化的」邏輯「活動,它不應該計入價格收益。公司分發紅利和拆分股票行為是引發調整的兩個常見行為,二者無論發生哪一種,都需要進行一個」回調「的流程。我們一定要留心,不要把股票拆分和真實收益調整混為一談。許多交易員在處理公司行為時都碰過壁!
為了開展回溯測試,我們必須使用一個軟體平臺。你可以選擇一個專門的回測軟體,一個數值平臺如Excel或MATLAB,或者一個用Python或C++完全自主實現的平臺。對於回測軟體平臺、Excel或MATLAB,我不作過多介紹。我比較推崇的是創建一個內部技術棧。這麼做的一個好處是可以實現回溯測試軟體與執行系統的無縫集成,甚至還可以添加一些高級的統計策略。對於HFT策略,更應該使用自主實現的系統。
在做系統回測時,一定要量化表示系統性能。定量策略的「業界標準」度量為最大資金回挫與夏普比率。最大資金回挫表示一段時間(通常一年)內帳戶資金曲線從波峰至波谷的最大跌幅,常使用百分比表示。由於大量的統計因素,LFT策略比HFT策略的資金回挫更高。歷史回測會顯示過去的最大資金回挫,它能夠較為貼切地反映策略的未來資金回挫情況。第二個度量指標是夏普比率,它被啟發式地定義為「超額收益均值與超額收益標準差的比值」。這裡,超額收益表示策略收益超出某個預定基準,如標普500或三月期短期國債(收益)的額度。注意人們通常不使用年化收益指標,因為它忽略了策略波動性的影響,而夏普比率卻考慮到了這一點。
如果經過回測,策略的夏普比率很高且其最大資金回挫已經最小化,則可以認為它趨於無偏,下一步就是要搭建一個交割系統。
交割系統是一個方法集合,由它來控制交易策略生成的交易列表的發送和經紀商的交割行為。事實上,交易可以半自動、甚至全自動生成,而執行機制可以手動、半自動(即「點擊一次交割一項」)或者全自動。儘管如此,對於LFT策略,手動和半自動技術卻比較常見;對於HFT策略,則必須創建一個全自動交割機制,由於策略和技術彼此依賴,還要經常與交易指令生成器緊密相接。
在搭建交割系統時,我們需要考慮幾個關鍵因素:連接經紀商的接口、交易成本(包括佣金、滑動價差與價差)最小化、實時系統與回測時系統性能的差異。
聯繫經紀人的方法有很多,你可以直接電話聯繫他,也可以通過一個全自動高性能的應用程式接口(API)實現。理想情況,就是希望交割交易的自動化程度儘可能高。這樣一來,你不僅可以脫開身集中精力進行深入研究,還能運行多個策略、甚至HFT策略(實際上,如果沒有自動化交割,HFT根本不可能)。前面說過的幾種常用回溯測試軟體如MATLAB、Excel和Tradestation,對於LFT策略或簡單策略都是不錯的選擇。但是,如果要做真正的HFT,你就必須要構造一個用高性能語言(如C++)編寫的內部交割系統。說個我的親身經歷,以前受聘於一家基金管理公司,我們有一個十分鐘的「交易周期」,每隔十分鐘下載一次新的市場數據,然後根據這十分鐘的信息進行交割。這裡用的是一個優化的Python腳本。對於任何處理分鐘級或秒級頻率數據的工作,我相信C/C++更理想。
在一家大型的基金管理公司,交割系統的優化通常不在量化交易員的工作範圍。但是,在小點的公司或高頻交易公司,交易員就是交割人,所以技術面越廣越好。你要想進一家基金管理公司,一定要記住這一點。你的編程能力不說比你的統計學和計量經濟學稟賦更重要,至少也同樣重要!
另外一個屬於交割系統的重要問題是交易成本最小化。一般地,交易成本由三部分構成:佣金(或稅收)、損耗與價差。佣金是向經紀商、交易所和證券交易委員會(或類似政府監管機構)支付的費用;滑動價差是你的預期交割價位與真實交割價位的差值;價差則是待交易證券的賣出價與買入價之差。注意價差不是常數,它依賴於市場當前流動性(即買單和賣單數量)。
交易成本是決定一個策略是高夏普比率且盈利豐厚,還是低夏普比率且極不盈利的關鍵。根據回溯測試正確預測未來的交易成本很具有挑戰性,你需要根據策略頻率,及時獲取帶有賣出價與買入價信息的歷史交易數據。為此,大型基金管理公司量化交易的整個團隊都專注於交割優化。當基金管理公司需要拋售大量交易時(原因五花八門),如果向市場「傾瀉」大批股票,會迅速壓低價格,可能都來不及以最優價格交割。因此,縱使遭受損耗風險,基金管理公式也會選擇使用算法交易,通過「打點滴」的方式向市場出單。此外,其他策略如若「捕到」這些必要性條件,也能利用市場失效(獲利)。這是基金結構性套利的內容。
交割系統最後一個主要問題關係到策略的實時性能與回測性能的差異。這種差異由多種因素造成,比如我們在「回溯測試」一節已經深入討論過的前窺偏差與最優化偏差。然而,對於有些策略,在部署之前不易測得這些偏差。這種情況對於HFT最為常見。交割系統和交易策略本身均可能存在程序錯誤,回溯測試時沒有顯現卻在實時交易時出來搗亂。市場可能受到繼交易策略部署後的一場政變的影響,而新的監管環境、投資者情緒與宏觀經濟形勢的變化也均可能導致現實市場表現與回溯測試表現的差異,從而造成策略盈利性上的分歧。
量化交易迷宮的最後一塊是風險管理程序。風險包含我們之前談論的所有偏差。它包括技術風險,比如所有在交易所的伺服器突然發生硬碟故障。它還包括經紀風險,如經紀商破產(此說並非危言聳聽,曾引發恐慌的明富環球就是一個例子,注10)。總而言之,它覆蓋了幾乎所有可能干擾到交易實現的因素,而其來源各不相同。目前已經有成套的書籍介紹量化交易策略的風險管理,本人也就不再對所有可能的風險來源做詳細說明。
風險管理還包括投資組合理論的一個分支,即所謂的「最優資本配置」,涉及到如何將資本分配給一組策略、如何將資本分配給策略內不同交易的方法。這是一個複雜的領域,依賴於一些高級數學知識。最優資本配置與投資策略槓桿通過一個名為凱利準則(注11)的業界標準建立聯繫。本文是一篇入門文章,我在此不詳談其計算。凱利準則對策略收益的統計性質做過一些假設,但是它們在金融市場中並不一定成立,交易員因此在實現時通常會有所保留。
風險管理的另外一個關鍵成分涉及到交易員自身心理因素的處理。儘管大家都承認,算法交易若無人為幹涉,不太容易出現問題。交易員在交易時,稍不留神仍然可能會摻入許多認知偏差。一個常見的偏差是厭惡規避,當人發現損失已成定局,其所帶來的痛苦,可能會麻痺人的行為,不能做到及時拋盤止損。類似地,由於太過憂心已經到手的收益可能賠掉,人們可能也會過早拋盤收利。另外一個常見的偏差是所謂的近期偏好偏差:交易員太看重近期事件而非長遠地看問題。此外,當然不能落下「恐懼與貪婪」這對經典的情緒偏差。這兩種偏差常導致槓桿不足或槓桿過度,造成爆倉(帳戶資產淨值近乎為零或更糟)或盈利縮水的局面。
由此觀之,量化交易是數量金融學中一個雖趣味十足但極其複雜的領域。我對這個話題的討論淺嘗輒止,文章就已經這麼長了!我在文中三言兩句帶過的問題,已經有大量的相關書籍和論文出版。因此,在你申請量化基金交易職位前,務必要進行大量的基礎調研,至少應當具有統計學和計量經濟學的廣泛背景,以及使用MATLAB、Python或者R程序語言實現的豐富經驗。如果應對的是更加複雜的高頻端策略,你的技能組合可能還要包含Linux內核修改、C/C++、彙編編程和網絡延遲優化。
如果你有興致創建自己的算法交易策略,我的頭條建議就是練好編程。我偏向於儘可能多地自己實現數據採集器、策略回溯測試系統和交割系統。如果你自己有投錢做交易,而你又了解系統是否已經通過充分測試,還知曉其存在的缺陷和特殊問題,你怎麼可能夜裡睡不踏實?如果把它外包出去,短期內也許節省了時間,但長期來看可能成本巨大。
譯註:
(01)數量金融學(QuantitativeFinance),也稱金融工程學或金融數學,通過高級數學理論量化分析金融產品,為金融市場提供了多樣性的金融衍生產品,在豐富投資選擇的同時也帶來了隱患,比如2008年金融危機。從事數量金融工作的人常使用「礦工」(Quant)自嘲,由於使用大量的高級數學技術也有人稱他們火箭科學家。
(02)挖掘優勢(ExploitinganEdge)並無特別明確的上下文關係。如果以「邊界」理解,也不恰當,畢竟常用於表達數學邊界含義的是另外一個詞『Bound』。所謂挖掘優勢,即對搜索到的多個策略進行對比,選擇最佳的一個使用。
(03)技術棧(TechnologyStack)實際上是提供應用服務的系統所使用的各種技術,若從分層角度來看,各種技術層疊相連、彼此分工協作,好像一個「棧」。如果有人對各種技術都有頗深造詣,那麼他(她)就可稱作是一名「全棧工程師」(FullStackEngineer),通俗點就是一多面手、全才,在業界絕對炙手可熱。
(04)根據交易機制,證券市場可以分成報價驅動市場(Quote-drivenMarket)、訂單驅動市場(Order-drivenMarket)。訂單簿動力學(OrderBookDynamics)則是根據訂單驅動市場的信息,探索訂單量、流動性與價格之間的動力關係。其主要目的是使用高頻交易訂單簿當前數據信息預測其短期狀態,以輔助做出最佳投資決策。
(05)量化交易中使用的每種投資策略實際上就是一個數學模型。在搜索投資策略時,存在各種各樣的模型,如何選擇呢?可以對投資策略做回溯測試(Backtesting),檢測模型在歷史數據中的表現。然而,這裡就出現一個問題,模型中可能存在各種參數,選擇不同的參數對於模型性能的影響也是不同的,為此就需要在測試之前進行一個模型參數調優的過程。典型的做法是將完整的歷史數據分割成多份,最簡單地是分成兩份:一部分做訓練樣本,另外一部分作為測試數據。如果首先抽樣得到訓練樣本,那麼餘下的數據就是測試數據(Out-of-SampleData)。
(06)由於利用歷史數據回測時,策略在實際運作中使用的信息與歷史數據回測時使用的信息不同,比如策略「日均價達到10元賣出」在實時運作時,只能得到開盤至當前的價格數據,從而無從獲得日均價的數據。它如同一部穿越劇,屬於典型的先窺偏差(Look-aheadBias)。
(07)用於回測的歷史數據通常都會經歷一個預處理的過程,將部分數據刪除。比如,由於私有化或收購的退市股票,只存在部分交易數據,可能會從數據集中剔除,只使用那些一直處於交易狀態的數據進行回測。這種只使用預先篩選的倖存者數據進行回測所產生的偏差稱作倖存者偏差(SurvivorshipBias)。關於倖存者偏差,有個二戰的故事讀者可以讀讀。
(08)優化偏差(OptimisationBias),亦稱「數據窺視偏差」(Data-snoopingBias),從機器學習的角度來看,這即是過擬合,經過過度優化,策略雖然在歷史數據測試集上表現不錯,然而在實際應用時卻差強人意。
(09)窄帶濾波器(SpikeFilter)主要用於處理時間序列數據的大幅波動。一般而言,時間序列數據的移動變化較為平緩,為了探測數據中可能包含的異常數據,可以使用一個濾波器,將波動變化異常(設定閾值)的數據進行變換,恢復到正常範圍,反之則保持不變。由於異常數據呈現扁平長窄帶狀,窄帶濾波器名稱由此而來。
(10)明富環球(MFGlobal)是全球最大的商品期貨經紀商之一,數月之內在歐洲主權債券上的投資達到63億美元,接近其資本的6倍,其槓桿率飆升至40:1。由於歐債危機,其信用評級跌至垃圾級,2011年10月31日向法院提交破產保護申請。
(11)1956年,貝爾實驗室的工程師約翰·拉裡·凱利(JohnLarryKelly)在研究長距離電話通訊噪聲問題時推導出的一個公式,由於意外在21點、賭馬等博彩遊戲中獲得成功,後來廣泛應用於證券投資領域,即凱利準則(KellyCriterion)。由於長距離通話存在隨機噪聲,凱利研究如何傳輸信號,從而保證傳輸速率最大。如果將其應用於賭博,就可以確定每次的賭注大小從而贏的最多。
聲明:本公眾號致力於量化投資相關的乾貨文章分享,僅供學習交流,不構成任何投資建議!著作權歸作者所有,若涉及侵犯您的權益,敬請原作者見諒,並後臺留言聯繫小編進行刪除處理,謝謝。