在量化交易策略的研發(fā)過程當(dāng)中,存在著許多需要注意的事項。如果忽視了這些 問題,輕則造成量化交易策略的優(yōu)化結(jié)果與實際要求存在偏差,重則直接導(dǎo)致最后的 量化交易策略沒有任何實際用處,甚至造成真實的損失。在這些事項之中,首先需要 注意的是量化交易策略研發(fā)中是否存在未來信息的問題,如果對歷史數(shù)據(jù)進(jìn)行建模和 優(yōu)化的過程中包含了未來信息,那么應(yīng)該重新構(gòu)建研發(fā)模型,規(guī)避掉所有的未來信息, 保證量化交易策略與實際相符。
所謂未來信息問題,就是指基于歷史數(shù)據(jù)進(jìn)行回溯測試的過程中,使用交易完成 之后的信息來決定交易本身。為了更為直觀的說明何為未來信息,這里給出了一個用 來解釋的示意圖,如圖 3.1 所示。在圖中,回溯測試能夠使用的樣本數(shù)據(jù)包括 A 階段 的數(shù)據(jù)和 B 階段的數(shù)據(jù),假設(shè)模型判斷出一個買賣點在 A 和 B 之間,那么 B 階段所 有的信息對于這一個買賣點而言都是發(fā)生在未來的信息,因此在判斷交易的時刻,B 階段的所有信息都是無法得知的。在量化交易策略正常執(zhí)行的過程中,買賣、倉位等 策略組成部分的判斷都是基于之前所有可以獲取的數(shù)據(jù)得到的,也就不存在未來信息 的問題。但是在進(jìn)行回溯測試的時候,由于我們已經(jīng)得到了超越買賣點的數(shù)據(jù)信息, 也就是圖 3.1 中 B 階段的信息,因此就可能發(fā)生將 B 階段的未來信息用以判斷買賣點 這樣一種不符合實際交易邏輯的情況。 { 原文來自 www.kzuj.com.cn }
在國內(nèi)的一些資料當(dāng)中,這樣一種問題更常見的名稱是未來函數(shù),這樣的習(xí)慣可能源自于國內(nèi)交易者對于技術(shù)指標(biāo)的深入研究。在編寫技術(shù)指標(biāo)函數(shù)的時候, 往往會由于疏忽等問題出現(xiàn)這種使用不應(yīng)該出現(xiàn)的未來信息的情況。而在國外的一些 文獻(xiàn)和資料當(dāng)中,比較常見的叫法還包括前視偏差。相較于未來函數(shù)而言,這種叫法的覆蓋面更加廣泛一些,因為在一個較為完整的量化交易策略研發(fā)過程當(dāng)中, 函數(shù)只是其中的一部分。而前視偏差則比較形象的說明了這個問題,站在圖 3.1 中的 買賣點上,B 階段的信息都是時間前進(jìn)后才能得到的,這樣所造成的偏差就會讓未來 的信息進(jìn)入交易決策本身。
使用 K 線圖當(dāng)前柱的最高、最低價判斷買賣點是一個比較常見的使用未來信息 的情況。舉例而言,當(dāng)一個建倉策略為“若今日的最低價高于上日的收盤價,則在今 日的最低價買入”時,就是一個很典型的含有未來信息的交易策略。在該策略中,買 賣決策依賴于兩個重要的價格信息,一個是上日的收盤價,一個是今日的最低價。上 日的收盤價顯然是沒有問題的,是一個從當(dāng)日開始交易時就已經(jīng)獲得的信息。但是今 日的最低價就是一個比較明顯的未來信息或者說未來函數(shù),因為不到今日收盤,是不 可能確定當(dāng)日的最低價的,要求在最低價買入是一個在現(xiàn)實中不可能完成的任務(wù)。不 過在回溯測試過程當(dāng)中,由于已經(jīng)在做決策時得到了關(guān)于當(dāng)日最低價的信息,因此就 有可能錯誤的將今日最低價當(dāng)作可用信息并用來確定買賣決策。 { 原文來自 www.kzuj.com.cn }
還有其他一些關(guān)于未來信息錯誤使用的例子,比較知名的如“在牛市當(dāng)中持有股 票”。實際上,除非具有預(yù)判牛市來臨時間點的技術(shù)手段,否則這種說法往往只是牛 市確認(rèn)之后的事后諸葛亮。當(dāng)一波牛市已經(jīng)形成甚至走完的時候,再說出初期建倉之 類的意見已經(jīng)沒有任何實際操作意義,而在牛市剛剛開始的時候,交易員常常無法準(zhǔn) 確的判定這到底是牛市的開始、持續(xù)的盤整、還是前一波下跌途中的波動,也就無從 談起牛市持有股票了。
另外一個例子則更偏技術(shù)一些,當(dāng)研究人員使用整個樣本的數(shù)據(jù)進(jìn)行優(yōu)化并得到 一個量化交易策略之后,使用該量化交易策略在全樣本的整體回溯測試中判斷買點、 賣點、倉位大小等設(shè)置就屬于引入了未來信息。這時的未來信息問題不在于量化交易 策略本身,而在于量化交易策略的研究過程。用上面的示意圖 3.1 來進(jìn)行說明,就是優(yōu)化量化交易策略時,無差別的使用了 A 階段和 B 階段的數(shù)據(jù),但是最終優(yōu)化得到 的量化交易策略,又放到整個樣本中進(jìn)行回溯測試并得到了 A 和 B 之間的買賣點。 因此在回溯測試的過程中,該買賣點的確認(rèn)就使用了 B 階段的信息,也就是未來的信 息。
由于未來函數(shù)對于回溯測試的可靠性有負(fù)面的影響,因此在實際的策略研發(fā)過程 當(dāng)中是需要極力規(guī)避的。最直接的辦法莫過于將研發(fā)完成的量化交易策略放入實際環(huán) 境中進(jìn)行模擬交易或者實盤交易,原因在于實際交易中判斷策略執(zhí)行的時間點總是現(xiàn) 在,因此必然是無法得到未來的信息的。如果在回溯測試過程中不慎加入了未來信息 用來判斷,具有相同結(jié)構(gòu)的量化交易策略在實際的交易中也必將暴露出來。但是在實 際的策略研發(fā)過程當(dāng)中,由于量化交易策略會經(jīng)歷頻繁的變更,因此全部采取實際檢 驗的方法有時是難以達(dá)到的。在有些回溯測試的情形下可以人為的將數(shù)據(jù)樣本分成兩 個部分并分開存儲,使用其中一個部分進(jìn)行量化交易策略的優(yōu)化工作,然后再將優(yōu)化 完成的策略放入另外一個部分的樣本數(shù)據(jù)進(jìn)行模擬運行。這種強(qiáng)制分開儲存數(shù)據(jù)的做 法,其實也是在效仿實際運行中未來數(shù)據(jù)的絕對不可得。如果在實際的研發(fā)工作中數(shù) 據(jù)分開存儲也因為工作量過大而不易完成,那么似乎也只能依靠量化交易策略研究人 員自身的邏輯思考和判別能力來規(guī)避未來信息了。
雖然這里給出了一些辦法用來規(guī)避未來信息,但是仍然存在一些未來信息的種類 是難以發(fā)覺甚至是難以避免的,例如在其他資料中討論較多的存活者偏差。存活者偏 差是指在某一個數(shù)據(jù)集當(dāng)中,由于時間的推移,集合中之前包含的一部分成員由于無 法存活而離開數(shù)據(jù)集,而在回溯測試時參照的是最后的存活成員,因此提前剔除了表 現(xiàn)不好的非存活成員,造成了未來信息的問題。依然使用圖 3.1 來進(jìn)行說明,研究人 員在回溯測試時得到的數(shù)據(jù)是 B 階段末尾所有存活成員的數(shù)據(jù),但是在箭頭所指向 的買賣點時,所能見到的成員中還包括一些在 B 階段離開的成員。回溯測試中由于數(shù) 據(jù)集的問題直接把這些在 B 階段表現(xiàn)不佳的成員進(jìn)行了排除,就是濫用了 B 階段才 能得到的信息,從而虛假的提升了量化交易策略的回溯測試成績。
這種問題常常發(fā)生在選股策略當(dāng)中,一些較為常見的股票數(shù)據(jù)庫實際上已經(jīng)根據(jù) 當(dāng)前的信息剔除了之前由于退市等問題而消失的股票的數(shù)據(jù),使用這些數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行回溯測試就會產(chǎn)生存活者偏差的問題。例如“買入價格極低的股票”這一策略, 在獲得的數(shù)據(jù)具有存活者偏差的情況下,能夠在測試中建倉的都是之后會存活下來的 股票,在價格很難更低的前提下上漲的可能性很高,因此回溯測試的結(jié)果往往不切實 際的優(yōu)秀。由于完全排除存活者偏差問題的數(shù)據(jù)庫通常價格更高甚至無法得到,依靠 研究人員在時間軸上自行搜集數(shù)據(jù)組建數(shù)據(jù)庫的做法又耗時耗力,因此在這類情況下 完全規(guī)避存活者偏差是非常困難的。