chatgpt算法解析 2023年Transformer架構(gòu)下的量?jī)r(jià)選股策略 ChatGPT核心算法介紹
一、 核心算法介紹
是美國(guó)人工智能研究公司研發(fā)和訓(xùn)練的一款基于GPT算法的 大型對(duì)話式語(yǔ)言模型,通過(guò)RLHF( from ) 基于人類的反饋對(duì)模型進(jìn)行強(qiáng)化學(xué)習(xí)的優(yōu)化。與傳統(tǒng)對(duì)話式語(yǔ)言模型相比, 不僅可以實(shí)現(xiàn)與用戶真實(shí)流暢的交流,同時(shí)還具備許多其他功能,如文案 撰寫、代碼編寫等,只需輸入簡(jiǎn)單的關(guān)鍵詞就能快速輸出相關(guān)內(nèi)容。
GPT( Pre- ,生成型預(yù)訓(xùn)練轉(zhuǎn)換模型)是一種 基于海量數(shù)據(jù)預(yù)訓(xùn)練的深度學(xué)習(xí)文本生成模型,自2018年問(wèn)世以來(lái),經(jīng)歷了多輪迭 代和優(yōu)化,目前使用的GPT-3.5模型中神經(jīng)網(wǎng)絡(luò)的參數(shù)超過(guò)1750億個(gè),是 有史以來(lái)參數(shù)最多的神經(jīng)網(wǎng)絡(luò)模型之一。同時(shí),伴隨著逐步出現(xiàn)在公眾視 野,也在不斷使用對(duì)抗性測(cè)試程序和的經(jīng)驗(yàn)教訓(xùn)對(duì)GPT進(jìn)行迭代調(diào) 整。2023年2月8日,微軟宣布將的GPT-4模型集成到其搜索引擎Bing以及 Edge瀏覽器中,這意味著GPT-4將能夠更加直接地服務(wù)于用戶,提供更加便捷、智 能的搜索和交互體驗(yàn);同時(shí),也于2023年3月15日正式推出了大型多模態(tài)模 型GPT-4,該模型能夠同時(shí)處理語(yǔ)音、圖像、文本等多種輸入,并生成高質(zhì)量的自 然語(yǔ)言輸出。
GPT模型的誕生,離不開其背后的核心算法:。模型 最早在機(jī)器翻譯團(tuán)隊(duì)發(fā)表的論文 is All You Need中被提出,與RNN 和LSTM不同,它采用了完全不同的結(jié)構(gòu)來(lái)處理輸入序列。為了解決傳統(tǒng)循環(huán)神經(jīng)網(wǎng) 絡(luò)在長(zhǎng)序列上記憶能力不足、訓(xùn)練時(shí)間較長(zhǎng)等問(wèn)題,模型沒(méi)有使用循環(huán) 的模型框架,而是通過(guò)引入注意力機(jī)制來(lái)有效地捕捉輸入序列中各位置之間的相關(guān)性,建立輸入和輸出之間的全局依賴關(guān)系。因此,相比于傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò), 模型不僅具有更好的解釋性,并且可以進(jìn)行更多的并行計(jì)算以縮短訓(xùn)練 時(shí)間。由于其出色的性能,模型和注意力機(jī)制成為了人工智能領(lǐng)域的研 究熱點(diǎn),并開始廣泛應(yīng)用于其他各個(gè)領(lǐng)域中。
(一)自注意力機(jī)制
自注意力機(jī)制的輸入為詞嵌入生成的詞向量矩陣X或上一個(gè)編碼層/解碼層的輸 出。對(duì)輸入進(jìn)行線性變換得到三個(gè)矩陣Q(查詢)、K(鍵值)、V(值),矩陣X、 Q、K、V中每一列代表一個(gè)詞向量(輸入樣本)。
(二) 模型
模型的整體結(jié)構(gòu),主要由位置編碼( )、 編碼層()和解碼層()組成。位置編碼的作用是在詞向量中加入 了單詞在句子中的位置信息;編碼器的作用是將序列中各位置之間關(guān)系的信息進(jìn)行 編碼并輸出;解碼器的作用是使用編碼器輸出的序列信息逐個(gè)詞進(jìn)行預(yù)測(cè)。
1. 位置編碼
由于模型中沒(méi)有使用循環(huán)的模型框架,直接利用全局信息,沒(méi)有利 用單詞的順序信息,因此必須在詞嵌入生成的詞向量矩陣中加入單詞的相對(duì)或絕對(duì) 位置信息。
2. 編碼器
編碼器由多個(gè)編碼層堆疊組成,每個(gè)編碼層又有兩個(gè)子層,第一層是一個(gè)多頭 自注意機(jī)制,第二層是一個(gè)使用ReLU激活函數(shù)的前饋全連接層。同時(shí)在每個(gè)子層后 都會(huì)使用殘差連接,讓網(wǎng)絡(luò)更關(guān)注層與層之間差異的部分,然后還會(huì)進(jìn)行層歸一化,加快模型的收斂。 編碼器的輸入為經(jīng)過(guò)詞嵌入和位置編碼后的序列矩陣chatgpt算法解析,輸出為與輸入矩陣大小 相同的包含序列中各位置之間關(guān)系的矩陣。
3. 解碼器
解碼器也由多個(gè)解碼層堆疊組成,每個(gè)解碼層中除了和編碼層相同的兩個(gè)子層 外,中間還有一層特殊的多頭注意力機(jī)制,該子層使用解碼層上一個(gè)多頭注意力機(jī) 制子層輸出線性變換得到的查詢矩陣Q、編碼器輸出線性變換得到的鍵值矩陣K和值 矩陣V,執(zhí)行多頭注意力機(jī)制。與編碼器類似,在每個(gè)子層后都會(huì)使用殘差連接,然 后進(jìn)行層歸一化。 由于模型是逐個(gè)單詞進(jìn)行預(yù)測(cè),因此解碼器是串行進(jìn)行的,每一步 會(huì)利用上一步的輸出進(jìn)行預(yù)測(cè)。在預(yù)測(cè)第一個(gè)單詞時(shí),解碼器的輸入為序列開始標(biāo) 簽,輸出為第一個(gè)單詞的預(yù)測(cè);而在預(yù)測(cè)第二個(gè)單詞時(shí),解碼器的輸入為+第一個(gè)單詞組成的序列,輸出為第二個(gè)單詞的預(yù)測(cè);以此類推直至輸出的 預(yù)測(cè)結(jié)果為序列結(jié)束標(biāo)簽。 而在訓(xùn)練時(shí)為了加速訓(xùn)練過(guò)程,標(biāo)簽值一般為整句輸入,并行進(jìn)行的,因此為 了保證訓(xùn)練和預(yù)測(cè)過(guò)程的統(tǒng)一,解碼器中的第一個(gè)多頭注意力機(jī)制會(huì)加入掩碼操作, 確保對(duì)位置i的預(yù)測(cè)只能依賴于位置i以前的已知輸出。
二、基于量?jī)r(jià)數(shù)據(jù)的股票漲跌預(yù)測(cè)模型
(一) 模型在股票漲跌預(yù)測(cè)中的應(yīng)用
模型在NLP領(lǐng)域的巨大成功展示了它對(duì)序列數(shù)據(jù)的強(qiáng)大建模能力, 我們嘗試將其思想引入到股票漲跌預(yù)測(cè)中。但模型最初是專為機(jī)器翻譯 任務(wù)量身打造的,因此本報(bào)告對(duì)模型進(jìn)行了以下三點(diǎn)修改使其適用于股 票預(yù)測(cè)模型:
1. 替換詞嵌入層為線性層
在NLP領(lǐng)域,需要通過(guò)詞嵌入將文本中的詞轉(zhuǎn)換為詞向量作為輸入,而在股票 數(shù)據(jù)中既有行業(yè)這樣的分類數(shù)據(jù),也有漲跌幅、換手率、財(cái)務(wù)指標(biāo)等數(shù)值型數(shù)據(jù)。 如果輸入只有分類數(shù)據(jù)則可以將時(shí)序看作是一個(gè)句子,繼續(xù)使用詞嵌入層;但在大 多數(shù)情況下,輸入基本都會(huì)有數(shù)值型數(shù)據(jù),不能通過(guò)詞嵌入的方式進(jìn)行轉(zhuǎn)換。為了 能同時(shí)處理分類數(shù)據(jù)和數(shù)值型數(shù)據(jù),我們將詞嵌入層替換為常規(guī)的線性層,通過(guò)線 性變換代替詞嵌入的過(guò)程。
2. 拓展數(shù)據(jù)輸入到面板數(shù)據(jù)
在股票預(yù)測(cè)模型中,一般會(huì)輸入多個(gè)特征的時(shí)序數(shù)據(jù),即面板數(shù)據(jù)。雖然 模型最初是設(shè)計(jì)為接收一維序列(即一個(gè)句子)作為輸入的,但通過(guò)將 詞嵌入層替換為線性層的修改后,模型可以直接處理多維序列(即面板數(shù)據(jù))。
3. 取消解碼器的逐個(gè)預(yù)測(cè)機(jī)制和掩碼操作
在NLP領(lǐng)域中,大部分任務(wù)可以轉(zhuǎn)化為序列到序列()問(wèn)題,即輸入和 輸出都是序列,如機(jī)器翻譯、對(duì)話系統(tǒng)、語(yǔ)言識(shí)別等。為了利用已有輸出,在NLP 問(wèn)題中解碼器會(huì)逐個(gè)樣本進(jìn)行輸出,并在訓(xùn)練時(shí)使用掩碼操作處理輸入序列。而在 股票預(yù)測(cè)中,我們通常希望能準(zhǔn)確預(yù)測(cè)未來(lái)一段時(shí)間的收益情況,因此模型輸出一 般為一個(gè)值(回歸問(wèn)題)或漲跌概率(分類問(wèn)題),因此我們對(duì)解碼器進(jìn)行簡(jiǎn)化, 取消了逐個(gè)預(yù)測(cè)機(jī)制和掩碼操作。
(二)模型的數(shù)據(jù)處理和訓(xùn)練樣本篩選
1. 缺失值處理
當(dāng)股票某一時(shí)刻的特征值缺失時(shí)(上市不滿20個(gè)月的情況除外),使用上一時(shí) 刻的特征值進(jìn)行填充。
2. 極值、異常值處理
當(dāng)股票的特征顯著偏離同時(shí)刻股票特征數(shù)據(jù)時(shí),設(shè)置邊界閾值進(jìn)行極值處理。 上邊界為同時(shí)刻特征數(shù)據(jù)的均值加三倍標(biāo)準(zhǔn)差;下邊界為同時(shí)刻特征數(shù)據(jù)的均值減 三倍標(biāo)準(zhǔn)差。當(dāng)特征值超過(guò)上邊界時(shí)用上邊界替代;低于下邊界時(shí)用下邊界替代。 使得所有特征值位于相應(yīng)的上邊界和下邊界之間。
3. 截面標(biāo)準(zhǔn)化
在處理完特征數(shù)據(jù)后,我們需要對(duì)股票的漲跌添加“標(biāo)簽”,作為模型的輸出。 股票漲跌預(yù)測(cè)模型是希望預(yù)測(cè)出相對(duì)強(qiáng)勢(shì)的股票,獲得超額收益,因此我們對(duì)于每 一時(shí)刻的所有股票,根據(jù)未來(lái)一個(gè)月的漲跌幅來(lái)給不同的股票添加“上漲”、“平 盤”、“下跌”的“標(biāo)簽”。同時(shí)為了使不同標(biāo)簽樣本之間的區(qū)別更明顯且樣本數(shù) 盡可能接近,我們還進(jìn)行了樣本篩選: 對(duì)每月對(duì)樣本內(nèi)的所有股票按下個(gè)月相對(duì)基準(zhǔn)的超額漲跌幅進(jìn)行排序,取漲幅 前20%的股票,標(biāo)記為“上漲”;取漲幅居中20%的股票(漲幅位于40%分位數(shù)到 60%分位數(shù)之間),標(biāo)記為“平盤”;取漲幅末20%的股票chatgpt算法解析,標(biāo)記為“下跌”。 通過(guò)樣本篩選,使得不同標(biāo)簽樣本之間的區(qū)別更明顯。如果不進(jìn)行樣本篩選,直接將所有股票按下個(gè)月的漲跌幅三等分,則位于不同標(biāo)簽分隔處的兩只股票會(huì)被 劃分至不同標(biāo)簽,但實(shí)際上兩者之間的差異并沒(méi)有那么大,這樣的劃分不利于機(jī)器 學(xué)習(xí)模型的訓(xùn)練。
(三)模型的參數(shù)選擇和整體結(jié)構(gòu)
序列向量維度(經(jīng)過(guò)替代詞嵌入層的線性層處理后的維度)、多頭注意力機(jī)制頭 數(shù)、編碼器和解碼器層數(shù)需要我們提前設(shè)定,通過(guò)網(wǎng)格搜索方法,參數(shù)組合確定為:
1. 序列向量維度d=64
2. 多頭注意力機(jī)制頭數(shù)h=8
3. 編碼器和解碼器層數(shù)N=6
最終模型結(jié)構(gòu)如下: [20,2](輸入層)→[20,64](線性層)→8×[20,8](編碼層1)→8×[20,8](編 碼層2)→8×[20,8](編碼層3)→8×[20,8](編碼層4)→8×[20,8](編碼層5)→ 8×[20,8](編碼層6)→8×[20,8](解碼層1)→8×[20,8](解碼層2)→8×[20,8] (解碼層3)→8×[20,8](解碼層4)→8×[20,8](解碼層5)→8×[20,8](解碼層6) →[3](輸出層) 模型共有個(gè)參數(shù)需要進(jìn)行訓(xùn)練。
三、策略實(shí)證分析
(一)中證 500 選股實(shí)證分析
本報(bào)告首先以中證500指數(shù)成份股作為股票池進(jìn)行模型的訓(xùn)練和選股策略的回 測(cè)。從2000年至2019年獲取樣本進(jìn)行訓(xùn)練,在2020年到2023年(樣本外),用訓(xùn) 練好的預(yù)測(cè)模型進(jìn)行策略回測(cè)。
1. 中證500選股-因子IC和分檔收益率實(shí)證分析
因子IC是指?jìng)€(gè)股截面因子值與個(gè)股下期收益率之間的相關(guān)系數(shù),因子秩IC則是 指?jìng)€(gè)股截面因子值排序與個(gè)股下期收益率排序之間的相關(guān)系數(shù),兩者都能夠反映因 子提供超額收益的能力。在回測(cè)期內(nèi)因子的IC表現(xiàn)和秩IC表現(xiàn),IC平均值為0.034,標(biāo)準(zhǔn)差為0.081;秩IC平均值為0.027,標(biāo)準(zhǔn)差為0.092。
2. 中證500選股-多空對(duì)沖策略實(shí)證分析
假設(shè)可以賣空最低檔(第五檔)的股票,買入最高檔(第一檔)的股票,多空 對(duì)沖策略自2020年以來(lái),策略的年化收益率為18.51%,最大回撤為-9.46%,日度 勝率為55.05%。
3. 中證500選股-指數(shù)對(duì)沖策略實(shí)證分析
以中證500指數(shù)為對(duì)沖標(biāo)的,指數(shù)對(duì)沖策略自2020年以來(lái),策略的年化收益率 為9.58%,最大回撤為-3.62%,日度勝率為54.40%。
指數(shù)對(duì)沖策略分年度的收益回撤情況如下表所示,策略每年都獲得了正收益, 除了2023年的前3個(gè)月之外,指數(shù)對(duì)沖策略每年的收益率都超過(guò)了8%,且最大回撤 控制在-4%以內(nèi)(注:2020年數(shù)據(jù)從2020年1月31日開始;2023年數(shù)據(jù)截止到2023 年3月31日)。
由于采用量?jī)r(jià)數(shù)據(jù),策略的換手率較高,每次調(diào)倉(cāng)的平均換手率為63.67%,年 化換手率為7.64倍。
前文中是按照0.3%的雙邊交易成本進(jìn)行測(cè)算,如果將交易成本依次提高到0.4%, 0.5%和0.6%,指數(shù)對(duì)沖策略表現(xiàn)如下圖和表所示。當(dāng)交易成本提高時(shí),策略表現(xiàn)有 所下滑,但總體表現(xiàn)穩(wěn)定。
4. 中證500選股-模型訓(xùn)練參數(shù)討論
在前文中證500選股實(shí)證分析中,由于需要處理一定規(guī)模的訓(xùn)練數(shù)據(jù)(約6萬(wàn)個(gè) 樣本),為了提高計(jì)算效率并增強(qiáng)模型的泛化能力,避免過(guò)擬合,我們將 size 設(shè)置為128;同時(shí),我們還在模型的收斂速度和穩(wěn)定性上取一個(gè)折中,將學(xué)習(xí)率設(shè)置 為0.001。 在確定參數(shù)時(shí),我們選擇了一個(gè)相對(duì)穩(wěn)定的區(qū)域,如下圖所示。迭代次數(shù) 較小時(shí),多頭組合的收益率較低且存在較大波動(dòng);迭代次數(shù)過(guò)大時(shí)chatgpt算法解析,模型已經(jīng)接近 收斂,且存在一定的過(guò)擬合,多頭組合的收益率同樣較低且不穩(wěn)定;而在38 至52范圍內(nèi),多頭組合收益率整體上趨于平穩(wěn),并且有著較高的收益率。
(二)滬深 300 選股實(shí)證分析
其次,本報(bào)告將股票池轉(zhuǎn)變?yōu)闇?00指數(shù)成份股,進(jìn)行模型的訓(xùn)練和選股策略 的回測(cè)。從2000年至2019年獲取樣本進(jìn)行訓(xùn)練,在2020年到2023年(樣本外), 用訓(xùn)練好的預(yù)測(cè)模型進(jìn)行策略回測(cè)。
1. 滬深300選股-因子分檔收益率實(shí)證分析
以1個(gè)月為調(diào)倉(cāng)周期,在每一次調(diào)倉(cāng)時(shí),按照因子值的大小將股票分為5檔,測(cè)試因子選股表現(xiàn)的單調(diào)性。
2. 滬深300選股-指數(shù)對(duì)沖策略實(shí)證分析
以滬深300指數(shù)為對(duì)沖標(biāo)的,指數(shù)對(duì)沖策略自2020年以來(lái),策略的年化收益率 為8.52%,最大回撤為-7.26%,日度勝率為52.85%。
(三)全市場(chǎng)選股實(shí)證分析
最后,本報(bào)告將股票池拓展至全市場(chǎng)A股,進(jìn)行模型的訓(xùn)練和選股策略的回測(cè)。 從2000年至2019年獲取樣本進(jìn)行訓(xùn)練,在2020年到2023年(樣本外),用訓(xùn)練好 的預(yù)測(cè)模型進(jìn)行策略回測(cè)。
1. 全市場(chǎng)選股-因子分檔收益率實(shí)證分析
以1個(gè)月為調(diào)倉(cāng)周期,在每一次調(diào)倉(cāng)時(shí),按照因子值的大小將股票分為5檔,測(cè) 試因子選股表現(xiàn)的單調(diào)性。
2. 全市場(chǎng)選股-多空對(duì)沖策略實(shí)證分析
假設(shè)可以賣空最低檔(第五檔)的股票,買入最高檔(第一檔)的股票,多空 對(duì)沖策略自2020年以來(lái),策略的年化收益率為15.58%,最大回撤為-12.09%,日度 勝率為56.61%。
多空對(duì)沖策略分年度的收益回撤情況如下表所示,策略每年都獲得了正收益, 除了2023年的前三個(gè)月之外,多空對(duì)沖策略的收益率都超過(guò)了14%。(注:2020年 數(shù)據(jù)從2020年1月31日開始;2023年數(shù)據(jù)截止到2023年3月31日)
四、 模型與傳統(tǒng)機(jī)器學(xué)習(xí)方法的對(duì)比
作為一種基于自注意力機(jī)制的神經(jīng)網(wǎng)絡(luò)模型,與傳統(tǒng)機(jī)器學(xué)習(xí)方法進(jìn)行比較時(shí), 模型在股票漲跌預(yù)測(cè)任務(wù)中具有以下優(yōu)點(diǎn):
1. 處理長(zhǎng)期記憶
在股票漲跌預(yù)測(cè)任務(wù)中,由于上漲或下跌趨勢(shì)中伴隨震蕩區(qū)間,而在震蕩區(qū)間 后漲跌往往并不取決于短期的震蕩走勢(shì),而是更與長(zhǎng)期記憶中的上漲或下跌趨勢(shì)相 關(guān)。在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)中,由于模型結(jié)構(gòu)問(wèn)題,難以有效地捕捉到時(shí)間序列 中的長(zhǎng)期依賴關(guān)系;而在卷積神經(jīng)網(wǎng)絡(luò)(CNN)中,卷積核的大小通常是固定的, 因此只能考慮到局部信息,難以處理長(zhǎng)期依賴。而模型通過(guò)引入自注意 力機(jī)制和位置編碼突破了傳統(tǒng)模型結(jié)構(gòu)的限制,直接建模序列之間的全局依賴關(guān)系, 具備同時(shí)建模長(zhǎng)期和短期時(shí)序特征的能力。
2. 變長(zhǎng)輸入序列
在股票漲跌預(yù)測(cè)任務(wù)中,歷史數(shù)據(jù)的長(zhǎng)度可能是不固定且存在缺失值的,傳統(tǒng) 機(jī)器學(xué)習(xí)方法需要進(jìn)行數(shù)據(jù)填充或截?cái)嗵幚聿煌妮斎胄蛄校谝欢ǔ潭壬嫌绊懥?模型的性能。而模型可以通過(guò)自注意力機(jī)制和位置編碼直接處理變長(zhǎng)的 輸入序列,無(wú)需進(jìn)行數(shù)據(jù)填充或截?cái)啵苊饬诵畔⒗速M(fèi)和預(yù)測(cè)偏差。
3. 并行計(jì)算效率
股票歷史數(shù)據(jù)的長(zhǎng)度通常很長(zhǎng),因此訓(xùn)練過(guò)程需要耗費(fèi)大量時(shí)間和計(jì)算資源。 與傳統(tǒng)機(jī)器學(xué)習(xí)方法相比,模型的多頭注意力機(jī)制可以使得不同位置的 信息可以同時(shí)參與計(jì)算,從而實(shí)現(xiàn)了并行計(jì)算加速訓(xùn)練過(guò)程,進(jìn)一步提高了訓(xùn)練的 效率,更適合處理大規(guī)模的時(shí)間序列數(shù)據(jù)。
4. 預(yù)訓(xùn)練模型提高泛化能力
模型的預(yù)訓(xùn)練模型(如BERT、GPT等)已經(jīng)在自然語(yǔ)言處理等領(lǐng) 域取得了很好的效果,這些預(yù)訓(xùn)練模型可以用來(lái)初始化或微調(diào)模型,提 高模型的泛化能力。
五、總結(jié)與討論
本報(bào)告將模型引入投資領(lǐng)域,運(yùn)用其對(duì)于序列強(qiáng)大的全局建模能力 預(yù)測(cè)股票漲跌,通過(guò)對(duì)在中證500成分股、滬深300成份股以及全部A股中選股的實(shí) 證分析,證明了因子具有良好的組合管理能力。在回測(cè)期內(nèi),因子分檔 結(jié)果具有較好的單調(diào)性,對(duì)沖獲取的超額收益較為穩(wěn)定。
(本文僅供參考,不代表我們的任何投資建議。如需使用相關(guān)信息,請(qǐng)參閱報(bào)告原文。)
免責(zé)聲明:本文系轉(zhuǎn)載,版權(quán)歸原作者所有;旨在傳遞信息,不代表本站的觀點(diǎn)和立場(chǎng)和對(duì)其真實(shí)性負(fù)責(zé)。如需轉(zhuǎn)載,請(qǐng)聯(lián)系原作者。如果來(lái)源標(biāo)注有誤或侵犯了您的合法權(quán)益或者其他問(wèn)題不想在本站發(fā)布,來(lái)信即刪。
聲明:本站所有文章資源內(nèi)容,如無(wú)特殊說(shuō)明或標(biāo)注,均為采集網(wǎng)絡(luò)資源。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系本站刪除。