詹冰清, 屈波怡
(上海理工大學 管理學院, 上海 200093)
在互聯(lián)網(wǎng)飛速發(fā)展的今天,大數(shù)據(jù)成為人們分析和關(guān)注的重點。股票市場作為金融市場一個重要的分支,它的波動會對金融市場及人們的日常生活產(chǎn)生巨大的影響。自1990年在上海成立了新中國第一家證券交易所,中國股市發(fā)展30年,由較為混亂的波動轉(zhuǎn)變?yōu)檩^為規(guī)律性的波動。股份制有限公司通過上市發(fā)行股票等有價證券進行資金的融通,而投資者也依據(jù)股票進行投資。影響股票波動的因素很多,如金融政策的變動、公司自身的經(jīng)營狀況和投資者自身的行為等。各種股票信息網(wǎng)站也隨之增加,新浪、騰訊等網(wǎng)站更是為股票單立了一個版塊,為投資者提供股票的相關(guān)信息,幫助投資者進行決策。不少學者更是對股票變動的影響因素進行了研究,提出了投資者情緒指數(shù)等指標來對股票的波動進行分析,將投資者的情緒與股票的變動聯(lián)系起來。
現(xiàn)有的針對市場情緒的研究中,部分學者通過選取合適的情緒指標來反映市場情緒,也有學者利用大數(shù)據(jù)時代文本數(shù)據(jù)中的隱含信息構(gòu)建情緒指標。饒?zhí)m蘭和凃裕榮[1]、王舒曼[2]都是利用現(xiàn)有的變量,如好淡指數(shù)、市盈率、抄手率、新增開戶數(shù)等顯性或隱性的指標來量化市場情緒;而王婧[3]則認為文本數(shù)據(jù)中包含大量的投資者情緒,可以從中構(gòu)建出情緒指標。
在研究投資者情緒對股票走勢的影響時,參考了相關(guān)文獻中將情緒量化的思想,但并未采用這些文獻中對情緒指數(shù)的構(gòu)建方法。中外學者為了探討投資者情緒與股票走勢的關(guān)系,通過構(gòu)建顯性、隱性和好淡指數(shù)等情緒指數(shù)將投資者的情緒量化,從而對二者的關(guān)系進行實證分析。本文基于新浪、騰訊等網(wǎng)站對股票評價的文本數(shù)據(jù),利用文本挖掘技術(shù)將文本轉(zhuǎn)化為情緒詞匯,并利用情緒得分量化情緒從而進入模型,將股票市場的走勢與投資者的情緒聯(lián)系起來,分析市場情緒對上證綜指指數(shù)的影響[4],這也符合現(xiàn)今對金融數(shù)據(jù)分析的要求。
本文主要研究投資者情緒與股票走勢的相關(guān)關(guān)系。通過爬取相關(guān)網(wǎng)站文本數(shù)據(jù)建立投資者情緒指標,并選取大盤指數(shù)中的上證綜指指數(shù)作為研究對象。通過構(gòu)建VAR、BP神經(jīng)網(wǎng)絡(luò)模型來對該變量的關(guān)系進行探究,從而找出他們之間的因果關(guān)系,并進行預測來比較兩個模型的優(yōu)劣。建模過程分為以下3個步驟:
1)利用R軟件對股票與文本數(shù)據(jù)進行爬取。利用RCurl、XML等包對新浪股票版塊的文本進行抓取,并利用源代碼的路徑對抓取的文本進行規(guī)整化處理。
2)利用文本挖掘進行情感分析。利用詞典提供的情感詞匯對所有的詞匯賦予情感權(quán)重,計算每個文本最終的情感得分,作為反映市場情緒的指標。
3)進行市場情緒與股票走勢的關(guān)聯(lián)分析。利用計算得到情緒得分進行與股票相關(guān)指標進行分析,將情緒得分作為一個影響變量加入反映股票走勢的模型中。通過格蘭杰檢驗可判斷情緒得分是否對股票走勢產(chǎn)生影響,并利用VAR模型與BP神經(jīng)網(wǎng)絡(luò)對上證綜合指數(shù)進行分析和預測[5]。
主要通過對新浪股票股市觀點、博客看市、大盤評述和主力動向等版塊進行文本挖掘,從而獲得投資者情緒的文本來源,并選擇上證綜指指數(shù)收益率作為研究對象。選取2016年12月至2017年6月180個日數(shù)據(jù)進行分析。
1.1.1 數(shù)據(jù)內(nèi)容
選取新浪網(wǎng)股票界面的股市觀點、大盤評述、主力動向、基金博客等板塊,爬取2017年1月3日到6月16日的文本數(shù)據(jù),從中篩選出4 176條信息。
1.1.2 爬取的總體框架
利用R軟件中的RCurl包和XML包對網(wǎng)站的信息進行爬取[6]。由于RCurl包只能對url進行定向爬取,即只能爬取當前網(wǎng)頁的信息,因此先對要爬取的模塊的主頁面中抓取出所需板塊的子鏈接,然后利用循環(huán)語句對主頁面中各版塊的子鏈接導向的文本進行爬取。
1.1.3 爬取的基礎(chǔ)步驟
1)利用RCurl包中的getURL()函數(shù)獲取網(wǎng)站的源代碼,并根據(jù)url的編碼,設(shè)置參數(shù).encoding。為了防止網(wǎng)站以為是惡意侵入的,偽裝了報頭即定義參數(shù)header。
2)利用XML包中的htmlParse()函數(shù)對獲取的源代碼進行解析。需要注意的一點是,XML包對中文的支持不太理想,并且由于encoding的原因,會出現(xiàn)中文亂碼的情況。因此在這兩步中間加入一個iconv()函數(shù),對網(wǎng)站進行轉(zhuǎn)碼。將網(wǎng)站都轉(zhuǎn)為utf-8的編碼。
3)通過觀察網(wǎng)站源代碼中節(jié)點,可以利用XML包中的getNodeSet()函數(shù)里面的path參數(shù),設(shè)置路徑,然后獲取所設(shè)路徑的源代碼。之后利用xmlValue或者 xmlGetAttr函數(shù)等,xmlValue是返回所設(shè)節(jié)點的值,xmlGetAttr是返回所設(shè)節(jié)點的屬性,這樣就可以得到想要的信息。
在對數(shù)據(jù)處理、分析和建模的過程中,統(tǒng)一使用R軟件對其進行分析。R軟件是一個開源免費的軟件,可以支持進行大部分的分析與操作。利用R語言中的多種包對數(shù)據(jù)進行爬取、分詞、去除停用詞、構(gòu)建模型等操作。R軟件包使用說明見表1。
表1 R軟件包使用說明
在獲得大盤評述、股市觀點、主力動向、博客看市等板塊的文本數(shù)據(jù)后,利用構(gòu)建情緒詞典的方式來對文本中隱藏的情緒進行挖掘。選取哈爾濱工業(yè)大學社會計算與信息中心研發(fā)的情緒詞典,其中包含正面、反面及中性詞匯。通過對爬取的文本進行分詞、去除停用詞、計算情緒得分等操作,將市場情緒量化,從而有利于分析市場情緒與股價走勢的關(guān)系。在處理文本的過程中,下載Rwordseg包和rJava包,利用其中的SegmentCN()等函數(shù)對文本進行分詞。利用循環(huán)語句對文本情緒進行打分,規(guī)定正面詞匯的情感得分為+1,負面詞匯的情感得分為-1,中性詞匯的情感得分為0,利用每篇文本中正面與負面詞匯的評分和作為該篇文檔的情緒傾向和得分值[7]。
2.2.1 數(shù)據(jù)的清洗
由于在爬取數(shù)據(jù)時,是根據(jù)源代碼節(jié)點的規(guī)律來獲取想要的信息,因此其中可能夾雜類似于“新浪財經(jīng)App:直播上線博主一對一指導”等無意義文字,且英文單引號、波浪號等標點在R讀取時會產(chǎn)生警告信息,從而造成文件讀取不完全和亂碼。因此在分詞之前先對文檔中這樣的數(shù)據(jù)進行清洗。利用gsub()函數(shù)以及正則表達式,將不滿足要求的文字及英文字符全部剔除。
2.2.2 對文本進行分詞
由于爬下的文本是完整的文檔,為了利用詞典進行情感分析,采用segmentCN()函數(shù)對文本進行分詞處理。在分詞之前需要裝載自定義詞庫,本文裝載的詞庫為搜狗輸入法下的“財經(jīng)金融詞匯大全【官方推薦】”詞庫以及“股票基金詞庫大全”??墒?,由于詞典并不十分齊全,導致分詞的效果并不是很理想,分出來的詞仍然有所欠缺,部分結(jié)果如表2所示。
表2 初步分詞
顯然,R把“恒”“大”“安”“邦”等能表述一定特定含義的詞拆分開了,因此需要人工觀察那些不能分開的詞,運用insertWords()函數(shù),添加不能將其分開的新詞。并且R還將“特”“朗”“普”之類的人名拆開了,針對這一問題設(shè)置isNameRecognition=TRUE,使segmentCN()函數(shù)可以辨別人名。接著再重新對文本進行分詞,結(jié)果如表3所示。
表3 部分分詞結(jié)果
可以直觀地感受到,通過人為添加詞匯可以提高詞典對文本的分詞效果。通過人工與詞典結(jié)合的雙重分詞,最終能夠得到的分詞結(jié)果較為合理,至此,分詞工作完成。
2.2.3 刪除停用詞
通過對在文本中出現(xiàn)次數(shù)前100名的高頻詞做可視化云圖,發(fā)現(xiàn)出現(xiàn)次數(shù)最多的是“的”“是”“在”“了”“股”“市場”等對情感分析毫無意義和價值可言的詞,這些沒有明確的意義,也無明顯的情感傾向的詞也被稱為停用詞。由于文章中包含大量的停用詞,為了進一步減輕工作量也為了保證后續(xù)建模的分析效果,通過下載停用詞典,并根據(jù)文本特點人工增加一定無意義的停用詞,豐富停用詞典,利用管道函數(shù)將停用詞刪除。刪除前后文本可視化云圖如圖1所示。
圖1 刪除停用詞前后可視化云圖
由圖1(b)可以看出,刪除停用詞后的文本出現(xiàn)頻率高的為“板塊”“增”“跌”“高”“漲”“減”等可以具體體現(xiàn)市場情緒的詞,這說明去除停用詞是很有必要的,同時也說明了停用詞去的效果還不錯。
2.2.4 計算情感得分
將文本停用詞進行刪除之后,下一步的工作是對每篇文章計算情感得分,判斷它的情感傾向。采用哈工大的情感詞典,且將人工判斷詞典不能識別的重要詞加入詞典。之后根據(jù)此情感詞典對處理后的詞賦予情感權(quán)重,再計算每篇文章的情感得分,導入正面和負面的情感詞典,將其與分詞后的文本進行匹配,從而對文本進行打分。通過判斷評分的正負判斷情感傾向。若得分為正,則認為該文檔具有正面的情感傾向;若得分為負,則認為該文檔具有負面的情感傾向。
對文本分詞后的列表按照每一篇文章分詞后的詞的個數(shù)加上標簽,然后將文本和詞典進行匹配,最后利用aggregate()函數(shù),根據(jù)標簽將情感得分進行匯總。得分結(jié)果如圖2所示。
圖2 情緒得分
由圖2可知,積極情緒的比例大于消極情緒的比例,這說明近半年股票市場的情緒還是以積極為主的,并將市場情緒量化成情緒得分。
在對投資者情緒及股票收益關(guān)系進行分析時,利用已經(jīng)爬取的4 000多條數(shù)據(jù)進行分析。由于上證綜指指數(shù)是大盤指數(shù)的重要組成成分之一,因此選取的研究對象為計算出的情緒得分及上證綜指的收益率。為了對二者關(guān)系進行研究,采用了VAR模型及其相關(guān)檢驗來進行分析[8]。
1)對投資者情緒與股票收益變動的因果關(guān)系進行檢驗。由于兩個變量都為時間序列數(shù)據(jù),VAR模型成立的前提條件為序列平穩(wěn),因此對該變量進行ADF單位根平穩(wěn)性檢驗。當兩個變量序列都平穩(wěn)時,對其構(gòu)建VAR模型(向量自回歸模型),并在模型顯著的基礎(chǔ)上進行格蘭杰因果檢驗。從而得到投資者情緒與上證指數(shù)的關(guān)系,判斷出二者的因果關(guān)系。
2)探究模型對股票走勢的預測效果。依據(jù)已知的數(shù)據(jù)分別構(gòu)建VAR和BP神經(jīng)網(wǎng)絡(luò)模型,并利用構(gòu)建出的投資者情緒與股票走勢關(guān)系模型對股票的變動進行預測,探究模型的預測效果。當模型預測效果不好時,選擇更優(yōu)的模型對股票走勢進行預測。
如圖3所示,上證綜合指數(shù)收盤價的波動劇烈,初步看收盤價序列不平穩(wěn),但仍應當進行單位根檢驗判斷序列的平穩(wěn)性。
圖3 上證指數(shù)收盤價波動圖
由于VAR模型的前提是數(shù)據(jù)變量平穩(wěn),因此先對投資者情緒得分(E)和上證綜指指數(shù)(S)進行單位根檢驗。由于fUnitRoots包無法安裝,所以利用R中的“urca”包對變量進行單位根檢驗。對上證綜指指數(shù)差分定義為DS,對情緒得分差分定義為DE對差分后的變量進行檢驗,結(jié)果如表4所示。
表4 ADF檢驗
在保證單位根平穩(wěn)的情況下,構(gòu)建VAR模型,以DS為因變量,DE為自變量來構(gòu)建。依據(jù)VAR模型滯后表判斷階數(shù),如表5所示。
表5 VAR模型滯后階數(shù)判斷
由表5可以發(fā)現(xiàn),當階數(shù)為2時AIC取值較小,此時其他準則取值也較小,因此選擇滯后期為2的VAR模型,如表6所示。
表6 VAR模型結(jié)果
所以,上證綜指收益率的變動(DS)可以用其自身的滯后期及情緒得分的滯后期解釋。可以發(fā)現(xiàn)上證指數(shù)收益率的變動受過去滯后一期的情緒得分影響最大。隨著時間的推移,情緒對股票走勢的滯后效果逐漸減弱。
由于VAR模型顯著,因此對其進行格蘭杰因果檢驗。格蘭杰因果檢驗的實質(zhì)如下。
用公式表示為
(1)
(2)
當原假設(shè)和備擇假設(shè)為情況1時,格蘭杰因果檢驗的公式如式(1)所示;反之,如式(2)所示。格蘭杰檢驗結(jié)果如表7所示。
表7 格蘭杰檢驗結(jié)果
由圖可以判斷出市場情緒和股票收益率互為格蘭杰原因。此外對殘差進行檢驗,發(fā)現(xiàn)殘差此時協(xié)整,F(xiàn)值達到206.6,P值遠遠小于0.05.因此,可以認為投資者情緒得分是上證綜指變動的格蘭杰原因。
在構(gòu)建出VAR模型后,利用該模型對上證綜指的收盤價進行預測。通過對預測結(jié)果的分析,能發(fā)現(xiàn)VAR模型的預測誤差較大,不能很好地對上證綜指收盤價進行預測,如表8所示。
表8 預測4天收益率結(jié)果
由表8所示,在置信度為95%的水平下4天收益率的預測值相差不大,收益率的置信區(qū)間較大,導致精度不夠,因此認為 VAR模型對收益率的預測不夠精確,具有較大的誤差。為了對股票的走勢進行較為準確預測,通過參考文獻對眾多預測模型的比較找出較為準確的預測模型——BP神經(jīng)網(wǎng)絡(luò)模型。
4.2.1 BP神經(jīng)網(wǎng)絡(luò)原理[9]
BP 神經(jīng)網(wǎng)絡(luò)屬于多層感知器(multilayer perceptrons,MLP)的一種,用于解決預測中的線性不可分問題。神經(jīng)網(wǎng)絡(luò)是一種類似于黑匣子的模型,除了輸入層和輸出層外,還包括若干隱含層。也就是說,一個神經(jīng)網(wǎng)絡(luò)模型有三層及三層以上的神經(jīng)元。其中,全連接層BP神經(jīng)網(wǎng)絡(luò)相鄰的上下層之間的神經(jīng)元實現(xiàn)全連接,但是同一層神經(jīng)元之間并無任何聯(lián)系。其中,輸入層與隱含層神經(jīng)元之間依據(jù)網(wǎng)絡(luò)的權(quán)值來進行聯(lián)系,即兩個神經(jīng)元之間的連接強度[10]。輸入層將數(shù)據(jù)中包含的信息傳入隱藏層中,隱含層則將前一層所有神經(jīng)元傳來的信息進行整合繼續(xù)向下傳遞,直到傳遞到輸出層。
4.2.2 模型建立
4.2.2.1 網(wǎng)絡(luò)層數(shù)的確定
盡管增加網(wǎng)絡(luò)層數(shù)可以起到降低誤差的效果,但同時也使神經(jīng)網(wǎng)絡(luò)復雜化,從而增加了網(wǎng)絡(luò)權(quán)值的訓練時間。而誤差精度的提高其實也可以通過增加隱藏層中的神經(jīng)元數(shù)目來獲得,并且其訓練效果比增加網(wǎng)絡(luò)層數(shù)更佳。同時,由Kosmogorov 定理可知,在神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)合理以及神經(jīng)節(jié)點權(quán)值取值恰當?shù)臈l件下,三層神經(jīng)網(wǎng)絡(luò)可以逼近任何連續(xù)函數(shù)。因此,基于上述分析,將隱藏層的個數(shù)設(shè)為1,也就是構(gòu)建三層神經(jīng)網(wǎng)絡(luò)。
4.2.2.2 輸入層神經(jīng)節(jié)點的設(shè)計
本文是基于市場情緒指數(shù)和上證指數(shù)往期數(shù)據(jù)對上證綜合指數(shù)進行預測??紤]到中國股票市場的實際情況,一周的交易天數(shù)為5天,上證綜指的滯后期選擇四期較為合適。因此,將輸入層神經(jīng)節(jié)點數(shù)目設(shè)置為6。BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如表9所示。
表9 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
模型1:yt=NN(yt-1,yt-2,yt-3,yt-4)
(3)
(4)
式中:yt為t時期上證指數(shù)的收盤價;xt為t時期市場情緒指數(shù);yt-i為從t時期起滯后i期的收盤價,i=1,2,3,4,即t-i時期的收盤價;xt-i為從t時期起滯后i期的市場緒指數(shù),i=1,2,即t-i時期的情緒指數(shù)。
4.2.3 模型擬合
4.2.3.1 只基于上證指數(shù)的BP神經(jīng)網(wǎng)絡(luò)模型
運用R軟件對2017年1月3日到2017年6月11日的104個數(shù)據(jù)進行處理,作為馴良樣本,再用接下來的4個數(shù)據(jù)作為模型的預測集,用前4期的數(shù)據(jù)對下一期做預測,本文主要對收盤價進行了預測,圖4為實際數(shù)據(jù)和預測數(shù)據(jù)之間的擬合,其中紅色表示實際的收盤價,藍色表示預測的收盤價。模型的擬合優(yōu)度為96.62%,擬合結(jié)果較為理想,同時,均方誤差為166.662 2,可見整體的偏差也不是很大,說明了神經(jīng)網(wǎng)絡(luò)預測模型的有效性。同時,可以看出整個2017年上半年中,上證指數(shù)呈先緩慢上升再下降的趨勢。
圖4 沒加入情感得分的模型擬合
4.2.3.2 加入情感得分的BP神經(jīng)網(wǎng)絡(luò)模型
基于前文的分析研究,考慮將情感得分加入模型,作為一個新的輸入變量,依舊基于收盤價進行預測,將最后得出的結(jié)果先與實際值做對比,看模型是否可行,再與未加入情感得分的BP神將網(wǎng)絡(luò)模型做對比,看情感得分是否在能夠提高預測的精度。模型擬合的結(jié)果如圖5所示。MSE值約為80,模型擬合良好。
基于本文所建立的BP神經(jīng)網(wǎng)絡(luò)模型,對接下來的4期數(shù)據(jù)做預測,并與實際結(jié)果進行對比,預測結(jié)果如表10所示。
圖5 加入情感得分后的模型擬合
表10 BP神經(jīng)網(wǎng)絡(luò)預測效果
表10說明BP神經(jīng)網(wǎng)絡(luò)模型預測效果極佳。
由于時間有限,獲得情感得分數(shù)據(jù)較少,只有6個月的時間,導致BP神經(jīng)網(wǎng)絡(luò)的訓練集數(shù)據(jù)較少,神經(jīng)網(wǎng)絡(luò)的結(jié)果還不是很理想。所以,針對這些問題提出了進一步優(yōu)化,主要有以下 3點:
1)需要增大樣本量,獲得更長時間且精度更高的情感得分數(shù)據(jù),只對新浪財經(jīng)上的股評進行了爬取,在接下來的工作中,可以根據(jù)相關(guān)指標選取更多的股票評論網(wǎng)站,綜合多方面的意見爬取數(shù)據(jù),同時,在分詞時,可以結(jié)合句法及樸素貝葉斯對文本數(shù)據(jù)進行分詞以及計算情感得分的數(shù)據(jù)清洗工作,從數(shù)據(jù)來源上進行改進,
2)本文在構(gòu)建BP神經(jīng)網(wǎng)絡(luò)時選取的是上證綜合指數(shù)得到收盤價,收盤價只是股票價格變動的一個側(cè)面,可以考慮將上證綜合指數(shù)的成交量、交易金額、市盈率等加入模型中,從多方面來探究股評的情感趨勢對大盤變動的影響。
3)本文在構(gòu)建BP神經(jīng)網(wǎng)絡(luò)模型的過程中,采取的算法比較簡單,同時神經(jīng)網(wǎng)絡(luò)模型本身也有限制,可以考慮在今后的工作中采取更為有效的算法來提高預測的精度,并將BP神經(jīng)網(wǎng)絡(luò)和其他算法如支持向量機等結(jié)合起來構(gòu)建預測精度更高的模型。
利用多種分析與處理方法,構(gòu)建了VAR和BP神經(jīng)網(wǎng)絡(luò)模型,通過這兩個模型來探究市場投資者情緒與上證綜指指數(shù)的關(guān)系,并比較了兩種模型的預測效果。在對模型的比較中,發(fā)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)在預測方面具有其他模型無法比擬的優(yōu)勢,不用建立復雜的數(shù)學模型,具有很強的自適應、自學習能力,所以BP神經(jīng)網(wǎng)絡(luò)模型在股票預測方面更為準確合理。