如何成為一名量化交易員?——初學者必備概念

weixin_33859844發表於2017-01-18

這篇文章為大家介紹量化交易系統中最為常見的幾個基本概念。本篇的預期讀者主要是希望成為基金公司量化交易員的人,以及嘗試搞搞個人演算法交易的愛好者。
量化交易是量化金融行業中最為尖端的一個領域,不論你是希望通過面試還是構建自己的交易策略,都會花費大量的時間與精力學習相關的知識。不僅如此,你還需要過關的程式設計技術,至少需要精通一門高階程式語言(如MATLAB、R或Python),而且伴隨著高頻交易策略的日益盛行,技術層面對於策略執行效果越來越至關重要,精通C/C++也許是最佳的選擇。

81125-9f6b40ceb7d2c08b.png
量化交易

量化交易系統包含以下四個主要元件:

  • 策略構建模組:尋找策略,發掘可用優勢,決定交易頻率。
  • 策略回測模組:獲取資料,分析策略表現,排除模型偏差。
  • 指令執行系統:對接券商,自動化交易,合理減少交易費用。
  • 風險控制模組:最優化資產配置,根據凱利公式與交易心理學決定風險容忍度。

**注:凱利公式
凱利公式是一條可應用在投資資金和賭注的公式。應用於多次的隨機賭博遊戲,資金的期望增長率最高,且永遠不會導致完全損失所有資金的後果。它假設賭博可無限次進行,而且沒有下注上下限。


81125-d14bb1784ecba78d.png
凱利公式

**

策略構建

量化交易始於研究,研究過程包含選定策略、校驗策略(檢查其是否與當前投資組合的其他策略有衝突)、優化策略(通過資料對策略調優,提高回報率,降低風險)等過程。需要注意的是,如果你是非機構投資者,你還需要考慮自身的“資本充足率”,交易費用對於你策略的影響也會更大。
與大家的普遍印象不同,通過公共資源就可以獲取到許多有用的策略,學術期刊會發布一些理論交易結果(大部分對於交易成本的考慮比較粗糙),相關部落格會深入討論一些策略,行業期刊上則會概述一些基金所使用的策略。
你可以會感到困惑,為什麼這些個人與機構會熱衷於公開討論他們的策略?他們都非常明白如果其他人都蜂擁使用此策略時,這些策略可能會失效。真實原因在於,他們從來不會公開策略的調優方法與詳細的引數設定,而調優過程才是將一個普通策略提升到高盈利狀態的關鍵所在。事實上,找一個類似的已有策略,並實施自己的優化過程,才是目前構建自身策略的最佳實踐。
你可以從以下網站找尋些策略的靈感:

  1. Social Science Research Network - www.ssrn.com
  2. arXiv Quantitative Finance - arxiv.org/archive/q-fin
  3. Seeking Alpha - www.seekingalpha.com
  4. Elite Trader - www.elitetrader.com
  5. Nuclear Phynance - www.nuclearphynance.com
  6. Quantivity - quantivity.wordpress.com

你看到的大多數策略可以分為均值迴歸趨勢跟蹤/慣性策略兩類。均值迴歸策略認為標的資產的價格序列(如兩個關聯資產的價格差異)存在長期均值,短期的偏離最終必定恢復。趨勢跟蹤策略則在跟蹤市場趨勢的同時,通過對投資者心理及大型基金的資產結構的分析收集某個交易方向的慣性,跟蹤該趨勢直到慣性發生反轉。

另一個重要趨勢是交易頻率。低頻交易(LFT)通常是指持有標的資產超過一個交易日的策略,高頻交易(HFT)則只在交易日內持有資產,還有超高頻交易(UHFT)只持有標的幾秒甚至幾毫秒。雖然對於個人投資者來說高頻和超高頻策略也都是可實現的,但必須對於交易的技術棧和交易所的報價成交原理非常瞭解,這篇文章不會對這些方面做過多的延伸。

策略/策略集一旦構建完成,就需要用歷史資料進行收益能力的評估測試。接下來就是回測發揮的環節了。

回測

回測的目的在於使用歷史及樣本外資料對策略進行驗證,確定其能否創造預期收益,結果也會被看做為該策略實盤操作的一個預期值。但實盤涉及因素極其複雜,回測並不能確保策略的成功。
回測可能是量化交易中要求最為精細的一環,因為太多可能的人為偏差會涉及其中,一般包括前視偏差、倖存偏差和優化偏差(也被成為資料透視偏差)。關於回測還有幾個需要關注的關鍵點,包括歷史資料的質量和可得性、實際交易成本的影響及如何確定一個健壯的回測平臺,下文指令執行系統中會進一步討論交易成本。
通過歷史資料測試及優化是回測必須的步驟。市場中有各種不同的標的資產,更有數不勝數的資料供應商,服務價格取決於資料的質量、深度及實時性。對於菜鳥量化交易員(至少是個人投資級別)來說,一般Yahoo金融上的免費資料就足以大家使用。我會著重介紹在處理歷史資料集是的常見問題,資料供應商這裡不會詳述。

**注:資料透視偏差是指使用過多引數與擬合曆史資料,而沒有進行大資料量、樣本外測試及敏感度分析導致的偏差
**

關於歷史資料主要關心準確度/清潔度、倖存者偏差及對於公司行為(如發放股利、拆股等)的調整。

  • 準確度指資料的整體質量(是否存在謬誤資料)。錯誤資料有時候很容易發現,比如使用窄帶濾波器可以從時間序列資料中篩選出超出範圍的資料並修正它們,但有時候也非常難以確定,通常我們需要兩個以上的資料提供商,通過比對確定資料是否準確。
  • 倖存者偏差,通常免費或比較便宜的資料集都存在這個問題,倖存者偏差是指資料集中不在包含已經不再流通的資產,比如已經退市或者破產的股票。使用這種資料集進行回測會導致評估業績比真實的(歷史上)業績要好,因為資料集相當於做了一次自我篩選,篩選出了歷史上表現較好的股票。
  • 公司行為通常會對原始股票價格出現階梯性影響,而這部分影響在計算基於價格的收益率時不應當被考慮進來,股利分發與拆股是最為常見的公司行為。每當發生公司行為時,都要經歷價格的回撥,要注意千萬別把拆股與真實的價格調整給混淆了,許多交易員都曾在公司行為上栽過跟頭。

執行回測需要一個軟體平臺,你可以選擇專業的回測軟體,如Tradestation;一個數值處理平臺,比如Excel或MATLAB;也可以使用Python或者C++自主研發一套軟體。這裡不會詳述Tradestation、Excel和MATLAB,因為我希望構建一套完整的技術棧,這麼做的一個好處在於回測軟體和指令執行系統可以緊密的結合在一起,即使面對的是一個高階統計學策略,對於高頻交易策略,自主研發甚至可以說是必須的。
進行回測時,回測系統必須能夠定量地給出策略的收益表現。最大跌幅夏普比率是業界公認的兩個度量標準。最大跌幅標註了一定時期內(通常以年為單位)賬戶資金曲線中最大的波峰-波谷差,通常以百分比計量。因為一些統計學因素影響,低頻交易的最大跌幅要比高頻來得更大些。歷史回測可以得到歷史上的最大跌幅,對於未來具有很強的指導意義。第二個指標是夏普比率,它被定義為超額收益的平均值除以這些超額收益的標準差,超額收益指策略高於預定基準收益的部分,基準收益常會選擇標普500或3個月的國債。需要注意的是,“年化收益”這個平日裡常見的指標,回測裡確基本不用,因為它沒有將策略的波動性考慮進去。
回測完成,確信策略中已經排除了所有偏差,如果運氣好夏普比率和最大跌幅表現都挺好,那麼恭喜你,可以開始著手構建指令執行系統了!

指令執行系統

通過指令執行系統,策略產生的交易指令被傳送給經紀商並執行。現實當中,指令生成可以是半自動或者全自動,執行機制也可以配置為手工、半手工或者完全自動。低頻交易中,手工和半手工較為常見,而高頻交易則需要建立完全自動化的執行機制,通常也需要與指令生成模組緊密配合。
構建指令執行系統的關鍵在於對接券商的介面、降低交易費用的策略(包含佣金、滑點及經紀商買賣差價)及處理實盤與回測預測業績差異的處理。

經紀商提供了多種交易接入方式,從電話到高效能API任你挑選。理想情況下,每個人都希望自己的指令執行越自動化越好,還有支援多策略並行及如何提高執行頻率,這些巨集偉的目標都促使你不斷前進。常用的回測軟體,MATLAB、Excel及Tradestation在低頻、簡單的交易策略中都可以表現很好,但如果你希望實施實盤的高頻交易,那麼你必須使用高效能的程式語言如C++構建一個自己的指令執行系統。我之前就職的基金公司裡,有一個10分鐘的交易迴路,每十分鐘我們可以就可以從這個迴路下載最新的市場資料,並基於新資料在這個10分鐘的週期內完成交易,據說是用優化過的Python指令碼實現的。如果需要實現分鐘甚至秒級別的資料互動,C/C++可能表現會更好些。
在一個大型基金中,指令如何最優執行通常不在量化交易員的工作範疇,但在小型點的基金或做高頻交易的公司,交易員既是指令的執行者,同時又必須要具備更廣泛的技能。如果希望供職於基金,那麼請你記住一點,你的程式設計技能可能要比你的統計學、經濟學技能更為重要!
指令執行過程中經常會出現問題的地方在於交易費用的優化。最為常見的三類費用包含

  1. 佣金/稅費(commission/tax),通常由經紀商、交易所或監管機構收取
  2. 滑點(slippage),指你訂單希望的成交價格與實際成交價格的差異(一般會在行情波動大或市場缺乏流動性的時候出現)
  3. 價差(spread),指交易標的的買賣報價之差,注意價差並非常量,會跟隨市場訂單的情況而不停變化。

交易成本對策略影響很大,甚至可以讓一個原本高盈利高夏普率的策略搖身一變成為爛到掉渣的策略,通過回測正確預測交易成本極具挑戰性。依據交易策略頻率,需要獲取歷史成交資料(包含逐筆交易的買賣資訊),資料量很大,所以大型基金中,基本所有寬客團隊都在專注於指令的執行優化。以如下場景為例,一個基金需要拋售大量的標的資產,如果上來就大量傾銷,會導致股價快速大幅下降,該指令也就沒有獲得最優的執行。因此,演算法一般會將該指令拆分為“點滴訂單”,儘管可能需要承擔滑點風險。再深入一步,甚至有專門的策略來捕捉這些情況並加以利用,這個領域被稱為“基金結構套利”。

指令執行系統最後一個主要關注點在於策略的真實表現與回測中的期望的差別,有許多原因會導致這種情況,比如之前已經回測部分已經提到的前視偏差和資料透視偏差。但一些策略在真實執行前很難發現偏差,高頻交易尤為明顯。交易策略和指令執行系統都可能存在回測中無法復現,但線上上實盤又出來搗亂的bug,市場也可能因為一個策略的部署從而天翻地覆。新的監管環境,投資者情緒與巨集觀經濟的變化都可能導致市場行為的變化,進而也會影響你策略的表現。

風險管理

風險管理是量化交易魔方的最後一塊,我們之前討論的所有偏差都屬於風險的範疇。常見的風險有技術性風險(比如交易所的服務突然發生了硬碟故障)、經紀商風險(比如經紀商破產了,別笑,真的有,MF Global!)等,簡言之,只要會影響交易進行的因素,都可能帶來風險。

風險管理還需要確定最優資本配置(組合理論的一個分支),這意味著資本如何分配到不同的策略上執行。這是一個非常複雜的研究領域,需要依賴非凡的數學技能。目前凱利公式是業界公認進行資產及槓桿配置的標準,凱利公式提出了一些收益的統計特徵假設,但在真實的金融市場中卻不一定總是正確,交易員具體使用其時一般偏保守。
風險管理的另一個主要作用是用來排除交易員的心理障礙,有許多認知偏差會潛移默化地影響到交易過程。儘管大家普遍認同如果策略完全交由演算法執行問題會更少,但目前很多交易還是需要經交易員之手。損失厭惡是一種常見偏差,當處於虧損狀態時,可能會由於確認損失帶來的痛苦而遲遲不進行止損,盈利情況下類似,可能會因為害怕失去已獲收益而過早地交易。當交易員強調最近而忽略了長期,則會產生另一種常見偏差——近期偏差。當然也有經典的情緒偏差——恐懼與貪婪,它們會導致槓桿不足/槓桿過高,進而可能導致收益降低或爆倉的情況。

總結

顯而易見,量化交易是量化金融中一個極其複雜,但卻非常有趣的領域。這篇文章我只是觸及皮毛地介紹了量化金融的基本框架,文中很多我只是一兩句話帶過的內容都有對應詳盡的書籍與論文,所以建議在你準備申請量化交易相關工作之前,一定要補一補基礎知識,至少要對統計、經濟學有個大略的認識,有MATLAB、Python或者R的相關實踐,對於更高階的高頻交易,你還需要Linux核心、C/C++,彙編及網路延遲優化等技能。

如果你對建立自己的演算法交易策略感興趣,建議你首先精通程式設計,儘可能自己構建資料採集器、策略回測及指令執行系統,因為試想你的自有資本一直線上持續運作,親自完成完備的測試、熟悉策略裡的各種陷阱與問題,相對於把這部分工作外包出去,是不是更能睡個安穩覺呢:)

翻譯自
https://www.quantstart.com/articles/Beginners-Guide-to-Quantitative-Trading
原標題:Beginner's Guide to Quantitative Trading
作者: Mike Halls-Moore

相關文章