任何事情都應(yīng)該使其盡可能地簡(jiǎn)單,直到無(wú)法再簡(jiǎn)單為止?!獝?ài)因斯坦。 1、引言 量化交易最大的特點(diǎn)是有明確的交易策略并具備可回測(cè)性(Backtest) 交易策略必須包含明確的規(guī)則,如買(mǎi)賣(mài)信號(hào)、加減倉(cāng)條件等。量化技術(shù)依賴(lài)的是明確的交易策略,結(jié)合資產(chǎn)的歷史交易數(shù)據(jù),可以對(duì)交易策略的歷史表現(xiàn)進(jìn)行回測(cè)。可回測(cè)性是量化交易區(qū)別于主觀投資的最重要的特征。近年來(lái),隨著量化投資和Python的流行,以及量化平臺(tái)和開(kāi)源框架的迅速發(fā)展,使用歷史交易數(shù)據(jù)進(jìn)行回測(cè)變得越來(lái)越便利。但是往往發(fā)現(xiàn),回測(cè)非常好看的策略,實(shí)盤(pán)卻可能表現(xiàn)不佳。今天給大家分享關(guān)于如何識(shí)別貌似可行的策略,以及如何規(guī)避量化回測(cè)的陷阱,內(nèi)容參考了(加)歐內(nèi)斯特·陳的《量化交易——如何建立自己的算法交易事業(yè)》一書(shū),公眾號(hào)后臺(tái)回復(fù)“量化交易”可免費(fèi)下載PDF。 2、常見(jiàn)的回測(cè)陷阱 量化回測(cè)是基于過(guò)去發(fā)生的行情數(shù)據(jù)產(chǎn)生歷史交易,從而考察這些交易業(yè)績(jī)表現(xiàn)的過(guò)程。使用計(jì)算機(jī)編程對(duì)歷史交易數(shù)據(jù)進(jìn)行回測(cè)看似簡(jiǎn)單,但實(shí)際上很容易出錯(cuò)。歷史業(yè)績(jī)高估(相對(duì)于已發(fā)生的現(xiàn)實(shí)交易)是回測(cè)的常見(jiàn)錯(cuò)誤。使用有存活偏差數(shù)據(jù)會(huì)導(dǎo)致回測(cè)業(yè)績(jī)高估。然而還有一些與如何編寫(xiě)回測(cè)程序以及如何構(gòu)造交易策略相關(guān)的常見(jiàn)回測(cè)陷阱,最常見(jiàn)的有兩種:前視偏差和數(shù)據(jù)遷就偏差。 前視偏差 簡(jiǎn)單理解是使用交易完成之后的信息。例如,在“日最低價(jià)的1%之內(nèi)買(mǎi)入股票”的交易規(guī)則,就有前視偏差,因?yàn)樵诋?dāng)日市場(chǎng)收盤(pán)前,是不可能知道日最低價(jià)的。又如,使用全部數(shù)據(jù)回歸得來(lái)的系數(shù),來(lái)產(chǎn)生一個(gè)基于前后兩段價(jià)格序列的線(xiàn)性回歸模型的交易信號(hào),同樣有前視偏差。 如何避免前視偏差? 使用“滯后”的歷史數(shù)據(jù)來(lái)計(jì)算策略信號(hào),可以避免前視偏差。滯后數(shù)據(jù)系列意味著,在計(jì)算移動(dòng)平均值、最高價(jià)、最低價(jià)、成交量等指標(biāo)時(shí),只使用“上一”交易期限的收盤(pán)數(shù)據(jù)。 數(shù)據(jù)遷就偏差 所謂數(shù)據(jù)遷就偏差,主要是指因遷就歷史數(shù)據(jù)的噪音而過(guò)度優(yōu)化模型參數(shù),造成策略的回測(cè)業(yè)績(jī)高于未來(lái)業(yè)績(jī)。在基于歷史數(shù)據(jù)的統(tǒng)計(jì)預(yù)測(cè)模型中,數(shù)據(jù)遷就偏差非常普遍,而在金融中,因?yàn)楠?dú)立數(shù)據(jù)的量非常有限,所以這個(gè)問(wèn)題就更加嚴(yán)重。獨(dú)立數(shù)據(jù)的量越少,交易模型中用到的可調(diào)參數(shù)就應(yīng)該越少。構(gòu)建數(shù)據(jù)驅(qū)動(dòng)模型時(shí),幾乎不可能完全消除數(shù)據(jù)遷就偏差,但有幾種方法可以降低這種偏差。 合理的樣本含量。降低數(shù)據(jù)遷就偏差的最基本方法是,按照要優(yōu)化的自由參數(shù)個(gè)數(shù),使用足夠多的回測(cè)數(shù)據(jù)。根據(jù)經(jīng)驗(yàn)規(guī)則,通常假定優(yōu)化參數(shù)所需的數(shù)據(jù)點(diǎn)個(gè)數(shù),是模型中自由參數(shù)個(gè)數(shù)的252倍(一年交易天數(shù)為252天)。例如,回測(cè)三參數(shù)的當(dāng)日交易模型,至少要用三年的日價(jià)格數(shù)據(jù),如果是分鐘交易模型,則至少需要7個(gè)月(252/390年)的分鐘數(shù)據(jù)(每天交易分鐘數(shù)6.5*60=390)。 進(jìn)行樣本外測(cè)試。將歷史數(shù)據(jù)根據(jù)時(shí)間先后分為兩段,后一段數(shù)據(jù)用于樣本外測(cè)試。構(gòu)建模型時(shí),參數(shù)優(yōu)化和定性選擇使用前一段數(shù)據(jù)(訓(xùn)練集),所得模型的測(cè)試使用后一段數(shù)據(jù)(測(cè)試集)。兩段數(shù)據(jù)的大小要大致相等,若數(shù)據(jù)量不夠,則至少用三分之一的數(shù)據(jù)做測(cè)試。訓(xùn)練集的最小含量由樣本含量經(jīng)驗(yàn)規(guī)則確定。 動(dòng)態(tài)參數(shù)優(yōu)化是更嚴(yán)密,也更復(fù)雜的樣本外測(cè)試方法,通過(guò)使參數(shù)不斷適應(yīng)變化的歷史數(shù)據(jù),來(lái)消除數(shù)據(jù)遷就偏差。不過(guò)最靠譜的樣本外測(cè)試方法是仿真交易,用尚未發(fā)生的真實(shí)數(shù)據(jù)運(yùn)行模型,是最可靠的測(cè)試方法。仿真交易不僅能做真實(shí)準(zhǔn)確的樣本外測(cè)試,同時(shí)也常??梢园l(fā)現(xiàn)模型中的前視偏差,以及各種與操作相關(guān)的問(wèn)題。 3、如何識(shí)別策略的好壞? 上述兩個(gè)回測(cè)陷阱往往容易造成“回測(cè)很豐滿(mǎn),實(shí)盤(pán)很骨感”的窘境。那么 面對(duì)紛繁復(fù)雜的量化交易策略,漂亮的歷史回測(cè)收益率曲線(xiàn),如何分辨策略的好壞與回測(cè)的可靠性呢?其實(shí)不管策略多么復(fù)雜,不管年化收益與風(fēng)險(xiǎn)指標(biāo)多么漂亮,我們只要回答好下面幾個(gè)問(wèn)題,就能識(shí)別出改策略的優(yōu)劣。 01、策略與基準(zhǔn)相比如何?收益持續(xù)性如何? 策略的超額收益可以通過(guò)信息比率或夏普比率來(lái)衡量。量化策略相關(guān)衡量指標(biāo)可參加推文:【手把手教你】Python量化策略風(fēng)險(xiǎn)指標(biāo)。 信息比率 = 超額收益率的均值 / 超額收益率的標(biāo)準(zhǔn)差 其中,超額收益率=組合收益率-基準(zhǔn)收益率,基準(zhǔn)通常是市場(chǎng)指數(shù)。如只買(mǎi)賣(mài)創(chuàng)業(yè)板股票,對(duì)應(yīng)的市場(chǎng)指數(shù)就是創(chuàng)業(yè)板指數(shù),如果買(mǎi)賣(mài)滬深大盤(pán)股,對(duì)應(yīng)的市場(chǎng)指數(shù)應(yīng)該是滬深300或上證50(超大盤(pán)股策略),中下盤(pán)股一般使用中證500。 夏普比率是信息比率的一個(gè)特例,基準(zhǔn)使用無(wú)風(fēng)險(xiǎn)利率。實(shí)踐中,由于對(duì)市場(chǎng)基準(zhǔn)的選擇不同,使得不同策略的信息比率不具有可比性,但是對(duì)無(wú)風(fēng)險(xiǎn)利率比較有共識(shí),因此夏普比率適合對(duì)不同種類(lèi)的策略進(jìn)行比較。一個(gè)比較有用的經(jīng)驗(yàn)規(guī)則是,任何夏普比率低于1的策略都不適合單獨(dú)使用,幾乎每月都實(shí)現(xiàn)盈利的策略,其年化夏普比率通常大于2,幾乎每天盈利的策略,其夏普比率通常大于3。 02、交易成本如何影響策略? 每次基于策略的買(mǎi)賣(mài)都會(huì)產(chǎn)生交易成本。交易越頻繁,交易成本對(duì)策略的盈利影響就越大。交易成本不僅包括證券中介的手續(xù)費(fèi),還包括流動(dòng)性成本——當(dāng)你以市場(chǎng)價(jià)格買(mǎi)賣(mài)證券時(shí),要支付買(mǎi)賣(mài)價(jià)差。如果采用現(xiàn)價(jià)指令買(mǎi)賣(mài)證券,確實(shí)可以避免流動(dòng)性成本,但卻要承擔(dān)機(jī)會(huì)成本,因?yàn)橄迌r(jià)指令可能不被執(zhí)行,從而錯(cuò)失了交易的潛在盈利。同樣,如果你買(mǎi)賣(mài)大筆證券,不可能在不影響價(jià)格的情況下完成整個(gè)交易。這種由自身指令所引起的市場(chǎng)價(jià)格變動(dòng)效應(yīng)被成為“市場(chǎng)沖擊”。當(dāng)市場(chǎng)流動(dòng)性不好時(shí),往往成為交易成本的大頭。此外,由于互聯(lián)網(wǎng)或軟件的滯后,指令通過(guò)程序傳送到交易所與指令在交易所被執(zhí)行存在時(shí)間上的滯后,這種滯后會(huì)造成價(jià)差(稱(chēng)為“滑點(diǎn)”),即觸發(fā)指令的價(jià)格和執(zhí)行價(jià)格之間的差。當(dāng)然,滑點(diǎn)有正有負(fù),但平均而言,是成本而不是收益。 03、數(shù)據(jù)有無(wú)存活偏差 股票價(jià)格的歷史數(shù)據(jù)庫(kù)往往不包括那些由于破產(chǎn)、退市、兼并或收購(gòu)而不再交易的股票,因此存在所謂的存活偏差,即數(shù)據(jù)庫(kù)中只有幸存者。使用有存活偏差的數(shù)據(jù)進(jìn)行回測(cè)是很危險(xiǎn)的,因?yàn)闀?huì)夸大策略的歷史業(yè)績(jī)。這在策略有“價(jià)值”偏好時(shí)(傾向于買(mǎi)便宜的股票)尤為突出,因?yàn)橛行┕善北阋说脑蚴枪炯磳⑵飘a(chǎn)。如果你的策略只包含哪些當(dāng)時(shí)非常便宜但卻存活下來(lái)的股票(而且可能已經(jīng)興盛),而忽略那些退市的股票,回測(cè)的結(jié)果當(dāng)然會(huì)比交易員當(dāng)時(shí)的實(shí)際經(jīng)歷要好很多。 04、策略的業(yè)績(jī)?nèi)绾坞S時(shí)間變化而變化? 許多策略10年期的業(yè)績(jī)要遠(yuǎn)遠(yuǎn)好于現(xiàn)在,至少?gòu)幕販y(cè)的結(jié)果來(lái)看是這樣。如果用今天的交易成本做回測(cè),會(huì)不現(xiàn)實(shí)地抬高早年的收益。有存活偏差的數(shù)據(jù)也會(huì)使早年業(yè)績(jī)表現(xiàn)較好,回測(cè)回溯的越早,消失的股票越多,有些股票消失是因?yàn)橐呀?jīng)破產(chǎn)倒閉,一個(gè)純多頭策略在回測(cè)的早期會(huì)比當(dāng)年實(shí)際的盈虧看起來(lái)好。因此,在判斷一項(xiàng)策略的適用性時(shí),要重點(diǎn)關(guān)注其最近幾年的業(yè)績(jī)。此外,當(dāng)股票市場(chǎng)轉(zhuǎn)態(tài)發(fā)生轉(zhuǎn)化(如重大制度變革,如股權(quán)分置改革;再如2018年的退市制度完善,中弘股份和長(zhǎng)生生物相繼退市),早年的交易數(shù)據(jù)并不能簡(jiǎn)單地應(yīng)用于今天的相同模型。股票市場(chǎng)的監(jiān)管變化或其他宏觀經(jīng)濟(jì)事件或股災(zāi),都可能導(dǎo)致重要的制度變換。 一般會(huì)認(rèn)為,數(shù)據(jù)越多,回測(cè)在統(tǒng)計(jì)上就越可靠。這其實(shí)只是對(duì)由平穩(wěn)過(guò)程產(chǎn)生的金融時(shí)間序列來(lái)說(shuō)才是正確的。但是金融市場(chǎng)時(shí)間序列數(shù)據(jù)往往是非平穩(wěn)的。 05、策略是否存在過(guò)擬合或參數(shù)調(diào)優(yōu)偏差? 如果構(gòu)建一個(gè)有多個(gè)參數(shù)的策略,很容易通過(guò)優(yōu)化參數(shù),使歷史業(yè)績(jī)看起來(lái)很優(yōu)秀。通過(guò)參數(shù)的調(diào)優(yōu),只是使模型與過(guò)去發(fā)生但未來(lái)不會(huì)再重現(xiàn)的任何偶然歷史事件溫和。一般而言,策略的規(guī)則越多,模型的參數(shù)越多,就越可能出現(xiàn)過(guò)度擬合問(wèn)題。能經(jīng)得起時(shí)間考驗(yàn)的往往是簡(jiǎn)單的模型。
|
|
來(lái)自: 追夢(mèng)文庫(kù) > 《量化交易系統(tǒng)》