<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何用深度強(qiáng)化學(xué)習(xí)自動(dòng)炒股

          共 9721字,需瀏覽 20分鐘

           ·

          2021-04-06 09:49


          向AI轉(zhuǎn)型的程序員都關(guān)注了這個(gè)號(hào)??????

          人工智能大數(shù)據(jù)與深度學(xué)習(xí)  公眾號(hào):datayx


          深度學(xué)習(xí)技術(shù)在股票交易上的應(yīng)用研究調(diào)查

          http://gregharris.info/a-survey-of-deep-learning-techniques-applied-to-trading/


          文中縮寫(xiě):

          • DBN = 深度信念網(wǎng)絡(luò)

          • LSTM = 長(zhǎng)短期記憶網(wǎng)絡(luò)

          • MLP = 多層感知器

          • RBM = 受限玻爾茲曼機(jī)

          • ReLU = 修正線性單元

          • CNN = 卷積神經(jīng)網(wǎng)絡(luò)


          限價(jià)委托單薄模型(Limit Order Book Modeling)

          Sirignano(2016)提出一種預(yù)測(cè)限價(jià)委托單薄變化的方法。他開(kāi)發(fā)了一個(gè)「空間神經(jīng)網(wǎng)絡(luò)(spatial neural network)」,該網(wǎng)絡(luò)可以利用局部空間結(jié)構(gòu)的優(yōu)勢(shì),比標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)更具可解釋性、也更具計(jì)算效率。他模擬了在下一狀態(tài)變化時(shí)最好的出價(jià)和要價(jià)。


          架構(gòu):每個(gè)神經(jīng)網(wǎng)絡(luò)有 4 層。標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)每個(gè)隱藏層有 250 個(gè)神經(jīng)元,而該空間神經(jīng)網(wǎng)絡(luò)有 50 個(gè)。他在隱藏層神經(jīng)元上使用雙曲正切激活函數(shù)。


          訓(xùn)練:他在 2014 年至 2015 年的 489 支股票的委托單薄上訓(xùn)練并測(cè)試了該網(wǎng)絡(luò)(每支股票有一個(gè)單獨(dú)的模型)。他使用了來(lái)自納斯達(dá)克的  Level III 限價(jià)委托單薄數(shù)據(jù),這些數(shù)據(jù)有著納秒級(jí)別的十進(jìn)制精度。訓(xùn)練包括了 50 TB 的數(shù)據(jù),并且使用了 50 個(gè) GPU 組成的集群。他總結(jié)了 200 個(gè)特征:現(xiàn)價(jià)委托單薄在首個(gè) 50 非零買(mǎi)入和賣(mài)出(bid/ask)水平的價(jià)格和大小。他使用 dropout 防止過(guò)擬合,并在每個(gè)隱藏層之間使用批規(guī)范化( batch normalization)來(lái)防止內(nèi)部的協(xié)變量轉(zhuǎn)變(covariate shift)。最后,使用 RMSProp 算法完成訓(xùn)練。RMSProp 類(lèi)似于帶有動(dòng)量的隨機(jī)梯度下降,但它通過(guò)一個(gè)過(guò)去梯度的移動(dòng)平均(running average)對(duì)梯度進(jìn)行規(guī)范化。他使用了一個(gè)自適應(yīng)學(xué)習(xí)速率——在任何時(shí)候,當(dāng)訓(xùn)練錯(cuò)誤率隨著訓(xùn)練時(shí)間增加時(shí),這個(gè)學(xué)習(xí)速率就會(huì)按一定的常數(shù)因子下降。他使用一個(gè)被一個(gè)驗(yàn)證集強(qiáng)加的提前停止(early stopping)來(lái)減少過(guò)擬合。在訓(xùn)練時(shí)為了減少過(guò)擬合,他也用了一個(gè)  l^2 懲罰機(jī)制。


          結(jié)果:他的結(jié)果顯示限價(jià)委托單薄展現(xiàn)出了一定程度的局部空間結(jié)構(gòu)。他能提前 1 秒預(yù)測(cè)委托單薄,也能預(yù)測(cè)下一次買(mǎi)入/賣(mài)出變化的時(shí)候。這一空間神經(jīng)網(wǎng)絡(luò)超過(guò)了標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)和沒(méi)有線性特征的邏輯回歸。這兩種神經(jīng)網(wǎng)絡(luò)都比邏輯回歸的錯(cuò)誤率低 10%。


          基于價(jià)格的分類(lèi)模型


          1.Dixon 等人(2016)使用一個(gè)深度神經(jīng)網(wǎng)絡(luò)預(yù)測(cè) 43 種大宗商品和外匯期貨在接下來(lái) 5 分鐘的價(jià)格變化。

          架構(gòu):他們的輸入層有 9896 個(gè)神經(jīng)元,輸入由滯后的價(jià)格差別和合同間的協(xié)動(dòng)構(gòu)成的特征。網(wǎng)絡(luò)中有 5 層學(xué)習(xí)到的全連接層。4 個(gè)隱藏層中的第一層有 1000 個(gè)神經(jīng)元,而且后面的每層逐次減少 100 個(gè)神經(jīng)元。輸出層有 129 個(gè)神經(jīng)元(每一類(lèi) {-1,0,1} 對(duì)應(yīng) 3 個(gè)神經(jīng)元,乘以 43 個(gè)合同)。

          訓(xùn)練:他們使用標(biāo)準(zhǔn)的帶有隨機(jī)梯度下降的反向傳播方法進(jìn)行訓(xùn)練。他們通過(guò)使用 mini-batching(依次在數(shù)個(gè)訓(xùn)練樣本上計(jì)算梯度,而非單個(gè)樣本) 加速訓(xùn)練過(guò)程。他們使用一個(gè)英特爾 Xeon Phi 協(xié)處理器進(jìn)行訓(xùn)練,而非使用英偉達(dá) GPU 。

          結(jié)果:總體上,他們報(bào)告在三類(lèi)分類(lèi)上實(shí)現(xiàn)了 42% 的準(zhǔn)確率。他們做了一些前行訓(xùn)練(walk-forward training),而非傳統(tǒng)的回測(cè)(backtest)。他們的箱形圖(boxplot)展示了一些來(lái)自每一合同 mini-backtest 的普遍積極的夏普比率。他們沒(méi)有把交易成本或者交叉買(mǎi)入/賣(mài)出差價(jià)考慮在內(nèi)。他們所有的預(yù)測(cè)和特征都基于每 5 分鐘最后時(shí)刻的中間價(jià)位。


          2.Takeuchi 和 Lee(2013)想要通過(guò)預(yù)測(cè)哪支股票將有比中值更高或更低的月度收益(monthly returns)來(lái)加強(qiáng)動(dòng)量效應(yīng)( momentum effect)。

          架構(gòu):他們使用一個(gè)由堆棧 RBM 組成的自動(dòng)編碼器提取來(lái)自股票價(jià)格的特征,然后他們將特征送入一個(gè)前饋神經(jīng)網(wǎng)絡(luò)分類(lèi)器。每個(gè) RBM 包含由對(duì)稱(chēng)鏈(symmetric links)連接的可見(jiàn)單位層和隱藏單位層。第一層有 33 個(gè)單位,用于輸入來(lái)自某個(gè)時(shí)候一支股票的特征。對(duì)每個(gè)月 t 而言,特征包括 t-2 月到 t-13 月 12 個(gè)月份的特征,以及對(duì)應(yīng) t 月的近似 20 天的回報(bào)。他們通過(guò)計(jì)算關(guān)于所有股票每個(gè)月或每天的橫切面(cross-section)的 z-得分,正則化每個(gè)回報(bào)特征。編碼器最終層的隱藏單位的數(shù)量急劇縮減,強(qiáng)迫降維。輸出層有 2 個(gè)單位,對(duì)應(yīng)股票是否低于或高于月度收益的中間值。最終層的大小依次為 33-40-4-50-2。

          訓(xùn)練:在預(yù)訓(xùn)練期間,他們將數(shù)據(jù)集分割成更小的、非重疊性的 mini-batches。然后,他們展開(kāi) RBM 形成一個(gè)編碼解碼器,使用反向傳播對(duì)其進(jìn)行精調(diào)。他們考慮了所有在 NYSE、AMEX 或納斯達(dá)克上交易的價(jià)格高于 5 美元的股票。他們?cè)?1965 年至 1989 年的數(shù)據(jù)上進(jìn)行訓(xùn)練(848,000 支股票的每月樣本),并在 1999 年至 2009 年的數(shù)據(jù)上進(jìn)行測(cè)試(924,300 支股票的每月樣本)。一些訓(xùn)練數(shù)據(jù)被保留,作為層的數(shù)量和每層單位的數(shù)量的驗(yàn)證。

          結(jié)果:他們總體的準(zhǔn)確率大約是 53%。但他們考慮到預(yù)測(cè)前面十分之一股票和后面十分之一股票之間的差別時(shí),他們得到每月 3.35% 的收益,或者每年 45.93% 的收益。


          3.Batres Estrada(2015)預(yù)測(cè)哪個(gè)標(biāo)準(zhǔn)普爾 500 指數(shù)的股票在哪天將有高于中值的回報(bào),而且他的研究看起來(lái)受到了 Takeuchi 和 Lee(2013)論文的影響。

          架構(gòu):他使用一個(gè) 3 層 DBN 結(jié)合到一個(gè) MLP。在每個(gè)隱層有 400 個(gè)神經(jīng)元,而且他使用到了 S 形激活函數(shù)。輸出層是一個(gè)帶有兩個(gè)輸出神經(jīng)元的 Softmax 層,進(jìn)行的是二元分類(lèi)(中值之上或之下)。DBN 由堆棧 RBM 組成,每個(gè)進(jìn)行連續(xù)的訓(xùn)練。

          訓(xùn)練:他首先預(yù)訓(xùn)練了 DBN 模塊,然后使用反向傳播精調(diào)整個(gè) DBN-MLP。輸入包括 33 個(gè)特征:t-2 至 t-13 月的月度對(duì)數(shù)收益率,20 支股票在 t 月的每日對(duì)數(shù)收益率,以及元月效應(yīng)的指示變量。這些特征使用每個(gè)時(shí)間段的 Z 得分進(jìn)行正則化。他使用了 1985 年至 2006 年的標(biāo)準(zhǔn)普爾 500 指數(shù)數(shù)據(jù)集,并按 70%、15% 和 15% 的比例分開(kāi)分別用作訓(xùn)練、驗(yàn)證和測(cè)試。他使用驗(yàn)證數(shù)據(jù)選擇層數(shù)、神經(jīng)元數(shù)和正則化參數(shù),也是使用 early-stopping 防止過(guò)擬合。

          結(jié)果:他的模型有 53% 的準(zhǔn)確率,超過(guò)了正則化邏輯回歸以及一些 MLP 基線。


          4.Sharang 和 Rao(2015)使用一個(gè)在技術(shù)指標(biāo)上訓(xùn)練的 DBN 交易一系列美國(guó)中期國(guó)債期貨。

          架構(gòu):他們使用一個(gè)包含 2 個(gè)堆棧 RBM 的 DBN。第一個(gè) RBM 是 Gaussian - Bernoulli(15 個(gè)節(jié)點(diǎn)),第二個(gè) RBM 是 Bernoulli(20 節(jié)點(diǎn))。DBN 產(chǎn)生隱藏的特征,他們嘗試將這些特征輸入進(jìn) 3 個(gè)不同的分類(lèi)器:正則化邏輯回歸、支持向量機(jī)以及一個(gè)有 2 個(gè)隱層的神經(jīng)網(wǎng)絡(luò)。他們預(yù)測(cè)如果 5 天內(nèi)投資組合上升則結(jié)果是 1,反之是 -1。

          訓(xùn)練:他們使用一個(gè)對(duì)比差異算法訓(xùn)練 DBN。他們基于開(kāi)倉(cāng)、走高、走低、收盤(pán)利益和體量數(shù)據(jù)計(jì)算信號(hào),這些數(shù)據(jù)最早的是 1985 年的,2008 年金融危機(jī)期間的一些點(diǎn)被移除了。他們使用 20 個(gè)特征:在不同時(shí)間段計(jì)算得到的「日常趨勢(shì)」,然后進(jìn)行規(guī)范化。所有的參數(shù)使用一個(gè)驗(yàn)證數(shù)據(jù)集進(jìn)行選擇。當(dāng)訓(xùn)練神經(jīng)網(wǎng)絡(luò)分類(lèi)器時(shí),他們提到在 mini-batch 梯度下降訓(xùn)練期間使用一個(gè)動(dòng)量參數(shù)將每次更新的系數(shù)收縮到一半。

          結(jié)果:使用 PCA 構(gòu)建的投資組合對(duì)第一主成分沒(méi)有什么影響。這種投資組合是對(duì)工具的人工延展,所以真正的交易是在 ZF 和 ZN 合同之間的差價(jià)完成的。所有的輸入價(jià)格是中間價(jià),意味著買(mǎi)賣(mài)差價(jià)被忽略了。結(jié)果看起來(lái)是有益的,三種分類(lèi)模型的準(zhǔn)確率比隨機(jī)預(yù)測(cè)器高 5%-10%。


          5.Zhu 等人(2016)使用震蕩箱理論( oscillation box theory)基于 DBN 做交易決策。震蕩箱理論表示,一個(gè)股票價(jià)格將在某個(gè)時(shí)間段在固定范圍內(nèi)震蕩。如果價(jià)格超出了這個(gè)范圍,然后它就進(jìn)入了一個(gè)新的震蕩箱。作者想要預(yù)測(cè)震蕩箱的邊界。他們的交易策略是當(dāng)價(jià)格超出了上邊界則買(mǎi)入股票,它低于下邊界時(shí)則賣(mài)出股票。

          架構(gòu):他們使用一個(gè)由堆棧 RBM 構(gòu)成的 DBN 以及一個(gè)最后的反向傳播層。

          訓(xùn)練:他們使用 block Gibbs sampling (塊吉布斯采樣)方法以一種無(wú)監(jiān)督的方式貪婪地訓(xùn)練從低到高的每一層。然后,以監(jiān)督方式訓(xùn)練反向傳播層,它將精調(diào)整個(gè)模型。他們選擇標(biāo)準(zhǔn)普爾 500 指數(shù)中的 400 支股票進(jìn)行測(cè)試,而且測(cè)試集覆蓋 2004 到 2005 年間的 400 天。他們使用了開(kāi)倉(cāng)、走高、走低、收盤(pán)價(jià)格,還有技術(shù)分析指標(biāo),作為全部的 14 個(gè)模型輸入。一些指標(biāo)通過(guò)使用灰色關(guān)聯(lián)分析(gray relation analysis)或灰色關(guān)聯(lián)度在預(yù)測(cè)中更具影響。

          結(jié)果:在他們的交易策略中,每筆交易收取 0.5% 的交易成本,并為 stop-loss 和交易率增加了一些參數(shù)。我并未完全理解結(jié)果圖,但報(bào)告稱(chēng)有極大的收益。


          基于文本的分類(lèi)模型


          1.R?nnqvist 和 Sarlin (2016) 使用新聞文章來(lái)預(yù)測(cè)銀行危機(jī)。具體來(lái)說(shuō),他們創(chuàng)造了一種分類(lèi)器來(lái)評(píng)價(jià)一個(gè)給定的句子是否暗示了危機(jī)(distress)或安寧(tranquility)。

          架構(gòu):他們?cè)谶@篇論文中使用了兩個(gè)神經(jīng)網(wǎng)絡(luò)。第一個(gè)用于語(yǔ)義的預(yù)訓(xùn)練,以減少維度。為了做到這一點(diǎn),他們?cè)谖谋旧线\(yùn)行一個(gè)滑動(dòng)窗口(sliding window),該窗口會(huì)取出一個(gè)包含 5 個(gè)詞的序列然后學(xué)習(xí)預(yù)測(cè)下一個(gè)詞。他們使用了一種前饋拓?fù)洌╢eed-forward topology),其中一旦學(xué)習(xí)到了連接權(quán)重,中間的投射層(projection layer)就會(huì)提供語(yǔ)義向量。他們也將句子的 ID 包括到了該模型的輸入中,以提供上下文語(yǔ)境和預(yù)測(cè)下一個(gè)詞的信息。他們使用了二進(jìn)制霍夫曼編碼(binary Huffman coding)將句子 ID 和 詞映射到輸入層中的激活模式(activation pattern),這能依據(jù)頻率粗糙地對(duì)詞進(jìn)行組織。他們說(shuō)帶有固定上下文大小的前饋拓?fù)湓诰渥有蛄械慕I媳妊h(huán)神經(jīng)網(wǎng)絡(luò)更加高效。他們沒(méi)有使用百萬(wàn)計(jì)的輸入(一個(gè)詞一個(gè)輸入),而是使用了來(lái)自已經(jīng)學(xué)到的語(yǔ)義模型的 600 個(gè)輸入。其第一層有 600 個(gè)節(jié)點(diǎn) ,中間層有 50 個(gè)修正線性隱藏節(jié)點(diǎn),而輸出層有兩個(gè)節(jié)點(diǎn)(危機(jī)/安寧)。

          訓(xùn)練:他們的訓(xùn)練使用了在 2007-2009 年金融危機(jī)中在 101 家銀行上觀察到的 243 個(gè)危機(jī)事件。他們使用了 71.6 萬(wàn)個(gè)提及銀行的句子,這些句子選自危機(jī)期間或之后路透社(Reuters)的 660 萬(wàn)篇新聞文章。

          結(jié)果:他們使用一種自定義的「有用性(Usefulness)」度量來(lái)評(píng)估他們的分類(lèi)模型。評(píng)估通過(guò)交叉驗(yàn)證完成,并為每一個(gè)分類(lèi)都分配了 N 家銀行。他們將危機(jī)的數(shù)量聚集到了不同的時(shí)間序列,但卻沒(méi)有繼續(xù)深入去考慮創(chuàng)造一種交易策略。


          2.Fehrer 和 Feuerriegel (2015)訓(xùn)練了一個(gè)基于新聞?lì)^條預(yù)測(cè)德國(guó)股票收益的模型。

          架構(gòu):他們使用了一種遞歸自編碼器,在每一個(gè)自編碼器上都有一個(gè)用于估計(jì)概率的附加 softmax 層。他們執(zhí)行了三類(lèi)預(yù)測(cè) {-1, 0, 1} 來(lái)預(yù)測(cè)下一天與新聞?lì)^條相關(guān)的股票的收益。

          訓(xùn)練:他們使用高斯噪聲(aussian noise)對(duì)權(quán)重進(jìn)行了初始化,然后通過(guò)反向傳播進(jìn)行更新。他們使用了一個(gè)英語(yǔ)的 ad-hoc 新聞發(fā)布數(shù)據(jù)集,其覆蓋了 2004-2011 年之間關(guān)于德國(guó)市場(chǎng)的 8359 個(gè)頭條新聞。

          結(jié)果:他們的遞歸自編碼器有 56% 的準(zhǔn)確度,這比更傳統(tǒng)的隨機(jī)森林建模方法 53% 的準(zhǔn)確度更好。他們沒(méi)有開(kāi)發(fā)交易策略,公開(kāi)發(fā)布了一個(gè)他們的代碼 Java 實(shí)施系統(tǒng)。


          3.Ding 等人 (2015) 使用從新聞?lì)^條中提取出的結(jié)構(gòu)化信息預(yù)測(cè)每天標(biāo)準(zhǔn)普爾 500 指數(shù)的運(yùn)動(dòng)。他們使用 OpenIE 處理頭條來(lái)獲取結(jié)構(gòu)化的時(shí)間表征(執(zhí)行器、動(dòng)作、對(duì)象、時(shí)間)。他們使用一個(gè)神經(jīng)張量網(wǎng)絡(luò)通過(guò)成倍地結(jié)合事件參數(shù)(event argument)來(lái)學(xué)習(xí)它們的語(yǔ)義組合性(semantic compositionality),而不是像標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)那樣只是絕對(duì)量地學(xué)習(xí)。

          架構(gòu):他們結(jié)合了短期和長(zhǎng)期的事件影響,使用了一個(gè) CNN 來(lái)執(zhí)行輸入事件序列的語(yǔ)義組合。他們?cè)诰矸e層之上使用了一個(gè)最大池化層,這讓該網(wǎng)絡(luò)可以?xún)H保留由卷積層生成的最有用的特征。他們有一個(gè)單獨(dú)用于長(zhǎng)期和中期事件的卷積層。這兩個(gè)層與用于短期事件的輸入層一起將信息饋送到一個(gè)隱藏層,然后再饋送到兩個(gè)輸出節(jié)點(diǎn)。

          訓(xùn)練:他們從路透社和彭博社的新聞里提取出了 1000 萬(wàn)個(gè)事件。為了進(jìn)行訓(xùn)練,他們使用隨機(jī)參數(shù)替換事件參數(shù)的方式來(lái)制造虛假的事件。在訓(xùn)練過(guò)程中,他們假設(shè)真實(shí)事件應(yīng)該比受損的事件得分更高。當(dāng)情況不是這樣時(shí),就更新模型的參數(shù)。

          結(jié)果:他們發(fā)現(xiàn)結(jié)構(gòu)化事件是比預(yù)測(cè)股市的詞更好的特征。他們的方法的效果比基準(zhǔn)方法好 6%。他們預(yù)測(cè)了 S&P 500 指數(shù)和 15 支股票的情況,他們給出的表說(shuō)明他們可以以 65% 的準(zhǔn)確度預(yù)測(cè)標(biāo)準(zhǔn)普爾 500 指數(shù)。


          波動(dòng)預(yù)測(cè)


          1.Xiong 等人 (2015)通過(guò)對(duì)開(kāi)盤(pán)價(jià)、走高、走低和收盤(pán)價(jià)的估計(jì)來(lái)預(yù)測(cè)標(biāo)準(zhǔn)普爾 500 指數(shù)的日常波動(dòng)。

          架構(gòu):他們使用了一個(gè)包含一個(gè) LSTM 模塊的單一 LSTM 隱藏層。他們使用每日的標(biāo)準(zhǔn)普爾 500 指數(shù)的收益和波動(dòng)作為輸入。他們還囊括了 25 個(gè)國(guó)內(nèi)的谷歌趨勢(shì),覆蓋了行業(yè)和經(jīng)濟(jì)的主要領(lǐng)域。

          訓(xùn)練:他們使用了每次批處理(batch)帶有 32 個(gè)采樣器的 Adam 方法,并使用平均絕對(duì)百分誤差(MAPE)作為目標(biāo)損失函數(shù)。他們?cè)O(shè)置了最大的 LSTM 延遲以便涵蓋 10 個(gè)連續(xù)的觀察。

          結(jié)果:結(jié)果表明他們的 LSTM 方法比 GARCH、Ridge 和 LASSO 技術(shù)的效果都好。


          投資組合優(yōu)化


          Heaton 等人(2016) 嘗試創(chuàng)造一種優(yōu)于生物技術(shù)指數(shù) IBB 的投資組合。他們有一個(gè)目標(biāo):追蹤少數(shù)股票和低驗(yàn)證誤差的指數(shù)。他們也嘗試在大規(guī)模下跌(drawdown)期間通過(guò)反相關(guān)(anti-correlated)來(lái)跑在指數(shù)的前面。他們沒(méi)有直接對(duì)協(xié)方差矩陣建模,而是在深度架構(gòu)擬合程序中進(jìn)行訓(xùn)練,其允許出現(xiàn)非線性。

          架構(gòu):他們使用了帶有正則化和 ReLU 的自動(dòng)編碼。他們的自動(dòng)編碼器有一個(gè)帶有 5 個(gè)神經(jīng)元的隱藏層。

          訓(xùn)練:他們使用了 2012-2016 年 IBB 成份股的每周收益數(shù)據(jù)。他們自動(dòng)編碼了該指數(shù)中的所有股票,并評(píng)估了每只股票和它的自動(dòng)編碼的版本之間的不同之處。他們也關(guān)注了數(shù)量不斷變化的其它股票,該數(shù)量是通過(guò)交叉驗(yàn)證選擇的。

          結(jié)果:他們發(fā)現(xiàn)追蹤誤差是包括在投資組合中的股票數(shù)量的函數(shù),但似乎并沒(méi)有和傳統(tǒng)的方法進(jìn)行比較。他們也使用正收益替代了指數(shù)下跌,并找到了追蹤這種修改過(guò)的指數(shù)的投資組合。



          ?? 初衷

          最近一段時(shí)間,受到新冠疫情的影響,股市接連下跌,作為一棵小白菜兼小韭菜,竟然產(chǎn)生了抄底的大膽想法,拿出僅存的一點(diǎn)私房錢(qián)梭哈了一把。

          第二天,暴跌,俺加倉(cāng)

          第三天,又跌,俺加倉(cāng)

          第三天,又跌,俺又加倉(cāng)...

          一番錯(cuò)誤操作后,結(jié)果慘不忍睹,第一次買(mǎi)股票就被股市一段暴打,受到了媳婦無(wú)情的嘲諷。痛定思痛,俺決定換一個(gè)思路:如何用深度強(qiáng)化學(xué)習(xí)來(lái)自動(dòng)模擬炒股? 實(shí)驗(yàn)驗(yàn)證一下能否獲得收益。



            代碼 獲取方式:

            分享本文到朋友圈

            關(guān)注微信公眾號(hào) datayx  然后回復(fù) 炒股  即可獲取。

            AI項(xiàng)目體驗(yàn)地址 https://loveai.tech

            單肩包/雙肩包/斜挎包/手提包/胸包/旅行包/上課書(shū)包 /個(gè)性布袋等各式包飾挑選

            https://shop585613237.taobao.com/




          ?? 監(jiān)督學(xué)習(xí)與強(qiáng)化學(xué)習(xí)的區(qū)別

          監(jiān)督學(xué)習(xí)(如 LSTM)可以根據(jù)各種歷史數(shù)據(jù)來(lái)預(yù)測(cè)未來(lái)的股票的價(jià)格,判斷股票是漲還是跌,幫助人做決策。

          而強(qiáng)化學(xué)習(xí)是機(jī)器學(xué)習(xí)的另一個(gè)分支,在決策的時(shí)候采取合適的行動(dòng) (Action) 使最后的獎(jiǎng)勵(lì)最大化。與監(jiān)督學(xué)習(xí)預(yù)測(cè)未來(lái)的數(shù)值不同,強(qiáng)化學(xué)習(xí)根據(jù)輸入的狀態(tài)(如當(dāng)日開(kāi)盤(pán)價(jià)、收盤(pán)價(jià)等),輸出系列動(dòng)作(例如:買(mǎi)進(jìn)、持有、賣(mài)出),使得最后的收益最大化,實(shí)現(xiàn)自動(dòng)交易。

          ?? OpenAI Gym 股票交易環(huán)境

          觀測(cè) Observation

          策略網(wǎng)絡(luò)觀測(cè)的就是一只股票的各項(xiàng)參數(shù),比如開(kāi)盤(pán)價(jià)、收盤(pán)價(jià)、成交數(shù)量等。部分?jǐn)?shù)值會(huì)是一個(gè)很大的數(shù)值,比如成交金額或者成交量,有可能百萬(wàn)、千萬(wàn)乃至更大,為了訓(xùn)練時(shí)網(wǎng)絡(luò)收斂,觀測(cè)的狀態(tài)數(shù)據(jù)輸入時(shí),必須要進(jìn)行歸一化,變換到 [-1, 1] 的區(qū)間內(nèi)。

          參數(shù)名稱(chēng)參數(shù)描述說(shuō)明
          date交易所行情日期格式:YYYY-MM-DD
          code證券代碼格式:sh.600000。sh:上海,sz:深圳
          open今開(kāi)盤(pán)價(jià)格精度:小數(shù)點(diǎn)后4位;單位:人民幣元
          high最高價(jià)精度:小數(shù)點(diǎn)后4位;單位:人民幣元
          low最低價(jià)精度:小數(shù)點(diǎn)后4位;單位:人民幣元
          close今收盤(pán)價(jià)精度:小數(shù)點(diǎn)后4位;單位:人民幣元
          preclose昨日收盤(pán)價(jià)精度:小數(shù)點(diǎn)后4位;單位:人民幣元
          volume成交數(shù)量單位:股
          amount成交金額精度:小數(shù)點(diǎn)后4位;單位:人民幣元
          adjustflag復(fù)權(quán)狀態(tài)不復(fù)權(quán)、前復(fù)權(quán)、后復(fù)權(quán)
          turn換手率精度:小數(shù)點(diǎn)后6位;單位:%
          tradestatus交易狀態(tài)1:正常交易 0:停牌
          pctChg漲跌幅(百分比)精度:小數(shù)點(diǎn)后6位
          peTTM滾動(dòng)市盈率精度:小數(shù)點(diǎn)后6位
          psTTM滾動(dòng)市銷(xiāo)率精度:小數(shù)點(diǎn)后6位
          pcfNcfTTM滾動(dòng)市現(xiàn)率精度:小數(shù)點(diǎn)后6位
          pbMRQ市凈率精度:小數(shù)點(diǎn)后6位

          動(dòng)作 Action

          假設(shè)交易共有買(mǎi)入賣(mài)出保持 3 種操作,定義動(dòng)作(action)為長(zhǎng)度為 2 的數(shù)組

          • action[0] 為操作類(lèi)型;

          • action[1] 表示買(mǎi)入或賣(mài)出百分比;

          動(dòng)作類(lèi)型 action[0]說(shuō)明
          1買(mǎi)入 action[1]
          2賣(mài)出 action[1]
          3保持

          注意,當(dāng)動(dòng)作類(lèi)型 action[0] = 3 時(shí),表示不買(mǎi)也不拋售股票,此時(shí) action[1] 的值無(wú)實(shí)際意義,網(wǎng)絡(luò)在訓(xùn)練過(guò)程中,Agent 會(huì)慢慢學(xué)習(xí)到這一信息。

          獎(jiǎng)勵(lì) Reward

          獎(jiǎng)勵(lì)函數(shù)的設(shè)計(jì),對(duì)強(qiáng)化學(xué)習(xí)的目標(biāo)至關(guān)重要。在股票交易的環(huán)境下,最應(yīng)該關(guān)心的就是當(dāng)前的盈利情況,故用當(dāng)前的利潤(rùn)作為獎(jiǎng)勵(lì)函數(shù)。即當(dāng)前本金 + 股票價(jià)值 - 初始本金 = 利潤(rùn)。

          # profits
          reward = self.net_worth - INITIAL_ACCOUNT_BALANCE
          reward = 1 if reward > 0 else reward = -100

          為了使網(wǎng)絡(luò)更快學(xué)習(xí)到盈利的策略,當(dāng)利潤(rùn)為負(fù)值時(shí),給予網(wǎng)絡(luò)一個(gè)較大的懲罰 (-100)。

          策略梯度

          因?yàn)閯?dòng)作輸出的數(shù)值是連續(xù),因此使用基于策略梯度的優(yōu)化算法,其中比較知名的是 PPO 算法,OpenAI 和許多文獻(xiàn)已把 PPO 作為強(qiáng)化學(xué)習(xí)研究中首選的算法。PPO 優(yōu)化算法 Python 實(shí)現(xiàn)參考 stable-baselines。

          ????♀? 模擬實(shí)驗(yàn)

          環(huán)境安裝

          # 虛擬環(huán)境
          virtualenv -p python3.6 venv
          source ./venv/bin/activate
          # 安裝庫(kù)依賴(lài)
          pip install -r requirements.txt

          股票數(shù)據(jù)獲取

          股票證券數(shù)據(jù)集來(lái)自于 baostock,一個(gè)免費(fèi)、開(kāi)源的證券數(shù)據(jù)平臺(tái),提供 Python API。

          >> pip install baostock -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn

          數(shù)據(jù)獲取代碼參考 get_stock_data.py

          >> python get_stock_data.py

          將過(guò)去 20 多年的股票數(shù)據(jù)劃分為訓(xùn)練集,和末尾 1 個(gè)月數(shù)據(jù)作為測(cè)試集,來(lái)驗(yàn)證強(qiáng)化學(xué)習(xí)策略的有效性。劃分如下

          1990-01-01 ~ 2019-11-292019-12-01 ~ 2019-12-31
          訓(xùn)練集測(cè)試集

          驗(yàn)證結(jié)果

          單只股票

          • 初始本金 10000

          • 股票代碼:sh.600036(招商銀行)

          • 訓(xùn)練集: stockdata/train/sh.600036.招商銀行.csv

          • 測(cè)試集: stockdata/test/sh.600036.招商銀行.csv

          • 模擬操作 20 天,最終盈利約 400

          多只股票

          選取 1002 只股票,進(jìn)行訓(xùn)練,共計(jì)

          • 盈利: 44.5%

          • 不虧不賺: 46.5%

          • 虧損:9.0%

           

          ?? 最后

          • 股票 Gym 環(huán)境主要參考 Stock-Trading-Environment,對(duì)觀測(cè)狀態(tài)、獎(jiǎng)勵(lì)函數(shù)和訓(xùn)練集做了修改。

          • 俺完全是股票沒(méi)入門(mén)的新手,難免存在錯(cuò)誤,歡迎指正!

          • 數(shù)據(jù)和方法皆來(lái)源于網(wǎng)絡(luò),無(wú)法保證有效性,Just For Fun

          ?? 參考資料

          • Y. Deng, F. Bao, Y. Kong, Z. Ren and Q. Dai, "Deep Direct Reinforcement Learning for Financial Signal Representation and Trading," in IEEE Transactions on Neural Networks and Learning Systems, vol. 28, no. 3, pp. 653-664, March 2017.

          • Yuqin Dai, Chris Wang, Iris Wang, Yilun Xu, "Reinforcement Learning for FX trading"

          • Chien Yi Huang. Financial trading as a game: A deep reinforcement learning approach. arXiv preprint arXiv:1807.02787, 2018.

          • Create custom gym environments from scratch — A stock market example

          • notadamking/Stock-Trading-Environment

          • Welcome to Stable Baselines docs! - RL Baselines Made Easy


          瀏覽 110
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天上天天干天天日 | 豆花成人精品视频 | 欧美另类性爱视频 | 久久久久久99精品久久久 | 干屄视频|