1. 课程导入
在金融市场上,价格不仅由财报数字和宏观指标驱动,也由投资者对信息的解读与情绪驱动。一条央行措辞的微妙变化、一份研报中“谨慎乐观”的表述、社交媒体上突然升温的恐慌讨论,都可能在短时间内影响交易行为。金融文本情绪分析要解决的,正是把这类非结构化语言转化为可度量、可回测、可纳入策略的信号。本课程以 FinBERT 为核心工具,带你从零构建一套面向真实金融语料的情绪分析实战能力。
一、为什么金融文本情绪分析有价值
传统量化研究大量依赖结构化数据,但金融领域超过八成的重要信息以文本形式存在:公告、财报、电话会议记录、新闻、研报、论坛帖子、监管问询函等。通用情感模型在电商评论上表现良好,却在金融语境中频繁误判,原因在于金融语言具有三个特殊性。
- 领域语义漂移:“风险”在普通语境中偏负面,但在“风险可控”“风险溢价”中未必是坏消息;“负债”在财报中只是会计科目,并不直接等于利空。
- 方向依赖主体与时间:“公司下调指引”对股价偏负面,但“公司下调成本”可能偏正面;同一句话在盘前与盘后发布,市场反应也不同。
- 表达含蓄且否定密集:“不及预期”“略低于此前指引”“尚未看到复苏迹象”等表述,需要模型理解程度副词、否定范围和比较结构。
因此,金融文本情绪分析的价值可以归纳为三条主线:信息提取(把文本转为情绪分数)、风险预警(捕捉负面情绪突变)、策略增强(将情绪因子与量价因子结合)。它既服务于投研,也服务于风控、舆情监测与合规审查。
二、FinBERT 的定位:不是通用模型,而是金融领域适配器
BERT 通过大规模预训练学习语言表示,再通过微调适配下游任务。FinBERT 则是在 BERT 架构基础上,使用金融领域语料继续预训练或直接微调得到的模型族。它的核心定位不是“更强的通用情感模型”,而是“更懂金融语言的领域适配器”。
与通用情感模型相比,FinBERT 的优势体现在:
| 对比维度 | 通用情感模型 | FinBERT |
|---|---|---|
| 训练语料 | 评论、社交媒体、通用网页 | 财报、新闻、研报、金融公告 |
| 标签体系 | 正/负/中性,偏口语 | 金融正/负/中性,常含不确定类 |
| 典型误判 | 把“负债”判为负面 | 对金融术语与否定结构更稳健 |
| 适用场景 | 泛舆情、客服、评论 | 财报、公告、研报、金融新闻 |
需要强调的是,FinBERT 并非万能。它对长文档、表格、图表和跨句推理仍有局限,通常需要配合分句、截断、聚合与规则后处理。课程后续会反复训练你判断“什么时候该用 FinBERT,什么时候该用规则或大模型”。
三、从文本到信号:核心方法流程
一套完整的金融文本情绪分析流水线,通常包含以下环节。理解这条链路,比记住某个模型参数更重要。
- 数据采集:确定语料来源(新闻 API、公告 PDF、论坛帖子),记录时间戳与标的映射。
- 清洗与分句:去除页眉页脚、HTML 标签、重复段落,按句或按段切分,控制最大长度。
- 分词与编码:使用 FinBERT 对应的 tokenizer,处理特殊符号、数字与英文缩写。
- 模型推理:输出 positive / negative / neutral 概率,必要时加入不确定性标签。
- 聚合打分:按文档、按日、按标的聚合,构造情绪因子。
- 验证与回测:检查准确率、F1、IC、分层收益,避免前视偏差。
下面是一段最小可运行的推理示例,展示 FinBERT 的输入输出形态。实际课程中会替换为完整的数据管道与评估脚本。
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_name = "ProsusAI/finbert"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
text = "公司下调全年营收指引,但毛利率保持稳定。"
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=128)
with torch.no_grad():
logits = model(**inputs).logits
probs = torch.softmax(logits, dim=-1)
labels = ["positive", "negative", "neutral"]
for label, p in zip(labels, probs[0].tolist()):
print(f"{label}: {p:.4f}")
运行后你会得到三个概率值。注意,模型输出的是“这句话在金融语境下的情绪倾向”,而不是“股价会涨还是会跌”。把情绪分数映射为交易信号,需要额外的假设与验证。
四、典型应用场景与常见误区
在真实业务中,金融文本情绪分析常见于以下场景:
- 财报电话会议:管理层语气变化、分析师提问情绪,可作为业绩拐点的辅助观察。
- 公告与监管文件:问询函、风险提示公告的负面情绪强度,用于事件驱动预警。
- 新闻与研报:构建日频情绪因子,与动量、波动率因子结合。
- 社交媒体舆情:监测散户情绪极端值,辅助判断短期拥挤度。
复盘这些问题会发现,金融文本情绪分析的难点往往不在模型本身,而在数据对齐、标签定义、聚合方式和评估设计。课程后续章节会围绕这些环节逐一拆解。
五、课程学习目标与整体知识框架
完成本课程后,你应当能够独立完成以下任务:
- 解释金融文本情绪分析的核心概念、价值边界与适用条件。
- 搭建 FinBERT 推理环境,完成数据清洗、分句、编码与批量推理。
- 设计情绪聚合规则,构造可按日、按标的使用的情绪因子。
- 使用准确率、F1、IC、分层回测等指标评估情绪信号。
- 识别并规避前视偏差、标签泄漏、样本不平衡等常见陷阱。
- 将情绪因子与量价因子结合,形成可复现的研究流程。
整体知识框架可以概括为“数据—模型—信号—验证”四层。下面的 SVG 展示了这四层之间的数据流与关键对象,帮助你建立全局视角。
这张图强调一个关键原则:模型只是中间环节,真正决定研究质量的是数据对齐、信号构造与验证设计。接下来的章节将沿着这四层逐步展开,从环境搭建、数据清洗,到 FinBERT 推理、因子构造与回测评估,最终形成一套可复现的金融文本情绪分析工作流。