金融市场的新闻信息分析技术
毫无疑问,金融市场的波动和信息息息相关。这样的例子很多,大到战争的爆发可能触发石油价格的上涨,从而影响到大宗商品的价格,进而引起股市的动荡;小到关于某上市公司收购案的报道会引发投资者对该公司股票不同的评判,从而造成股价和交易量的大幅波动。财经新闻是金融信息的一大来源,没有人怀疑它的重要性。因为它是传递重要信息给公众的主要机制,而这些重要信息会对市场产生深刻的影响。交易员和其他市场参与者会迅速消化新闻并且相应地重新调整配置资产组合。一些重要的新闻事件对市场环境和投资者情绪有重大的影响,会导致资产的风险结构和风险特征的变动。
要理解信息如何影响市场就必须理解资产价格是如何确定的。很多专家学者都在试图解释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角度来说,这是个坏消息。所以从整篇文章来算情绪值没有价值,从个体角度来算情绪值才有价值。