金融市場的新聞信息分析技術
毫無疑問,金融市場的波動和信息息息相關。這樣的例子很多,大到戰爭的爆發可能觸發石油價格的上漲,從而影響到大宗商品的價格,進而引起股市的動盪;小到關於某上市公司收購案的報道會引發投資者對該公司股票不同的評判,從而造成股價和交易量的大幅波動。財經新聞是金融信息的一大來源,沒有人懷疑它的重要性。因爲它是傳遞重要信息給公衆的主要機制,而這些重要信息會對市場產生深刻的影響。交易員和其他市場參與者會迅速消化新聞並且相應地重新調整配置資產組合。一些重要的新聞事件對市場環境和投資者情緒有重大的影響,會導致資產的風險結構和風險特徵的變動。
要理解信息如何影響市場就必須理解資產價格是如何確定的。很多專家學者都在試圖解釋2008年股票市場大跌的原因,一個很簡單的解釋就是當時股票的供給遠大於股票的需求。畢竟,股市也是一個市場,市場的運作機制就是供給和需求。對應於每個賣方都必須有一個買方,這樣才能成交。如果市場中賣方突然比買方更多,那麼股價就會下跌。買方數量和賣方數量由市場情緒決定,而新聞的價值就在於:一是把股票市場情緒的變化傳播給每個人;二是直接影響了股票市場需求供給的均衡。
(1)市場層面。情緒的傳播引發羣體不理性(如“羊羣效應”)。關於股票市場每一天變動情況的追蹤報道會通過各種形式(報紙、廣播、電視、網絡、手機等)傳遞給投資者。
(2)公司層面。我們知道股票價格體現的是投資者對該公司未來前景的預期。如果預期一個公司未來發展前景很好的話,那麼投資者就願意以更高的價格去買進該公司的股票,當前持股的投資者也會繼續持有以獲取未來升值帶來的收益。關於一個公司前景的預期取決於對該公司未來收益的預期。而公司未來收益預期受到很多因素的影響,如與公司相關的新聞報道可以改變公司股票的供給需求平衡,從而影響股價。很多時候,沒有新聞有可能被視爲負面新聞。而那些有大量關於未來收益的正面報道公司的股票會吸引新的購買者,從而推高股價。
(3)噪聲信息。網絡時代催生了大量有影響力的博客和社交平臺,它們都傳遞着各種各樣的信息,但很多是噪聲,並不能給投資者帶來幫助。有的噪聲甚至是謠言,經過網絡的廣泛傳播後也會對股價產生重大影響。特別是在社交網站、智能手機應用非常普遍的今天,一些捕風捉影的新聞報道通過公衆人物或者媒體的報道和轉發,傳播速度非常快且影響深刻。一個典型的例子是蘋果公司新產品發佈之前就會有關於新產品細節的各種披露和猜測,儘管有的和事實相去甚遠,但卻影響了投資者的預期從而影響蘋果公司的股價。
儘管投資者都普遍認爲新聞影響着股價,但遺憾的是我們會發現在大部分投資學的教材中並沒有包含新聞因素的資產定價公式,這很可能是因爲很多新聞是很難量化的。而且,隨着新聞量的爆炸式增長,人工去處理這些新聞並及時做出正確的決策是很困難的。幸運的是隨着計算機技術的發展,現在我們可以開發出各種技術來有效地提取、綜合、分類大量的新聞。這種技術既可以應用到高頻交易策略構建中也可以應用到低頻的基金組合調整中。自動化的新聞分析可以幫助投資者縮短對突發事件的反應時間,還可以幫助基金經理監測特定股票、行業和市場的情緒變化。這些新聞分析技術可以自動地過濾、監測、綜合各種新聞事件,使基金經理們不用重複地去關注並分析海量的信息。
新聞分析技術可以通過機器算法來模擬人的思維和推理過程。交易員、投機者和個人投資者都會在做出投資決策前預測價格變動的方向、大小和波動率。他們會仔細閱讀最新的財經新聞以瞭解當前的市場情況,然後會利用他們過往的經驗判斷市場的走向。新聞分析就是要自動化或者半自動化這個過程,一旦自動化了,投資者就可以投資更多、更廣的資產。新聞分析技術綜合了金融經濟學、金融工程、行爲金融學、人工智能等學科知識,一個複雜的機器學習的算法如果沒有充分考慮到金融市場的結構和變動的話,很可能其得出的結果也是沒有多大價值的。因此,在應用新聞分析技術到實踐投資過程中,其中算法的開發一定要結合當前金融市場的動態變化。下面介紹新聞分析技術的具體內容。
新聞信息來源
我們將考慮那些可以更新投資者信念和知識的信息來源分爲四大類:
(1)新聞報道。是指主流媒體新聞,主要通過報紙、廣播、電視來傳播,當然電子報紙也在快速地增長中。
(2)報前新聞。是指在記者寫出新聞報道之前的那些新聞。這些新聞的來源主要是證監會、交易所、法院及其他政府機構。也包括一些計劃好的常規公告如宏觀新聞、行業統計數據、公司年報等。
(3)傳聞。是指博客和網站上的信息,往往可信度較前兩類低,質量參差不齊。有些專家博客、專欄上的信息質量很高,也有些缺乏實質性的內容且具有誤導性甚至存在謠言。
(4)社交媒體。這類新聞可信度最低。因爲進入門檻極低甚至沒有門檻,所以人們可以隨意地發佈信息。這些信息有可能是有害的或者不準確的信息,但如果考慮到人的行爲和心理並小心謹慎地加以應用,這些信息也可能會有價值。
個人投資者相對機構來說更關注後兩類新聞,儘管和主流新聞相比可信度會較低,但或許可以從後兩種信息中獲得一些“集體智慧”。我們可以利用一些檢索工具從網上獲取這些信息,如百度和谷歌。谷歌流行(GoogleTrend)搜索引擎可以針對給定的搜索詞段報告出積極、消極、中性的新聞比例。
從新聞公佈的時間來說,新聞一般分爲兩類:一類是定期公佈的公告,另一類是不定期的新聞事件。定期的公告一般來說是按照一定標準發佈的數字或者文本,這類公告對規模大的市場如外匯、期貨有影響。因爲是標準的定期公告,可以直接應用到對投資策略的回測,市場參與者有着充分的準備以在公告發布的第一時間進入市場,因此速度和準確度是成功與否的關鍵。
事件驅動型的新聞總會毫無預料地出現,它們通常是以文字出現並且是非標準結構的定性數據。這類新聞被歸類到非數字且難以進行快速量化處理的新聞信息,它不同於數字化的市場數據,這類新聞經常包含着關於某件事件的影響和發生的可能原因。我們可以從各個角度去量化這類新聞,如去度量新聞的數量,或者依據文本內容中的情緒詞語來打分,或者依據市場對特定語言反應程度來打分。對於非數量化新聞信息的量化處理過程及其如何指導投資決策等內容將在下面進行具體介紹。
新聞分析的層次
新聞分析一般從低到高有三個層次:文本、內容和上下文。
(1)文本分析。基於文本的分析是關注新聞中的組成部分,包括文字、詞語、標題等。作用是將文本轉爲信息。通常通過標註、分類、總結來剔除不相關的內容、簡化爲具有較高信號的新聞。
(2)內容分析。內容分析不僅包括文本,也包括圖片、時間、文本形式(郵件、網頁、博客等)、格式(html,xml等)和來源。文本分析後內容會具有更高的質量和精確度,如同一份財經新聞來自《華爾街日報》要比來自一個博客具有更高的價值。
(3)上下文分析。是指信息和信息之間的關係分析。Das和Sisk(2005)試圖通過分析社交媒體上關於不同股票的信息及股票之間的關係來構建投資組合。谷歌的PageRank算法就是一個考慮到了上述三種層次分析的例子。Levy(2010)給出了關於這個算法的入門介紹,有興趣的讀者可以參考。
算法的複雜程度也是隨着以上三個層次不斷遞增的。
新聞信息分析流程
新聞信息分析包括新聞信息的獲得、加工、分類、語義分析、賦情緒值和評估一系列的步驟。
準備工作
(1)網絡爬蟲和網絡抓取。在分析前先要獲取第一節介紹的那四種信息。獲取這些信息有兩個步驟:一是搜索相關信息;二是下載相關信息。前者需要利用網絡爬蟲技術(WebCrawler),後者可以利用網絡抓取技術(WebScraper)。
網絡爬蟲是一個能夠在網絡上智能地搜索相關網頁的軟件,其算法能夠在它可能要尋找的網頁中做出智能選擇。一個常用的方法是從當前網頁轉到和其有鏈接的網頁。本質上說網絡爬蟲可以從任何一個給定的節點(網頁),用試探法來決定路徑的相關性並選擇合理的路徑以搜索到一連串的網頁。現在的爬蟲技術已經越來越完善了,具體可以參考Edwards、McCurley和Tomlin(2001)。
網絡抓取技術可以把任意選定的網頁內容下載下來以供分析。幾乎所有的編程軟件都可以實現網絡抓取。這些內置的方程可以連接網絡並下載用戶指定的內容。如R軟件,一個免費且開源的統計工具,就有網絡抓取函數。如果想把網頁以向量的形式下載下來,只需要一句命令就可以完成。如下面的例子:
>text=readLines("http://algo.scu.edu/~sanjivdas/")
>text[1:4]
[1]"<html>"
[2]""
[3]"<head>"
[4]"<title>SC(JWebPageo£SanjivRanjanDas</title>"
如我們常用的Excel,也有一個內置的網絡抓取軟件。有興趣的讀者可以打開Excel,點擊數據——自網站,這樣就可以下載下來整個網頁進入每個單元格內,就可以對其任意操作。並且Excel可以按每分鐘或者其他時間間隔更新下載的網頁內容。
(2)文本預處理。從公開來源獲得的文本往往是雜亂的,特別是從網頁上得到的。因此,在進行新聞分析前,需要一個算法來清理這些文本,稱之爲文本預處理。
首先,我們需要清除文本中所有的“HTML”標籤,這些標籤包括<BR>,<p>,"等。其次,再把縮寫詞擴展到全稱,這樣可以使各文本中的表達一致。最後,查找一句話中含有的否定詞語,如“不是”、“從來不”、“沒有”,然後在該句話後做標記。
一旦完成了文本預處理,就可以使用各種不同的算法對其進行分類和分析。下面介紹幾種最常用的算法。
2,分類算法
(1)貝葉斯分類器。貝葉斯分類器很可能是當今應用最廣泛的分類法了,分類思想就
是將文本分到一個事前確定的類別中。應用這種方法需要有一個事先已經分類好的文本語義庫。這個已分類的語義庫可以通過專家一致判別法(ExpertConsensusMethod)來建立。這個語義庫可以提供文本的先驗概率,然後應用到樣本外的文本中,根據貝葉斯公式得到一個後驗概率,選擇具有最大後驗概率的類作爲該文本所屬的類。在Graham(2004)中對這個分類器有精彩的闡述。
貝葉斯分類器是基於詞彙算出的概率,因此和語言的結構無關,這使得它能夠廣泛應用到各種語言中。它利用事先分類好的詞庫來推斷新文本的類別,下面將做一個簡單的介紹。
這就是給定文本出現在某一類別中的概率,各類別中的概率最高的就將文本歸爲該類別。
貝葉斯分類器的應用很廣泛,並且有免費的軟件可以直接使用,在國外金融中使用較多的是Bow分類器,用戶不需要額外的編程,只需要自建一個語義庫,將文本信息分爲幾種子類別,每條文本信息是一個單獨的文件。貝葉斯分類器有多個版本,在R軟件中有一個最簡單的版本,在el071程序包中有個naiveBayes函數。
新聞分析從分類開始,而貝葉斯分類器是任何一個新聞分析系統的基礎。需要注意的是,在應用貝葉斯分類器前用戶需要判斷什麼樣的信息應該分到哪一類,即建立自己的語義庫.這很重要!具體如何建立可以參考Koller和Sahami(1997)。
(2)字眼統計分類器。字眼是任意一個語言推理系統的核心,要設計一個字眼統計器,用戶需要根據分類問題編寫一個特殊字眼的詞庫。如果分類器要把一條財經新聞分類爲好消息還是壞消息.用戶需要建立一個詞庫以區分好消息和壞消息。如“興旺”這個詞可以歸爲“樂觀詞”,“暗淡”這個詞可以歸爲“悲觀詞”,詞庫的建立需要一些專業知識。詞庫建立好後就只需要比較各個分類中的字眼數了,如果某一類中的字眼數超過某一臨界值並且比其他類別多那麼可以將這條文本信息歸爲這一類了。
這種分類法很簡單,可以很快地運行,是分類中的一個基礎方法。
(3)向量距離分類器。這種分類器把每條信息當做一個向量,那麼一個事先分類好的詞義庫就成了一個對比向量,計算新向量和各個對比向量的距離,距離最近的就歸爲該對比向量所屬的類。記新的信息向量爲M,對比向量爲S。兩者距離可以按下式計算:
這種算法很容易運行並且只需要簡單的線性代數和分類子程序,在很多程序設計環境下都可以獲取。
(4)形容詞一副詞分類器。一段話中的形容詞和副詞往往能夠透露出作者的觀點和情緒,因爲分析形容詞和副詞所在的文本區域就很有價值。這類分類法和語言有關,爲了確定文本中的形容詞和副詞,需要進行語義分析。英文中常用的是牛津高級學習詞典的電腦使用版本,使用它進行語義分析將很簡單。有了詞典,只需要寫個程序從文本中提取形容詞和副詞所處區域的文本,然後再將這些文本應用到其他分類器中進行統計和分析。
(5)投票系統。鑑於要處理的文本信息是如此的多樣且模糊不清,有時候應用上面的分類器得到的結果可能並不準確。爲了提高分類的準確性,可以分別應用以上的分類器,對某條文本信息的分類情況進行統計,分類一致的次數最多的,就可以認定該文本屬於該類。
(6)判別分類器。以上介紹的幾個分類器都沒有考慮到字眼與字眼在重要性上的不同,也沒有全部考慮到整體,像字眼統計分類器中那樣只關注特定的字眼而忽略了其他。不同的是,判別分類器能夠根據不同字眼的價值來衡量其重要性。最常用的是Fisher判別分析法。
記每條文本信息岀現在類別i中的平均個數爲內,信息標記爲j。字眼w出現在類別i文本j中的次數記爲mijon,表示字眼w出現在類別i中的次數。那麼判別方程可以寫成:
這個判別式的含義就是類別間方差與類別內方差的比值。回顧我們在字眼統計器中的舉例,在判斷某條新聞是好消息還是壞消息時,如果“暗淡”這個詞出現一次就將其列爲壞消息,沒岀現就列爲好消息。那麼類別內的方差爲0,而類別間的方差爲正。這種情況下上面比值就爲0了。其實“暗淡”是一個非常明顯的判別詞彙,在字眼統計器中應賦予一個很大的權重。這裏用這個方法計算出了一些常見詞彙的判別值,具體計算過程參見Das、Chen(2007)。
壞0.0405熱情的0.0161提升0.0123玩笑0.0268跳躍0.0106
喜歡0.0037失去0.1211高估0.0160不好0.0485持有0.0031
並不是所有的這些詞都能和熊市和牛市聯繫到一起,但有些詞確實可以。如“擴張”、“下跌”、“有前景的”。
(7)文本情緒打分。一個很有用的文本打分工具是哈佛大學開發的GeneralInquirer,具體可以參考http://www.wjh.harvard.edu/inquirer/。我們使用這個工具可以對文本中樂觀詞彙和悲觀詞彙進行計數。Tetlock(2007)在論文中使用這個工具,他對《華爾街日報》的市場動態欄目中的報道進行語義分析,藉助GeneralInquirer工具中的77個類別進行了主成分分析,得岀了一個悲觀值。高的悲觀值預示着股價將下跌,極高的或極低的值意味着股價波動將會變大。Tetlock、Saar-Tsechansky和Macskassy(2008)使用關於公司基本面的新聞報道,發現文章中悲觀的字眼可以預測未來的收益和回報。
算法評估
只開發算法而不去評估的話是很危險的,對於以上分類的結果,我們需要評估分類的準確性、結果的有效性以及穩定性。一個分析方法要在統計上有效需要滿足一些標準以顯示它的準確度,在經濟上有用是另一個問題,就是考察它是否能創造利潤。穩定性體現在:一是它在樣本內和樣本外是否表現得好,二是不同語義庫之間算法的行爲是否穩定。下面介紹幾種評估方法:
(1)混淆矩陣。混淆矩陣是評估分類準確度的經典工具。給定n個類別,矩陣的維數是nxn的。行表示某條文本信息由分析算法確定的類別,列表示該條文本信息正確的類別°矩陣中包含的每個元素(i,j)代表着那些應該被分類爲j類的文本信息卻被分類爲i類的文本信息,對角線上的元素代表着文本信息被正確分類的個數,除此之外都是被錯誤分類的文本個數。如果一個算法沒有分類能力,那麼行和列之間就會互相獨立。在這樣的原假設下,有如下的統計量:
我們希望這個值至少要大於丄,因爲後者是隨意猜測都能達到的平均精度。通常這個n值在60%~70%是合理的。
(3)錯誤的正值。不合理的分類要比不分類嚴重,在一個2x2的矩陣中,每一個不在對角線上的元素都是一個錯誤的正值。當n>2時,一些分類錯誤要比其他嚴重得多,如在一個有三種分類方式(分別是買入、持有、賣出)的矩陣中,將買入信息錯誤地分類爲賣出要比其分類爲持有所導致的結果嚴重。一個辦法是合理地將類別排序,使得分類的含義按程度遞增或者遞減(如分成買入、持有、賣出要比買入、賣出、持有更合理)。
錯誤的正值百分比是一個有用的評估方法,首先需要簡單加總錯誤分類的個數或者用不同的權重(根據類別間的距離)來加總錯誤分類的個數,再用這個值除以總的分類個數。
當許多新聞被分類後,我們可以通過加總計算出一個情緒總值。這樣的加總的好處是,它可以將分類錯誤抵消一部分,從而提高整個情緒值的精度。情緒錯誤是我們計算得出的情緒值與沒有分類錯誤得出情緒值之差的比值。在5%~15%比較合理。
(4)相關性。有一個很自然的問題是:我們通過新聞分析得到的情緒指標和金融時間序列的相關性如何呢?是否有預測能力呢?在第五章將具體介紹應用情緒指標來預測收益和波動率的實證研究。
新聞分析中需要注意的問題
(1)注意新聞來源。在文本處理的時候一定要依據文本的內容不同而設計不同的算法。如處理微博和財經媒體網(如和訊網)上的信息,當然不能使用同一種算法來進行分析。微博一般格式混亂,寫作風格隨意多變,而和訊網上的新聞就會有固定的格式和風格。所以需要用兩種不同的算法來分析。
(2)注意寫作風格。在處理財經新聞的時候有好的一面也有壞的一面。好的方面是一般財經新聞寫作,無論是語法上還是詞語上,都是嚴格且規範,這方便了文本分析。壞的方面是財經報道通常是盡力地中立並且語調緩和,儘量不引起讀者情緒上的興奮或不安。這增加了文本分析的難度。
(3)注意公司名稱變化。上市公司會發生重組、併購、收購等業務,公司的名稱有時候會發生變化,在分析的時候必須要注意到這一點,以使得對不同名稱但屬於同一公司的分析會一致。因此須編制一個公司別名的詞庫,以避免這個問題。
(4)整體還是個體?如果僅僅從一篇新聞報道來得出情緒值,其結果往往是誤導性的,除非文章中提到的多個公司都在一個行業並且對它們有相同的觀點。但很多文章不是這樣的,而是會把很多不同公司做對比,在這種情況下,分析整篇文章的情緒值沒多大意義,而從個體層次來分析會更有價值。舉個例子,一篇關於蘋果公司季度報告的財經報道,文章中提到蘋果公司市場份額持續增長,競爭對手HTC卻在停滯不前。從蘋果公司角度來說,這是好消息,但從HTC角度來說,這是個壞消息。所以從整篇文章來算情緒值沒有價值,從個體角度來算情緒值纔有價值。