AI 产品作品集 / 06产品与研究

金融研究 Agent

从新闻中提取事件信号,再用历史数据检验判断。

这是“LLM 在金融中的应用”课程的小组项目。围绕智谱与 MiniMax,我把财务对比作业扩展为数据采集、模型分析和策略回测系统:新闻与公告提供依据,行情用于核对信号,模拟交易检验这些判断是否有用。

项目场景课程小组项目个人角色数据、V2 信号与回测成果形式研究系统与 35 页报告
图 01日度信号

检验研究判断

模型能写出流畅的公司分析,但依据是否可靠、信号是否及时、按它行动是否有效,需要分别验证。我希望把这些问题接到同一套流程里,让每次修改都有结果可对照。

留下依据

保留新闻全文、发布时间、公告原文和行情,判断可以回到具体材料,检查是否重复计算消息或使用了事后信息。

分层检验

先核对模型有没有识别到事件、方向是否合理,再比较策略与简单持有的结果,区分理解问题和交易规则问题。

从材料到验证

数据准备

采集东方财富新闻全文、港交所公告和富途分钟行情,加入恒生科技指数作为参照。新闻按链接、标题和日期去重,再统一公司标识和时间,便于查询消息发布前后的价格变化。

数据规模用途
新闻全文3,034 条识别公司事件、比较报道密度与方向
港交所公告63 份核对正式披露,保留 PDF 原文
一分钟行情105,397 条对齐信号与价格,包含两家公司及恒生科技指数

数据覆盖 2026 年 1 月 8 日至 7 月 7 日。最终入库量与原始抓取量分开统计,避免把重复新闻计入研究样本。

事件信号

先过滤纯行情复述和行业联动,再让模型判断是否出现公司自身的新事件,并分别给出利好、利空分数。一条新闻可以同时包含两种因素。

程序进一步结合报道密度、方向一致性、财务指标和量价变化合成信号。资料不足时降低置信度,覆盖度过低时不输出交易判断。

事件核对

从公告、新闻量异常和超额收益异常中筛选候选事件,经人工与模型辅助核验,得到 33 个标注事件。开发阶段为其中 12 个事件制作逐时对照图,检查信号出现的时间与方向。

下图依次展示分钟股价、模型利好与利空评分、新闻数量。三者共用时间轴,可以发现信号究竟跟随了新事件,还是只在价格变化后复述行情。

图 02事件对照

策略回测

回测把信号转成模拟持仓和调仓动作,计算收益与风险。策略从单只股票试验扩展为“智谱、MiniMax、现金”三方调仓:按事件加减仓,在信号不足或波动过大时保留现金。

图中深蓝线是组合策略,紫色虚线是两只股票等权持有的基准;底部黄色区域表示现金仓位。收益与仓位放在一起,才能解释策略在哪些阶段参与了上涨、在哪些阶段减少了损失。

图 03组合回测
回测范围组合策略等权持有
全期:2026 年 1—7 月约 +94%约 +240%
后期:6 月 1 日—7 月 7 日约 −4.6%约 −27.5%

组合在全期跑输等权持有,在后期下跌中损失较小。回测未计手续费和滑点,后期数据也参与过迭代,波动阈值在观察全部数据后选定;这些结果属于历史模拟,不能当作独立样本外验证。

技术实现

系统用 Python 脚本和 Notebook 组织研究,SQLite 保存数据。模型只负责理解文字,数值合成、交易规则和收益核算由程序完成,便于逐层重跑和比较。

技术分工

部分实现方式在项目中的作用
数据采集Python · HTTP · futu-api抓取公告、新闻全文与分钟行情,清洗后入库
数据保存SQLite按公司和时间关联新闻、行情、公告与评分
文字理解DeepSeek API按 JSON 输出事件类型、方向评分和财务指标
信号与决策Python 分层模块合成分数、检查覆盖度,按阈值和风控规则生成动作
验证与展示回测引擎 · Notebook核对事件、计算收益与风险,生成对照图和策略日志

代码结构

scripts/采集入库
分别抓取公告、新闻、全文和行情;清洗脚本去重,入库脚本写入数据库。
db/research.db研究数据
按职责保存公司、新闻、行情、公告、事件标注和评分,支持时间对齐查询。
agent/v2/信号处理
封装模型调用,分别处理事件、情绪聚合、基本面和量价,再由 signal_composer.py 合成。
agent/v3/策略回测
backtest_engine.py 统一读取数据和计算指标;strategy_portfolio_v2.py 实现三方调仓。
evaluation/事件评估
保存事件参照集、阈值搜索结果和评估图;logs/ 与 report/ 留存运行和迭代记录。

评分与合成

通过规则筛选的新闻进入 DeepSeek,得到公司相关性、事件类型及独立的利好、利空分数。程序用两者之差表示方向,再根据报道密度、一致性、基本面和量价信息合成信号。

模型标识、提示词和输入内容共同生成 SHA-256 缓存键。相同请求优先读取已有评分,调整合成公式和策略时,不必重新调用模型。缺少某类数据时,程序重分配权重并降低置信度。

数据与回测

新闻保留链接、正文和发布时间;行情以公司与时间建立索引。回测引擎按交易日读取数据,将分钟行情聚合为日线收盘价,统一记录每笔模拟交易的入场、出场、方向、盈亏和信号来源。

评估分为 1 月 9 日至 2 月 27 日、3—5 月、6 月 1 日至 7 月 7 日三个阶段。相同引擎计算策略和持有基准的收益、回撤等指标,策略文件可以替换,计算口径保持一致。

课程使用的电话会议文本依据公开财报改写,属于模拟材料;新闻、公告和行情另行采集保存。

数据、信号与验证

V1 基础规则 Agent 由组内其他成员完成。我负责其余部分,包括数据管道、V2 模型信号、回测引擎、多因子策略构建与调优,以及报告整理。

  • 搭建数据管道采集全文、设计数据库、清洗去重并核对覆盖情况,让分析能追溯到原始材料。
  • 扩展 V2 信号用模型处理语境和事件类型,拆分评分、信号合成和决策规则,加入缓存以支持重复调试。
  • 建立评估流程整理事件参照集,检查方向、覆盖与误报;再通过回测比较不同规则的结果。
  • 迭代组合策略从单标的试验扩展到两只股票与现金的组合,记录基准差异、失败原因和后验偏差。

修正误过滤

最初只要标题含“涨超”等价格词,就会被当成行情复述丢弃,连“模型上线后股价上涨”这样的有效新闻也被过滤。我改成同时检查事件词,并优先读取正文:只有包含涨跌描述、却没有事件信息的新闻才排除。

同一开发集的 12 个事件中,方向判断从 7 个正确提高到 10 个正确。剩下两次遗漏分别来自配股消息的方向误读,以及新闻源没有覆盖的公告事件,后续需分别改善理解与数据覆盖。

验证结果

已经完成

  • 数据采集、清洗与 SQLite 存储。
  • 结构化事件评分、信号合成与策略回测。
  • 事件对照图、组合结果与 35 页研究报告。

事件评估

  • 1—2 月开发集:12 个事件,方向判断 10 个正确。
  • 3—5 月训练集:6 个标注事件、120 个评估时刻。
  • 阈值 0.35 下,召回率 66.67%,精确率 9.30%,仍有较多信号未被标注集确认。

项目完成到研究与历史模拟阶段。下一步应冻结规则,在新时段加入交易成本做滚动验证,检查现有判断能否延续。