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 |
关键订单、指引、利润率、政策或需求证据明显弱于基线。 |
定性分数必须带 reason、source_refs 和 confidence,不得只保存模型结论。
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. 纵向滚动时间线
每个事件卡片按固定顺序显示:
- 时间、公司/事件、状态、影响力和 source tier。
- 预期冻结时间、官方指引、共识值/区间、上次实际和事件前价格。
- 官方实际值、口径变化、raw/pct/standardized surprise。
- 盘中、T+1、T+5、T+20 市场反应和 benchmark-adjusted return。
- 上游/下游传导、同链确认、持仓映射和替代解释。
- 原始失效条件、下次验证时间和 source gaps。
- 事后评分:判断是否正确、理由是否成立、市场是否共振、执行是否遵守纪律。
交互约定:
- 点击横向事件点,滚动到对应纵向卡片。
- 滚动纵向卡片时,用
IntersectionObserver高亮顶部对应事件点和 K 线垂直线。 - 每个卡片使用稳定
event_id和 URL hash,支持直接分享。 - 桌面端顶部图可 sticky;移动端缩成固定高度的 mini-map,不能遮挡正文。
- tooltip 只显示摘要;完整证据、来源和分析留在纵向卡片。
6. 数据契约扩展
在 earnings-season-timeline 的 events[] 中增加以下可选结构:
{
"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、markLine、markArea、dataZoom和axisPointer。 - 纵向事件账本:原生 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的归一化指数或相对收益,不伪造精确目标价。 - 至少展示
base、upside、downside三种路径,并记录主观权重、前提和失效条件。 - 置信带表示情景范围,不表示统计置信区间,除非确实有可复现模型和样本。
- 实际时间经过后,冻结原预测路径,追加实际路径和偏差评分;不得用新数据回写旧预测。
- 情景、surprise 和 market resonance 都是研究状态,不是买卖指令。