Vibe-Trading 盈余修正与指引分析实战:基于 Earnings Revision 技能构建 PEAD 与一致预期动量信号
【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
导读
本文以开源仓库 Vibe-Trading 中 earnings-revision 技能文档 为核心骨架,系统讲解如何在个人交易 Agent 中落地「卖方分析师预期修正(Earnings Revision)、管理层指引(Guidance)与盈余公告后漂移(PEAD)」三类信号的量化分析方法。读完本文,你将掌握 SUE、修正广度(Breadth)、预期离散度等核心指标的计算与解读、PEAD 分位策略与增强过滤器的设计、管理层指引语言模式识别,以及如何通过 Vibe-Trading 的 swarm 多 Agent 预设、调度研究 playbook 与 yfinance/earningsTrend 数据链路把该技能接入真实研究流程。文章同时结合仓库源码给出实现级证据,便于 Agent 与 LLM 检索引用。
一、技能定位:面向美股/港股的盈余事件研究框架
该技能的元信息(SKILL.md)将其定义为analysis类别技能:跟踪卖方分析师估计修正、管理层指引变化和盈余后价格漂移以生成投资信号。其核心理念是——盈余修正是股票市场中最持久、最有文献支撑的 alpha 因子之一:被上调预期的股票倾向于持续跑赢,被下调预期的股票倾向于持续跑输。
在 Vibe-Trading 中,该技能并非孤立文档,而是被多 Agent 编排体系直接引用。例如 earnings_research_desk.yaml 中的revision_tracker(盈余修正与一致预期追踪 Agent)明确挂载skills: [earnings-revision, earnings-forecast],其系统提示词要求量化修正动量并识别 PEAD 机会;而同仓库的 earnings-forecast 技能 则提供 A 股视角的 SUE/PEAD/ERM 实现,与本文的美股/港股视角互为补充。这意味着本文介绍的框架在仓库中已有可运行的编排落点。
二、核心概念一:盈余修正动量(Earnings Revision Momentum)
2.1 信号层级(由强到弱)
原文档给出的信号层级表是整套框架的纲:
| 信号类型 | 说明 | 典型年化 Alpha | 持续性 |
|---|---|---|---|
| 盈余惊喜(beat/miss) | 实际 EPS vs 一致预期 | 事件后漂移 3-8% | 60-90 天(PEAD) |
| 一致预期修正广度 | 上调分析师占比 vs 下调占比 | 多空价差 4-6% | 3-6 个月 |
| 预期幅度变化 | 修正幅度相对先前预期 | 3-5% | 1-3 个月 |
| 指引修正 | 管理层指引相对先前变化 | 事件当天 5-10% | 即时 + 30-60 天漂移 |
| 耳语数(Whisper)偏差 | 实际 vs 买方耳语(非官方一致预期) | 2-4% | 1-2 周 |
2.2 关键指标与计算
标准化未预期盈余(SUE, Standardized Unexpected Earnings):
# Standardized Unexpected Earnings (SUE) sue = (actual_eps - consensus_eps) / std_of_forecast_errors # Interpretation # SUE > +2: large positive surprise → strong PEAD signal # SUE < -2: large negative surprise → strong negative PEAD # |SUE| < 0.5: in-line with expectations → weak signalSUE 的分母是历史预测误差的标准差。仓库配套的 earnings-forecast 技能 补充了实操细节:std建议取过去 8 个季度的预测偏差标准差,并对 A 股给出更细的阈值阶梯(SUE > +2.0 强买入、+1.0~+2.0 温和买入、±1.0 无信号、-2.0~-1.0 卖出、< -2.0 强卖出),可作为美股/港股场景的对照参考。
修正广度(Revision Breadth):
# Revision breadth ratio breadth = (num_upgrades - num_downgrades) / total_analysts # Interpretation # breadth > +0.5: strong consensus upgrade momentum # breadth < -0.5: strong consensus downgrade momentum # |breadth| < 0.2: mixed / no clear direction预期离散度(Estimate Dispersion):
# Analyst disagreement dispersion = std_of_estimates / abs(mean_estimate) # High dispersion (>15%): high uncertainty → larger potential surprise # Low dispersion (<5%): tight consensus → smaller surprise but higher confidence2.3 源码佐证:修正动量数据的真实获取链路
从源码看,仓库为上述「修正广度」和「预期趋势」指标提供了现成数据通道。在 stock_profile_tool.py 的_earnings_trend中,工具会将 Yahoo earningsTrend 模块整理为逐期估计行,每个期间直接携带eps_trend_current、eps_trend_7d_ago、eps_trend_30d_ago、eps_trend_90d_ago(当前/7天前/30天前/90天前的 EPS 预期)以及eps_revisions_up_30d、eps_revisions_down_30d(近 30 天上调/下调家数)——这正是计算 breadth、估算 30/60/90 日修正趋势所需的核心字段。其代码注释也印证了原文档的方法论:「一致预期水平本身只是一张快照,轨迹与上调/下调家数才是修正动量真正要构建的东西」。对应技能文档 tool_get_stock_profile.md 同样列出earnings_trend行包含 EPS/营收估计(avg/low/high)、增长与分析师数量。
三、核心概念二:盈余公告后漂移(PEAD)
PEAD 是股票市场中被验证最稳健的异象之一:公告后价格会沿盈余惊喜方向继续漂移 60-90 天。
3.1 漂移分位策略
| 惊喜分位 | 平均 60 日漂移 | 策略 |
|---|---|---|
| Q5(最高惊喜) | +4% 至 +8% | 做多,持有 60-90 天 |
| Q4 | +1% 至 +3% | 温和做多 |
| Q3(符合预期) | ~0% | 不操作 |
| Q2 | -1% 至 -3% | 温和做空 / 低配 |
| Q1(最差惊喜) | -4% 至 -8% | 做空 / 回避,持有 60-90 天 |
3.2 PEAD 增强过滤器
- 小/中盘股 > 大盘股(分析师覆盖少 → 价格发现更慢)
- 低机构持股 > 高机构持股(信息扩散更慢)
- 方向的首次惊喜 > 连续同向惊喜(首次更未被定价)
- 营收惊喜 + EPS 惊喜同时出现 > 仅 EPS 惊喜
3.3 源码佐证:事件研究法引擎 eventstudy
要验证「漂移」是否真的存在,仓库提供了完整的事件研究法实现 agent/src/quantlib/eventstudy.py。其核心接口event_study(returns, market_returns, events, ...)(L308)计算异常收益 AR、累计异常收益 CAR、平均累计异常收益 CAAR,并输出四类显著性统计量:
- t_statistic:对 CAR 的普通横截面 t 检验,适合快速阅读;
- patell_z:用估计窗口的预测误差项标准化每日异常收益,修正横截面波动差异;
- bmp_z(Boehmer-Musumeci-Poulsen):对标准化值再取横截面方差,可抵御事件本身引发的波动率抬升,是三者分歧时优先报告的统计量;
- corrado_rank_z与cowan_sign_z:非参数秩检验与广义符号检验。
该模块有两个工程设计值得在分析 PEAD 时直接借鉴(L76-L88):估计窗口默认 120 行、事件窗口默认 (-5, 5)、估计窗口与事件窗口之间默认留 10 行间隙,且"估计窗口触碰到事件窗口"是错误而非警告——若模型看到了事件本身,残差会向零收缩、低估自己的发现。同时它用shared_event_dates显式暴露同日聚类事件导致的乐观 p 值,提醒分析者用日历时间组合代替横截面统计。这些正是把 PEAD「60-90 天漂移窗口」从经验法则升级为可回测、可显著性检验的工具链。
四、核心概念三:管理层指引分析(Management Guidance Analysis)
4.1 指引类型与信号权重
| 类型 | 覆盖内容 | 信号权重 |
|---|---|---|
| 营收指引 | 收入端展望 | 高(更难操纵) |
| EPS 指引 | 利润端展望 | 中(可通过回购、税率调节) |
| 利润率指引 | 盈利能力轨迹 | 高(反映定价权与成本控制) |
| 资本开支指引 | 投资意图 | 中(前瞻性增长信号) |
| 分部指引 | 事业部级别细节 | 高(揭示增长来源) |
4.2 指引变化打分逻辑
# Guidance revision scoring def score_guidance_change(current_guide, prior_guide, consensus): # Guide above consensus = positive signal if current_guide.midpoint > consensus * 1.02: guide_vs_consensus = "above" elif current_guide.midpoint < consensus * 0.98: guide_vs_consensus = "below" else: guide_vs_consensus = "inline" # Guide raised vs lowered vs maintained if prior_guide: if current_guide.midpoint > prior_guide.midpoint * 1.01: guide_revision = "raised" elif current_guide.midpoint < prior_guide.midpoint * 0.99: guide_revision = "lowered" else: guide_revision = "maintained" # Strongest signal: raised guidance above consensus # Weakest signal: lowered guidance below consensus注意阈值设定:与一致预期比较用 ±2% 的带宽,与先前指引比较用 ±1% 的带宽,这一不对称设计在实战中非常实用——指引相对前值 1% 以内的微调视为"维持",而相对一致预期的 2% 偏差才视为实质背离。
4.3 指引语言模式识别
| 语言模式 | 解读 | 信号 |
|---|---|---|
| "Raising full-year outlook"(上调全年展望) | 对加速增长有信心 | 强正面 |
| "Reaffirming guidance"(重申指引) | 无变化、按计划推进 | 温和正面(符合预期) |
| "Narrowing guidance range to upper half"(收窄指引区间至上半段) | 不正式修正的隐性上调 | 正面 |
| "Updating guidance to reflect..."("更新指引以反映…") | 指引下调的委婉语 | 负面 |
| "Withdrawing guidance"(撤回指引) | 高不确定性、失去可见度 | 强负面 |
| "Providing preliminary results"(提供初步业绩) | 预告,通常为坏消息 | 负面(若低于一致预期) |
五、核心概念四:盈余质量指标(Earnings Quality Indicators)
5.1 盈余报告中的红旗
- 营收增长但现金流下滑 → 应计操纵(accrual manipulation)
- 变更收入确认政策 → 虚增收入
- DSO(应收账款周转天数)下降的说法与应收账款上升矛盾 → 渠道压货(channel stuffing)
- 通过低税率或回购而非经营改善实现 EPS beat
- 频繁的"非 GAAP 调整"总是加回费用 → 盈余质量存疑
- 库存增速超过营收增速 → 未来减记风险
5.2 质量评分框架
earnings_quality = { "fcf_conversion": fcf / net_income, # >0.8 = good, <0.5 = poor "accrual_ratio": (net_income - ocf) / avg_assets, # <5% = good, >10% = concern "revenue_cash_alignment": revenue_growth - ocf_growth, # small gap = good "non_gaap_gap": non_gaap_eps - gaap_eps, # large gap = red flag "buyback_eps_boost": eps_growth - net_income_growth, # large = artificial }这套质量框架在仓库的 swarm 编排中被直接要求执行:earnings_research_desk 中fundamental_analystAgent 的提示词(earnings_research_desk.yaml)要求计算Accrual ratio: (Net Income - Operating CF) / Average Assets、Revenue-cash alignment、GAAP vs non-GAAP EPS gap、Buyback-driven EPS以及 DSO/DIO 上升等红旗,与本文公式一一对应,说明该质量评分并非纸上谈兵,而是多 Agent 流水线的既定产出物。
六、财报日历与工作流
6.1 财报前分析检查清单
- 一致预期快照:当前 EPS/营收一致预期、修正趋势(30d/60d/90d)
- 历史惊喜模式:公司是否持续 beat/miss?幅度多大?
- 指引对比:上季指引 vs 当前一致预期
- 耳语数:买方预期(连续 beat 的公司通常比街边一致预期高 1-3%)
- 期权市场定价:平值跨式(ATM straddle)隐含波动
- 已公布的同业:来自竞争对手的传导信号(read-through)
6.2 财报后分析检查清单
- 头条数字:EPS 惊喜率、营收惊喜率
- beat/miss 质量:由经营利润驱动,还是一次性项目?
- 指引变化:上调 / 维持 / 下调 / 撤回
- 电话会语气:管理层信心水平、Q&A 防御性
- 分析师反应:即时修正方向(前 24-48 小时)
- 价量反应:跳空高开/低开、反转、相对均量的成交量倍数
6.3 多市场考量:美股与港股
美股:财报季集中在 1/4/7/10 月(季度结束后约 2-6 周);数据来源为 SEC 文件(大型加速申报者 10-Q 在 40 天内、10-K 在 60 天内);一致预期来源为 Bloomberg、Refinitiv、FactSet、Visible Alpha;yfinance 接口为ticker.earnings_dates、ticker.earnings_history。
港股:年报季在 3-4 月、中报季在 8-9 月;多数港股公司半年披露一次而非季度;A+H 双重上市可对比 A 股与港股分析师估计做套利;yfinance 接口为yf.Ticker("0700.HK").financials。
核心差异表:
| 维度 | 美股 | 港股 |
|---|---|---|
| 披露频率 | 季度 | 半年(大多数) |
| 指引实践 | 常见 | 罕见 |
| 分析师覆盖 | 深(大盘股 >20 家) | 较薄(大盘股 5-15 家) |
| 预告制度 | 受监管(Reg FD) | 监管较少 |
| 财报电话会 | 标准动作 | 中/小盘股较少见 |
在仓库的调度研究中,该日历能力由 earnings-season-tracker playbook 承接:它以suggested_schedule: "0 7 * * 1-5"(美东时间每周一至周五 07:00)运行,跟踪持有与观察名单标的的未来 14 天财报日期,并区分公司确认日期与估计日期(该 playbook 明确称之为"财报日历上最容易被误读的字段");其VERDICT段以FILED / REVISED / QUIET三态输出机器可读结论,且严格规定"无买卖建议、不下单、不建模未来季度"。
七、输出格式模板
## Earnings Revision Analysis — [Ticker] ### Consensus Snapshot - **Current FY EPS consensus**: $X.XX (N analysts) - **30-day revision**: [up/down X%] — [N upgrades / N downgrades] - **60-day revision**: [up/down X%] - **Estimate dispersion**: [low/medium/high] (CV = X%) ### Last Earnings Event - **Date**: YYYY-MM-DD | **Quarter**: FY25Q3 - **EPS**: $X.XX actual vs $X.XX consensus (surprise: +X%) - **Revenue**: $X.XB actual vs $X.XB consensus (surprise: +X%) - **Guidance**: [raised / maintained / lowered] — FY25 EPS guide: $X.XX-$X.XX - **Price reaction**: [+X% on day, +X% over 5 days] ### Revision Momentum - **Breadth**: [+0.6 → strong upgrade momentum] - **Magnitude**: [average revision +X% over 30 days] - **PEAD status**: [still within 60-day drift window / drift exhausted] ### Earnings Quality - **FCF conversion**: X% [strong/adequate/weak] - **Accrual ratio**: X% [clean/moderate/concern] - **Non-GAAP gap**: $X.XX [small/large] ### Signal - **Direction**: [bullish / neutral / bearish] - **Catalyst**: [next earnings date: YYYY-MM-DD] - **Confidence**: [high / medium / low]该模板与 earnings_research_desk 中revision_tracker的四大分析模块(Consensus Snapshot、Revision Momentum Scoring、Earnings Surprise History、PEAD Assessment)高度一致,可直接作为 Agent 输出结构化研究结论的契约。
八、在 Vibe-Trading 中的完整落地路径
综合仓库证据,从技能文档到可运行研究的完整链路为:
- 方法论层:本技能 earnings-revision/SKILL.md 提供美股/港股框架;earnings-forecast/SKILL.md 提供 A 股框架(Top-Down/Bottom-Up 预测、扣非 EPS 注意点、融券受限下的只做多 PEAD)。
- 数据层:通过 yfinance 技能 的
ticker.earnings、earnings_dates、earnings_history获取历史实际值;通过 get_stock_profile 工具 的earnings_trend模块获取 7d/30d/90d 预期轨迹与上调/下调家数——这是构造 breadth 与 30/60/90 日修正趋势的现成字段。 - 验证层:用 eventstudy.py 对历史盈余事件做 CAR/CAAR 事件研究,检验漂移与惊喜方向是否显著(报告 BMP z 优先)。
- 编排层:通过 earnings_research_desk.yaml 将 fundamental_analyst、revision_tracker、event_options_analyst、earnings_strategist 四个 Agent 串成流水线(含期权隐含波动对比、PEAD 事件交易与决策树)。
- 持续跟踪层:用 earnings-season-tracker.md 按日历自动生成"预期漂移"报告(只报事实、不报观点)。
九、注意事项与边界
- 专业级信号需要实时一致预期数据源(Bloomberg、Refinitiv);yfinance 提供历史实际值,但不提供实时一致预期;
- PEAD 在公告后最初 30 天最强,60 天后信号显著衰减;
- 撤回指引几乎总是负面——公司业务良好时极少撤回指引;
- 警惕"beat and lower":本季 beat 但下调前瞻指引,往往综合为净负面;
- 本框架仅用于研究用途,不构成投资建议;仓库侧同样约束了自动化边界——调度 playbook 只做事实追踪,不生成买卖观点、不触碰实盘连接器。
相关仓库路径速查
- 技能主文档:agent/src/skills/earnings-revision/SKILL.md
- 事件研究引擎:agent/src/quantlib/eventstudy.py
- 多 Agent 预设:agent/src/swarm/presets/earnings_research_desk.yaml
- 调度研究 playbook:agent/src/scheduled_research/playbooks/earnings-season-tracker.md
- A 股对照技能:agent/src/skills/earnings-forecast/SKILL.md
- 数据工具实现:agent/src/tools/stock_profile_tool.py
- 数据技能:agent/src/skills/yfinance/SKILL.md
【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考