李亞峰,王洪波,李 晨,王富豪,劉 勐,羅靜靜
1(復(fù)旦大學(xué) 工程與應(yīng)用技術(shù)研究院,上海 200433)
2(復(fù)旦大學(xué) 智能機(jī)器人教育部工程研究中心,上海 200433)
3(復(fù)旦大學(xué) 大數(shù)據(jù)學(xué)院,上海 200433)
4(復(fù)旦大學(xué) 上海智能機(jī)器人工程技術(shù)研究中心,上海 200433)
隨著全球經(jīng)濟(jì)和金融市場(chǎng)的蓬勃發(fā)展,作為金融市場(chǎng)的前沿領(lǐng)域,衍生品市場(chǎng)的重要組成部分,期貨市場(chǎng)的健康發(fā)展對(duì)于國民經(jīng)濟(jì)和國家經(jīng)濟(jì)安全的重要性越來越高,具有越來越大的戰(zhàn)略意義.對(duì)期貨價(jià)格的預(yù)測(cè)可以在宏觀層面幫助預(yù)研預(yù)判經(jīng)濟(jì)形勢(shì),改善宏觀調(diào)控的預(yù)見性和有效性,觀察和分析期貨市場(chǎng)的價(jià)格波動(dòng),可以預(yù)測(cè)未來某一領(lǐng)域和宏觀經(jīng)濟(jì)走向的狀況,更有效地揭示和判斷宏觀經(jīng)濟(jì)的運(yùn)行狀況.
期貨價(jià)格走勢(shì)的預(yù)測(cè)主要分為基本面分析和技術(shù)分析.基本面分析是依據(jù)期貨品種的行業(yè)和宏觀基本面的情況來預(yù)測(cè)未來走勢(shì).比如某些事件的發(fā)生往往會(huì)引起資產(chǎn)價(jià)格顯著的波動(dòng),相關(guān)經(jīng)濟(jì)數(shù)據(jù)的公布也會(huì)對(duì)市場(chǎng)走勢(shì)產(chǎn)生明顯的影響.技術(shù)分析則是假定歷史是相似的或者是可以重演的,通過數(shù)據(jù)和因子的挖掘來進(jìn)行分析預(yù)測(cè).多年來,隨著技術(shù)的進(jìn)步和發(fā)展,各種類型的預(yù)測(cè)思路被不斷地提出,尤其是深度神經(jīng)網(wǎng)絡(luò)產(chǎn)生以來,因其強(qiáng)大的非線性擬合的能力和較強(qiáng)的適應(yīng)能力,逐漸被應(yīng)用于金融資產(chǎn)價(jià)格的分析和預(yù)測(cè)中[1].
本文旨在從期貨的歷史數(shù)據(jù)中捕捉到潛在有用的特征,并結(jié)合相應(yīng)的模型來對(duì)期貨走勢(shì)進(jìn)行預(yù)測(cè),并提供對(duì)比試驗(yàn)分析,輔助投資策略的制定,為神經(jīng)網(wǎng)絡(luò)模型在金融市場(chǎng)的應(yīng)用提供一定的理論和實(shí)驗(yàn)基礎(chǔ).
時(shí)間序列數(shù)據(jù)預(yù)測(cè)工作本質(zhì)上與機(jī)器學(xué)習(xí)方法分類中的回歸分析之間存在著緊密的聯(lián)系,人工神經(jīng)網(wǎng)絡(luò)被看作實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)的有效工具[2].
徐浩然等[3]從股票預(yù)測(cè)研究的主要問題、特征工程和機(jī)器學(xué)習(xí)算法應(yīng)用等3 個(gè)方面,對(duì)近年來該領(lǐng)域的主要文獻(xiàn)進(jìn)行總結(jié),并針對(duì)每種算法在應(yīng)用中的特點(diǎn)與不足進(jìn)行評(píng)述.圍繞目前機(jī)器學(xué)習(xí)在股票預(yù)測(cè)上遇到的主要問題,從遷移學(xué)習(xí)、特征工程、深度學(xué)習(xí)模型融合等方面進(jìn)行了深入的分析與展望.張栗粽等[4]針對(duì)Elman 神經(jīng)網(wǎng)絡(luò)模型,通過引入時(shí)間權(quán)重與隨機(jī)性因素,提出了改進(jìn)的Elman 神經(jīng)網(wǎng)絡(luò)模型,提高了現(xiàn)有Elman 神經(jīng)網(wǎng)絡(luò)針對(duì)時(shí)序數(shù)據(jù)預(yù)測(cè)的精度,實(shí)驗(yàn)結(jié)果表明,所提出的模型在金融時(shí)序預(yù)測(cè)中具有更好的準(zhǔn)確度.李秀枝等[5]率先拓展了雙權(quán)可拓神經(jīng)網(wǎng)絡(luò)模型在股指期貨預(yù)測(cè)分析領(lǐng)域的應(yīng)用研究,詳細(xì)描述了兩種雙權(quán)可拓神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)、算法過程,并且通過實(shí)驗(yàn)驗(yàn)證了該模型在股指期貨預(yù)測(cè)分析領(lǐng)域的可行性和有效性.
在深度神經(jīng)網(wǎng)絡(luò)中,循環(huán)神經(jīng)網(wǎng)絡(luò)被認(rèn)為是一類較好預(yù)測(cè)時(shí)間序列的模型.由于前饋神經(jīng)網(wǎng)絡(luò)的輸入只依賴當(dāng)前輸入,因此難以處理時(shí)序數(shù)據(jù).而循環(huán)神經(jīng)網(wǎng)絡(luò)通過自身反饋神經(jīng)元,可以處理任意長度的時(shí)序數(shù)據(jù).LSTM、GRU是常見的循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu).王婷等[6]采用LSTM 來處理長距離的股票時(shí)序問題,構(gòu)建了一個(gè)多類別特征體系作為長短期記憶網(wǎng)絡(luò)的輸入進(jìn)行訓(xùn)練,通過實(shí)驗(yàn)全面分析了各類特征對(duì)股票趨勢(shì)預(yù)測(cè)的有效程度,對(duì)比結(jié)果表明了多類別特征體系在預(yù)測(cè)中的良好表現(xiàn).黃婷婷等[7]利用堆疊去噪自編碼從金融時(shí)間序列的基本行情數(shù)據(jù)和技術(shù)指標(biāo)中提取特征,將其作為LSTM 神經(jīng)網(wǎng)絡(luò)的輸入,獲得了比較高的預(yù)測(cè)精度.劉翀等[8]使用深度LSTM 網(wǎng)絡(luò)對(duì)金融數(shù)據(jù)進(jìn)行建模,解決了數(shù)據(jù)間長依賴的問題,并能學(xué)習(xí)到更加復(fù)雜的市場(chǎng)動(dòng)態(tài)特征,該模型引入了注意力機(jī)制,使得不同時(shí)間的數(shù)據(jù)對(duì)預(yù)測(cè)的重要程度不同,預(yù)測(cè)更加精準(zhǔn).Qin 等[9]結(jié)合了注意力機(jī)制實(shí)現(xiàn)的時(shí)間序列的預(yù)測(cè),不僅在解碼器的輸入階段引入注意力機(jī)制,還在編碼器階段引入注意力機(jī)制,通過在編碼層和解碼層都引入雙向注意力機(jī)制實(shí)現(xiàn)時(shí)間序列更好的預(yù)測(cè).本文將注意力機(jī)制和LSTM 相結(jié)合起來,試圖提高模型在期貨投資策略中的效果.
遺傳算法常用于模型參數(shù)調(diào)節(jié).武大碩等[10]提出了基于遺傳算法改進(jìn)的LSTM 神經(jīng)網(wǎng)絡(luò)股指預(yù)測(cè)分析方法,分別應(yīng)用3 種模型對(duì)納斯達(dá)克數(shù)據(jù)進(jìn)行預(yù)測(cè),實(shí)驗(yàn)結(jié)果表明所提方法較其他兩種方法在股票波動(dòng)較小的階段準(zhǔn)確度得到了顯著提升,在股票波動(dòng)較大的階段也可對(duì)其基本趨勢(shì)進(jìn)行預(yù)測(cè).包振山等[11]利用遺傳算法解決調(diào)參問題來保證模型預(yù)測(cè)的平衡性,實(shí)驗(yàn)得出改進(jìn)模型的各方面指標(biāo)均優(yōu)于單獨(dú)的LSTM模型.
LSTM 神經(jīng)網(wǎng)絡(luò)是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò).LSTM (Long-Short Term Memory)可以解決傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)中存在的梯度消失和梯度爆炸問題,也就是較遠(yuǎn)的消息間隔難以進(jìn)行傳遞的問題.LSTM 神經(jīng)元中設(shè)計(jì)了許多控制數(shù)級(jí)的門(gates),包括輸入門(input gates),遺忘門(forget gates),輸出門(output gates).輸入門控制有多少信息可以流入記憶細(xì)胞(memory cell)中,遺忘門控制有多少上一時(shí)刻的記憶細(xì)胞中的信息可以流入當(dāng)前時(shí)刻的記憶細(xì)胞中,輸出門控制有多少當(dāng)前記憶細(xì)胞中的信息可以流進(jìn)隱藏狀態(tài)中.LSTM神經(jīng)元結(jié)構(gòu)如圖1所示.
圖1 LSTM 神經(jīng)元結(jié)構(gòu)
LSTM 網(wǎng)絡(luò)引入一個(gè)新的內(nèi)部狀態(tài)ct,分別通過3 個(gè)門ft(遺忘門)、it(輸入門)、ot(輸出門)來控制信息的傳遞.
首先利用上一時(shí)刻的隱藏狀態(tài)ut-1和當(dāng)前時(shí)刻的輸入xt計(jì)算出3 個(gè)門及gt,ft、it和ot的取值均在[0,1]的區(qū)間,控制信息傳遞,W、U、b是可學(xué)習(xí)的參數(shù),σ表示Logistic 函數(shù):
然后根據(jù)上一個(gè)時(shí)刻的記憶單元ct-1和ft、it、gt更新ct,并求出當(dāng)前時(shí)刻的隱藏狀態(tài)ut:
這樣,每一個(gè)時(shí)間步都接收到了上一個(gè)時(shí)間步的隱藏狀態(tài)u,并將本時(shí)間步的輸出u和x一起作為下一個(gè)時(shí)間步的輸入,使得較長時(shí)間的信息得以保留并影響輸出.
如果按照時(shí)間順序?qū)STM 展開,那么時(shí)間步為T的時(shí)間序列,輸入到LSTM 網(wǎng)絡(luò)中如圖2所示.其中A代表LSTM 神經(jīng)元,隱藏層的輸出記為u.
圖2 LSTM 按時(shí)間步展開
注意力機(jī)制是受認(rèn)知神經(jīng)學(xué)中注意力的啟發(fā),人腦在處理復(fù)雜的外部信息時(shí),會(huì)有意或無意地從大量輸入信息中選擇一小部分重點(diǎn)處理而忽略其他信息,這種能力稱為注意力(attention).神經(jīng)網(wǎng)絡(luò)在處理較多的輸入信息時(shí),也可以借鑒人腦的注意力機(jī)制,只選擇一些關(guān)鍵的信息進(jìn)行處理.如果選擇的信息是所有輸入向量在注意力分布下的期望,那么稱為軟性注意力機(jī)制;反之,若只關(guān)注其中某一個(gè)輸入向量,稱為硬性注意力機(jī)制[12].
軟性注意力機(jī)制的計(jì)算一般分為兩步:一是計(jì)算在所有輸入信息上的注意力分布,即權(quán)重;二是根據(jù)注意力分布計(jì)算輸入信息的加權(quán)平均.通過賦予不同權(quán)重來反映各種信息的重要程度.
為了從n個(gè)輸入向量 [X1,···,Xn]中選擇出和某一個(gè)特定任務(wù)相關(guān)的信息,需要引入一個(gè)和任務(wù)相關(guān)的表示,稱為查詢向量(query vector),記為q,并通過打分函數(shù)計(jì)算每一個(gè)輸入向量和查詢向量之間的相關(guān)性.
首先,計(jì)算在給定q和X下,選擇第i個(gè)輸入向量的概率:
其中,z表示選擇了第幾個(gè)輸入向量,an為注意力分布(attention distribution),s(x,q)表示打分函數(shù),可以有多種計(jì)算方式[12]:
1)加性模型
2)點(diǎn)積模型
3)雙線性模型
4)縮放點(diǎn)積模型
其中,W、U、v是可學(xué)習(xí)的參數(shù),D為輸入向量的維度.加性模型和點(diǎn)積模型的復(fù)雜度相當(dāng),雙線性模型是一種泛化的點(diǎn)積模型,縮放點(diǎn)積解決了當(dāng)輸入向量維度較高時(shí)點(diǎn)積模型方差較大導(dǎo)致softmax函數(shù)的梯度較小的問題.
其次,根據(jù)注意力分布an對(duì)輸入信息進(jìn)行匯總,即:
本文模型中對(duì)注意力機(jī)制部分的具體處理過程將在第3 節(jié)詳細(xì)描述.
遺傳算法(Genetic Algorithm,GA)是基于自然選擇和遺傳變異等生物進(jìn)化機(jī)制,模仿自然界生物進(jìn)化機(jī)制發(fā)展起來的隨機(jī)全局搜索和優(yōu)化方法.其本質(zhì)是一種高效、并行、全局搜索的方法,能在搜索過程中自動(dòng)獲取和積累有關(guān)搜索空間的知識(shí),并自適應(yīng)地控制搜索過程以求得最佳解.遺傳算法的實(shí)現(xiàn)過程大致分為以下步驟:
初始化種群(population):先通過編碼把要求的問題的可行解表示成遺傳空間的染色體或個(gè)體.
適應(yīng)度(fitness):適應(yīng)度是個(gè)體在種群生存的優(yōu)勢(shì)程度,采用適應(yīng)度函數(shù)或評(píng)價(jià)函數(shù)進(jìn)行度量.
選擇(select):它定義了為進(jìn)一步的復(fù)制而保留的解決方案.例如輪盤賭選擇法,錦標(biāo)賽選擇法.
交叉(crossover):它描述了如何從現(xiàn)有的解決方案創(chuàng)建新的解決方案.例如n點(diǎn)交叉.
變異(mutation):它的目的是通過隨機(jī)交換或關(guān)閉解決方案,將多樣性和新奇性引入到解決方案池(solution pool)中.例如二進(jìn)制變異.
由于本文采用的是循環(huán)神經(jīng)網(wǎng)絡(luò)模型,循環(huán)神經(jīng)網(wǎng)絡(luò)中的循環(huán)的結(jié)構(gòu)使它們難以并行化,因此訓(xùn)練循環(huán)神經(jīng)網(wǎng)絡(luò)需要大量的時(shí)間.通過遺傳算法來對(duì)循環(huán)隨機(jī)網(wǎng)絡(luò)進(jìn)行參數(shù)調(diào)優(yōu),又會(huì)更進(jìn)一步造成整個(gè)模型的調(diào)優(yōu)時(shí)間增加,因此,讓遺傳算法能夠更快速地收斂十分重要.
從上述過程中可以知道,交叉算子負(fù)責(zé)組合優(yōu)化基因,變異算子負(fù)責(zé)廣泛搜索整個(gè)空間,選擇算子負(fù)責(zé)選出適應(yīng)值高的解.交叉與變異均是無指導(dǎo)性的操作,所以必須由選擇算子保證群體朝著預(yù)期的目標(biāo)進(jìn)化.通過選擇算子,適應(yīng)值優(yōu)秀的個(gè)體將會(huì)有更多機(jī)會(huì)被選中成為下一代群體的父代[13].基于這一點(diǎn),本文對(duì)遺傳算法中的選擇算子部分進(jìn)行了改進(jìn),以加快遺傳算法的收斂速度.
遺傳算法常用的選擇算子是輪盤賭選擇法.傳統(tǒng)的輪盤賭選擇法首先將種群中所有個(gè)體的適應(yīng)度值進(jìn)行累加然后歸一化,然后通過隨機(jī)數(shù)對(duì)隨機(jī)數(shù)落在的區(qū)域?qū)?yīng)的個(gè)體進(jìn)行選取,類似賭場(chǎng)里面的旋轉(zhuǎn)的輪盤.各個(gè)個(gè)體的選擇概率和其適應(yīng)度值成比例,適應(yīng)度越大,選中概率也越大.
為了加快收斂速度,本文模型采用改進(jìn)后的輪盤賭選擇法.在傳統(tǒng)的輪盤賭選擇法中,由于每次需要對(duì)種群中所有適應(yīng)度進(jìn)行遍歷搜索,因此算法的時(shí)間復(fù)雜度依賴于種群數(shù)N,為O(N)或O(logN).通過使用基于隨機(jī)接受(stochastic acceptance)的方法來進(jìn)行輪盤賭選擇,可以將時(shí)間復(fù)雜度降低為O(1)[14].
模型構(gòu)建包括:數(shù)據(jù)處理,LSTM 神經(jīng)網(wǎng)絡(luò)層,注意力機(jī)制層,全連接層,遺傳算法調(diào)優(yōu).模型整體流程如圖3所示.
圖3 模型流程示意圖
選擇以下5 種常用的技術(shù)指標(biāo)作為輸入特征:
MA(n):n日移動(dòng)平均線=n日收市價(jià)之和/n.
RSI(n):相對(duì)強(qiáng)弱指標(biāo),一定時(shí)期內(nèi)總上漲幅度和總下跌幅度的比率,反映了市場(chǎng)在一定時(shí)期內(nèi)的景氣程度.n為可調(diào)參數(shù).
CCI(n):順勢(shì)指標(biāo),測(cè)量資產(chǎn)價(jià)格是否已超出常態(tài)分布范圍.n為可調(diào)參數(shù).
WILLER(n):利用擺動(dòng)點(diǎn)來度量市場(chǎng)的超買超賣現(xiàn)象,所以可以此預(yù)測(cè)循環(huán)周期內(nèi)的高和低點(diǎn),找出其有效信號(hào),可以用于分析市場(chǎng)短期行情走勢(shì).n為可調(diào)參數(shù).
OBV:是通過累計(jì)每日的需求量和供給量并予以數(shù)字化,制成趨勢(shì)線,然后配合證券價(jià)格趨勢(shì)圖,從價(jià)格變動(dòng)與成交量增減的關(guān)系上,來推測(cè)市場(chǎng)氣氛的一種技術(shù)指標(biāo).
特征設(shè)置完成后,按照一定比例將總樣本劃分為訓(xùn)練集(train set),驗(yàn)證集(validation set)和測(cè)試集(test set).對(duì)訓(xùn)練集進(jìn)行均值方差歸一化.為避免使用未來數(shù)據(jù)影響到模型效果,將訓(xùn)練集上得到的包含均值方差的歸一化因子用于驗(yàn)證集和測(cè)試集的歸一化.
設(shè)樣本數(shù)量為batch_size,表示神經(jīng)網(wǎng)絡(luò)每次訓(xùn)練可以處理的樣本數(shù)量.設(shè)時(shí)間步為n_steps,表示使用過去多少步的數(shù)據(jù)來對(duì)未來進(jìn)行預(yù)測(cè).設(shè)特征數(shù)量為n_features,表示選擇多少種特征,在該模型中就是上述介紹的技術(shù)指標(biāo)的數(shù)量.最后按照LSTM 神經(jīng)網(wǎng)絡(luò)層的輸入格式將樣本數(shù)據(jù)整理成[batch_size,n_steps,n_features]形狀.
LSTM 層需要設(shè)置的相關(guān)參數(shù)如下,在PyTorch包中可以通過hidden_size設(shè)置每一層隱藏態(tài)神經(jīng)元的個(gè)數(shù),通過n_layers設(shè)置包含多少層,通過bidirectional參數(shù)設(shè)置LSTM是否為雙向.本文模型設(shè)置n_layers為2 層,單向LSTM.
在單向LSTM 情況下,LSTM 層的輸入數(shù)據(jù)的維度為[batch_size,n_steps,n_features],輸出數(shù)據(jù)的維度為[batch_size,n_steps,hidden_size].
目前各類的注意力機(jī)制很多,由于期貨數(shù)據(jù)屬于金融時(shí)間序列,每一時(shí)刻的交易行情都會(huì)受到歷史行情不同程度的影響,為了更好地體現(xiàn)出歷史行情對(duì)當(dāng)前行情的影響程度的不同,在本文模型中選擇對(duì)LSTM層的輸出數(shù)據(jù)中的時(shí)間步參數(shù)n_steps來做注意力機(jī)制,即賦予滯后各時(shí)間步的數(shù)據(jù)以不同的注意力.算法優(yōu)化的目標(biāo)為時(shí)間步權(quán)重參數(shù)W.具體算法流程如算法1.
算法1.時(shí)間步注意力機(jī)制算法1)獲得LSTM 神經(jīng)網(wǎng)絡(luò)層的輸出,作為注意力機(jī)制層的輸入x,即;ReLU(){e1,e2,···,en} squeeze({e1,e2,···,en}){x1,x2,···,xn}2)使用Linear 線性變換函數(shù)和激活函數(shù)構(gòu)建全連接層,得到新的樣本 后通過維度壓縮函數(shù) 轉(zhuǎn)換;softmax()3)再將樣本按照n_steps 列輸入到 函數(shù)得到權(quán)重向量W.W中列向量元素個(gè)數(shù)等于輸入的時(shí)間步,每一個(gè)元素表示一個(gè)時(shí)間步的權(quán)重.再將W 通過維度擴(kuò)展函數(shù) 進(jìn)行維度轉(zhuǎn)換;unsqueeze(W)4)將第1)步中的初始樣本x和權(quán)重向量W 相乘得到賦予權(quán)重W 后的樣本 ;5)最后將樣本按照n_steps 列進(jìn)行求和,得到注意力機(jī)制層最終的輸出.{x1W,x2W,···,xnW}
本文采用的注意力機(jī)制中的查詢向量q為對(duì)應(yīng)的因變量,即下文中數(shù)據(jù)樣本的收盤價(jià)(CLOSE).因此在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中權(quán)重W會(huì)隨著q得到動(dòng)態(tài)調(diào)整.
硬性注意力機(jī)制基于最大采樣或者隨機(jī)采樣的方式選擇信息,易導(dǎo)致最終的損失函數(shù)與注意力分布之間的函數(shù)關(guān)系不可導(dǎo),無法在反向傳播時(shí)進(jìn)行訓(xùn)練[12].Kim 等[15]在2018年提出了雙線性注意力網(wǎng)絡(luò)(Bilinear Attention Networks,BAN),基于VQAv2 數(shù)據(jù)集獲得了比之前的方法更好的效果,證明了雙線性打分函數(shù)的優(yōu)越性.因此本文采用軟性注意力機(jī)制以及雙線性模型打分函數(shù).使用雙線性打分函數(shù)作為選擇某個(gè)時(shí)間步的概率計(jì)算方法,在網(wǎng)絡(luò)設(shè)計(jì)時(shí)用一個(gè)全連接層來實(shí)現(xiàn).在特征維度上,時(shí)間權(quán)重是共享的,即同一時(shí)間步上各個(gè)特征對(duì)應(yīng)的權(quán)重是相同的,將各個(gè)時(shí)間步的權(quán)重賦給各個(gè)特征并求和,得到每個(gè)特征經(jīng)過時(shí)間加權(quán)以后的最終特征向量,作為下一層的輸入.
整個(gè)注意力機(jī)制層的的輸入維度為[batch_size,n_steps,hidden_size],輸出維度為[batch_size,hidden_size].
全連接層的神經(jīng)元的個(gè)數(shù)為1,輸入維度為[batch_size,hidden_size],輸出維度為[batch_size,1].其中hidden_size與之前LSTM 層所設(shè)置的hidden_size相等.全連接層使用使用Linear 線性變換函數(shù)實(shí)現(xiàn).
在全連接層主要實(shí)現(xiàn)的功能就是將注意力機(jī)制層的輸出轉(zhuǎn)換為所預(yù)測(cè)的目標(biāo),本文模型以收盤價(jià)為預(yù)測(cè)目標(biāo),也就是將注意力機(jī)制層的輸出轉(zhuǎn)換為收盤價(jià).
本文將LSTM 超參數(shù)n_steps、hidden_size以及所有技術(shù)指標(biāo)中的參數(shù)n設(shè)置為待優(yōu)化參數(shù),隨機(jī)產(chǎn)生初始種群.
設(shè)置模型在驗(yàn)證集(validation set)上的均方根誤差(RMSE)為一個(gè)適應(yīng)度值.計(jì)算每個(gè)個(gè)體的適應(yīng)度,并判斷是否滿足優(yōu)化準(zhǔn)則.
依據(jù)適應(yīng)度選擇再生個(gè)體,適應(yīng)度高的個(gè)體被選中的概率高,反之,適應(yīng)度低的個(gè)體被選中的概率低,甚至可能被淘汰.在選擇過程中使用改進(jìn)后的基于隨機(jī)接受(stochastic acceptance)的方法來進(jìn)行輪盤賭選擇.
設(shè)置交叉概率和交叉方法,變異概率和變異方法,生成子代個(gè)體.
循環(huán)計(jì)算適應(yīng)度,由交叉和變異產(chǎn)生新一代種群,定義迭代次數(shù),在算法運(yùn)行結(jié)束后將產(chǎn)生k個(gè)最佳解決方案,那么就可以很快得到第1 個(gè)方案作為最佳方案.
實(shí)驗(yàn)計(jì)算機(jī)的配置:AMD Ryzen 9 3950X 4.2 GHz,內(nèi)存64 GB,顯卡Nvidia GeForce GTX 1070Ti 8 GB 顯存.操作系統(tǒng):Windows 10 專業(yè)版.軟件環(huán)境:PyCharm Professional 2020.1.采用Python 3.7.4 編寫實(shí)驗(yàn)程序.所使用的深度學(xué)習(xí)框架為PyTorch 1.5.1,遺傳算法庫為Deap 1.3.1.
選取中證500 股指期貨IC 主力合約作為研究對(duì)象進(jìn)行實(shí)驗(yàn),樣本區(qū)間跨度從2019年1月3日到2020年5月29日一共340 個(gè)交易日,樣本時(shí)間單位為分鐘,數(shù)據(jù)源來自萬德金融數(shù)據(jù)庫.將樣本的前240 個(gè)交易日作為模型的訓(xùn)練集和驗(yàn)證集,后100 個(gè)交易日作為模型的測(cè)試集,用于測(cè)試模型的預(yù)測(cè)效果.數(shù)據(jù)標(biāo)簽即預(yù)測(cè)對(duì)象設(shè)置為下一時(shí)刻的收盤價(jià)(CLOSE),經(jīng)過處理后的前240 個(gè)交易日的樣本共計(jì)57 985 條,其中前80%為訓(xùn)練集,共46 388 條,后20%為驗(yàn)證集,共11 597 條.經(jīng)過處理后的后100 個(gè)交易日的樣本為測(cè)試集樣本,共計(jì)24 140 條.圖4是全樣本收盤價(jià)走勢(shì)圖.
圖4 全樣本收盤價(jià)走勢(shì)圖
模型權(quán)重初始化采用隨機(jī)初始化方法.學(xué)習(xí)率(learning rate)設(shè)置為0.001,epoch設(shè)置為100,batch_size設(shè)置為128,為了降低訓(xùn)練過程中的過擬合,設(shè)置dropout參數(shù)并運(yùn)用早停法(early stopping).模型采用RMSProp優(yōu)化器.評(píng)價(jià)函數(shù)使用均方根誤差(RMSE).
在得到收盤價(jià)預(yù)測(cè)值之后,進(jìn)行一階差分得到收益率,將收益率轉(zhuǎn)換為類別信號(hào),類別的設(shè)置分為3 類,大于0 時(shí)為1,小于0 時(shí)為-1,等于0為0.
獲得信號(hào)后,按照以下規(guī)則進(jìn)行倉位操作:在連續(xù)獲得6 個(gè)下跌信號(hào)時(shí)進(jìn)行開多,之后在獲得1 個(gè)上漲信號(hào)時(shí)進(jìn)行平多.在連續(xù)獲得5 個(gè)上漲信號(hào)時(shí)進(jìn)行開空,之后在獲得1 個(gè)下跌信號(hào)時(shí)進(jìn)行平空.
進(jìn)行4 組對(duì)比試驗(yàn),分別為LSTM,LSTM-GA,LSTM-Attention,LSTM-Attention-GA,其中GA 代表經(jīng)過遺傳算法優(yōu)化后的模型,Attention 代表模型采用了注意力機(jī)制.
圖5展示訓(xùn)練后的各模型在測(cè)試集上的擬合情況.由圖可知,隨著時(shí)間的推移,雖然各模型預(yù)測(cè)值與真實(shí)值的差距較大,但是各模型預(yù)測(cè)的收盤價(jià)與真實(shí)的收盤價(jià)的趨勢(shì)基本相同.為提高模型泛化能力,減少模型在測(cè)試集上過擬合,本文中遺傳算法所設(shè)置的優(yōu)化目標(biāo)是各模型在驗(yàn)證集的RMSE.
圖5 各模型在測(cè)試集上的擬合圖
加入注意力機(jī)制的模型會(huì)對(duì)時(shí)間步n_steps的權(quán)重進(jìn)行調(diào)整,圖6展示測(cè)試集第1 個(gè)交易日(20191227)在時(shí)間步n_steps為12的情況下,LSTM-Attention-GA 模型調(diào)整后的時(shí)間步權(quán)重的分布情況.本文數(shù)據(jù)以分鐘為單位,n_steps為12 表示使用前12 分鐘的數(shù)據(jù)來對(duì)下1 分鐘的數(shù)據(jù)進(jìn)行預(yù)測(cè).其中橫坐標(biāo)0 表示前12 分鐘,11 表示前1 分鐘,隨著時(shí)間的推移,其所占的權(quán)重也逐漸增加.這說明越相近的時(shí)間所產(chǎn)生的影響越大,越相遠(yuǎn)的時(shí)間所產(chǎn)生的影響越小.
圖6 時(shí)間步權(quán)重分布圖
圖7展示模型對(duì)比實(shí)驗(yàn)的回測(cè)結(jié)果.為簡(jiǎn)化實(shí)驗(yàn),不考慮交易成本,采用日內(nèi)交易,即當(dāng)天必須平倉.沒有杠桿,既可以開多倉又可以開空倉.每次交易單位為1 報(bào)價(jià)單位.模型評(píng)測(cè)指標(biāo)包括:測(cè)試集RMSE,測(cè)試集的整體收益,測(cè)試集的收益的夏普比率,測(cè)試集的最大回撤.Buy and Hold 策略表示在每一個(gè)交易日都開盤買入收盤賣出.為更準(zhǔn)確對(duì)比模型效果,也將本文模型與Buy and Hold 策略進(jìn)行對(duì)比.
圖7 回測(cè)結(jié)果對(duì)比圖
通過pnl (profit and loss)曲線可以看出隨著時(shí)間的延長,短期時(shí)模型之間的區(qū)別并不明顯,但是在長期來看LSTM-Attention-GA 模型和LSTM-GA 模型更加有效,并且LSTM-Attention-GA 模型要比沒有引入注意力機(jī)制的LSTM-GA 模型效果更好,這說明加入注意力機(jī)制層后的模型的長期有效性得到了增強(qiáng).
以LSTM-Attention 模型為例,表1展示的是在經(jīng)過遺傳算法調(diào)優(yōu)前后的參數(shù)對(duì)照.可以看出所有的模型參數(shù)都得到了調(diào)優(yōu).結(jié)合表2的回測(cè)結(jié)果作為比較,可以看出經(jīng)過遺傳算法參數(shù)調(diào)優(yōu)的模型效果普遍比沒有經(jīng)過參數(shù)調(diào)優(yōu)的模型要好,沒有經(jīng)過參數(shù)調(diào)優(yōu)的模型甚至夏普比率和收益都要劣于Buy and Hold 策略的效果,這也說明了通過遺傳算法參數(shù)調(diào)優(yōu)后,模型的泛化能力得到增強(qiáng).
表1 參數(shù)調(diào)優(yōu)對(duì)照表
表2 回測(cè)結(jié)果對(duì)照表
本文還對(duì)傳統(tǒng)遺傳算法的選擇算子做了改進(jìn),采用基于隨機(jī)接受的方法來進(jìn)行輪盤賭選擇,加快遺傳算法的收斂速度.圖8和圖9分別展示在迭代過程中,每一輪優(yōu)秀子代的最佳適應(yīng)度收斂曲線對(duì)比圖和平均適應(yīng)度收斂曲線對(duì)比圖.從圖8可以看出,基于隨機(jī)接受輪盤賭選擇法的遺傳算法,其在訓(xùn)練過程中的收斂速度要明顯比基于傳統(tǒng)輪盤賭選擇法的遺傳算法要快,基于隨機(jī)接受輪盤賭選擇法在第2 次迭代后子代最佳適應(yīng)度就基本趨于收斂,而基于傳統(tǒng)輪盤賭選擇法要在第10 次迭代后子代最佳適應(yīng)度才趨于收斂.這說明了改進(jìn)后的遺傳算法可以提高模型參數(shù)調(diào)優(yōu)的收斂速度.另外,通過圖9可以看出,基于隨機(jī)接受輪盤賭選擇法的遺傳算法在訓(xùn)練過程中的子代平均適應(yīng)度波動(dòng)要比基于傳統(tǒng)輪盤賭選擇法在訓(xùn)練過程中的子代平均適應(yīng)度的波動(dòng)要小.
圖8 子代最佳適應(yīng)度收斂曲線對(duì)比圖
圖9 子代平均適應(yīng)度收斂曲線對(duì)比圖
本文首先介紹了對(duì)于期貨價(jià)格預(yù)測(cè)所出現(xiàn)的不同方法,接著提出一種改進(jìn)的基于長短期記憶神經(jīng)網(wǎng)絡(luò)的LSTM-Attention-GA 模型,該模型結(jié)合了注意力機(jī)制和遺傳算法.然后介紹了實(shí)驗(yàn)所需的軟硬件,數(shù)據(jù)的獲取和處理過程.最后通過對(duì)比實(shí)驗(yàn)顯示了我們構(gòu)建的LSTM-Attention-GA 模型實(shí)現(xiàn)了用于期貨投資策略的有效性,解決了傳統(tǒng)LSTM 神經(jīng)網(wǎng)絡(luò)對(duì)金融時(shí)間序列預(yù)測(cè)不佳的問題,因此對(duì)神經(jīng)網(wǎng)絡(luò)模型在金融市場(chǎng)的應(yīng)用具有重大意義.
在未來的工作中,可以拓展的方向包括挖掘更多更有效的因子;改為使用更高頻數(shù)據(jù)甚至tick 級(jí)別的數(shù)據(jù)來進(jìn)行訓(xùn)練,因?yàn)楦嗟臄?shù)據(jù)將有利于模型對(duì)于數(shù)據(jù)特征的進(jìn)一步發(fā)掘.還包括如何構(gòu)建更優(yōu)的模型來降低訓(xùn)練中的過擬合,以及模型訓(xùn)練速度慢的問題.另外,遺傳算法也可能會(huì)陷入局部最優(yōu)值而非得到全局最優(yōu)值,如果防止這種情形以及如何進(jìn)一步提高預(yù)測(cè)效果,也都是接下來所要進(jìn)一步研究的方向.
計(jì)算機(jī)系統(tǒng)應(yīng)用2021年8期