張晉陽(yáng)
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
金融市場(chǎng)的歷史數(shù)據(jù)充滿了許多噪聲和不穩(wěn)定性,所以金融市場(chǎng)預(yù)測(cè)是一種非常具有挑戰(zhàn)性的應(yīng)用[1-2]。大部分成功的方法是當(dāng)市場(chǎng)處于牛市或熊市的時(shí)候給訓(xùn)練數(shù)據(jù)打上標(biāo)簽[3-4]。然而金融市場(chǎng)的表現(xiàn)會(huì)依賴于一些外部的因素,例如市場(chǎng)趨勢(shì)、政治事件,等等,這些可能會(huì)造成訓(xùn)練機(jī)器學(xué)習(xí)分類器時(shí)造成過(guò)度擬合[5-6]。本文旨在通過(guò)強(qiáng)化學(xué)習(xí)的方法來(lái)減少過(guò)度擬合,以及最大化回報(bào)函數(shù)。為了實(shí)現(xiàn)這個(gè)目標(biāo),本文使用相同訓(xùn)練數(shù)據(jù)對(duì)Q-learning agent 訓(xùn)練多次,然后根據(jù)不同agent 生成的金融市場(chǎng)的交易信號(hào)來(lái)優(yōu)化最終的交易決策。實(shí)驗(yàn)結(jié)果會(huì)和傳統(tǒng)的買賣策略進(jìn)行對(duì)比,也會(huì)對(duì)結(jié)果進(jìn)行定量和定性的分析。
本文使用強(qiáng)化學(xué)習(xí)中的Deep Q-learning 算法用于股票的日內(nèi)交易[5]。根據(jù)每次訓(xùn)練迭代的結(jié)果使用混合的Deep Q-learning 策略,并且在一些特定的場(chǎng)景和交易周期,探索了不同的日內(nèi)交易信號(hào)的組合[6]。強(qiáng)化學(xué)習(xí)中的智能體agent 通過(guò)不斷學(xué)習(xí)來(lái)達(dá)到更好的交易表現(xiàn)。
本文通過(guò)配置智能體agent 來(lái)實(shí)現(xiàn)一個(gè)經(jīng)典的日內(nèi)交易策略,即買/賣特定的股票期貨,并且在每個(gè)交易日市場(chǎng)收盤前,期貨交易必須平倉(cāng)。根據(jù)本文的交易策略,智能體agent 在每個(gè)交易日中必須執(zhí)行的動(dòng)作如下:
(1)做多:買進(jìn)股票期貨,并在交易日結(jié)束前賣出所買進(jìn)的股票期貨;
(2)做空:賣出股票期貨,并在交易日結(jié)束前買進(jìn)所賣出的股票期貨;
(3)觀望:在交易日結(jié)束前不進(jìn)行任何買進(jìn)/賣出動(dòng)作。
本文交易策略的目標(biāo):假設(shè)給定股票期貨在每個(gè)交易日的價(jià)格趨勢(shì)的預(yù)測(cè)(股票期貨在該交易日上漲/下跌),通過(guò)在每個(gè)交易日采取不用的交易動(dòng)作,來(lái)最大化在每個(gè)交易日的經(jīng)濟(jì)回報(bào)。因此,在智能體agent假設(shè)交易日股票期貨的價(jià)格上升,智能體agent 執(zhí)行做多動(dòng)作。相反,智能體agent 假設(shè)交易日股票期貨的價(jià)格下降,智能體agent 執(zhí)行做空動(dòng)作。如果智能體agent 對(duì)股票期貨的價(jià)格變化趨勢(shì)不確定或者股票期貨的價(jià)格維持不變,智能體agent 執(zhí)行觀望動(dòng)作。
本文使用的方法是基于Double Q-Learning(DQL)agents,使用Deep Q Networks(DQN),通過(guò)網(wǎng)絡(luò)權(quán)重的學(xué)習(xí)和訓(xùn)練階段錯(cuò)誤的反向傳播來(lái)更新Q 表。在測(cè)試場(chǎng)景,DQN 處理輸入(狀態(tài)),并且為接下來(lái)每個(gè)動(dòng)作返回Q 值,然后選擇執(zhí)行在當(dāng)前狀態(tài)Q 值最高的那個(gè)動(dòng)作。
本文的方法考慮了在環(huán)境中不同epoch 中訓(xùn)練的多個(gè)DQN agents[7]。當(dāng)我們使用DRL 預(yù)測(cè)股票價(jià)格時(shí),我們需要提前了解金融市場(chǎng)的復(fù)雜性,以便我們更加合理地設(shè)計(jì)智能體agents 的動(dòng)作空間。為了達(dá)到這樣的目標(biāo),股票期貨交易的多個(gè)DQN 代理可以配置多個(gè)動(dòng)作組合,這些動(dòng)作組合可以適用于不同的市場(chǎng)。本文提出了下列的動(dòng)作組合:
(1)做多agent(Only-Long)。最終的agent 由多個(gè)agents 組成(即在不同epoch 訓(xùn)練的agent),并且在使用訓(xùn)練集數(shù)據(jù)在訓(xùn)練階段中,所有的日內(nèi)交易的動(dòng)作為做多或者觀望。為了模擬真實(shí)世界的交易,本文將我們要預(yù)測(cè)的某一天的歷史價(jià)格數(shù)據(jù)作為輸入,使用已經(jīng)預(yù)訓(xùn)練好的agent 來(lái)預(yù)測(cè)接下來(lái)的動(dòng)作,生成一個(gè)日志文件,這個(gè)日志文件中包含了agent 在不同epoch中每個(gè)交易日的交易決策。最后,通過(guò)threshold 閾值函數(shù)生成agent 在每個(gè)交易日最終的交易決策。
(2)做空agent(Only-Short)。最終的agent 和做多agent 類似,不同的只是各個(gè)agents 的日內(nèi)交易的動(dòng)作為做空或者觀望,并且最終的agent 由threshold 閾值函數(shù)生成每個(gè)交易日的交易決策。
(3)做多+做空agent(Long+Short)。該agent 以上面的做多agent 和做空agent 的結(jié)果作為輸入,將它們最終的交易決策組合在一起。如果做多agent 和做空agent 的交易決策未達(dá)成一致或者均建議觀望,則做多+做空agent 選擇的動(dòng)作為觀望。
(4)全局agent(Full)。最終的agent 由多個(gè)單獨(dú)的做多+做空agent 組成,相比于做多agent 和做空agent,它是由做多+做空agent 在不同epoch 中訓(xùn)練得到的交易決策通過(guò)threshold 閾值函數(shù)生成每個(gè)交易日的交易決策。
以一個(gè)agent 配置的過(guò)程為例,解釋了本文提出的方法如何工作的。如果已經(jīng)訓(xùn)練好了一個(gè)做多agent,我們可以訓(xùn)練一些強(qiáng)化學(xué)習(xí)agents,根據(jù)最高的回報(bào)獎(jiǎng)勵(lì)來(lái)選擇觀望或者做多動(dòng)作,然后將每個(gè)代理的輸出應(yīng)用到過(guò)去的交易日的數(shù)據(jù)中。通過(guò)選擇一個(gè)合適的threshold 閾值,agent 從多個(gè)強(qiáng)化學(xué)習(xí)agents 得出的最頻繁的交易決策中選擇相對(duì)應(yīng)的交易動(dòng)作或者保持觀望。
這樣agent 的配置過(guò)程中,依然需要考慮到不同金融市場(chǎng)的特殊性。例如,S&P500 指數(shù)從歷史上看有一個(gè)顯著的增長(zhǎng)趨勢(shì),從交易回報(bào)上看,日內(nèi)交易可能沒(méi)那么重要。除此之外,我們還可以通過(guò)改變threshold閾值來(lái)轉(zhuǎn)變我們交易的風(fēng)格。例如,做出更加保守或者具有隨機(jī)性的交易行為。例如,在長(zhǎng)期投資中,選擇更多觀望的交易動(dòng)作來(lái)避免市場(chǎng)比較危險(xiǎn)時(shí)虧損。另外,在短期投資中,我們假設(shè)不會(huì)發(fā)生市場(chǎng)危機(jī),我們希望保證大多數(shù)agents 能夠捕獲股票期貨交易行為的本質(zhì)。
標(biāo)準(zhǔn)普爾500 指數(shù)(S&P500),時(shí)間粒度為小時(shí)的價(jià)格數(shù)據(jù)集,如表1 所示。市場(chǎng)價(jià)格信息通常以市場(chǎng)點(diǎn)的形式顯示,如標(biāo)準(zhǔn)普爾500 指數(shù)市場(chǎng)的點(diǎn)值為50美元(USD)。
表1 數(shù)據(jù)集結(jié)構(gòu)
本文在S&P500 數(shù)據(jù)集中分析了大約兩年的短周期數(shù)據(jù)集(S&P500-S 子數(shù)據(jù)集),該數(shù)據(jù)集的詳細(xì)情況如表2 所示。
表2 實(shí)驗(yàn)中考慮的期貨市場(chǎng)數(shù)據(jù)集
本文在S&P500-S 數(shù)據(jù)集實(shí)驗(yàn)前,使用固定的初始投資為:S&P500-S:102087.50 USD。
索提諾比率(Sortino Ratio,SR)被認(rèn)為是統(tǒng)計(jì)評(píng)估交易策略績(jī)效的最佳指標(biāo)之一,因?yàn)樗峁┝讼鄬?duì)于假設(shè)風(fēng)險(xiǎn)的預(yù)期回報(bào)率[8]。其公式如下式所示:
其中Rˉ代表交易策略預(yù)期的平均回報(bào),rf是無(wú)風(fēng)險(xiǎn)利率,σd是收益率的下行標(biāo)準(zhǔn)差,即僅為負(fù)收益率的標(biāo)準(zhǔn)偏差,用于估計(jì)所考慮策略的波動(dòng)性(或風(fēng)險(xiǎn))。這一比率越高,表明股票期貨承擔(dān)相同單位下行風(fēng)險(xiǎn)能獲得更高的超額回報(bào)率。
在圖1 中,就Sortino Ratio 而言,從總體上來(lái)看,在短周期交易場(chǎng)景中,Buy-and-Hold 具有正向的趨勢(shì),但做多agent 明顯優(yōu)于Buy-and-Hold。
圖1 S&P500-S實(shí)驗(yàn)的Sortino比率每日匯總
在圖2 中,在threshold 閾值在60%-90%范圍中,做多agent 優(yōu)于Buy-and-Hold,并且在短周期交易場(chǎng)景中獲得了最高的收益。
圖2 S&P500-S實(shí)驗(yàn)的回報(bào)率(越高越好)
在圖3 中,隨著交易的進(jìn)行,能看到做空agent 和做多+做空agent 的表現(xiàn),它們的凈資產(chǎn)曲線隨時(shí)間的變化呈現(xiàn)出正向的走勢(shì),而B(niǎo)uy-and-Hold 在剛開(kāi)始交易的一段時(shí)間走勢(shì)卻并不樂(lè)觀。此外,做多agent 曲線顯示,隨著時(shí)間的推移,交易行為更加可靠,整體收益也一直比其他要高。實(shí)際上,做多+做空agent 在交易期間的后半部分表現(xiàn)的更好,在此期間,做空agent 采取更為保守的交易決策(大部分時(shí)間選擇觀望),從整體收益來(lái)看,最好的表現(xiàn)仍然是做多agent。此外,F(xiàn)ull agent 在交易期間的前半部分,做多或者做空決策顯得更為激進(jìn),表現(xiàn)比較好,但在交易期間的后半部分無(wú)法利用到市場(chǎng)復(fù)蘇獲得更高的收益。
圖3 S&P500-S實(shí)驗(yàn)的凈資產(chǎn)(越高越好)
近幾年來(lái),股票期貨交易越來(lái)越受人們的歡迎,一些缺乏股票期貨領(lǐng)域?qū)I(yè)知識(shí)的用戶也希望借助日內(nèi)股票交易自動(dòng)化系統(tǒng)在股市致富。本文使用基于獎(jiǎng)勵(lì)的分類器,針對(duì)特定市場(chǎng)的特殊決策組合,形成多個(gè)強(qiáng)化學(xué)習(xí)分類器的最終決策。本文的實(shí)驗(yàn)結(jié)果也表明可以通過(guò)一個(gè)靈活的集成策略來(lái)解決不同股票市場(chǎng)的不確定性和混沌行為。與“買入并持有”被動(dòng)投資策略相比,本文的方法在索蒂諾比率和凈資產(chǎn)曲線方面產(chǎn)生了很好的效果。本文局限在處理的數(shù)據(jù)只包含過(guò)去的價(jià)格數(shù)據(jù),未來(lái)可以與基于新聞的分類系統(tǒng)結(jié)合起來(lái),以便更好地考慮外部因素對(duì)這些市場(chǎng)的影響。