什么是量化交易?
「量化交易」是一門匯集數學知識與程式語言的學問,一般人或許會認為那是相關領域專家才能勝任的工作。但此書作者告訴我們并不盡然,這是他身為這領域專家,在歷經數次成功與失敗的實務操作后所下的結論。在從事量化交易前,需要先厘清一非常重要的觀念,那就是這不是能一夕致富的行業,不然到頭來只會落得血本無歸的下場。積極謹慎的個性與耐心,是做這行業人最普遍具有的特質。
隨著網絡資源搜索的盛行,我們不難在許多學術文章或是相關網頁論壇里,找尋到許多適合自己偏好取向的交易策略。因此我們關心的是如何分辨這些交易策略的好壞,以及避免在這過程中犯下一些常見的錯誤,例如存活偏誤(survivorship bias)、前視偏誤(look-ahead bias)、資料窺探偏誤(Data-snooping bias)以及對交易成本的考量等,以下一一為大家介紹。
下圖為計量交易的流程.首先,交易者會從歷史資料或過去經驗中得到對于市場的知識,將知識量化后發展出交易策略,并使用策略對過去歷史資料做回測,產生對此策略的評估報告.這樣做的好處是,可以確保執行者對策略完全了解,另一方面,若在回測中發現不夠好的部分,也可以及時修正與改進.最后,此策略就可以進入實際操作的階段.而從發展策略到回測產生評估報告的過程,就是傳統投資方式與量化交易最大的差異處。
關于回測的各種知識首先,是進行回測的平臺,以下介紹幾個常用的回測平臺:
第一個常用的回測平臺是Excel 資料的輸入、輸出都可在同一張表格上完成,交易人可以輕易地做比較與判讀,但Excel的缺點就是只適合用來處理較簡單的模型。第二個常見的交易平臺為Matlab Matlab的優點如以下這張圖所示,它可以輕易的從外部的資料庫匯入資料,并有豐富的數學及統計工具幫助投資者建立較復雜的策略和處理大量資料,但Matlab的缺點是測試完策略后,至少到目前在一些的情形下,必須從另外的交易平臺做下單。注:與Matlab較為相似的平臺,如「R」、「Python」也是一般常見的使用工具,各有其優缺點。
第三個是在國內較為常見的交易平臺Multicharts 除了適用多種標的資產的交易如股票、期貨、外匯等項目外,簡易的操作方式與其所具備的許多服務功能,像是圖表交易、下單匣、交易追蹤視窗、市場深度視窗、自動化進場/出場與商品代碼轉換等特色所著稱。另外,在國外更常被使用的交易平臺為Quantopian、Quantconnect、Portfolio123,此三個平臺各自擁有相當多使用者,里面有許多社群分享的交易策略,資源十分豐富。許多量化交易的前置作業,如選定標的資產,下載歷史資料等都能在這些平臺上輕松完成,各網站的資料匯整連接的都十分完善,使用者只需專注在策略上的設計即可。
選定交易平臺后,接著是尋找及使用歷史資料交易人可以在網絡上尋找到大量的免費資料來源,但在使用上述資料時,必須注意幾個要點,避免錯誤觸發交易信號。
1.標的是否有股票分割以及發股利的情況
以(IGE) ETF做個例子,下表為2005/6/7-10的資料,在8-9間,該ETF做了一次2 :1的股票分割,表格中可以發現兩天的收盤價差將近一倍,這時就需對分割前的收盤價做調整。也就是必須將收盤價除以二。
而下面表格則是2005-07年發放股利的狀況,必須針對每一次股利發放計算調整的乘數。乘數計算方式為( Prev. Close – Dividend ) / Prev. Close。
根據上述的調整方式,得到下表為調整完股票分割和股利發放后的收盤價,以此收盤價進行回測,才能得到正確的報酬。
2.標的的存活偏誤(Survivorship Bias)
做回測的時候,可能會面臨一個情況是部分標的已經下市無法得到資料,而未將這些資料放進歷史資料中,而得到有所偏差的報酬。舉個虛擬的交易策略為例,買進當年表現最差股票并持有一年。
由上面的兩個例子,可以得知交易人在進行回測使用歷史資料時必須非常小心,以免產生有所偏差的結果。
而如何公平比較不同的策略和不同交易人的結果,Sharpe Ratio是一個公認較為適合的指標,Sharpe Ratio衡量的是承擔每單位風險所得到的超額報酬。
3.前視偏誤(Look-ahead bias )
我們使用交易完成之后的資訊會導致前視偏誤,比如以在「當日最低價的1%之內買入股票」的策略就有前視偏誤,因為在收盤之前是無法得知當日股票的最低價格,使用有落后期數的歷史數據可以避免這一偏誤的產生。我們能依下列方式檢驗是否存在前視偏誤:
第一步驟是使用標的物的所有歷史數據運行程式,將推薦買賣倉位存入一個文件A;第二步驟是移除最近N天(10天或100天)的歷史數據后,再次運行程式,將推薦買賣的倉位存入另一個文件B;第三步驟是不考慮文件A的最后N行,比對文件A和文件B的買賣倉位是否相同?如果倉位不一致,則說明移除的N天數據參與了文件A的運算,故回測程式有前視偏誤的存在。4.數據窺探偏誤(Data-snooping Bias)
數據窺探偏誤指的是我們過度優化參數而夸大了回測績效,可分為參數優化和非參數優化兩種。參數優化是指像進出場門檻值,持有期限和回測期限等;非參數優化是指利用開盤價或是收盤價來交易,是否持有過夜,交易標的為大型股或是小型股等。這些類型的選擇往往可以優化回測績效,但對未來績效并不能保證會有好的結果。有三種方法來降低這種偏差:
第一種最常見的方法是增加我們的樣本量;第二種是樣本外回測,樣本外回測指的是將歷史數據分成兩部分,用第一部分來優化參數,我們稱為訓練集(training set),用第二部分來做樣本外測試,我們稱為測試集(test set)。從測試集的損益圖可以看出策略的績效很好,這個配對交易策略在訓練集和測試集上的Sharpe ratio都很高,因此,可認為此策略不存在數據窺探偏誤。如果把進場門檻值改為1倍標準差,出場門檻值改為0.5倍標準差,即在組合價值向下跌破1倍標準差時,購買該價差組合,當組合價值上升超過0.5倍標準差時,做空該價差組合。在訓練集上的Sharpe ratio會上升至2.9,測試集的Sharpe ratio會上升至2.1。顯然,后面這組門檻值更好,但并不是所有訓練集上的參數優化都會提高測試集上的績效。這時應該選擇使得訓練集和測試集上的績效都較好(很可能不是最好)的參數。最后還要檢測是否存在前視偏誤。
第三種降低數據窺探偏誤的方法為敏感度分析。敏感度分析是指我們在模型參數優化、通過測試集的檢驗之后,透過改變這些參數,來觀察模型在訓練集和測試集上的績效變化。如果績效變化很大,或者說在參數取任何其它值時績效都不佳,模型很可能具有數據窺探偏誤。5.交易成本考量
例2:考慮交易成本的均值回歸模型
一個簡單的交易策略:以1995年到2006年這段期間,我們以收盤價買入前一交易日日收益最差的股票,賣空前一交易日日收益最好的股票。若不考慮交易成本,策略的Sharpe ratio等于0.2510,而考慮交易成本的Sharpe ratio等于-3.1884。因此這個策略是無利可圖的。
策略的改進
首先我們需要注意的是所有策略的改進都要有經濟學原理或者市場的現象作支撐,而不是亂套入些反覆試驗的方法,否則會產生數據遷就偏差。
例3:對例2策略的微小改動
對策略進行如下改動:在市場開盤而非收盤時進行交易,不考慮交易成本的Sharpe ratio會增加到4.43;而考慮交易成本的Sharpe ratio會變為0.78,可以發現這個策略仍有利可圖。