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