事件复盘

事件 Surprise 与市场共振时间线

冻结事前预期,追加实际结果、surprise、价格共振、产业传导和事后评分,避免改写基线。

返回方法论索引在 GitHub 查看源文档 ↗
REVIEWED METHODOLOGY查看源文档
使用边界这是用于组织调查、证据和复核的方法框架;重要事实需以最新主源验证,财经内容不构成投资建议。

Event Surprise & Market Resonance Timeline

用于把“事前预期、事件实际结果、超预期程度、股价共振、产业链影响和事后验证”放进同一个可复用 HTML 模板。它不是目标价模型,也不把事件方向直接转换成交易指令。

1. 页面结构

采用“横向总览 + 纵向证据账本”双层结构:

横向总览(共享时间 X 轴)
  surprise pane:实际相对预期的标准化偏差
  market pane:K 线/归一化走势、成交量、基准与事件垂直线
  future zone:尚未发生的事件、共识区间与情景路径

纵向滚动时间线
  日期/状态轴
  预期冻结快照
  实际结果与 surprise
  市场反应与 benchmark-adjusted return
  产业链传导、持仓映射、失效条件、后续验证和复盘评分

顶部横向图负责快速定位;纵向时间线负责完整阅读和证据审计。不要把所有长文本塞进图上 tooltip。

2. 横向坐标系

时间轴

  • X 轴统一使用事件时间;默认显示北京时间,同时保存原始时区。
  • 用一条 NOW 垂直线区分已发生区和未来区。
  • 事件垂直线贯穿 surprise pane 与 market pane。
  • 周末、休市和盘前/盘后时段必须可识别,不能把非交易时间压成普通 K 线。

Surprise 轴

  • Y 轴中心 0 表示符合已冻结的事前预期。
  • 正值表示超过预期,负值表示低于预期。
  • 推荐显示 -3+3 的标准化 surprise score;极端值 winsorize,避免一个异常值压扁全部事件。
  • 点大小表示事件影响力,不表示预期收益。
  • 点颜色表示结果方向;颜色约定必须显式标注,并允许 A/H 与美股习惯切换。
  • 点形状表示生命周期状态,而不是方向。

事件状态:

形态 状态 含义
空心点 scheduled 日期存在,预期尚未冻结或事件尚未发生。
空心点 + whisker expectation_frozen 已记录共识值或共识区间。
实心点 actual_reported 已填官方实际值,等待市场验证。
实心点 + 外圈 market_reviewed 已补 T+1/T+5 等价格验证。
灰色菱形 not_comparable 指标口径变化、无可靠共识或只能做定性判断。

未来事件不能提前画成向上或向下的“实际点”。它们停在零轴或独立的 upcoming lane,只显示共识区间、预期影响和 source status。

3. Surprise 计算

量化指标保留三层值:

raw_surprise = actual - consensus
surprise_pct = (actual - consensus) / max(abs(consensus), scale_floor)
surprise_score = historical_standardize(surprise_pct)

约束:

  • 先确认“越高越好”还是“越低越好”;库存天数、失业率、成本和亏损等指标可能需要反向。
  • 不同公司、指标和单位不能直接比较 raw surprise。
  • 优先用同公司、同指标、同口径历史分布标准化;历史样本不足时使用带标签的 surprise_pct 或定性等级。
  • 共识来源、样本数、截止时间和更新时间必须记录。事件发生后不得改写冻结的共识。
  • 公司停止披露某指标时改用明确代理,不能把缺失披露自动记成负面 surprise。

定性事件使用证据化等级:

分数 定义
+2 官方订单、指引、产能或政策结果明显强于事前基线。
+1 小幅强于基线,仍有关键缺口。
0 大体符合,或多空证据抵消。
-1 小幅弱于基线。
-2 关键订单、指引、利润率、政策或需求证据明显弱于基线。

定性分数必须带 reasonsource_refsconfidence,不得只保存模型结论。

4. Market Resonance

市场反应至少记录:

  • intraday:披露后至当日/下一交易时段收盘。
  • t1:首个完整交易日。
  • t5:五个交易日。
  • t20:可选,用于中期验证。
  • volume_ratio:相对前 20 个交易日均量。
  • benchmark_return:板块指数或主要宽基同期收益。
  • abnormal_return = asset_return - benchmark_return

Resonance 分类:

Surprise 异常收益 分类
positive_resonance:基本面和价格同向确认。
good_news_sold:可能是预期更高、拥挤、估值杀或宏观压制。
negative_resonance:负面结果得到价格确认。
bad_news_bought:可能是利空出尽或市场已提前定价。
任意 不显著 not_confirmed:等待更长窗口或同链资产验证。

价格方向不能单独验证产业逻辑;必须同时检查订单、指引、capex、利润率、现金流和产业链领先资产。

5. 纵向滚动时间线

每个事件卡片按固定顺序显示:

  1. 时间、公司/事件、状态、影响力和 source tier。
  2. 预期冻结时间、官方指引、共识值/区间、上次实际和事件前价格。
  3. 官方实际值、口径变化、raw/pct/standardized surprise。
  4. 盘中、T+1、T+5、T+20 市场反应和 benchmark-adjusted return。
  5. 上游/下游传导、同链确认、持仓映射和替代解释。
  6. 原始失效条件、下次验证时间和 source gaps。
  7. 事后评分:判断是否正确、理由是否成立、市场是否共振、执行是否遵守纪律。

交互约定:

  • 点击横向事件点,滚动到对应纵向卡片。
  • 滚动纵向卡片时,用 IntersectionObserver 高亮顶部对应事件点和 K 线垂直线。
  • 每个卡片使用稳定 event_id 和 URL hash,支持直接分享。
  • 桌面端顶部图可 sticky;移动端缩成固定高度的 mini-map,不能遮挡正文。
  • tooltip 只显示摘要;完整证据、来源和分析留在纵向卡片。

6. 数据契约扩展

earnings-season-timelineevents[] 中增加以下可选结构:

{
  "event_id": "asml-2026-q2",
  "expectation_snapshot": {
    "frozen_at": "2026-07-15T12:30:00+08:00",
    "official_guidance": [],
    "consensus": [],
    "consensus_range": [],
    "previous_actual": [],
    "source_refs": []
  },
  "actual_results": {
    "reported_at": null,
    "metrics": [],
    "definition_changes": [],
    "source_refs": []
  },
  "surprise": {
    "direction": "pending",
    "raw": null,
    "percent": null,
    "score": null,
    "method": "pending",
    "confidence": "unknown",
    "reason": null
  },
  "market_reaction": {
    "intraday": null,
    "t1": null,
    "t5": null,
    "t20": null,
    "benchmark": null,
    "benchmark_adjusted": null,
    "volume_ratio": null,
    "resonance": "pending"
  },
  "validation": {
    "status": "scheduled",
    "next_check_at": null,
    "thesis_impact": "pending",
    "review_score": null
  }
}

7. Renderer 选型

先按问题类型选 renderer,不追求一个库覆盖所有场景:

问题类型 默认库 原因
Surprise + OHLC + 成交量 + 同轴事件 Apache ECharts grid、共享 axisPointer、dataZoom、candlestick 和事件标记可以在一个实例中联动。
纯 K 线、成交量、价格线和事件 marker TradingView Lightweight Charts 金融图表语义和交互成熟,适合行情终端式主视图。
大量分组事件、持续区间、泳道和聚类 vis-timeline 原生支持 point/range/background、groups、缩放和选择事件。
少量节点的编辑叙事 TimelineJS 适合故事化 slide,不适合高密度财务 ledger;默认不引入。
长证据正文和来源审计 Semantic HTML + IntersectionObserver 保留可访问性、全文搜索、URL hash 和静态降级,不把长文本塞进 Canvas。

默认组合:

  • 横向 surprise/K 线/成交量/情景区:Apache ECharts,多 grid 共享 X 轴,使用 candlestick、line、custom series、markLinemarkAreadataZoomaxisPointer
  • 纵向事件账本:原生 HTML/CSS;使用稳定 DOM id 和 IntersectionObserver 联动。
  • 当前 vis-timeline:保留为日历/泳道总览模式,或在没有 OHLC 数据时配合 Graph2d 展示归一化走势。

替代方案:

  • Lightweight Charts:适合行情终端式 K 线与 marker;复杂 surprise band 和长事件卡仍需自定义。
  • Highcharts Stock:flags、navigator 和 arearange 完整,但生产/商业用途需要评估许可。

依赖纪律:

  • 只引入官方稳定版本,固定版本号,同时提交源码来源、checksum 和 LICENSE;禁止在耐久 HTML 中引用 latest
  • renderer 只消费统一 event schema。更换图表库不能改写冻结预期、实际结果、surprise 和价格验证数据。
  • 应用层只写数据适配、主题、点击联动和静态 fallback;缩放、axis、K 线几何、crosshair、聚类等交给成熟库。
  • 每次升级必须用真实样例检查桌面/移动端、Canvas 非空、点击定位、滚动高亮、无控制台错误和离线打开。

8. 预期走势边界

  • 未来走势默认使用 T0 = 100 的归一化指数或相对收益,不伪造精确目标价。
  • 至少展示 baseupsidedownside 三种路径,并记录主观权重、前提和失效条件。
  • 置信带表示情景范围,不表示统计置信区间,除非确实有可复现模型和样本。
  • 实际时间经过后,冻结原预测路径,追加实际路径和偏差评分;不得用新数据回写旧预测。
  • 情景、surprise 和 market resonance 都是研究状态,不是买卖指令。