NLP for Quant:使用NLP和深度学习预测股价(附代码)
今天,你AI了沒?
關注:決策智能與機器學習,每天學點AI干貨
美國證券交易委員會(SEC)的文件長期以來一直被用作出投資決策的寶貴信息來源。一些論文和項目已經演示了如何使用自然語言處理技術從SEC文件和新聞中提取信息,以預測股票波動。本文在其他工作的基礎上,通過使用GloVE嵌入技術、MLP、CNN和RNN深度學習體系結構,預測8-K文件發布后的股票價格變化。
全部代碼文末下載
介紹
在金融服務和銀行業,大量的資源致力于傾注、分析和試圖量化新聞和SEC授權報告中的定性數據。隨著新聞周期的縮短和對上市公司的報告要求變得更加繁重,這個問題也不斷加劇。幾項研究還表明,股票價格波動的最高質量信號并非來自第三方新聞報道,而是來自公司本身及其向SEC的報告。此外,幾篇論文已經證明了神經網絡在NLP中的效果,并且證明了使用NLP從SEC報告中做信息抽取,來預測股票價格變化的作用。
在這個項目中,我們試圖用深度學習的方法證明,在SEC8-K文檔中使用自然語言處理的詞嵌入技術,來預測公司經歷重大事件后股票價格波動的可行性。根據谷歌和斯坦福大學的一篇論文《文本分析對于股票價格預測的重要性》建立了這個項目,并通過探索預先訓練過的單嵌入和深度學習的神經網絡架構來構建它。
論文:
其他幾篇論文下載地址如下:
1、https://www.aaai.org/ocs/index.php/FLAIRS/FLAIRS15/paper/download/10430/10279.
2、https://careeradvancement.uchicago.edu/sites/default/files/ucib-journal/filings-volume-and-volatility.pdf3 3、https://arxiv.org/pdf/1703.03091.pdf
4、 https://arxiv.org/abs/1702.01923
5 、https://nlp.stanford.edu/pubs/lrec2014-stock.pdf
數據收集
截至2018年5月,標準普爾500指數中所有公司的8-K文件都是從SEC Edgar數據庫中使用BeautifulSoup python軟件包獲取的。文件發布的日期和時間,以及披露的類別,被提取出來,而表格和圖表則被丟棄。由于數據的大小和收集所需的時間,最終設置了一個具有8個Intel Xeon內核和52 GB內存的Google云實例以及一個Google云。從AlphaVantage API收集了同一公司的歷史開盤價和調整后收盤價數據。VIX和GSPC(S&P 500)的歷史指數價格從雅虎金融(YahooFinance)下載。
部分代碼:
特征工程
對于每份發布的文件,根據文件發布前的時間計算一年、一季度和一個月的歷史滑動平均價格變動,并通過標準普爾500指數的變化進行歸一化。所有窗口均指紐約證交所和納斯達克實際營業的日期(非假日工作日)。
表1. 計算歷史滑動價格的滑動平均窗口
目標特征計算為文件發布前后的股權價格變化,使用標準普爾500指數將其標準化。例如,對于于2018年2月5日發布文件的公司,計算其開盤價和調整后收盤價的變化,并減去標準普爾500指數同期的變化。標準化變化被標記為“向上”(>1%)、向下”(<1%)或“不變”(介于-1和1%之間)。
文本處理
所有的文本都是通過刪除停用詞、標點和數字、詞形還原和轉換為小寫進行預處理的。這是通過使用NLTK WordNet語料庫閱讀器與DASK結合來實現多線程加速的。
所有文件都用零填充,長度統一為34603個字。為了保留大多數文本信息,但防止數據集變得不必要的大,在文檔長度的90%處選擇了此截止值。斯坦福大學NLP維基百科2014+Gigaword 5100維度被選作欲訓練詞嵌入,前提是它將攜帶從維基百科語料庫培訓而來的文本中發現的專門的、行業特定的單詞的信息。
表2. 數據特征列列表
在丟棄重復樣品和無法提取發布日期的文本后,最終數據集包括2011年至2018年500家公司的約17000份文件。
圖1&2? 數據集樣本規模為一年發布8K發布,運營部門公司
部分代碼:
機器學習
所有分類特征都是一個熱編碼特征,連續特征。如最近的股票走勢和VIX的收盤價,都被標準化為平均值為0,標準偏差為1。
圖3 目標類別計數,數據集中類別不平衡
然后將數據集隨機打亂,并分成80%的訓練集和20%的測試集。數據集的類別不平衡,超過50%的樣本被標記為“向上”(up),考慮到過去十年標準普爾500指數的穩步上升,這在直覺上是合理的。為了糾正這一點,我們使用了訓練數據的過采樣,在每一個類別中隨機選擇的樣本進行了重復,以使三個類別中每個類別的樣本數相等。
使用帶有TensorFlow后端的Keras構建了四種不同的機器學習體系結構,包括兩個輸入層(一個用于文本文檔,一個用于功能),一個帶有預訓練GloVE向量的嵌入層,以及:
一個多層感知器完全連接的網絡—MLP
兩個一維卷積層—CNN
雙向GRU層—RNN
一維卷積層,然后是GRU層—CNN-RNN
每個網絡在兩個Nvidia K80 GPU上接受了10個時期的訓練,每個批次大小為32。
表3. 10次訓練后驗證集上的評價
RNN和CNN-RNN網絡在驗證數據集上獲得了最高的準確性和AUC ROC得分。然而,CNN-RNN模型需要RNN模型一半的訓練時間。繼續訓練CNN-RNN模型,再進行15次,驗證集上的損失最小。
部分模型代碼:
Build & Train Models
Model Evaluation
結果
CNN-RNN網絡在驗證數據上的準確率為64.5%,AUC-ROC為0.90。
表4. 23輪訓練后CNN RNN模型的最好表現
這個模型比基線隨機選擇算法提高了94%,比斯坦福大學和谷歌的論文提高了16%。這些結果表明,雖然字嵌入和神經網絡需要更多的時間和計算資源來建立和訓練,但在準確性方面的有一定的提升。
討論
本文觸及了如何利用最新的自然語言處理技術和深度學習模型從SEC報告中提取有意義的信息以及公司股價的波動。為了從文本中收集更細微的信息,可以探索更專門的單詞嵌入集或高級技術如Sense2Vec。
股票市場價格的變化只在文件發布前后立即進行測量,盡管市場很可能以不同的速度對不同類型的新聞作出反應。本文的拓展可以是在披露后的幾天內考慮價格變動。
最后,盡管CNN、RNN和混合體系結構目前被認為是最先進的NLP模型,但在這些模型中,關于RNN、LSTM和GRU單元,以及關于RNN和CNN層的深度、大小和超參數,以及使用池化層還存在很多問題。時間和金錢的限制(使用多個GPU和處理大型數據集可以很快在谷歌云中累積)讓我們不得不停止探索這些研究的可能性。盡管如此,64%的準確率表明,這些努力可能值得一試,即快速從大量文本數據中提取數據,并做出交易決策?。
本文其他的一些參考資料:
6、https://www.sec.gov/fast-answers/answersform8khtm.html
7、https://arxiv.org/abs/1511.06388
來源:量化投資與機器學習
本文由量化投資與機器學習首發,轉載經授權
從線性模型到神經網絡 | 入門AI系列
機器翻譯技術現狀評述與展望 | 行業觀察
基于深度強化學習的新聞推薦模型DRN
深度強化學習 | 用TensorFlow構建你的第一個游戲AI
AI到底是能力First還是可解釋性First? | 行業觀察
“強化學習教父”Rich Sutton:不要再寄希望于AI“被手工設計”,利用算力才是王道 | 技術觀察
通過自動強化學習(AutoRL)進行遠程機器人導航 | 強化學習系列
?商業智能與智能商業 | 行業觀察系列
微信群&交流合作
伙伴招募:尋找真正對AI技術感興趣的伙伴,共同維護公眾號,一起組織各種技術交流活動,請留言與我們聯系。
行業沙龍群:加入沙龍群,拓展行業人脈,對接需求,請在公眾號留言:“微信號+名字+研究領域/專業/學校/公司”,我們將很快與您聯系。
各種合作:請發郵件至158354995@qq.com或在公眾號留言聯系。
總結
以上是生活随笔為你收集整理的NLP for Quant:使用NLP和深度学习预测股价(附代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 只用身份证就可以查到英语四级成绩的网址
- 下一篇: AI高校排行榜:2018年度全国普通高校