EN 中文

基于SmarTag系统的新闻情绪因子测试(一)

Oct 11,2019



一、数库新闻舆情数据简介


数库通过自主研发的资讯采集平台灵活迅速的抓取互联网上的海量财经信息,并通过强大的处理能力准确挖掘所需数据,如智能标签、实体识别及情绪识别等。目前,该系统已覆盖中国大陆主流财经媒体及主要行业网站,总计3000+网站新闻版面,平均每5分钟抓取一次,每日新增新闻抓取量约20000条。更多关于数库智能资讯系统的详细介绍可参考数库智能资讯用户手册及数库NLP技术白皮书。


我们对于每一篇抓取到的新闻均做了以下处理:

  1.  提取基本信息:包括新闻的标题、时间、来源、智能摘要

  2. 智能标签识别:识别新闻中存在的法人及自然人实体、SAM产品、行业、事件及概念。除标签识别外,算法还能给出这篇新闻与这些标签的相关程度。

  3. 情绪判定:对于整篇新闻及新闻中涉及的主体均做情绪判定。情绪一共分为三个类型,包括正面、负面及中性。算法会给出这个主体在三类情绪的概率分布,取概率最大的情绪类型作为该主体的情绪。例如,某篇新闻中提及股票A,算法给出A的情绪概率为30%中性、10%负面及60%正面。那么在这篇新闻中,股票A的情绪就为正面。


我们可以通过以下的示例数据来更直观的了解数库提供的新闻舆情数据,每一条原始数据都是一个嵌套多层的json字典。其中newInfo为基本信息,newsTags为标签信息,标签信息中的ItemRelevance为该新闻与该标签的相关度,emotionInfos为情绪得分信息,emotionIndicator为该主体的情绪类型,1为正面,2为负面,0为中性。


海量及时的新闻情绪数据给我们提供一个快速了解及量化整个市场及每个上市公司的当前情绪的机会,通过这些数据我们可以及时控制风险,也可以借助传统的投资理论建立量化投资模型。


本篇报告基于以上的新闻舆情数据及传统的因子理论,构建了一套基于新闻舆情因子的因子模型,并在因子构建的过程中测试了各种不同的因子构建方法,详细分析了不同方法带来的影响及利弊。报告中主要使用的是emotionInfos中的情绪数据,并未使用到智能标签中的产品、行业、概念及事件标签等数据。


图表1:数据样例



二、如何快速获取新闻情绪数据


数库的新闻舆情的历史数据可追溯至2008年,为了使广大用户更方便的测试及使用新闻情绪相关的数据,我们开放了部分加工后的情绪数据(而非图表1的原始数据),大家可以通过安装Python模块csf_kit快速便捷的获取该数据。具体安装及使用方法如下:


如果您使用python进行数据研究,那么可以在命令行窗口输入:

pip install csf_kit 

快速安装数库开源示例代码库。

安装好csf_kit后,运行以下代码导入示例数据:

from csf_kit import SAMPLE_SENTI_SCORE


其中SAMPLE_SENTI_SCORE就是201711日至2019831日的A股情绪数据,具体的数据及字段说明如下:


图表2:A股情绪数据


字段名

说明

news_id

每篇新闻的唯一ID

news_time

新闻发布的时间

sec_code

股票代码

senti_type

情绪类型:1正面,0中性,-1负面

senti_weight

情绪权重

senti_score

情绪得分,等于senti_type*senti_weight*100

trade_date

对应的交易日期

senti_score_rel

考虑新闻相关度的情绪得分,等于senti_type*senti_weight*relevance*100

图表3:情绪数据字段说明


关于示例数据有以下几点需要说明:

  1.  每条记录表示某只股票在某篇新闻中的情绪得分,且该数据中只有A股数据;

  2. senti_type对应原始数据中的emotionIndicator,且把原先2表示负面改为-1表示负面;

  3. trade_date为该记录对应的交易日期,具体对应规则为t-215:00t-115:00对应到t日期。csf_kit中提供了便捷的函数align_trade_date,用户可以方便的使用自己认为合适的对应规则。


三、新闻情绪因子测试


1. 新闻情绪因子构建过程中的选择


新闻情绪因子的构建主要在于用什么算法把某个股票一段时间内的在不同新闻中的情绪得分汇总成一个得分,针对这个问题,实际上有需要因素及选择需要考虑。


 1保留中性的记录还是去除中性的记录?

相对于正负面的评判,中性的评判是最模棱两可的,在我们的NLP技术白皮书中也提到中性新闻的准确度是最低的。而且,中性新闻的得分为0分,由于人们对于极端正负面的新闻与中性新闻的反应不一样,特别是在用平均分刻画股票情绪得分时,中性新闻会扭曲极端正负面股票的得分。

即使逻辑上,去除中性新闻的记录更为合理,我们后面还会用数据分析验证我们的结论。

 

2) 平均分还是总分?

平均分指的是计算一段时间内某只股票在所有新闻中得分的平均分,所以基于平均分的股票情绪因子固定在(-100100)这个区间里,这样的计算方式会丢失掉热度的信息,比如在10篇新闻中出现的A股票且得分都为100分,与只有一篇新闻出现的B股票但得分也为100,是一样的。

总分是计算某只股票在一段时间里的得分的总分,总分的计算考虑了股票的热度,但造成了股票得分分布的不均匀,容易出现极端值。所以总分的因子逻辑上更能抓住极端行情的股票,但股票数量不稳定。

 

3) 是否考虑新闻与股票的相关度?

在我们的原始数据及测试数据中都有某篇新闻与其出现的某只股票的相关度,在测试数据中为relevance字段。在计算情绪得分时,是否应该乘以相关度?逻辑告诉我们,应该乘以该字段,因为这样才能体现不同股票在同一篇新闻中的差别。两种情况的具体测试结果我们将在后面的分析中呈现

 

4) 不同时间发生的新闻是否要考虑情绪得分衰减?

假设我们的交易决策在t-1收盘时执行,那么在这之前不同时间发生的新闻是否要考虑时间衰减。比如某只股票在t-2收盘时在某篇新闻的得分为80分,在t-1收盘时是否还应该按其80分作为情绪得分,还是要考虑时间衰减,以一个低于80分的得分计算其情绪得分?逻辑上,考虑情绪衰减的处理方式更为合理,但由于新闻情绪数据噪音很大,具体的结论还要看测试结果,

 

2. 新闻情绪因子测试结果


基于以上不同的选择,我们做了以下详细的测试,我们所有的因子测试都是采用的开源因子测试工具Alphalens。分组的方式是用等分位区间制,且在0上下等分为5组,即每日根据今日得分划为10个区间,处于同一区间的股票分为一组。


我们以不同的字母代表不同的处理方式,具体说明如下:

REL: 情绪得分计算时使用相关度指标

NOREL:情绪得分计算时不使用相关度指标

TOT:计算情绪得分的总分

MEAN:计算情绪得分的平均分

EX:去除中性新闻

NOEX:保留中性新闻

EQUAL:等权计算情绪得分,不考虑时间衰减

TIME:按时间权重计算情绪得分


那么,例如REL_TOT_EX_TIME就表示考虑了相关度及情绪衰减,去除中性新闻的情绪总分。

我们先来回答第一个问题,是否保留中性新闻?图4中,统计了每天同一个股票在不同新闻中得分分布的差异,我们采用了两个指标,左边用的是Range(最大值-最小值),右边采用的是Std标准差。我们希望一只股票在不同新闻中的得分差异越小,对于我们因子的构建就越有利。我们可以发现,当去除中性新闻后,差异的分布明显变的平缓,坐标轴靠左的密度变大。图5中说明,对股票进行分组时,当去除中性新闻后,处于两边的组别(如1238910)的股票数量增加,而处于中间的股票数量减少,也就是说去除中性新闻后有利于增加因子的区分度。


图表4:去除中性与不去除中性新闻对比A


图表5:去除中性与不去除中性新闻对比B


下面的图表给出了全部组合的测试结果,基于这些数据我们接下来做详细的解读。

 

图表7给了一个我们非常期待的结果,其中从左到右三列分别为1D5D10D的测试结果,从上到下三行分别为TIMEEQUALNOEXEXRELNOREL的对比。图中每根柱子代表了该因子计算方式下的组合年化收益率。我们有以下几点发现:

无论调仓期是1D5D还是10D,从收益的角度,

a)      TIME的因子收益表现总是好于EQUAL(应该考虑情绪衰减);

b)      EX的因子收益表现总是好于NOEX(应该去除中性新闻);

c)      REL的因子收益表现总是好于NOREL(应该考虑新闻与股票的相关度)。

 

关于TOTMEAN的对比实际上还是要考虑具体的需求,从图6中可以看出以总分计算的因子TOPBOTTOM的股票数量很少,且BOTTOM组的收益明显要低于以平均分计算的因子。说明已考虑热度因子的总分因子,更能反应出负面情绪的影响,捕获负面Alpha。通过图8,我们也可以发现,TOT因子在负面情绪的分层效果要好于MEAN因子,而MEAN因子在正面情绪的分层效果要好于TOT因子,整体上看MEAN因子的分层效果更好。所以,在后面详细的回测测试中,我们将分别使用TOTMEAN的因子,具体是以下两个因子REL_TOT_EX_TIMEREL_MEAN_EX_TIME


图表6:因子测试结果A


图表7:因子测试结果B


 

图表8:因子测试结果C




四、总结


本篇报告介绍了数库的情绪数据,主要是对于各种不同的情绪因子构建方法做了测试与对比,测试的结果与逻辑相符合,所以我们在构建因子时要去除中性新闻数据,考虑新闻与股票的相关度,且考虑情绪的时间衰减。关于采用总分还是均分,则要结合具体的组合需求,因为总分选出的股票数量偏少,而均分的股票数量比较稳定。