量化交易入门(精华必读版)
本文主要面向兩類讀者,第一類是正在努力尋找一份基金管理公司量化交易員工作的求職者,第二類是期望嘗試開啟自己“散戶”算法交易事業的人士。
量化交易是數量金融學(注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)。由于長距離通話存在隨機噪聲,凱利研究如何傳輸信號,從而保證傳輸速率最大。如果將其應用于賭博,就可以確定每次的賭注大小從而贏的最多。
來源:Alpha
----------------------------------------------
推薦閱讀:
1.一個量化策略師的自白(好文強烈推薦)
2.股票期貨經典的量化交易策略都在這里了!(源碼)
3.期貨/股票數據大全查詢(歷史/實時/Tick/財務等)
4.三分鐘弄明白為什么貝葉斯是量化工作者最常用的工具
5.學習Python有哪些書籍?這里有一份書單送給你
6.江湖中常說的“網格交易法”到底是什么?
7.10種經典的日內交易策略模型思路
8.干貨 | 量化選股策略模型大全
9.量化金融經典理論、重要模型、發展簡史大全
總結
以上是生活随笔為你收集整理的量化交易入门(精华必读版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件的导入和导出
- 下一篇: 微信小程序开发博客项目-篇幅《一》