(上海對外經(jīng)貿(mào)大學(xué),上海 201620)
金融市場中的神經(jīng)網(wǎng)絡(luò)拐點預(yù)測法
胡悅
(上海對外經(jīng)貿(mào)大學(xué),上海 201620)
本文首先分析了前人學(xué)者在使用神經(jīng)網(wǎng)絡(luò)模型對金融市場進行預(yù)測時的局限和錯誤,提出了基于拐點預(yù)測的改進方法,接著使用該方法構(gòu)建神經(jīng)網(wǎng)絡(luò)模型以上證綜指為例展開實證研究,并對模型進行了評估,證明了模型的有效性。
神經(jīng)網(wǎng)絡(luò);金融市場;預(yù)測
人工神經(jīng)網(wǎng)絡(luò)憑借其強大的擬合性能,在經(jīng)濟學(xué)預(yù)測領(lǐng)域得到了廣泛的重視。劉國宏(2005)利用深圳的具體經(jīng)濟數(shù)據(jù)進行了實證預(yù)測研究,證明基于人工神經(jīng)網(wǎng)絡(luò)的經(jīng)濟預(yù)測是可行和有效的,利用神經(jīng)網(wǎng)絡(luò)進行經(jīng)濟預(yù)測對于有效指導(dǎo)經(jīng)濟決策具有較大的參考價值。劉德紅(2012)在《基于微觀結(jié)構(gòu)理論的證券市場可預(yù)測性研究》一文中,使用BP神經(jīng)網(wǎng)絡(luò)對上證綜指和萬科A的每分鐘收益率進行了預(yù)測,取得了一定效果,表明使用神經(jīng)網(wǎng)絡(luò)對上證綜指進行預(yù)測是可行的。上證綜指自1991年發(fā)布以來,已經(jīng)成為中國股票市場的代表性指數(shù),對上證綜指進行預(yù)測,可以較好地對其他股票指數(shù)、個股、期貨、期權(quán)等衍生品進行合理定價和交易。此外,依靠隨時可更新的模型內(nèi)在傳導(dǎo)機理和運行結(jié)構(gòu),以盡可能避免小概率事件,人工神經(jīng)網(wǎng)絡(luò)的種種優(yōu)勢是傳統(tǒng)的統(tǒng)計學(xué)模型和金融模型難以企及的。
過去十年間,有大量的學(xué)者研究了如何使用神經(jīng)網(wǎng)絡(luò)模型直接預(yù)測股票市場、債券市場、匯率市場及其他衍生品市場的價格或點數(shù),幾乎所有學(xué)者的論文得出了模型有效的結(jié)論。
在如下的例子中,使用上證綜指2000年1月至2016年12月的日收盤價共4112條數(shù)據(jù)樣本構(gòu)建神經(jīng)網(wǎng)絡(luò)模型。將數(shù)據(jù)3階前置并窗口化之后,作為輸入項,將原始收盤價格直接作為輸出目標(biāo)值,這是目前絕大多數(shù)該領(lǐng)域?qū)W者的做法。使用前7/8的樣本作為訓(xùn)練集,后1/8的樣本作為驗證集。
訓(xùn)練集部分樣本如下表所示:
日期1收盤價1日期2收盤價2日期3收盤價3日期-目標(biāo)收盤價-目標(biāo)2000-01-041406.372000-01-051409.682000-01-061463.942000-01-071516.62000-01-051409.682000-01-061463.942000-01-071516.62000-01-101545.112000-01-061463.942000-01-071516.62000-01-101545.112000-01-111479.782000-01-071516.62000-01-101545.112000-01-111479.782000-01-121438.022000-01-101545.112000-01-111479.782000-01-121438.022000-01-131424.442000-01-111479.782000-01-121438.022000-01-131424.442000-01-141408.85
接下來,使用淺層BP神經(jīng)網(wǎng)絡(luò)構(gòu)建上證綜指預(yù)測模型。模型為單隱層結(jié)構(gòu),隱層節(jié)點數(shù)為10個,激活函數(shù)為函數(shù):
(1)
迭代次數(shù)為1000次,經(jīng)多次實驗該迭代次數(shù)已足夠使該淺層神經(jīng)網(wǎng)絡(luò)收斂。訓(xùn)練結(jié)果如下圖所示。大部分前人學(xué)者得到了這一結(jié)果,并認(rèn)為模型有效。
然而前人學(xué)者們忽略了一個嚴(yán)重的問題:神經(jīng)網(wǎng)絡(luò)輸出的預(yù)測值,實際上是輸入值的平移。例如,為了預(yù)測3天后的股票價格,研究者普遍會如上文選擇將前置3階的數(shù)據(jù)輸入模型進行訓(xùn)練,并直接將第4天的價格作為輸出目標(biāo)值,而這樣的模型輸出的預(yù)測值將不會是真正的預(yù)測值,而只會是和輸入值(3天前的值)非常接近的值。
這是因為BP過程實際上是一個反向求導(dǎo)過程,算法會向著梯度——即損失函數(shù)一階導(dǎo)——的最小值靠近,但由于金融數(shù)據(jù)的復(fù)雜性,梯度函數(shù)中充滿了各種局部極小點,算法在降低梯度的過程中,非常容易陷入局部極小,盡管統(tǒng)計驗證結(jié)果較理想。當(dāng)算法“認(rèn)為”直接平移3天前的數(shù)據(jù)能夠使誤差達到一個很小的水平(局部極小)時,就很難再繼續(xù)優(yōu)化了。因此,前人的經(jīng)驗既有借鑒意義,也需要更深入的改進和優(yōu)化。
從訓(xùn)練結(jié)果圖中可見,神經(jīng)網(wǎng)絡(luò)不論是對訓(xùn)練集的擬合輸出,還是對驗證集的預(yù)測輸出,似乎都是有效的。然而,放大訓(xùn)練結(jié)果圖后,可以看到神經(jīng)網(wǎng)絡(luò)的擬合輸出和預(yù)測輸出在形態(tài)上均近似于目標(biāo)值的滯后。
修改模型結(jié)構(gòu)、修改樣本結(jié)構(gòu)、修改樣本來源類別,仍將得到類似的結(jié)果。經(jīng)過測試,使用DBN、SAE、RNN、LSTM等深度學(xué)習(xí)模型直接預(yù)測股票價格、點數(shù),也會得到同樣的結(jié)果,依然會陷入局部極小。
因此作者認(rèn)為,以目前現(xiàn)有的算法、模型,使用機器學(xué)習(xí)技術(shù)直接預(yù)測金融產(chǎn)品的價格是幾乎不可能的。若使用不包含輸入項的目標(biāo)值訓(xùn)練模型,雖然可以避免上述問題,但此時模型相當(dāng)于在進行無限分類,對模型和設(shè)備的要求超出了客觀現(xiàn)實條件。目前的條件下,使用神經(jīng)網(wǎng)絡(luò)進行金融預(yù)測需要另尋他法。
作者認(rèn)為,可行的改進方法之一是對金融序列的拐點進行預(yù)測,以此為基礎(chǔ)可以構(gòu)建擇時模型。
同樣使用上證綜指2000年1月至2016年12月的日收盤價共4112條數(shù)據(jù)構(gòu)建神經(jīng)網(wǎng)絡(luò)模型。使用三階前置窗口化的數(shù)據(jù)作為輸入項,使用簡單標(biāo)注的底部拐點作為目標(biāo)值。樣本中,目標(biāo)值的0表示改日非底部拐點,100表示該日收盤價是底部拐點。訓(xùn)練集部分樣本如下表所示:
日期1收盤價1日期2收盤價2日期3收盤價3日期-目標(biāo)拐點-目標(biāo)2000-01-041406.372000-01-051409.682000-01-061463.942000-01-0702000-01-051409.682000-01-061463.942000-01-071516.62000-01-101002000-01-061463.942000-01-071516.62000-01-101545.112000-01-111002000-01-071516.62000-01-101545.112000-01-111479.782000-01-121002000-01-101545.112000-01-111479.782000-01-121438.022000-01-1302000-01-111479.782000-01-121438.022000-01-131424.442000-01-140
拐點的標(biāo)注情況如下圖所示。其中,紅色點表示階段底部拐點,綠色點表示階段頂部拐點。
使用多層BP神經(jīng)網(wǎng)絡(luò)構(gòu)建模型,模型為4隱層結(jié)構(gòu),每一層隱層的節(jié)點數(shù)目為10個,激活函數(shù)為函數(shù)。使用前95%的樣本集作為訓(xùn)練集,使用后5%的樣本集作為驗證集。迭代6000次后神經(jīng)網(wǎng)絡(luò)收斂,訓(xùn)練結(jié)束。訓(xùn)練結(jié)果如下圖所示,其中,藍色“+”號為目標(biāo)值,綠色“*”號為訓(xùn)練集的擬合輸出結(jié)果,紅色“.”號為未加入訓(xùn)練過程的驗證集的預(yù)測輸出結(jié)果。從訓(xùn)練結(jié)果圖中可以看到,神經(jīng)網(wǎng)絡(luò)已經(jīng)出現(xiàn)了過擬合現(xiàn)象,模型已經(jīng)得到充分訓(xùn)練。
對基于后5%驗證集的預(yù)測輸出值進行回測,以檢驗?zāi)P偷挠行??;販y結(jié)果如下文的4張結(jié)果圖所示?;販y具體時間段為2016年3月3日至2016年12月31日,共206個交易日。用于回測的模擬賬戶共有100萬元資金,模型發(fā)出底部拐點信號后,以上證綜指點數(shù)為價格,買入100單位指數(shù),并于從下1個交易日開始計算的第5個交易日平倉。
模型在該時間段內(nèi)最終取得了3.30%的收益,年化收益率為3.90%。2016年市場無風(fēng)險利率為1.50%,該時段的無風(fēng)險利率為1.26%,低于模型取得的收益率。模型的夏普比率為1.6392,說明模型是有效的。但模型的CAPM收益率為12.04%,且最終收益率低于市場收益率,說明模型尚有改進空間。
年化收益率3.90%β2.4179最終收益率3.30%協(xié)方差0.0004平均收益率0.92%標(biāo)準(zhǔn)差0.0124無風(fēng)險利率1.26%E(ri)0.1204市場收益率5.72%夏普比率1.6392
本文旨在提出正確使用神經(jīng)網(wǎng)絡(luò)模型對金融市場進行預(yù)測的方法,故在模型數(shù)據(jù)和結(jié)構(gòu)選取時予以簡化,并未達到最優(yōu)。例如,輸入的訓(xùn)練集僅為3階窗口化的上證綜指收盤價,目標(biāo)值的標(biāo)定也有改進空間,操作策略也過于簡單。不過這些缺陷都不影響本文模型的有效性及本文的論點。
本文分析了前人學(xué)者使用神經(jīng)網(wǎng)絡(luò)模型對金融市場進行預(yù)測時的局限性和錯誤,并使用拐點預(yù)測法對上證綜指進行了實證研究,接著對預(yù)測結(jié)果進行了評估,驗證了該模型的有效性。
[1] 劉國宏.基于人工神經(jīng)網(wǎng)絡(luò)的經(jīng)濟預(yù)測研究[D].天津大學(xué),2005.
[2] 劉德紅.基于微觀結(jié)構(gòu)理論的證券市場可預(yù)測性研究[D].北京交通大學(xué),2012.