
科(kē)學回測中的(de)大(dà)學問(wèn)
發布時(shí)間(jiān):2018-01-30 | ↑Ω ★ " 來(lái)源: 川總寫量化(huà)
作(zuò)者:石川
摘要(yào):正确、科(kē)學的(de)回測對(duì)構建÷¥量化(huà)投資策略至關重要(yào)。本文(wén)解讀(dú)回測中的★'(de)各種坑。
1 引言
回測(backtesting)是(shì)任何一(yī)個(gè)量化(hu♣™à)投資策略上(shàng)線之前必須要(yào•)經過的(de)一(yī)道(dào)流程;它是(shì)量化(huà)投資策略和(hé)其他(tā)類型投資(如₽£(rú)主動投資)最大(dà)的(de)區(qū)别之一(yī)。回測将投©∞資策略應用(yòng)到(dào)曆史數(shù)據∑δ<中并考察它的(de)表現(xiàn)。具體↓↓©(tǐ)的(de),回測有(yǒu)如(rú↕☆÷✘)下(xià)作(zuò)用(yòng):
1. 驗證投資策略是(shì)否有(yǒu)效:我們很(hěn)容易從(cóng)學術(shù)文(wén)獻、投資書(s£✘'εhū)籍、券商報(bào)告、以及互聯網得(de)₽ 到(dào)很(hěn)多(duō)交易策略的(de)想法。回測可(kě)'φα以快(kuài)速驗證一(yī)個(gè)想法是(shì)否有←φ(yǒu)效(淨值曲線至少(shǎo)得(de)是(shì)向上(shàn✔≥∏¥g)的(de))。
2. 對(duì)策略進行(xíng)參數(s®£♠hù)調優:當一(yī)個(gè)交易策略有(yǒu)效的(de)時(s →♥"hí)候,回測讓我們優化(huà)該策略的(de)參數(sγ™↔₹hù)。比如(rú),一(yī)個(gè)均線策略,我們使用(yòng<) 20 天的(de)均線還(hái)是(λ✔shì) 30 天的(de)均線?當然,δ<₩在優化(huà)的(de)過程中,我們需要(yào)非常小(xiǎo)♦←↑心、避免過拟合的(de)問(wèn)題。₽
3. 給出策略在未來(lái)表現(xi↑©∏àn)的(de)預期:任何一(yī)個(gè)靠譜的(de)量化(¶↕ §huà)投資策略都(dōu)是(shì)基于對(duì)市(shì)場(>✔chǎng)行(xíng)為(wèi)的(de)某種假設;該假設∑'₽"背後反映的(de)是(shì)某種特定的(de)業(yè)務邏輯。量化(huà )策略假設市(shì)場(chǎng)的(de)這(zhè)₹®®種行(xíng)為(wèi)在未來(lái)會(huì)重複。因£<此,策略在回測中的(de)表現(xiàn)将對(duì)其未來(l♥∞βái)上(shàng)線後的(de)表現(xiàn)(如(rú)收益率$"、最大(dà)回撤、交易費(fèi)用(yòng)等)起到(dào)參照♥(zhào)作(zuò)用(yòng)。
正确、科(kē)學的(de)回測對(duì)構建量化(huà)投資策>≈略至關重要(yào)。然而,回測中又(yòu)有(yǒu)很(hěn)多(duō)“坑”。如(rú)₽≠Ω₹果不(bù)能(néng)正确的(de)認識并避免它們,回測的≠"∏(de)結果很(hěn)可(kě)能(néng)對(duì)我× 們産生(shēng)誤導,錯(cuò)誤的(de)回測↑±更是(shì)會(huì)導緻實盤中的(de)(嚴重)虧損。今天我們就( γjiù)來(lái)和(hé)各位小(xiǎo)夥伴聊聊我們是(shì)怎♦ 麽理(lǐ)解回測的(de)。本文(wén)将從↓'"(cóng)下(xià)面幾個(gè)角度論£> ¶述:
1. 超參數(shù);
2. 訓練集、測試集之糾結;
3. 各種偏差;
4. 不(bù)可(kě)忽視(shì)的(de)交易費(fèi)用≠ (yòng);
5. 回測并非無所不(bù)能(néng)。
2 超參數(shù)
超參數(shù)(hyperparameters)是(shì)₩→↓參數(shù)的(de)參數(shù),是(shì)源自(zì)機(jī) ≤¶Ω器(qì)學習(xí)中的(de)一(yī)"σ個(gè)概念。在機(jī)器(qì)學習(xí)中,超參數(shù)是(s®' hì)在模型開(kāi)始學習(xí)之前需要≤(yào)人(rén)為(wèi)設置值的(de)參數(shù),≥≠而不(bù)是(shì)通(tōng)過訓練得(de)到λβ(dào)的(de)模型參數(shù)。
在構建量化(huà)投資策略時(shí),雖然不(bù)一(yī)定會(huì↔×)用(yòng)到(dào)機(jī)器(qì)學習(xí→λ)算(suàn)法,但(dàn)是(shì)超參數(shù)的(de >)概念依然非常重要(yào)。比如(rú)在技(jì)術(shù)分(fē✔n)析策略中,我們是(shì)使用(yòng)通(tōng)道(dào)突破還©±φ₩(hái)是(shì)均線交叉?是(shì)使用(yòn¥♦ε g) ADX 指标還(hái)是(shì) SO 指标來(lái)測量''動量的(de)大(dà)小(xiǎo)?這(zhè)些("↔xiē)需要(yào)人(rén)為(wèi)決定的<©(de)參數(shù)就(jiù)屬于超參數(shù)。一×'(yī)旦确認具體(tǐ)使用(yòng)的(d&↓ ±e)指标後,至于計(jì)算(suàn)指标的(de₹←δ)參數(shù)(比如(rú)計(jì)算(suàn)通(tōng)道÷(dào)和(hé)均線需要(yào)的(de)時(s∏☆hí)間(jiān)窗(chuāng)口)就(ε" jiù)可(kě)以通(tōng)過回測來(lái)優化(huà)。另一(yī)個(gè)超參數(shù)就(jiù)是(shì)回測期的(de&♥±♠)時(shí)間(jiān)窗(chuāng)口到(™•δdào)底選多(duō)久。這(zhè)是(shì)任何量化(αγ₹huà)投資策略都(dōu)必須面對(duì×☆≤♥)的(de)問(wèn)題。比如(rú)我們測試一(yī)個('£Ω§gè)量化(huà)選股因子(zǐ),那(<♠±nà)回測期是(shì)從(cóng) 2000∏↕$ 年(nián)開(kāi)始,還(hái)是(shì) 2005 年(niá±¶♣n)開(kāi)始,還(hái)是(shì) 20π≠✘10 年(nián)開(kāi)始等,這(zh≈'→è)是(shì)事(shì)先必須确定的(de)。随著(zhe)機(jī)器(qì)學習(xí)算(suàn)法在量化(huà¶★)投資領域的(de)應用(yòng)愈發普•∞及,我們在使用(yòng)它們時(shí)也(yě)勢必面臨π§著(zhe)同樣的(de)問(wèn)題。比如(rú§↕)在集成學習(xí)中(如(rú)随機(jī)森(sēn)林(lín))λ≠£&,決策樹(shù)的(de)數(shù)量和(hé✔)深度是(shì)多(duō)少(shǎo);在 K-means 算(suàn©♣€)法中簇數(shù)的(de)個(gè)數(←₽≤₽shù);在 SVM 算(suàn)法中核函數(shù)應該選哪個(gè) →₽。這(zhè)些(xiē)都(dōu)是(s↔•β<hì)超參數(shù)的(de)範疇。
對(duì)于典型的(de)機(jī)器(qì)學習(xí)問(wσπèn)題,超參數(shù)也(yě)是(s☆φ↑•hì)需要(yào)優化(huà)的(de) ×,以此提高(gāo)機(jī)器(qì)學習(&≥∑xí)算(suàn)法在樣本外(wài)的(de)性能(néng)和₩✔(hé)效果。對(duì)于量化(huà)投資策略來(lái)∏®↑∏說(shuō),超參數(shù)的(de)調優除了(le)從(cón☆ g)數(shù)學角度(如(rú)策略的(de) Pr≈¥↕ofit/Loss 曲線)考量外(wài),還(hái)需要(yà↕εαo)考慮超參數(shù)本身(shēn)是(shì)否具£♥有(yǒu)清晰的(de)業(yè)務含義以及是(shì)否适合策略的(de)↔↑使用(yòng)者。這(zhè)裡(lǐ)舉兩個(gè)例子(zǐ)。×←∑
例子(zǐ)一(yī):假設使用(yòng) SVM 來(lái)預測股票( "÷✘piào)收益率,輸入的(de)特征可(kě)以是>∞(shì)各種量價數(shù)據和(hé)基本面數(shù)據,輸出為(wèiφ✘ )漲跌的(de)預測。如(rú)何選擇 SVM 的(de)¶λ 核函數(shù)就(jiù)是(shì)一(yī)個(§±☆gè)超參數(shù)問(wèn)題。如(↑rú)果選擇了(le)非線性的(de)核函數★ε(shù),它會(huì)把特征向量進行(xíng)↔≈β非線性變換、映射到(dào)更高(gāo)維的(δ♠de)空(kōng)間(jiān)。這(zhè)當然有(&λyǒu)助于提升預測的(de)準确性,但(dàn)×↔是(shì)人(rén)們往往難以從(cóng)金¥♣β↔(jīn)融投資角度解釋特征向量的(de)非線性變換(參見(jiàn)₩σ《一(yī)文(wén)看(kàn)懂(dǒng)支持向量機(jī♠₹'✘)》),因此這(zhè)樣的(de)策略就(jiù)不(bù)折♦★♠不(bù)扣的(de)成為(wèi)了(le)黑(©↔δhēi)箱。
例子(zǐ)二:趨勢追蹤策略既可(kě)以使用(yòng)均線交叉∏σ±✘也(yě)可(kě)以使用(yòng)通(₩↑&tōng)道(dào)突破。在它們之間(jiān)的(de)選擇就(σβ©jiù)是(shì)超參數(shù)的(de)問(wèn)題<¶™。然而,這(zhè)兩類策略的(de)風(fēng)險收益比顯著不(×ε¥bù)同:均線類策略交易次數(shù)多(duō)、勝率低(Ω>☆∏dī)、平均盈利和(hé)平均虧損都(dōu)較&"低(dī);反觀通(tōng)道(dào)突破策略,它交易次數(shù)少(s≠♥×hǎo)、勝率高(gāo)、平均盈利和(hé∑$®)平均虧損都(dōu)較高(gāo)(見(jiàn)《趨勢追蹤:均線 vs 通(tōng)道(dào)突破↕β<》)。不(bù)同的(de)策略背後折射的(de)是(shì)完全不(bù)同的®£(de)“投資哲學”,投資者需要(yào)根據自(zì)己的(de∞∞≥)風(fēng)險偏好(hǎo)選擇。如(rú)果僅從(cón§₹g)數(shù)學角度考慮選取了(le)一(yī)個(gè)并非讓自<∞÷≥(zì)己十分(fēn)舒服的(de)交易策略•σ☆ ,那(nà)麽在實盤中注定會(huì)失敗。
除了(le)上(shàng)述這(zhè)些(x≤iē)明(míng)确的(de)超參數(shù)外(w∑₽ài),有(yǒu)一(yī)些(xiē)因♣∏Ω♠素需在構建策略之前确定,但(dàn)是(shì)在回測中∏$÷™我們會(huì)根據策略的(de)表現(xiàn)對(duì)它們進行(xíσ€<ng)反饋。這(zhè)類因素介于超參數(shùσ™)和(hé)策略參數(shù)之間(jiān)。比如(rú)在資産配置策略中選擇哪些(xiē)資産• 放(fàng)入資産池;又(yòu)如(rú)在量化< (huà)多(duō)因子(zǐ)選股策略中,使用(yòng)哪些(xiē)♣∑π風(fēng)格因子(zǐ)進行(xíng→←λε)選股。
在資産配置中,我們必須事(shì)先決定一(yī)個(gè"≈σ)資産池(asset pool),然後構建策略 ™。但(dàn)是(shì)随著(zhe)€↑δ回測的(de)深入,如(rú)果發現(xiàn)某類資産↑Ω✘的(de)加入對(duì)于策略的(de)表現(xi∑∞àn)沒有(yǒu)正貢獻,我們便會(huì)從(cóng)資産池中剔除掉該資< "←産。類似的(de),在多(duō)因子(zǐ)策略中,我們事(¥ shì)先拟定了(le)一(yī)些(xiē)具有(yǒu)超額收益的®α≈₹(de)風(fēng)格因子(zǐ),但(dàn)如(rú)果回測發現(©✘σ↓xiàn)一(yī)些(xiē)因子(zǐ)造成€∞投資組合的(de)可(kě)交易性太差(比如(rú)換手率太高(gāo),或者☆✘₽選出來(lái)的(de)都(dōu)是(shì)流動性差的(de)股票(≤♥¶piào)),那(nà)麽也(yě)會(huì)剔除掉這(zhè)些(xiē≥₽)因子(zǐ)。像資産池、因子(zǐ)庫這(zhè)類“參數(shù™✔&)”,都(dōu)需要(yào)在構建策略前确定,但(dàn)是(shì)策≠>略的(de)表現(xiàn)又(yòu)會(huì)↔β€←指導我們進一(yī)步優化(huà)它們。
3 訓練集、測試集之糾結
任何一(yī)個(gè)介紹量化(huà)策略或交易系統的(↑®÷de)文(wén)獻都(dōu)會(huì)強調在構建策略時(shí),一(Ω← yī)定要(yào)把曆史數(shù)據分(fēn)成訓練集★π和(hé)測試集,在訓練集上(shàng)優化(huà)策略的™β™(de)參數(shù),在測試集上(shàng)考 <察策略的(de)表現(xiàn)。(我曾經看(kàn)過一(yī)本英文φ♠±(wén)的(de)關于交易系統構建的(de)書 £&(shū),洋洋灑灑 300 來(lái)頁,基本上(shàng)λ∏÷ 唯一(yī)的(de)核心思想就(jiù)是(shì)要(yαδào)有(yǒu)測試集……)這(zhè)個(gè)論調固然沒有™≤(yǒu)任何問(wèn)題,但(dàn)是(shì)交←←易數(shù)據中的(de)一(yī)些(xiē)特點使得→→(de)是(shì)否區(qū)分(fēn)訓練集和(hé)測試集有(y↑♦♠↑ǒu)時(shí)變得(de)很(hěn)糾結。
區(qū)分(fēn)訓練集和(hé)測試集的(de)初衷是(shì)避免參數☆★(shù)在樣本內(nèi)過拟合,從(có↔≥ ☆ng)而導緻策略在樣本外(wài)(上(shàng)線後)的(de)表≥現(xiàn)和(hé)其在樣本內(nèi)的(α₽de)表現(xiàn)大(dà)相(xi•∏àng)徑庭。在一(yī)個(gè)典型的(de)通(tōng)過訓練集和(hé)₹♦測試集來(lái)對(duì)參數(shù)調優的(de)過程中,通(tōn ∏≥✔g)常的(de)做(zuò)法是(shì)調整算(suàn)法叠代的(€ ₹de)次數(shù)或者懲罰系數(shù)之類的(de)。随著(zh"¥∞e)參數(shù)的(de)調優,訓練集上(shàng)的(de)誤差γ€∏單調遞減,等測試集上(shàng)的(de)誤差開(kāi∑☆→↓)始提升,就(jiù)停止調優(下(xià)圖)。
一(yī)個(gè)經科(kē)學回測過的(de)≈δ策略應該能(néng)夠捕捉訓練集和(hé)測試集數(s→₽β hù)據表現(xiàn)出來(lái)的(de)某種市(shì)≤δΩ場(chǎng)共性。任何交易數(shù)據都(dōu)包≠含一(yī)定的(de)噪聲成分(fēn),¥♣使用(yòng)測試集是(shì)為(wèi)了(le)避免模型(策略)過度☆₩±錯(cuò)誤的(de)考慮訓練集內(nèi)樣本包含的(de)噪聲,更好(↓☆ hǎo)的(de)發現(xiàn)共性。然而,交易數(shù)據的(de)嚴重匮乏和(hé)γ↑市(shì)場(chǎng)環境的(de)頻(pín±♠σ∏)繁變化(huà)使得(de)上(shàng)述訴求成為(wèi)一(yπφī)個(gè)遙不(bù)可(kě)及的(de)美(měi)好(≥↓™hǎo)願景。我們說(shuō)交易數(shù)據嚴重匮乏是 ∑®≠(shì)就(jiù)數(shù)據的(de)獨立性以及數(shù)據的(de)可(kě)交易特征而言的(de)。從(cóng)這(zhè)兩點而言,在構建策略時(shí)是(sh•∑βì)否一(yī)定要(yào)劃分(fēn)訓練集和(hé)測試集、♥↑↕以及如(rú)何劃分(fēn)就(jiù)需要(y₹©∑ào)非常謹慎。
由于市(shì)場(chǎng)流動性環境和(hé)宏觀經濟的÷®♦λ(de)變化(huà),以及波動率聚類等特點,投資品價格數(shù☆)據的(de)短(duǎn)期相(xiàng)σ∑ 關性比較高(gāo),而在不(bù)同的(de)曆史時(<§↑↑shí)期往往反應出不(bù)同的(de)特點。如(rú)果訓練集和(hé)測試集的(de)數(shù)據代表了(le)不(®↕≠Ωbù)同的(de)市(shì)場(chǎng)狀态,那(nà)麽它們之間(Ω÷≥jiān)的(de)交易數(shù)據就(jiù)沒有₹<♥∞(yǒu)多(duō)少(shǎo)共性可(kě)言。相(xiàng)對(duì)于訓練集來(lái)說(shuō),測試λ∏✘集中的(de)數(shù)據滿足訓練集中假設±φ的(de)樣本太少(shǎo),以此來(lái)優化(huà)策略勢必♣♠≠忽視(shì)了(le)測試集數(shù)據中傳達ε♦$$出的(de)新的(de)市(shì)場(chǎng)環境。對(duì)于Ω'一(yī)個(gè)策略來(lái)說(shuō),我們都(dōu)×φ✔±不(bù)希望忽略市(shì)場(chǎng)的(de)任何特征(除了 ★↓(le)噪聲)。
在可(kě)交易特征方面,滿足一(yī)個( ≥gè)策略假設的(de)樣本其實很(hěn)少(shǎo<↑≈)。舉個(gè)極端的(de)例子(zǐ),比如(rú) A✘×÷ 股中追蹤大(dà)牛市(shì)的(de)趨勢 ∏✘↔類策略。在過去(qù) 20 年(nián)中,也(yě✔✘↕ )僅有(yǒu)三波牛市(shì),而且它們表現(xiàn)出&✘β來(lái)的(de)市(shì)場(cπ↓εhǎng)特征均不(bù)相(xiàng)同(比如(rú)以 2007± ∑ 年(nián)大(dà)牛市(shì)構建的(∑₩₽de)趨勢追蹤策略在 2015 年(nián) ↓&♦大(dà)牛市(shì)中的(de)逃頂效果并不(bù)好(h €φǎo))。在這(zhè)種情況下(xià),如←→←ε(rú)果還(hái)把數(shù)據分(fēn)成訓練集和(§↓hé)測試集會(huì)怎樣呢(ne)?我們一(yī)定會(huì)把策略在測試集中的↕÷₹(de)體(tǐ)現(xiàn)出來(lái)的↓≠(de)新市(shì)場(chǎng)環境反¶ ↔饋到(dào)訓練過程中,這(zhè)已經φγ違背了(le)分(fēn)訓練集和(hé)測試集調參的(±☆γde)本意;這(zhè)等價于我們在整個(gè)曆史數(shù←♥±φ)據中對(duì)策略的(de)參數(shù)調優了(le)δ←。比如(rú)我們使用(yòng)訓練集構建一(yī)個(gè)策略,∞→£ 但(dàn)是(shì)在測試集上(shàng)遇到(dào)β€α₹股災了(le),為(wèi)了(le)對(duì)付它,α≥ ₽就(jiù)強行(xíng)加上(shàng)一δ∞(yī)個(gè)下(xià)跌 XX% 就(jiù)止損的(de)條件(j↕←• iàn)。這(zhè)其實不(bù)是(shì)在對(duì)原∏₩→始策略的(de)參數(shù)調優,而是(shì)針對(duì)®÷ £測試集的(de)樣本去(qù)改變策略的(de← ₽✔)初衷!如(rú)此來(lái)“優化(huà)”策<β略,又(yòu)還(hái)有(yǒu)什(shénσ≥)麽訓練集、測試集之分(fēn)?當然,這(zhè)麽做 >↔☆(zuò)的(de)出發點是(shì)好(hǎo)的(de) —— 讓£ 策略盡可(kě)能(néng)的(de)适δπ<應不(bù)同的(de)市(shì)場(chǎng)環境,在真正&"的(de)樣本外(wài)(上(shàng¶¥≤)線後)的(de)适應性更強。
對(duì)于是(shì)否一(yī)定要(yào)分¶≈€(fēn)訓練集和(hé)測試集,我的(de)看(k✔ εγàn)法是(shì)這(zhè)種防止樣本內(nèi)過拟合的(de)思想是(shì)絕對←®(duì)可(kě)取的(de),但(dàn)如(rú)何®↔∑執行(xíng)應該試策略而定。比如(rú)對(duì)于用(yòng)機(jī)器(™ εqì)學習(xí)算(suàn)法來(lái)預測短(du↔φǎn)期收益率的(de)策略,使用(yòng)訓練集和(hé≥¥★Ω)測試集就(jiù)是(shì)恰當的(de)。對(duì)于量化(huà♥±∑<)因子(zǐ)選股策略,這(zhè)似乎又(yòuβ×)是(shì)個(gè)僞命題。衆所周知(zhī),小(xiǎo)市(shìε Ω±)值因子(zǐ)在股災 2.0 之前一(yī)直有(yǒu)效,但(dà¶₹n)從(cóng) 2016 年(nián♦₩)初開(kāi)始,随著(zhe)價值投資的✘∞(de)回歸,小(xiǎo)市(shì)值因 ←≥子(zǐ)徹底失效。又(yòu)比如(rú),價值因§♥£α子(zǐ)在最近(jìn)兩年(nián)有(yǒu)效,但(∞€≥•dàn)是(shì)随著(zhe)它們估值的(de)提升,誰也(yě)不(b↓ ↕ù)能(néng)保證它在未來(lái)持續有(yǒ≠λ↕♦u)效。一(yī)個(gè)經科(kē)學回測過的(de)策略必₽♥§♣須能(néng)夠捕捉市(shì)場(chǎn ✘¶g)的(de)某種特點。隻要(yào)這(zhè)↔÷λ©個(gè)特點有(yǒu)明(míng)确的(de)業(yèΩ♠ )務支持而非數(shù)據挖掘的(de)産物(wù✘'♣≠),那(nà)麽針對(duì)這(zhè)個↔α©≥(gè)特點構建及優化(huà)策略參數(shù)時(s→φhí),是(shì)分(fēn)别使用(yòng)訓練、測試集σ✔,還(hái)是(shì)使用(yòng)所有(yǒu)數(shù≈♠σ↑)據來(lái)整體(tǐ)優化(huà),這(zα¶€•hè)并不(bù)重要(yào)。
4 各種偏差
本節介紹回測中的(de)一(yī)些(xiē✔)常見(jiàn)的(de)偏差,它們包括優化(huà)偏差(過拟合)、前視(shì)偏差≈ 、以及幸存者偏差。常見(jiàn)的(de)介紹回測的(de) ¶文(wén)章(zhāng)的(de)重點就(☆≤jiù)是(shì)這(zhè)些(xi≤∏ē)。
優化(huà)偏差(optimization bias)指的(de)是(sh$ ì)通(tōng)過不(bù)斷地(dì)增加參數(sh≤₹ù)個(gè)數(shù),直到(dào)策略的(de)收益曲線在回測中表現α•(xiàn)的(de)非常好(hǎo)。參數(shù)越多(duō),越容易在樣本內(nèi)“處處精★∑↕¶準”。這(zhè)意味著(zhe)對(duì)樣本內(nèδ≠i)數(shù)據的(de)噪聲過度建模,及過拟合。防止優化(huà)偏差的(de)方法是(sh± πì)減少(shǎo)參數(shù)的(de) ≥↔個(gè)數(shù) —— 比如(rú)能(nén☆>δg)夠使用(yòng)一(yī)個(gè)技(jì)術(s'≥hù)指标就(jiù)不(bù)要(yào)使用(yòng)兩個(gè) ——↕ ← 以及增加回測數(shù)據。在這(zhè)方面,可(kě)以從(cóng)兩個(g®¥ è)維度來(lái)增加。一(yī)個(gè)是(shì)使用(yòn'★←g)更長(cháng)的(de)曆史數(shù)據,比如(rú→≠↓✔)一(yī)個(gè)策略在過去(qù) 10 年♦≥(nián)有(yǒu)效就(jiù)比在過去(qù) 3 年(nián)有ε♥÷ (yǒu)效更有(yǒu)說(shuō)服力。但(dàn)這(zhè)麽做★δ(zuò)時(shí)需要(yào)考慮↔<市(shì)場(chǎng)狀态變換(有(yǒu)可(kě)能(néng)$™σ太久遠(yuǎn)的(de)曆史數(shΩ✔₽≈ù)據并不(bù)滿足你(nǐ)策略的(de)假設),因此>¥δ回測數(shù)據也(yě)并不(bù)是(shì)越長→♠(cháng)越好(hǎo)。第二個(gè)維度是(shì¥₹β)考慮不(bù)同的(de)投資品。如(rú)果策略和(hé)♣&一(yī)組給定的(de)參數(shù)在多(duō)個(gè)投資品上£®(shàng)都(dōu)有(yǒu)效,它無疑更有(yǒu)說 ∑™(shuō)服力。
此外(wài),通(tōng)過考察參數(shù)平原(parameter sσ£urface)也(yě)可(kě)以檢查過拟合。将策略表現(xiàn)的(de)指标(比如(rú)收益率或者最大(dà)回撤)σλ¶畫(huà)成參數(shù)的(de)函數(shù)∏γ∞ 就(jiù)是(shì)參數(shù)平原₽ ♥&。對(duì)于一(yī)個(gè)好(h§₹ǎo)的(de)策略,在微(wēi)調參數®•(shù)取值時(shí),它的(de)表現(xiàn)應該比較穩定,參₹₩φ數(shù)平原應該十分(fēn)光(guāng)滑。比如(rú)如(rú)果最優的(de)均值參數(shù)是(shì) 20 > •Ω個(gè)交易日(rì),則當我們使用(yòng) 19 或ε₹" 21 個(gè)交易日(rì)計(jì)算(suàn)→α均值時(shí),策略的(de)表現(x∞ iàn)和(hé) 20 日(rì)均線的(de)策略不(bù)應該差€←很(hěn)多(duō)。如(rú)果策略的(de)參數(↔♥>shù)平原非常不(bù)規則,則意味著(z¥§¥©he)參數(shù)背後沒有(yǒu)合 γφ♦理(lǐ)的(de)業(yè)務邏輯,而更多(duō)的(d£♦&♣e)是(shì)數(shù)據挖掘的(de)結果,這(zhè)時(shí)就(∏ε↑jiù)要(yào)小(xiǎo)心。
前視(shì)偏差(look-ahead biε∑as)指的(de)是(shì)錯(cuò)誤σ≤✔的(de)使用(yòng)了(le)未來(lái)數(shφ<ù)據。在構建策略時(shí),盡管我們會(huì∏<)非常小(xiǎo)心,但(dàn)仍然會(huì)時(shí)不(bùβ )時(shí)的(de)步入前視(shì)偏差的(♥←÷de)陷阱,這(zhè)往往是(shì)編程時(shí)₩÷£$的(de)疏忽造成的(de)。舉兩個(gè)我自(zì)己的$÷∞(de)例子(zǐ)。有(yǒu)一(yī)次我使用(yòng)€®'∏卡爾曼濾波(一(yī)種狀态空(kōng)間(jiān)建模©✔✘♥方法)構建了(le)一(yī)個(gè)預測模型,我很(hěn£™♠λ)小(xiǎo)心的(de)使用(yòng)截止到(d≥®£ào)每個(gè)交易日(rì)當日(rì)的(de)滾動窗(chuā&✔≤ng)口以避免使用(yòng)未來(lái)數(shù)據,πγ™≠結果回測的(de)效果非常好(hǎo),“好(h₹® ǎo)到(dào)一(yī)看(kàn)那(nà)淨值曲線就(jiù)知↑₹∏(zhī)道(dào)一(yī)定是(shì)哪裡(lǐ)出了(le)問★±♠(wèn)題”。後來(lái)經過檢查發現(xiàn)≈♣,在使用(yòng)該方法的(de)第一(yī)步有(yǒu)一(yī)個≤∞(gè)初始化(huà)的(de)過程,在那(nà)裡(lǐ"β&)傳入了(le)所有(yǒu)曆史數(shù)據,而非截"§止到(dào)每個(gè)交易日(rì)的(de)數(shù)據,由此引入↕<了(le)未來(lái)數(shù)據。另一(yī)次我測試一(yī←≤§★)個(gè)技(jì)術(shù)分(fēn)析策略,該策略的(de♥>©±)收益曲線也(yě)是(shì)非常吸引人(rén)。後來(l★ái)發現(xiàn),程序中使用(yòng)了(le)最高(gāo)÷β價和(hé)最低(dī)價數(shù)據,并假設當它們出現(xiàn)÷™™×時(shí)觸發交易。這(zhè)顯然是(sh≤↔ì)有(yǒu)問(wèn)題的(de),因為(wèi)隻有(δ★↓•yǒu)當一(yī)個(gè)交易周期結束後,才能(néng)知(zhī)道γ®λ(dào)這(zhè)段時(shí)間(jiān)內(nèi)的(de←♥)最高(gāo)價和(hé)最低(dī)價是(shì)多 ε(duō)少(shǎo),而到(dào)了(le)那(←♥ nà)個(gè)時(shí)候,早已無法按該價格成交。所以,通(tōng)÷₩α常在使用(yòng)最高(gāo)、最低(dī)價時(shí),必須$÷至少(shǎo)使用(yòng)滞後一(yī)期的↔÷β₹(de)數(shù)據。同樣的(de)問(wèn)題£☆&也(yě)會(huì)發生(shēng)在使用(yò¶φ<✔ng)基本面數(shù)據或宏觀經濟數(shù)據的(de)策略中,我們必須對♥ ε(duì)這(zhè)些(xiē)數(shù)據何時(shí)發布π±<>非常小(xiǎo)心,以免在回測中提前使用(yòng)≤ 這(zhè)些(xiē)數(shù)據,造成←δΩ≤前視(shì)偏差。
幸存者偏差(survivorship b "ias)一(yī)般針對(duì)選股策略而言,≤$∑指的(de)是(shì)在數(shù)據集中錯(cuò)誤忽略退市≈≤<≠(shì)的(de)股票(piào)。在構建選股策略時(shí),我們有(yǒu)時(shí)會(huì)下(xi↕☆à)意識的(de)僅考慮在整個(gè)回測期內(nèi)都(dōu)存在(“活÷♣著(zhe)”)的(de)股票(piào),而忽略掉在回測期內(©β×nèi)退市(shì)的(de)股票(piào)<÷。這(zhè)麽做(zuò)會(huì)提高(gāo)✔♦提高(gāo)策略在回測期內(nèi)的(de)表現(xiàn),因 ™為(wèi)那(nà)些(xiē)差的(de)、退市(sh∞λ&ì)的(de)股票(piào)根本就(jiù)沒↕αγ有(yǒu)被考慮在內(nèi)。但(dàn)₽α↑在實際交易中,我們無法提前預知(zhī)哪些(xiδ÷λē)股票(piào)會(huì)退市(shì)。因此,忽略退市(shì)的₽σ>(de)股票(piào)是(shì)不(bù←< ←)恰當的(de)。這(zhè)也(yě)是(shì)一(yφΩ©ī)種“前視(shì)偏差”。
量化(huà)投資較主動投資的(de)優勢是(shì),它可(kě)以摒✔"δ棄人(rén)的(de)情緒,排除人(rén)在交易時(shΩ✔♣í)由各種認知(zhī)偏差帶來(lái)的(de)額外(wàβi)的(de)風(fēng)險(見(jiàn)《讓你(nǐ)投資虧錢(qián)的(de) 15 個(gè)“偏差” ®♣》)。在回測中,也(yě)隻有(yǒu)盡量摒棄各種偏差,才能(néng÷>↓≤)使它發揮出最大(dà)的(de)作(zuò♥∏φ≥)用(yòng)。
5 交易費(fèi)用(yòng)
一(yī)個(gè)回測中賺錢(qián)的(deγ®σ)策略和(hé)一(yī)個(gè)實盤中虧損的(de)策略之間(jiān¶•¶£)的(de)差别是(shì)什(shén)麽?交易費♣α™∏(fèi)用(yòng)。
交易費(fèi)用(yòng)包括手續費(f"→₩&èi)(commission)、延遲造成的₽§(de)滑點(slippage)以及流動性造成的(de)沖擊成本(markγαφet impact)。其中手續費(fèi)的(de)估計(jì)最簡單,券商ε§有(yǒu)固定的(de)手續費(fèi)比例,隻γ∏需要(yào)在回測中考慮到(dào)即可(kě)。滑點和(hé)↕¥沖擊成本則很(hěn)難在回測中準确的(de)反應。
滑點指的(de)是(shì)在交易信号産生(sΩ&hēng)到(dào)交易實際執行(xín•∞↑g)之間(jiān)價格的(de)(不(bù)&π÷σ利)變動造成的(de)額外(wài)費(fèi)用±↓≠(yòng)。這(zhè)對(duì)于中、高(gāo)頻(pín)策略額××"外(wài)重要(yào)。這(zhè)些(xiē)策略捕捉日(rì)內(n♠®€èi)轉瞬即逝的(de)交易機(jī)會(huì),如(rú)果回測中 §>策略的(de)表現(xiàn)依賴于按照(zhào)交$↓©易信号産生(shēng)瞬間(jiān)的(de)價格來(lái)交易"™≠→,那(nà)麽這(zhè)個(gè)策略在實盤不(bù)會(huì)有(yǒΩΩu)什(shén)麽前途。這(zhè)是€←×≈(shì)因為(wèi)實盤中難以保證會(huì)交易到(dà€ ©o)信号發生(shēng)瞬間(jiān)的(de)價格(價格出現₹(xiàn)後才能(néng)計(jì)算(suàn)↔ 交易信号,交易信号需要(yào)送到(dào)券商,然後送¥σ¶π到(dào)交易所交易,這(zhè)之間(jiān)都(dōu$♥)需要(yào)時(shí)間(jiān))。為(wèi§©)此,回測中可(kě)以考慮的(de)是(shì✘©)按照(zhào)每個(gè) bar 的(de)收盤價來(lá≥λ♦♦i)交易。這(zhè)個(gè) bar 的(de)頻("✔pín)率可(kě)以很(hěn)高(gāo),比如(rú)分(f©₽ ®ēn)鐘(zhōng)級,但(dàn)一(yī)定是(↔>shì)按照(zhào)它的(de) clos✔ ↕e 價格來(lái)成交,而非在這(zhè)個(gè) bar 的(de)♠←形成過程中信号觸發的(de)瞬時(shí)價格。又(yòu)或者,在回測£時(shí)考慮信号出現(xiàn)後一(yī)段時(shí)↕↕σ£間(jiān)內(nèi)按照(zhào) TWAP(時δα(shí)間(jiān)平均)成交。在這(zhè)些(xiē)設✔<λ定下(xià)并考慮适當的(de)滑點, ↑φ☆如(rú)果該策略還(hái)能(néng)賺錢(qián),那(nà)€≥$©麽在實盤中才有(yǒu)機(jī)會(huì)。÷<此外(wài),滑點對(duì)趨勢追蹤策略的(de)影(yǐπφng)響也(yě)比較大(dà)。對(duì)于這(zh $↑&è)類策略,交易信号産生(shēng)時←π(shí),價格一(yī)定是(shì)向著(zhe)預測的(de)方向±★✘↓移動,這(zhè)意味著(zhe)我們必須追價,滑點無法避₹γ¶免。
沖擊成本指的(de)是(shì)投資品流動性 ©不(bù)足帶來(lái)的(de)額外(wài)<♠' 交易費(fèi)用(yòng)。對(duì)于流動性高(gāo)的(de)投資品,限價指令簿(l♣$imit order book)上(shàng)π↔ββ,買一(yī)和(hé)賣一(yī)之間(jiān)的(dε¶e)價差(bid-ask spread)很(hěn)小(xiǎ§♥₽o),且兩邊的(de)挂單量都(dōu)足"∑夠。交易這(zhè)類投資品不(bù)會(huì)帶來(lái)太大±★(dà)的(de)市(shì)場(chǎng)沖擊。但(dàn)如(∑✔γrú)果投資品的(de)流動性不(bù)足,那(nà)麽為(wèi✘α§)了(le)完成交易,策略就(jiù)勢必會(huì☆≈↑) walk the book(在一(yī)個(gè)方"±向上(shàng)“收單”),直到(dào)完成我們的(de)交易量需求。這✘♣↓(zhè)個(gè)沖擊成本和(hé)每筆∞× (bǐ)交易時(shí)的(de)具體(tǐ)流動&"•§性有(yǒu)關,因此回測中難以準确估計(jì)。
鑒于交易成本的(de)重要(yào)性,在回測中必須假設合理(lǐ)的ΩΩ↔(de)交易費(fèi)率,甯可(kě)高(gāo)估也(yě)不↓♣¶←(bù)應低(dī)估。通(tōng)常的(de)做(zα♦uò)法是(shì)估計(jì)幾檔不(bù)同的(de)交易費(fèi)用(<•↕★yòng),比如(rú)每筆(bǐ)交易單≠δ×邊千分(fēn)之一(yī)、千分(fēn)之三、千分(f∞÷✔$ēn)之五甚至更高(gāo)等。以此感受一(yī)下(xi≈∏à)策略在不(bù)同費(fèi)率下(x→✘ià)的(de)收益和(hé)回撤情況。但(dàn)☆σ®真實的(de)交易成本仍然需要(yào)一(yī)段時(shε>í)間(jiān)的(de)穩定實盤交易÷♠↔♥來(lái)評判。
能(néng)否有(yǒu)效的(de)控制 ™(zhì)交易費(fèi)用(yòng)直接♣關系到(dào)一(yī)個(gè)策略的(de)資金(jīn≠₽✔)容量。資金(jīn)量(交易量)越大(dà),完成交易所需的(de)時(shπ←₹í)間(jiān)越長(cháng),而交易成本(及不(bù)确↑§♠←定性)随交易時(shí)間(jiān)呈非線性增長(cháng)。由于交易量巨大(dà),華爾街(jiē)的(de)大(d$&→∏à)型金(jīn)融公司都(dōu)會(huì)針對(duì♥φ)市(shì)場(chǎng)微(wēi)觀結構(即 o ↑≥rder book 上(shàng)買單、賣單'λ¥¶出現(xiàn)的(de) dynamic↔€s)來(lái)建模,以此構建交易模型(注意是(sh÷'≥ì)交易模型,而不(bù)是(shì)投資策略模型)÷♥,從(cóng)而盡可(kě)能(néng)的(de)降低(dī)交易成本。✔♣ ★
6 回測并非無所不(bù)能(néng)
誠然,科(kē)學的(de)回測對(duì)于₽•量化(huà)投資策略至關重要(yào)≠₽。但(dàn)是(shì),回測也(yě)并不(bù)是(shì)萬能(néng)的(de)。
我們在《追求卓越,但(dàn)接受交易中的(de)不(b✘¥ù)完美(měi)》中指出,一(yī)個(gè)經過嚴格回測的(de)策略投放(fàng§ ✔§)到(dào)實盤時(shí)最大(dà)的( ε de)敵人(rén)是(shì)一(yī)個(gè)人(rén)的(de♠)心理(lǐ)關。它指的(de)是(shì)交易者能(néng)否克服實盤中的(d™$∞♦e)心理(lǐ)壓力從(cóng)而堅持使用(yòng)這(zhβ✘πè)個(gè)策略。回測中的(de)淨值曲線通(tōng)常是(s∏↓hì)非常穩健的(de)(幾年(nián)的(de)回測期內(↕₩£&nèi)慢(màn)慢(màn)爬升),其各種指标 —— 收益率、最大(<φ∏dà)回撤、夏普率等 —— 也(yě)非常出色。面↓♥對(duì)回測中優秀的(de)淨值表現→γ£¶(xiàn),我們會(huì)錯(cuò)誤的(de)高(gāo)估自(z≤®γ≈ì)己對(duì)于回測中虧損以及回撤周期的(de)容忍程度。在實盤中面對(d≠≠↑uì)如(rú)此的(de)虧損和(hé)回"×Ω撤周期完全是(shì)另一(yī)個(gè) story。
對(duì)于任何一(yī)個(gè)策略,幾乎可₹©≠♥(kě)以确定的(de)是(shì)它在回測中的(de)表現(xiàδδn)是(shì)其在實盤中表現(xiàn)的(de)上(shà✔÷Ωng)限(比如(rú)以最大(dà)回撤而言,我們自(zγ✔ì)己的(de)經驗和(hé)很(hěn)多(duō↕£®)量化(huà)投資前輩的(de)經驗都(dōu)指出,實盤的(<☆φde)最大(dà)回撤差不(bù)多(duō€☆)是(shì)回測中最大(dà)回撤的(de) 2 倍)。此外(wài),當一(yī)個(gè)策略♦π®上(shàng)線之初,虧損先于利潤出現(xiàn)也(yě)是(shì)十分₩∞←&(fēn)常見(jiàn)的(de)。面對(duì)真金(jīn)白( •β♦bái)銀(yín)的(de)虧損,我們會(huì)≠φ比想象的(de)更脆弱、更容易懷疑策略的(de)開(kāΩ©i)發中是(shì)否存在沒有(yǒu)考慮到(dào)的σδ↑↑(de)問(wèn)題、更容易自(zì)我動£≠γ搖從(cóng)而想要(yào)放(fàn∏g)棄該策略。在實際交易中,價格時(shí)刻δ©在波動,充斥著(zhe)噪聲的(de)各路(lù)消息以遠(yuǎn)超過σγ™¶我們能(néng)夠接受的(de)速度襲來(lái),我們會(huì)快(k×§uài)步踏入行(xíng)為(wèi)金(jīn)融學中的(de™α)各種認知(zhī)偏差陷阱、喪失冷(lěng)靜(jìng)、☆↑做(zuò)出一(yī)系列幹預交易系統的(de)錯(cuò)誤操作(zuò✔φ≥φ)。這(zhè)些(xiē)心理(lǐ)壓力是(shì)哪怕再精細☆¶γ★、再嚴格的(de)回測也(yě)無法呈現(xiàn)的(de)。
另外(wài),任何策略都(dōu)會(huì)有ε λ(yǒu)失效的(de)那(nà)一(yī)天。一(yī)個(gè)技(jì↑≠)術(shù)指标會(huì)因為(wèi)使用(yòng)的(d≠§↕ e)人(rén)越來(lái)越多(duō)而失效,一(yī)個≤<↓(gè)選股因子(zǐ)會(huì)因為(wèi)市(shìλ )場(chǎng)狀态的(de)變化(h♦>uà)而失效,一(yī)個(gè)賺錢(qiε∏án)的(de)策略會(huì)因為(wèi)流動性突然枯竭(₩★£比如(rú)股指期貨的(de)突然限制(zhì))而失效。¥φ&×任何量化(huà)策略都(dōu)需要(yào)定£₹期進行(xíng)事(shì)後評價,比較它£∞↓在樣本外(wài)和(hé)回測期內(nèi)的(de)表現(xià•"n),評判它是(shì)否仍然有(yǒu)效,或者根據實盤的( ↑☆de)反饋進行(xíng)調整。但(dàn)是(shì),評價策略這(zhè)件(jiàn♠ )事(shì)兒(ér)說(shuō)來(lái)容易,做(zuò)起來(l$ ✘ái)難。特别是(shì)對(duì)于低(dī)頻(pín)策略σ≈ε≈,由于交易頻(pín)率低(dī),它們需要(εφ∞yào)更長(cháng)的(de)實盤時(shí)間(jiān)來(®✔$lái)評判策略是(shì)否失效。比如(rú)小(σxiǎo)市(shì)值選股因子(zǐ)失效是(π≤ shì)因為(wèi)價值投資在最近(jìn)兩年(×αΩ•nián)盛行(xíng)。然而,如(rú)♥<±↕果我們在這(zhè)兩年(nián)一(yī)直按£∑照(zhào)小(xiǎo)市(shì)值選股卻早已虧的(de)一(yī)≠β塌糊塗了(le)。又(yòu)比如(rú),在資産配置策略中¥→₩♣,随著(zhe)實盤的(de)進行(xíng),哪些(xiē)投資品應該被挪出→÷ 資産池、哪些(xiē)回測中沒有(yǒu∞¶€ )考慮的(de)投資品又(yòu)應該被加₹↔<§進來(lái),這(zhè)些(xiē)都(dōu)是(shì)回測無法←> ×回答(dá)的(de)。
當然,這(zhè)些(xiē)并非回測之過。一(yī)個(gè)經過科(kē)學回測的(de)量化π↔(huà)投資策略仍然是(shì)投資中的(de)利器(qìφ$✘),它刻畫(huà)了(le)市(shì)場("≈λ₩chǎng)的(de)某種具備清晰業(yè)務邏輯支撐的(de)特★<₹π性,并假設該特性在未來(lái)會(huì>≤)重複,從(cóng)而捕捉這(zhè)些(xiē)機(jī)會(γλ☆huì)。如(rú)果市(shì)場(chǎng)變了(le),該特性不(bù)再發生(™✘α•shēng)而導緻策略失效,這(zhè)不(bù)是(shì)回測的(deΩ£γ)問(wèn)題,我們隻要(yào)欣然接♦♥受它就(jiù)是(shì)了(le)。科(kē)學的(de)回≠★測讓我們更有(yǒu)希望實現(xiàn)交易的(d±$e)一(yī)緻性;堅持一(yī)緻性的(de)交易才能(n εéng)讓我們成為(wèi)更優秀的(de)交♥®≥♣易者;隻有(yǒu)不(bù)斷追求卓越、成為(wèi)™₹★α更優秀的(de)交易者,才可(kě)能(néng)在市(sh•<"ì)場(chǎng)的(de)沉浮中生(shēng)存的(de)更久。
免責聲明(míng):入市(shì)有(yǒu)風(fēng)<× 險,投資需謹慎。在任何情況下(xià),本文(wén)的(de)內(nèi×∞→)容、信息及數(shù)據或所表述的(de)意見(jiàn)并≤₽β不(bù)構成對(duì)任何人(rén)的(de)投資建議(yì)。在 §ε任何情況下(xià),本文(wén)作(zuò)者§λ₩及所屬機(jī)構不(bù)對(duì)任何人(rén)因 使用(yòng)本文(wén)的(de)任何內(nèi)容β所引緻的(de)任何損失負任何責任。除特别說(shuō)明(mí≤Ω↓€ng)外(wài),文(wén)中圖表均直接或間(jiān)接來(lái)自(≤λzì)于相(xiàng)應論文(wén),僅為(w©™èi)介紹之用(yòng),版權歸原作(zuò)者和(héεφ)期刊所有(yǒu)。