风险感知交易智能体

首页 › 指南

新闻标题能预测股价吗?按时间点检验十个新闻因子

我们把风险感知交易智能体研究时段背后 2020、2022、2026 年的新闻标题做成 64 只美国大盘股的十个每日新闻因子,每天只用收盘前已经发布的新闻,再用次日开盘起算的收益在 2020、2022、2026 年分别检验。结果没有一个站得住,连语言模型打的情绪分也不例外。如果像很多新闻回测那样按日历日期把新闻对齐到价格,标题情绪看起来就像一个真因子。标题有许可限制,不随包分发;结论公开。

在 GitHub 上获取 用新闻回测 数据集

没有一个新闻因子站得住。十个里八个是噪音。另外两个(标题数,以及标题里同时点名的其他公司数)1 天 IC 小而为负,加入动量、反转和低波动后就被吸收了。

语言模型读标题读得更好,但还不够好。用 gpt-5.6-luna 打的情绪分 1 天 IC 0.021(t = 2.5),三年都为正,但会被价格因子吸收,而且变得太快,交易不了。

按日历日期对齐会凭空造出一个因子。词典情绪分按日历日期对齐、收盘到收盘检验:秩 IC 0.032(t = 3.4),多空每天 36.9 bp。按发布时间对齐、从次日开盘交易:0.005(t = 0.6)和 7.4 bp。

差距大多是提前读到的。其中三分之二,即 IC +0.018(t = 4.8),来自收盘后才发布的新闻,三年里每一年都有。

按日期对齐,因子就出现了

拿一个因子,即一只股票当天标题的词典情绪分均值,算两遍。按发布时间对齐,一条标题从它发布之后的第一个收盘起才算数,交易在次日开盘:这是交易员真正能做到的。按日历日期对齐,16:05 发布的标题会落到当天 16:00 收盘那一行,收盘到收盘的收益在这条标题出现之前就开始算了。

词典情绪分,1 天,2020 + 2022 + 2026秩 IC(t)每天多空
按发布时间,从次日开盘算起(能交易到的)0.005 (0.6)7.4 bp
按发布时间,收盘到收盘0.014 (1.5)7.8 bp
按日历日期,收盘到收盘(捷径)0.032 (3.4)36.9 bp
按日历日期,从次日开盘算起0.004 (0.4)5.6 bp

只有捷径读到了未来。收益区间固定为收盘到收盘时,按日历日期对齐让 IC 多出 +0.018(t = 4.8),占和诚实回放之间差距的三分之二。按日历日期对齐、从次日开盘算起不会漏,因为晚上的新闻在次日开盘前已经发布,而它并不比诚实回放好:捷径的优势就是收盘后新闻带来的隔夜涨跌。

2026、2022、2020 年标题情绪的每日秩 IC 累计:按日历日期对齐一路上升,按发布时间对齐在 2026 年停在零附近、在 2020 年下跌

这不是某一年运气好。漏洞在 2026 年是 +0.0157(t = 1.8),2022 年 +0.0209(t = 3.7),2020 年 +0.0165(t = 3.1);本包的核验后新闻分也一样:按日期对齐 0.017(t = 2.2),按时间对齐 -0.001(t = -0.1)。语言模型的情绪分也一样,而且更明显:按日期对齐 0.050(t = 5.6),按时间对齐 0.021(t = 2.45)。

词典情绪分、核验后新闻分和 LLM 情绪分在两种对齐方式下的 1 天平均秩 IC,合并和分年份

挪动了多少:按日历日期对齐,会把 2026 年 13% 的标题和 62.5% 的 SEC 8-K 文件(公司多在收盘后发布)放到比发布时间所允许的更早的交易日;2020 和 2022 年是 10% 到 11% 的标题。

三个市场里的十个新闻因子

每天在 64 只股票之间给每个因子排序,和从次日开盘到 1、5、20 个交易日后开盘的全收益比较。t 值用 Newey-West,控制的价格因子是 12-1 个月动量、1 周和 1 天反转、60 天低波动。

十一个新闻因子和四个价格因子的 1 天平均秩 IC,合并值带 95% 区间,并分年份
因子结论IC,1 天(t)IC,5 天(t)控制价格因子后(t)
LLM 情绪分(gpt-5.6-luna)弱+0.021 (+2.49)+0.023 (+2.06)+1.09
标题数弱-0.013 (-2.25)-0.010 (-1.00)-1.01
共同提及弱-0.020 (-2.04)-0.018 (-1.40)-1.28
关注度异常噪音-0.006 (-1.23)+0.004 (+0.58)-0.31
词典情绪分噪音+0.005 (+0.55)+0.009 (+0.83)-0.17
核验后的新闻分噪音-0.001 (-0.09)-0.001 (-0.08)-1.05
已确认的故事(2026)噪音-0.005 (-0.53)+0.003 (+0.25)-0.31
单一来源的故事噪音-0.010 (-1.61)-0.008 (-0.71)-0.44
风险红旗噪音+0.008 (+0.99)+0.002 (+0.16)+0.82
财报 8-K(2026)噪音-0.008 (-0.60)-0.010 (-0.77)+0.14
新颖度噪音+0.002 (+0.17)+0.005 (+0.41)-0.34
动量 12-1(价格因子,作参照)+0.027 (+2.26)+0.034 (+1.67)

有用 = 1 天或 5 天的合并 |t| 至少 2,每年符号一致,控制价格因子后 |t| 仍至少 2(表中是 Fama-MacBeth 斜率的 t 值)。已确认的故事和财报 8-K 只有 2026 年有:2020 和 2022 年的标题只有一个来源,也没有 SEC 文件,那两年没有故事能被确认。

五分组、衰减和换手

六个因子各五分组的次日收益,相对当天均值

标题情绪最高一组比最低一组每天多 7.3 bp(t = 1.0),和随机波动分不开。这个因子最高一组每天要换掉 85%,所以每边成本 2.2 bp 就把价差扣完了,比本包默认的 5 bp 滑点还低。语言模型的情绪分稍好一点,每天 8.9 bp(t = 1.5),但变得一样快(最高一组每天换掉 82%),每边成本 2.7 bp 就扣完了。作为对比,动量的最高一组每天保留 94%。

决策后第 k 天那一天收益的秩 IC:标题情绪、核验后新闻分、标题数和动量

新闻因子的衰减曲线从第一天起就在零附近来回摆;动量的曲线一个月里都平稳地为正。

这些因子

某一天的每个值只用当天收盘(纽约时间 16:00,提前收盘日 13:00)之前发布的新闻。有一个测试会改写某个收盘及之后发布的每条标题、再加几条新标题,检查那个收盘及之前的特征一个都不变。

自己跑一遍

pip install risk-aware-trading-agents        # Python 3.10+
riskaware research factors                   # 三年全跑,约 80 秒
riskaware research factors --period 2022     # 只跑一年
riskaware research factors --llm             # 加一个由本地 LLM 打分的情绪因子(Ollama,免费)

运行会把 factors.json(全部数字)、factors.md、本页的图和每日 IC 写进一个文件夹。加 --llm 时,你选的模型给每条标题打 -1 到 1 分,分数会缓存,每条只打一次;命令先打印 token 估计,付费模型开跑前会先问你。详见 docs/zh/news-factors.md。

局限

这是 64 只美国最大的股票,报道多、定价快;新闻对小盘股可能更重要。新闻只有标题,来自一个有许可的来源,2026 年另有 SEC 8-K 文件。决策每天收盘后做一次,所以对标题更快的反应超出了日线能检验的范围。每个市场只有一年,时间短:IC 0.01 需要好几年才能和 0 分开。

常见问题

新闻情绪能预测股票收益吗?

在这次检验里不能。收盘前发布的标题的词典情绪分,对次日开盘起算收益的 1 天秩 IC 是 0.005(t = 0.6);控制价格因子之后,十个新闻因子没有一个站得住。

按日历日期对齐会把新闻因子虚增多少?

对标题情绪,IC 从 0.005 变成 0.032,多空价差从每天 7.4 bp 变成 36.9 bp。差距的三分之二,即 IC +0.018(t = 4.8),来自收盘后才发布的标题。

我能自己跑这个新闻因子检验吗?

有新闻标题就能。价格随安装包提供;这些结论背后的标题有许可限制,不随包分发,所以 riskaware research factors 需要你把新闻文件的副本放进 ~/.riskaware/data/news,或者按同样的规则用免费的 SEC 8-K 公告、你自己的新闻 API key 或任意 CSV 建自己的新闻文件。

能用语言模型给标题打分吗?

能。--llm 用本地 Ollama 模型免费给每条标题打分,或者在显示 token 估计后调用付费 API,并把 LLM 情绪因子加进同样的检验;也可以用 --llm-export 和 --llm-import 交给任何批量接口去打分。用 gpt-5.6-luna 打分,它是本页最强的新闻因子(1 天 IC 0.021,t = 2.5,三年都为正),但仍然会被价格因子吸收。2020 或 2022 年之后训练的模型可能知道后来发生了什么,所以它对那两年的打分不是盲的;luna 的 IC 在 2020 年最低,这让人稍微放心,但不是证明。

更多指南

用新闻回测,不用未来函数按时间点回放和防偷看检查 按时间点记录的市场数据价格、VIX 和新闻,附 SHA-256 哈希 测试 LLM 交易智能体一步一步、可盲测、通过 MCP