A 股 Earnings Reviewer Phase 0 数据可行性
日期:2026-06-12
结论
Phase 1 可以用 RQData-only 先上线。定期报告、业绩预告、业绩快报、预约/实际披露日、审计意见、公告元数据和 PDF 链接都可用。Phase 2 的巨潮/交易所 PDF 文本层也可行,但需要加 PDF parser、下载缓存、限频与异常重试。
RQData 结构化通道
本地环境:.venv-task5 + rqdatac 3.5.2,使用现有 ops/rqdata.env。
可用接口:
| 需求 | RQData 接口 | Phase 0 结果 |
|---|---|---|
| 定期报告三表/PIT 数字 | get_pit_financials_ex + 已有 daily factors |
可用,适合作为资格 diff 主通道 |
| 业绩预告 | performance_forecast |
可用,含预告类型、描述、利润/收入/净利/EPS 区间、同比区间、入库时间 |
| 业绩快报 | current_performance |
可用,含收入、净利、扣非、EPS、ROE、经营现金流及同比 |
| 预约/实际披露日 | get_forecast_report_date |
可用,含首次预约、变更、实际披露日 |
| 审计意见 | get_audit_opinion |
可用,含财报审计/内控审计、审计机构、意见类型 |
| 公告元数据/PDF 链接 | get_announcement |
可用,含标题、类别、信息类型、媒体、PDF 链接、入库时间 |
当前监控范围 smoke:2026-06-11 current_signal_scan 42 只 + P1 持仓 11 只,去重 44 只。
覆盖样本:
| 检查项 | 返回 |
|---|---|
get_forecast_report_date(2025q1-2026q2) |
220 行,覆盖 44/44 |
performance_forecast(info_date=2026-06-12) |
118 行 |
current_performance(info_date=2026-06-12) |
34 行,覆盖 34/44 |
get_audit_opinion(2024q4-2025q4) |
176 行,覆盖 44/44 |
get_announcement(2026-06-01..2026-06-12) |
236 行,覆盖 40/44 |
说明:performance_forecast 和 current_performance 返回“最近一期/已披露事件”,不是每个股票每天都有记录;这符合事件驱动 review 的零噪音原则。
公告/PDF 文本层
RQData get_announcement 已直接返回交易所/巨潮 PDF URL。样本 300502.XSHE 新易盛 2026-06-11 公告下载结果:
- URL 来源:深圳证券交易所 PDF 直链
- HTTP 状态:200
- Content-Type:application/pdf
- 文件大小:138,383 bytes
- 当前 .venv-task5 原本没有 PDF parser;已用 python -m pip install pypdf 做 smoke
- pypdf 可抽取中文文本:样本 3 页,前 2 页抽取 1,634 字
Phase 2 建议:
- 用 RQData get_announcement 做元数据与 URL 主入口,不直接依赖未授权网页爬取。
- 本地缓存 PDF 和抽取文本,key 用 order_book_id + info_date + title + announcement_link hash。
- 加 pypdf 为轻量默认 parser;如遇扫描件/文本层差,再评估 pymupdf 或 OCR。
- 先按标题/info_type 做红旗过滤,只下载需要文本审阅的公告,避免噪音和限频。
MVP 建议
Phase 1 范围建议锁定:
1. 监控集合:strict_breakout ∪ early_watchlist ∪ P1 holdings,每日 EOD 后刷新。
2. 事件源:performance_forecast、current_performance、get_forecast_report_date.actual_info_date + get_pit_financials_ex、get_audit_opinion。
3. 公告元数据:用 get_announcement 标注是否同日有标题级红旗,但 Phase 1 不读 PDF 正文。
4. 价格反应:复用现有 EOD OHLCV,输出披露日/次交易日收益、成交额/20d 成交额比。
5. 输出:仅事件日附加 review card;无事件日不输出。
边界:Phase 1 是信息层/研究层,不进入生产交易规则;downgrade 不自动触发卖出。
风险与待确认
- performance_forecast 的“无记录”不能解释为“业绩无变化”,只代表无预告/无新预告。
- current_performance 覆盖取决于公司是否披露快报,不能替代正式定期报告。
- 定期报告正式数字应以 get_pit_financials_ex 为准,get_forecast_report_date 只负责披露日历。
- Phase 2 文本层需要安装并固定 PDF parser 依赖;当前发现 .venv-task5/bin/pip shebang 仍指向旧 .slock 路径,安装依赖应使用 .venv-task5/bin/python -m pip ...。