全文鏈接:https:///?p=38528 本文聚焦于利用生成對抗網(wǎng)絡(luò)(GANs)進(jìn)行金融時間序列的概率預(yù)測。介紹了一種新穎的基于經(jīng)濟(jì)學(xué)驅(qū)動的生成器損失函數(shù),使 GANs 更適用于分類任務(wù)并置于監(jiān)督學(xué)習(xí)環(huán)境中,能給出價格回報的全條件概率分布,突破傳統(tǒng)點(diǎn)估計方式,實(shí)現(xiàn)不確定性估計。通過股票數(shù)據(jù)的數(shù)值實(shí)驗(yàn)驗(yàn)證了所提方法的有效性,相比經(jīng)典監(jiān)督學(xué)習(xí)模型如 LSTMs 和 ARIMA 獲得了更高的夏普比率(點(diǎn)擊文末“閱讀原文”獲取完整代碼數(shù)據(jù))。 引言時間序列預(yù)測多年來一直是工業(yè)界和學(xué)術(shù)界關(guān)注的核心話題?,F(xiàn)實(shí)世界中多數(shù)過程天然具備時間序列結(jié)構(gòu),在金融和經(jīng)濟(jì)領(lǐng)域,像金融工具價格、通貨膨脹率以及諸多關(guān)鍵宏觀經(jīng)濟(jì)指標(biāo)都是如此。交易策略往往基于對某一金融工具價格走勢(上升或下降以及變動幅度)的合理判斷,所以時間序列的預(yù)測與分類在金融環(huán)境中極為重要。傳統(tǒng)上,這項(xiàng)任務(wù)主要依靠僅基于點(diǎn)估計的方法來完成。而本文旨在突破這類傳統(tǒng)方法,借助生成對抗網(wǎng)絡(luò)(GANs)為目標(biāo)變量的未來分布提供概率預(yù)測。 生成對抗網(wǎng)絡(luò)(一)經(jīng)典 GAN生成對抗網(wǎng)絡(luò)(GANs)由 Goodfellow 等人在 2014 年提出,當(dāng)前在諸多任務(wù)中處于領(lǐng)先地位,尤其在圖像和視頻生成方面表現(xiàn)突出,在科學(xué)、視頻游戲、照片、視頻質(zhì)量提升等眾多領(lǐng)域也有著廣泛應(yīng)用。它屬于生成模型家族,其任務(wù)是從未知的數(shù)據(jù)分布中生成新樣本。 torch torch.nn nn (nn.Module): \_\_init\_\_(self): (Generator, self).\_\_init\_\_() (self, noise): generated_sample = generated_sample (nn.Module): \_\_init\_\_(self): (Discriminator, self).\_\_init\_\_() (self, input_sample): probability = probability (二)條件 GAN條件生成對抗網(wǎng)絡(luò)是標(biāo)準(zhǔn) GAN 的自然延伸,最早在最初的 GAN 論文中被提及,并由 Mirza 和 Osindero 在 2014 年首次進(jìn)行探索。它假設(shè)數(shù)據(jù) (三)ForGANForGAN 是一種條件 GAN,其架構(gòu)非常適合用于時間序列的概率預(yù)測,由 Koochali 等人在 2019 年提出。其思路是利用條件 GAN,根據(jù)時間序列之前的 Fin-GAN損失函數(shù)我們工作的主要貢獻(xiàn)在于為生成器引入了一種新穎的經(jīng)濟(jì)驅(qū)動損失函數(shù),這將生成對抗網(wǎng)絡(luò)(GANs)置于有監(jiān)督學(xué)習(xí)環(huán)境中。這種方法使我們能夠超越傳統(tǒng)的逐點(diǎn)預(yù)測方法,轉(zhuǎn)向概率預(yù)測,從而提供不確定性估計。此外,我們基于預(yù)測的方向來評估性能,這意味著我們對分類感興趣,而我們的損失函數(shù)更適合于此。 動機(jī)GANs的主要目標(biāo)是創(chuàng)建模仿真實(shí)數(shù)據(jù)的合成樣本。然而,一個重要的問題是,我們希望通過模擬重現(xiàn)真實(shí)數(shù)據(jù)的哪些屬性。在我們的案例中,是預(yù)測的方向。我們更感興趣的是正確地對收益/超額收益進(jìn)行分類,特別是當(dāng)價格變動幅度較大時,而不是生成接近實(shí)際值的預(yù)測。其動機(jī)在于,可能會產(chǎn)生一個接近時間序列實(shí)際值但符號(方向)相反的預(yù)測。在金融時間序列預(yù)測中,在最重要的時候正確估計符號通常比預(yù)測接近實(shí)際值更為重要。我們旨在為生成器提供更多信息,使其更好地復(fù)制數(shù)據(jù)的符號,這是任務(wù)的關(guān)鍵組成部分。使用新穎損失函數(shù)項(xiàng)的主要原因和好處可總結(jié)如下:
新穎損失函數(shù)假設(shè)我們的GAN旨在預(yù)測(x\_i),其中(i = 1,\cdots,n\_{batch})。對于每個(x\_i),給定噪聲樣本(z)和由時間序列(x)的前(L)個值組成的條件(x\_{-Li}),生成器的輸出為 設(shè)(x=(x\_1,\cdots,x\_{n_{batch}}))和(\hat{x}=(\hat{x}_1,\cdots,\hat{x}_{n_{batch}}))是(x)的預(yù)測。我們定義三個損失函數(shù)項(xiàng),即基于PnL、均方誤差(MSE)和夏普比率(Sharpe Ratio)的項(xiàng),我們用它們來訓(xùn)練生成器。 (一)PnL項(xiàng)在生成器訓(xùn)練目標(biāo)(最大化)中包含的損失函數(shù)項(xiàng)的第一個也是最明顯的選擇是PnL。然而,符號函數(shù)不可微,使得無法執(zhí)行反向傳播。為了緩解這個問題,我們提出了對(PnL)的平滑近似,我們將其表示為(PnL^*),定義為 其中(PnL_a^*)是對特定預(yù)測的(PnL)的平滑近似 并且(\tanh(x))定義為 超參數(shù)(k_{tanh})控制我們近似的準(zhǔn)確性。由于超額收益的值通常較小,期望(k_{tanh})足夠大以獲得良好的近似,但同時又足夠小以使生成器能夠從中學(xué)習(xí)到強(qiáng)梯度。請注意,在PnL項(xiàng)的表達(dá)式中,我們考慮的是每筆交易的PnL。這不是在每天平均的PnL,因?yàn)橛?xùn)練數(shù)據(jù)集在每個訓(xùn)練周期開始時都會被打亂。我們使用(k_{tanh}=100)。 Fin-GAN損失函數(shù)的好處和挑戰(zhàn)新穎的損失函數(shù)項(xiàng)確實(shí)會移動生成的分布,有助于避免模式崩潰,并提高夏普比率性能,我們在大量數(shù)值實(shí)驗(yàn)中證明了這一點(diǎn)。包含新的損失函數(shù)項(xiàng)引入了四個需要調(diào)整的新超參數(shù),使得優(yōu)化成為一個更具挑戰(zhàn)性的問題。然而,梯度范數(shù)匹配方法緩解了這個問題。 此外,損失表面變得更加復(fù)雜,增加了收斂挑戰(zhàn)。在初始數(shù)值實(shí)驗(yàn)中,當(dāng)探索更廣泛的超參數(shù)(\alpha,\beta,\gamma)范圍時,MSE和夏普比率項(xiàng)似乎鼓勵生成器產(chǎn)生非常狹窄的分布。為什么具有高(\gamma)系數(shù)的夏普比率項(xiàng)會導(dǎo)致模式崩潰并不明顯,因?yàn)樗膭頟nL具有低標(biāo)準(zhǔn)差,而不是生成的樣本。然而,包含基于PnL的項(xiàng)有助于緩解模式崩潰問題,這與收斂到尖銳局部最小值有關(guān)(Durall等人,2021)。PnL項(xiàng)幫助生成器逃離損失表面的此類區(qū)域。當(dāng)使用梯度范數(shù)匹配來調(diào)整超參數(shù)(\alpha,\beta,\gamma,\delta)時,無論網(wǎng)絡(luò)權(quán)重的初始化如何,F(xiàn)in-GAN都沒有模式崩潰。然而,我們注意到使用Xavier初始化(Glorot和Bengio,2010)而不是He初始化(He等人,2015)有助于減少ForGAN出現(xiàn)模式崩潰的迭代次數(shù)。使用He初始化時,這種情況在67%的案例中發(fā)生。使用普通Xavier初始化解決了這個問題。 Fin-GAN算法輸入:生成器的隱藏維度、判別器的隱藏維度、噪聲維度。目標(biāo)大小、條件窗口、滑動窗口。判別器學(xué)習(xí)率、生成器學(xué)習(xí)率。訓(xùn)練數(shù)據(jù)、驗(yàn)證數(shù)據(jù)、測試數(shù)據(jù)。梯度匹配的訓(xùn)練周期數(shù)(n_{grad})、訓(xùn)練周期數(shù)(n_{epochs})、小批量大小(n_{batch})、模式崩潰閾值(\alpha)。加權(quán)策略的樣本數(shù)量(B)。 n_grad 個訓(xùn)練周期 將訓(xùn)練數(shù)據(jù)分割成小批量。 小批量數(shù)量 計算關(guān)于 將它們標(biāo)記為grad0、gradα、gradβ、gradγ、gradδ。 通過RMSProp和BCE損失更新disc,然后更新gen參數(shù)。 end end mean(grad0/gradα); mean(grad0/gradβ); mean(grad0/gradγ); mean(grad0/gradδ) 步驟2:訓(xùn)練和驗(yàn)證。 i = , geni gen; disci disc. nepochs 將訓(xùn)練數(shù)據(jù)分割成小批量。 小批量數(shù)量 通過RMSProp和J(D)更新disc。 通過RMSProp和Li更新gen。 end end 從驗(yàn)證集中的每一天從geni中取出B個樣本。 SR_ival 驗(yàn)證集上加權(quán)策略的夏普比率。 end i^* argmax : i = , gen^* geni^* 步驟3:在測試集上評估。 if std({hat{r}_{i0}}_{i = 1,cdots,B}) < alpha 或 std({tilde{r}\_t}\_{tin測試集}) < alpha then 模式崩潰。 else 無模式崩潰。 end if 上述論文對Fin - GAN損失函數(shù)進(jìn)行了較為全面的闡述,包括其動機(jī)、新穎損失函數(shù)的構(gòu)建、帶來的好處與挑戰(zhàn)以及相關(guān)算法流程等內(nèi)容。在實(shí)際應(yīng)用中,可根據(jù)具體的金融數(shù)據(jù)和需求進(jìn)一步調(diào)整和優(yōu)化相關(guān)參數(shù)與模型結(jié)構(gòu),以達(dá)到更好的預(yù)測和分類效果。 數(shù)據(jù)描述與實(shí)現(xiàn)考量在本節(jié)中,我們將對所使用數(shù)據(jù)集的主要特征進(jìn)行闡述,介紹ForGAN架構(gòu),討論訓(xùn)練設(shè)置情況,并展示Fin - GAN模型在數(shù)值實(shí)驗(yàn)中的一般行為表現(xiàn)。 數(shù)據(jù)描述我們選取的是CRSP中提取的每日股票ETF超額收益以及每日原始ETF收益數(shù)據(jù),時間跨度為2000年1月至2021年12月。所有時間序列按照80 - 10 - 10的比例劃分訓(xùn)練 - 驗(yàn)證 - 測試階段,具體而言,訓(xùn)練期是2000年1月3日至2017年8月9日,驗(yàn)證期為2017年8月10日至2019年10月22日,測試期則是2019年10月23日至2021年12月31日。值得注意的是,測試數(shù)據(jù)涵蓋了新冠疫情起始階段,這無疑增加了問題的挑戰(zhàn)性。 data\ = pd.read\() data\\[\] = pd.\(data\\[\]) data\\[\] = data\\[\] / data_ETFs\[\] data\\[\] = data\\[\] / data_ETFs\[\] ETF\ = data\\[\].unique()\[:\] ETF\ = \[None\] * len(ETF\) i tqdm(range(len(ETF_list))): ETF = ETF_list\[i\] ETF\\[i\] = data\\[data\.TICKER == ETF\].copy().reset\() ETF\\[i\].\(+ETF+) plt.figure(ETF + ) plt.plot(ETF\\[i\]\[\],ETF_dfs\[i\]\[\],label=) plt.plot(ETF\\[i\]\[\],ETF_dfs\[i\]\[\],label=) ForGAN架構(gòu)針對單只股票/ETF數(shù)值實(shí)驗(yàn),利用LSTM單元構(gòu)建的經(jīng)典ForGAN架構(gòu)。鑒于所使用數(shù)據(jù)集規(guī)模較小,相應(yīng)各層維度以及噪聲維度統(tǒng)一設(shè)置為8。生成器激活函數(shù)選用ReLU,而判別器激活函數(shù)采用sigmoid函數(shù)。 基線算法除了標(biāo)準(zhǔn)的ForGAN(通過BCE損失訓(xùn)練、具備ForGAN架構(gòu)的GAN)之外,我們還將Fin - GAN模型與更為常見的時間序列預(yù)測監(jiān)督學(xué)習(xí)方法,像ARIMA和LSTM進(jìn)行對比分析。 sgn_fake = torch.(predicted) PnL = torch.(sgn_fake*) PnL = *PnL/nsamp PnL
點(diǎn)擊標(biāo)題查閱往期內(nèi)容 MATLAB貝葉斯優(yōu)化混合Bayes-CNN-RNN分析股票市場數(shù)據(jù)與淺層網(wǎng)絡(luò)超參數(shù)優(yōu)化 左右滑動查看更多 此圖所使用的數(shù)據(jù)是PFE的ETF超額收益,通過不同損失函數(shù)組合訓(xùn)練后,展示在測試集上生成的樣本外(一步超前)均值情況。比如在該特定實(shí)例中,在驗(yàn)證集上夏普比率性能表現(xiàn)最佳的損失函數(shù)是PnL - MSE - SR。 數(shù)值實(shí)驗(yàn)首先,在單只股票設(shè)置情境下,我們針對特定股票/ETF的ETF超額收益/原始收益對Fin - GAN和各基線模型展開訓(xùn)練。隨后,依照Sirignano和Cont(2019)所提出的思路,在三組不同股票數(shù)據(jù)上探究普遍性概念。我們把單只股票設(shè)置中不同股票代碼對應(yīng)的數(shù)據(jù)進(jìn)行整合,模擬數(shù)據(jù)來自同一數(shù)據(jù)源對Fin - GAN進(jìn)行訓(xùn)練。 注:SR指年化夏普比率,PnL指平均每日PnL,MAE和RMSE分別表示平均絕對誤差和均方根誤差,表格中突出顯示的是各指標(biāo)下表現(xiàn)最優(yōu)的結(jié)果。 圖呈現(xiàn)的是Fin - GAN不同損失函數(shù)組合在不同股票代碼上達(dá)成的累積PnL情況,其中投資組合PnL是圖中黑色顯示的平均PnL乘以工具數(shù)量。 通過上述實(shí)驗(yàn)可知,平均來看,F(xiàn)in - GAN方法在性能上優(yōu)于ForGAN、LSTM、ARIMA以及長期持有這些基線模型。進(jìn)一步分析單個股票代碼層面的夏普比率情況,從各模型和股票代碼對應(yīng)的年化夏普比率性能圖能發(fā)現(xiàn),F(xiàn)in - GAN模型比其他基線模型表現(xiàn)更佳,能夠獲取極具競爭力的夏普比率,尤其考慮到處理的是單只股票投資組合這一情況。Fin - GAN所實(shí)現(xiàn)的夏普比率相較于LSTM更加穩(wěn)定,唯一夏普比率低于 - 1的股票代碼是XLY,這是由于該板塊ETF在新冠疫情初期出現(xiàn)暴跌,而在驗(yàn)證階段又持續(xù)增長所致。在LSTM實(shí)現(xiàn)夏普比率高于1或2的數(shù)據(jù)集上,F(xiàn)in - GAN同樣能達(dá)到相近甚至更高的夏普比率,比如在CL的情況中??傊?,對比其他方法,F(xiàn)in - GAN在夏普比率性能方面優(yōu)勢明顯。 從整體性能角度而言,F(xiàn)in - GAN和LSTM的表現(xiàn)優(yōu)于其他被研究的方法。各投資組合累積PnL情況如圖所示,深度學(xué)習(xí)模型從新冠疫情沖擊中恢復(fù)的速度明顯快于ARIMA和長期持有模型,并且生成的PnL波動大多源于疫情影響。圖中展示的不同F(xiàn)in - GAN損失組合對應(yīng)的累積PnL情況表明,使用驗(yàn)證環(huán)節(jié)來確定損失組合(而非一開始就對各數(shù)據(jù)集使用固定的損失組合)有助于提升整體性能。雖然LSTM的投資組合PnL相對較高,但其波動更大,特別是在2020年3月至6月期間,這也使得其夏普比率低于Fin - GAN。 針對圖展示的平均每日PnL性能,ARIMA和長期持有方法生成的平均每日PnL規(guī)模相近,LSTM平均獲得的PnL最高,不過LSTM的PnL在不同股票代碼間波動明顯較大。GAN方法實(shí)現(xiàn)的平均每日PnL標(biāo)準(zhǔn)差(Fin - GAN為4.85,F(xiàn)orGAN為4.00)明顯低于LSTM(7.48)、LSTM - Fin(7.53)、ARIMA(6.26)和長期持有(5.97),這體現(xiàn)出利用不確定性估計來構(gòu)建動態(tài)規(guī)模加權(quán)策略的優(yōu)勢。 接下來,我們對影響Fin - GAN性能的所選損失函數(shù)組合細(xì)分情況展開探討。 圖展示的是Fin - GAN在測試集上通過不同損失組合得到的SR(年化夏普比率),各股票代碼括號內(nèi)所報告的是在驗(yàn)證集上實(shí)現(xiàn)最高夏普比率的所選損失組合。
圖呈現(xiàn)的是在訓(xùn)練數(shù)據(jù)包含XLP數(shù)據(jù)時,屬于XLP板塊股票的SR性能總結(jié),同樣每列代表損失函數(shù)項(xiàng)的不同組合,SYY和TSN在訓(xùn)練階段未被模型關(guān)注到。 結(jié)論在金融數(shù)據(jù)背景下,我們已證明生成對抗網(wǎng)絡(luò)(GANs)可成功應(yīng)用于概率時間序列預(yù)測,尤其是在預(yù)測方向(符號)至關(guān)重要的情況下,如在大幅價格波動前的預(yù)測。我們引入了一種新穎的經(jīng)濟(jì)驅(qū)動生成器損失函數(shù),它包含適當(dāng)加權(quán)的利潤與損失(PnL)、PnL 的標(biāo)準(zhǔn)差、均方誤差(MSE)、基于夏普比率的損失函數(shù)項(xiàng),這使得 GANs 更適用于分類任務(wù),并將其置于有監(jiān)督學(xué)習(xí)環(huán)境中。 通過一系列全面的數(shù)值實(shí)驗(yàn),我們將自己的方法與標(biāo)準(zhǔn) GAN 模型、長短期記憶網(wǎng)絡(luò)(LSTM)、自回歸移動平均模型(ARIMA)以及長期持有策略進(jìn)行了比較,并在實(shí)現(xiàn)的夏普比率方面展示了我們模型的優(yōu)越性能。此外,我們在三種設(shè)定下考慮了通用模型:匯集來自不同板塊股票和板塊 ETF 的數(shù)據(jù);考慮一個板塊,將板塊 ETF 納入訓(xùn)練數(shù)據(jù)以及將板塊 ETF 排除在訓(xùn)練階段之外。盡管股票范圍較小,但我們注意到即使在未見過的股票上也可能有良好表現(xiàn)。并且,當(dāng)板塊 ETF 被納入訓(xùn)練數(shù)據(jù)時,單板塊設(shè)定中的性能有所提升。 我們的工作引出了一些有趣的未來研究方向。探索新?lián)p失函數(shù)項(xiàng)的添加如何影響路徑模擬,以及如何利用跨資產(chǎn)交互、從相關(guān)性中學(xué)習(xí)并在更大的股票范圍內(nèi)探索普遍性概念,可能會帶來深刻見解。超越股票數(shù)據(jù)并探索其他資產(chǎn)類別(如期權(quán)),可能在一個聯(lián)合框架中進(jìn)行,是未來工作的另一個有趣途徑。 參考文獻(xiàn)
|
|