文章详情

厉害了!新闻情绪因子

量化投资与机器学习 2019-10-18
摘要:好买说:海量及时的新闻情绪数据给我们提供一个快速了解量化整个市场及每个上市公司的当前情绪的机会,通过这些数据我们可以及时控制风险,也能借助传统的投资理论建立量化投资模型。

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

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

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

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

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

新闻情绪因子测试

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

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

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

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

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

b. 平均分还是总分?

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

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

c. 是否考虑新闻与股票的相关度?

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

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

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

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

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

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

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

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

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

TOT:计算情绪得分的总分

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

EX:去除中性新闻

NOEX:保留中性新闻 

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

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

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

去除中性与不去除中性新闻对比A

去除中性与不去除中性新闻对比B

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

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

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

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

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

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

总结

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

0 查看全文
相关阅读
今日头条
新手红包大派送