这一页解释每个主题页背后的数据来源、计算方法、不确定性。所有源代码可在 GitHub 验证;所有事件清单都标了 source URL,欢迎 cross-check。
历史类比的核心想法是:当前事件可能没有先例,但同一类事件(地缘紧张 / 央行加息 / 油价冲击 ...)在过去 30 年发生过多次,每次后主要资产的走势构成了一个实证分布。我们用这个分布回答「下一次发生时大概会怎样」。
这跟「拟合一个数学模型再预测」的方式不一样:我们不假设回报是正态分布、不预测均值漂移、不依赖任何参数化假设。样本即推断。
每个主题页底部列出了用到的所有历史事件。每个事件标注了:
每个资产 (SPY / GLD / TLT / 等) 在这些事件后的 T+1 / T+5 / T+30 个交易日的总回报(含分红再投资)都被预先计算。
页面上展示的「中位数」是这些样本的 50 分位数;「区间」是 10 分位 - 90 分位。
样本量小的时候,分布尾部不可信。如果某主题页的样本量 n < 5,主题页会显示「样本量不足,仅供参考」的警示。
这是页面上「输入你的持仓 → 看到 P&L 区间」那一步背后的算法。
for sample in range(1000):
# 从 N 个历史事件中随机抽一个 (with replacement)
event = random.choice(historical_events)
# 这个事件下,所有资产的 T+30 回报作为一个完整向量
return_vector = event.returns # {SPY: +0.041, GLD: +0.024, TLT: -0.012, ...}
# 你的组合 P&L = 持仓权重 × 各资产回报的加权和
portfolio_pnl = sum(weights[t] * return_vector[t] for t in tickers)
# 1000 个样本 → 取 p10 / p50 / p90 作为区间
每次抽一个历史事件,那次事件下所有资产的回报作为一个整体都进入这次蒙特卡洛 trial。这样自动保留了资产间的相关性。
反例:「per-ticker 独立抽样」——SPY 的回报从所有事件的 SPY 收益里随机抽,GLD 单独从 GLD 收益里抽,TLT 也单独抽。这种方法错误地假设它们之间没有相关性。
为什么这很重要:SPY 和 QQQ 历史相关性 ≈ 0.95;危机时 SPY 和 GLD 相关性会从 -0.1 翻正到 +0.4。独立抽样会让你误以为这俩在分散风险,实际上崩盘时它们一起跌。joint sampling 不会让你犯这个错。
Cholesky 是一种从相关性矩阵反推「相关样本」的标准方法,但它假设回报是多元正态分布。极端事件下回报有肥尾、不对称、甚至跳跃;正态假设系统性地低估尾部。joint sampling 直接用历史样本,不需要任何分布假设,肥尾自然保留。
样本越多,分位数估计越可靠。当前各主题样本量:
页面顶部 trust pills 会标注「N 次历史样本」,便于你判断置信度。
所有事件清单 + 资产数据 + 计算逻辑都在 github.com/samque1983/ai-monitor。如果你发现某个事件日期或描述有误,或想加新事件类型,欢迎提 PR。