王慎敏
摘 要:本文根據(jù)貝葉斯算法構(gòu)建了一套多因子擇時(shí)模型,以上證綜指為標(biāo)的,使用了20多個(gè)技術(shù)因子和基本面因子,選取2008到2016年的數(shù)據(jù),每天開盤前根據(jù)前兩年的數(shù)據(jù)建模,預(yù)測(cè)當(dāng)日標(biāo)的指數(shù)的漲跌,并對(duì)比了樸素貝葉斯算法和基于爬山算法的貝葉斯網(wǎng)算法?;販y(cè)結(jié)果顯示,貝葉斯網(wǎng)算法可以提供更穩(wěn)定的收益和更高的正確率。本文同時(shí)根據(jù)模型輸出信號(hào)設(shè)計(jì)了一種倉位優(yōu)化算法提升模型效果,在后續(xù)的模擬組合跟蹤中,模型也持續(xù)有效。
關(guān)鍵詞:樸素貝葉斯;貝葉斯網(wǎng);指數(shù)擇時(shí)
一、引言
股票市場(chǎng)的價(jià)格在表面上看雜亂無章,但眾多學(xué)者的研究表明,眾多因素都可以影響股票價(jià)格,股價(jià)并非完全隨機(jī)的。量化擇時(shí)的目的就是通過各種指標(biāo)來預(yù)測(cè)市場(chǎng)趨勢(shì),并在低位買入,高位賣出來獲得超過市場(chǎng)的收益。對(duì)量化擇時(shí)的研究,在目前主要分為技術(shù)派和基本面派,前者主要通過研究各類技術(shù)指標(biāo)和形態(tài)等,結(jié)合歷史數(shù)據(jù)來對(duì)后市進(jìn)行判斷,后者主要通過基本面以及資金面等來研判后市。而本文嘗試使用貝葉斯算法,將技術(shù)面和基本面信息結(jié)合在一起,構(gòu)建因子間的貝葉斯網(wǎng)絡(luò),對(duì)下一交易日的指數(shù)漲跌進(jìn)行預(yù)測(cè)。
二、貝葉斯模型簡(jiǎn)介
(一)樸素貝葉斯
樸素貝葉斯分類(Nave Bayes Classifier)是以貝葉斯定理為基礎(chǔ)并且假設(shè)特征條件之間相互獨(dú)立的方法,先通過已給定的訓(xùn)練集,以特征值之間獨(dú)立作為前提假設(shè),學(xué)習(xí)從輸入到輸出的聯(lián)合概率分布,再基于學(xué)習(xí)到的模型,求出使得后驗(yàn)概率最大的輸出。
(二)基于爬山算法的貝葉斯網(wǎng)
樸素貝葉斯分類只能處理離散數(shù)據(jù),需要將連續(xù)數(shù)據(jù)離散化。對(duì)于連續(xù)數(shù)據(jù),這里也使用了基于爬山算法的貝葉斯網(wǎng)。
爬山算法是一種搜索算法,該算法每次從當(dāng)前解的臨近解空間中選擇一個(gè)最優(yōu)解作為當(dāng)前解,直到達(dá)到一個(gè)局部最優(yōu)解。在一個(gè)貝葉斯網(wǎng)中,存在許多不同的父子級(jí)。而每個(gè)子級(jí)都有其自己的區(qū)域聯(lián)合概率密度函數(shù)。在找到后驗(yàn)概率分布后,會(huì)對(duì)其和數(shù)據(jù)的擬合程度進(jìn)行打分,然后使用爬山算法找到分值最大的后驗(yàn)概率分布。通過爬山算法尋找合適的參數(shù),來使貝葉斯網(wǎng)的分?jǐn)?shù)最大化。
三、因子選取和數(shù)據(jù)處理
(一)因子選取:
數(shù)據(jù)主要包括以下20余種:
自變量:上證綜指
因變量:黃金現(xiàn)貨,原油現(xiàn)貨,天然氣現(xiàn)貨,白銀現(xiàn)貨,美元指數(shù),LIBOR,SP500,人民幣對(duì)美元匯率,上海期貨交易所金銅鋁,恒生指數(shù), SHIBOR,中國(guó)債券指數(shù),月度CPI,月度制造業(yè)指數(shù),美國(guó)1年期債券,交易量等時(shí)間區(qū)間為2010年1月至2016年8月共6年數(shù)據(jù)。
(二)數(shù)據(jù)準(zhǔn)備與參數(shù)選取
將自變量和因變量按大小排序,分2類或者分5類,并分別標(biāo)記為0至1或0至4。
主要參數(shù)選?。航?jīng)過參數(shù)優(yōu)化,選取時(shí)間窗口長(zhǎng)度為24個(gè)月。
模型訓(xùn)練方式:以時(shí)間窗口內(nèi)數(shù)據(jù)為樣本進(jìn)行訓(xùn)練貝葉斯模型,每天開盤前將最新的因子數(shù)據(jù)輸入模型,預(yù)測(cè)當(dāng)天的指數(shù)漲跌。
四、樸素貝葉斯模型回測(cè)
(一)使用分2類的自變量,以及分5類的因變量。
將判斷正確記錄為1,錯(cuò)誤記錄為0,每天將其累加/總判斷次數(shù),得到模型判斷正確率。如圖1所示,正確率在50%附近,表明模型有效性較低。
(二)使用分2類的自變量以及因變量。
如圖2,正確率在55%至60%之間,正確率隨時(shí)間推移達(dá)到峰值后有所降低。
根據(jù)每天的模型輸出結(jié)果,預(yù)計(jì)漲則買入,其余時(shí)間維持空倉。收益曲線見圖3。
累計(jì)收益率:127%
年化收益率:27.25%
最大回撤:-8.7%
五、貝葉斯網(wǎng)模型回測(cè)
(一)使用連續(xù)數(shù)據(jù)的自變量和因變量帶入模型進(jìn)行回測(cè):
部分變量的關(guān)系
如圖5所示,正確率在0.59附近持平,說明模型的預(yù)測(cè)能力較強(qiáng),正確率高于樸素貝葉斯模型。
設(shè)計(jì)兩種策略:
Bn0:預(yù)計(jì)漲則買入1單位指數(shù),其余時(shí)間維持空倉。
Bn1:預(yù)計(jì)漲則買入2單位指數(shù),其余時(shí)間維持1單位指數(shù)。
Bn0:
最大回撤:-17.6%
累計(jì)收益率:142%
年化收益率:30.43%
由以上數(shù)據(jù)可知,貝葉斯網(wǎng)模型的回測(cè)結(jié)果的年化收益率高于樸素貝葉斯模型,但是最大回撤較高,下面將設(shè)計(jì)一種倉位優(yōu)化方式來對(duì)回測(cè)指標(biāo)進(jìn)行優(yōu)化。
六、倉位優(yōu)化
在上述貝葉斯網(wǎng)的回測(cè)當(dāng)中,模型輸出的預(yù)測(cè)值是一個(gè)連續(xù)數(shù)值,但是倉位只分為0,1倍或者2倍指數(shù),精細(xì)度較低,并不能完全反應(yīng)模型的輸出結(jié)果的所有信息。下面本文將設(shè)計(jì)一種倉位計(jì)算方法來充分利用輸出的結(jié)果。
將模型輸出結(jié)果在固定區(qū)間內(nèi)排序,得到輸出結(jié)果在這個(gè)固定區(qū)間內(nèi)對(duì)應(yīng)的分位數(shù)。將該分位數(shù)與下一日的指數(shù)收益率進(jìn)行對(duì)應(yīng)??v坐標(biāo)為指數(shù)收益率均值。橫坐標(biāo)為50 例如x=90,表示大于90%分位數(shù)的預(yù)測(cè)值所對(duì)應(yīng)的所有指數(shù)收益率的均值。 通過觀察圖7的圖形規(guī)律設(shè)計(jì)函數(shù):(a*(2p-1))^b,p為分位數(shù)。 在樣本區(qū)間內(nèi)取最近兩年的數(shù)據(jù),通過遍歷不同的a和b值計(jì)算每日倉位,將每日倉位乘以每日指數(shù)漲跌幅計(jì)算擇時(shí)后收益和最大回撤。不同的a和b值可以得到不同的收益/最大回撤比值,進(jìn)而得到以下熱力圖(圖8)。 由圖8知,收益/最大回撤最大時(shí),a=1.15,b=2.2, 因此倉位方程為:(1.15*(p*2-1))^2.2 考慮到上述的回測(cè)都是以昨收盤價(jià)進(jìn)行買入,而實(shí)際中是無法成交的。這次回測(cè)以開盤價(jià)買入,若當(dāng)日倉位大于50%,則在尾盤將倉位降低到50%。并增加每日回撤和倉位進(jìn)行比較。 從2014年1月到2016年8月,累計(jì)收益83%,年化收益31.20%,最大回撤10.3%。最大回撤發(fā)生在2015年6月29日。收益曲線見圖9。年化收益以及最大回測(cè)相對(duì)于倉位優(yōu)化前的都有所提升。 因?yàn)檫@都是基于歷史數(shù)據(jù)的回測(cè),在真實(shí)的金融市場(chǎng)是否有效還有待進(jìn)一步驗(yàn)證,因此,本文下一步對(duì)倉位優(yōu)化后的貝葉斯網(wǎng)模型進(jìn)行模擬建倉跟蹤。 七、模擬建倉跟蹤 在2016年9月5日—2016年12月30日期間,每天開盤前根據(jù)模型計(jì)算當(dāng)天倉位,收益率4.6%,累計(jì)最大回撤1.5%。驗(yàn)證階段正確率達(dá)到65%。 模型理論最大收益4.4%,最大回撤1.7%,見圖10。 如圖11所示,模擬跟蹤以來倉位對(duì)應(yīng)平均收益,橫坐標(biāo)為倉位,0%到100%,縱坐標(biāo)為指數(shù)收益。指數(shù)收益與倉位大小正相關(guān)。 考慮滑點(diǎn),以開盤價(jià)成交,如圖12所示,收益:2.8%,高于指數(shù)收益。 根據(jù)模擬持倉跟蹤可以發(fā)現(xiàn),貝葉斯網(wǎng)擇時(shí)模型是有效的,可以較準(zhǔn)確的預(yù)測(cè)指數(shù)漲跌并得到高于指數(shù)的收益。 八、總結(jié) 本文以上證指數(shù)為預(yù)測(cè)標(biāo)的,選取了多種技術(shù)指標(biāo)和基本面指標(biāo),在對(duì)數(shù)據(jù)進(jìn)行了預(yù)處理和模型參數(shù)優(yōu)化后,通過在每天開盤前預(yù)測(cè)當(dāng)天指數(shù)的預(yù)期漲跌,并設(shè)計(jì)一套算法對(duì)倉位進(jìn)行優(yōu)化,構(gòu)建了一套不同于傳統(tǒng)擇時(shí)模型的基于貝葉斯算法的日頻指數(shù)擇時(shí)策略,并在之后進(jìn)行了每日的模擬建倉跟蹤以驗(yàn)證其有效性。 通過貝葉斯擇時(shí)模型的回測(cè)發(fā)現(xiàn),樸素貝葉斯分類法的正確率不如貝葉斯網(wǎng)算法高,通過對(duì)模型的輸出結(jié)果進(jìn)行分析,從而對(duì)倉位進(jìn)行優(yōu)化后,回測(cè)的年化收益率和最大回撤指標(biāo)有了進(jìn)一步的提升。 在后續(xù)的模擬建倉跟蹤中,可以觀察到該模型近期效果良好,效果符合回測(cè)組合中的指標(biāo)。因此該模型是有效的,貝葉斯網(wǎng)模型在量化擇時(shí)策略中具有較高的應(yīng)用價(jià)值。各種基本面指標(biāo)和技術(shù)指標(biāo)與上證指數(shù)之間存在一定的聯(lián)系,而且其可以用貝葉斯模型進(jìn)行有效描述,從而對(duì)上證指數(shù)進(jìn)行預(yù)測(cè)。 在后續(xù)的優(yōu)化中,如果將因子個(gè)數(shù)進(jìn)一步提升,預(yù)計(jì)會(huì)有更高的正確率。在后續(xù)的模擬驗(yàn)證階段發(fā)現(xiàn),國(guó)內(nèi)的政策性事件無法在模型中反映出來。將來可以在模型中加入事件驅(qū)動(dòng)策略,對(duì)模型進(jìn)一步提升。 參考文獻(xiàn): [1] Nagarajan R, Scutari M, Lebre S.“Bayesian Networks in R with Applications in Systems Biology”. Springer,2013. [2] Scutari M.“Learning Bayesian Networks with the bnlearn R Package”.Journal of Statistical Software,2010,35(3):1-22. [3] Scutari M. "Bayesian Network Constraint-Based Structure Learning Algorithms: Parallel and Optimized Implementations in the bnlearn R Package". Journal of Statistical Software,2017,77(2):1-20. [4] 孫旭.基于中國(guó)股票市場(chǎng)趨勢(shì)預(yù)測(cè)的擇時(shí)策略研宂[D].蘭州:蘭州大學(xué),2018.