正 / 负泡沫置信度(CI,研报主口径)
参数与有效性检验
三大泡沫指标(东证期货研报口径)
CP 泡沫崩盘概率:基于风险率生存函数
1−exp(−∫h),未来一个交易日内至少崩盘一次的概率。DTC 泡沫饱和度:
(t2−t1)/(t_c−t1),泡沫已走过的标准化时间,越接近 1 越接近临界点。
口径提示:本表按研报的多窗口方案计算(窗口 240→30 日, 临界点须在未来 21 个交易日内,并施加振荡次数、阻尼与 ADF 检验);上方「泡沫风险评分」用的是 单一 500 日窗口、临界点可在 60 日内。两者窗口与约束不同,方向出现分歧是正常的——以本表的一致性判断为准。
想看模型怎么算出来的?
为什么用 LPPLS 识别泡沫顶点
泡沫不是一个价格数字,而是一段结构:价格越涨越快,参与者的决策周期一层层缩短, 买卖双方在越来越高的位置上反复换手。Sornette 等人的观察是——这种「加速 + 分级响应」会在价格序列里留下自相似痕迹,并且在临界点前出现越来越密的震荡。
LPPLS 就是把这个结构写成一个可以外推的式子。它不预测「明天涨跌」, 而是回答:如果当前这段加速结构继续自相似地延伸,它的奇点(临界时间 t_c)大致落在哪里。
1. 公式拆解
f = (t_c − t) / τ (τ 为窗口长度,使 f 落在 (0,1])
| 项 | 含义 | 读数 |
|---|---|---|
A | t → t_c 时对数价格的渐近水平 | 临界点附近的理论价格 ≈ eA |
B | 幂律项系数,描述加速方向 | B < 0 才是上行泡沫;B > 0 说明价格在减速(反泡沫/阴跌) |
m | 幂律指数 | 越大,加速越"陡";0.1–0.9 是历史泡沫的常规区间 |
C、φ | 对数周期振荡的幅度与相位 | |C| 越小,震荡越弱,越接近纯幂律 |
ω | 对数频率 | 越大,震荡越密;6–13 对应"周期逐渐缩短"的典型形态 |
t_c | 临界时间(奇点) | 泡沫破裂/反转的理论时点,是模型最关心的输出 |
2. 为什么取对数价格
泡沫关心的是相对涨幅而非绝对点位:从 3000 到 4000 与从 4000 到 5300 是同一段 33%。 取对数后,「涨同样的百分比」在纵轴上等距,幂律结构才具有尺度不变性。 同时 B<0 的条件也只有在对数坐标下才写作「价格低于渐近线 A 并加速靠近」。
3. 三个组成部分如何叠加
横轴为「距临界点的交易日」(对数刻度,越靠右越接近 t_c)。灰色虚线是纯幂律加速项, 蓝色点线是对数周期震荡项,红色实线是两者叠加后的 LPPLS —— 越接近临界点, 加速越陡、震荡越密,这就是模型要识别的特征。
4. 为什么能解出来:线性化
LPPLS 看起来是 7 个参数的非线性拟合,但只需展开余弦项:
其中 C₁ = C·cos φ,C₂ = C·sin φ
⇒ ln p = A·1 + B·u + C₁·v + C₂·w (对 A,B,C₁,C₂ 完全线性)
于是给定 (t_c, m, ω),剩下的四个系数可以用普通最小二乘一次解出。
只需在 t_c × m × ω 的网格上循环,取残差最小的解即可——
不需要非线性优化器,也就避开了局部极小和初值敏感的问题。
本页网格:t_c 从最后交易日 +1 到 +60(步长 3)、m 0.1–0.9(步长 0.1)、
ω 6–13(步长 0.5),单指数约 3,000 次最小二乘。
5. 约束条件:为什么不能只看拟合优度
任意一条上升曲线都能被这个式子"拟合"得很像,所以必须用先验约束筛掉伪解。 这正是 LPPLS 最容易被滥用的地方:只看 R² 会得出几乎全是泡沫的结论。
| 参数 | 搜索范围 | 筛选条件 | 含义 |
|---|---|---|---|
m 幂律指数 | (0, 1) | 0.1 ~ 0.9 | 保证"价格变化速度发散、但价格水平有限" |
ω 振荡频率 | (1, 20) | 3 ~ 16 | 剔除频率过高(拟合噪声)或过低(识别不出周期)的解 |
t_c 临界时间 | [t₂, t₂+0.5(t₂−t₁)] | t₂ ~ t₂+21 日 | 模型只识别"未来较近"的泡沫,不做远期外推 |
振荡次数 O | — | ≥ 2 | O = (ω/2π)·ln[(t_c−t₁)/(t_c−t₂)],窗口内至少两个完整周期 |
阻尼系数 D | — | ≥ 0.4 | D = m|B|/(ω|C|),要求幂律加速主导、而非振荡主导 |
| 残差平稳性 | — | ADF p < 0.01 | 实际价格与拟合曲线的残差不能有单位根 |
| 振荡显著性 | — | Lomb 虚假概率 < 1% | 去趋势后在对数时间轴上确有周期结构(本页暂未实现,见下方说明) |
B < 0 对应正泡沫(加速上涨),B > 0 对应负泡沫(加速下跌)。
两者形态相反,但都要求「趋势加速 + 振荡加密」同时出现。注意 LPPLS 的奇点体现在价格变化速度,而不是价格水平——
当 t→t_c 时 (t_c−t)^m→0,对数价格收敛到有限水平 A,但变化速度发散。
m 顶在 0.9、或 t_c 顶在搜索范围端点上,
说明最优解被网格"卡住"了,此时即使 R² 很高也不能当作泡沫证据。
页面会明确标出「m 顶界」「t_c 触边界」,并相应扣分。
6. 三大泡沫指标:CI / CP / DTC
单窗口拟合只回答"这一段像不像泡沫",但同一段行情换一个观察窗口,结论可能完全不同。 东方证券研报因此用多窗口构造三个指标,分别回答三个问题:泡沫是否存在、短期风险多大、离临界点还有多远。
窗口方案:固定观察日 t₂,窗口长度从 240 个交易日逐步缩短到 30 个交易日 (原文按 1 日步长生成 210 个窗口;本页为控制计算量按 10 日步长生成 22 个), 每个窗口独立拟合一次 LPPLS,得到一组参数。
| 指标 | 定义 | 怎么读 |
|---|---|---|
| CI 泡沫置信度 | CI± = Nq± / NN 为全部窗口数,Nq± 为通过全部筛选条件的正/负泡沫窗口数 |
0~1。越接近 1,说明"当前是泡沫"这件事被越多不同长度的窗口支持。CI 不是崩盘概率—— 它衡量的是形态的一致性。 |
| CP 泡沫崩盘概率 | CP = 1 − exp(−∫_{t₂}^{t₂+1} h(s) ds)风险率 h(t) = m|B|(t_c−t)^{m−1} / [K + |B|((t_c−t₁)^m − (t_c−t)^m)],K=0.1 |
未来一个交易日内至少崩盘一次的概率。每个合格窗口算一次,再组内取均值。 正泡沫对应 CP⁺(向下崩),负泡沫对应 CP⁻(向上反转)。 |
| DTC 泡沫饱和度 | DTC = (t₂ − t₁)/(t_c − t₁) |
0~1,把"泡沫已经走过的时间"标准化。越接近 1 越接近临界点。 不需要到 1 才崩盘,实际转折可能提前。 |
7. 附加:单窗口结构评分(辅助)
- q_fit(45%):相对「对数线性趋势」的增量解释力 ΔR²/0.05。 用增量而不是绝对 R²,是因为任何上涨行情用一条直线拟合都能有 0.5–0.9 的 R²; 只有 LPPLS 比直线明显解释得更多,才说明存在额外的周期结构。
- q_param(30%):B<0(40%)、|C|<1(25%)、阻尼≥0.8(20%)、振荡≥2.5(15%)。
- q_time(25%):
1 − 剩余交易日/前瞻期,越接近 t_c 分越高。 - 打折:t_c 触边界 ×0.55;阻尼不足 ×0.65;两个以上参数顶界 ×0.70。
| 评分 | 含义 |
|---|---|
| ≥ 70(高危) | 结构完整、参数合规、临界点临近 |
| 50–69(警戒) | 结构基本成立但存在瑕疵 |
| 30–49(观察) | 有迹象但不满足全部约束 |
| < 30(偏低) | 未识别出可信的泡沫结构 |
只要有一条硬约束不满足,状态会直接显示为「观察(具体原因)」,不会给出"高危"。
8. 怎么读这张表
- 先看状态,再看 t_c。状态是「观察(m 顶界)」时,t_c 的具体日期没有参考价值。
- 看 ΔR²。它衡量 LPPLS 比一条对数直线多解释了多少。接近 0 说明模型没有提供额外信息。
- 看阻尼 d。d 很小意味着价格更像"平稳趋势"而不是"加速+震荡",泡沫结构不明显。
- 看振荡次数。少于 2.5 说明样本内周期不完整,ω 的估计不可靠。
- t_c 不是"必跌日"。它是模型外推出的奇点,真实反转可能提前、延后,甚至以横盘方式消化。
9. 模型什么时候会失效
- 政策/流动性突变:外生冲击会立刻打断自相似结构,模型无法预知。
- 平稳趋势行情:没有分层加速与震荡,优化器只能把参数推到边界(本页当前多数指数即属此类)。
- V 型反转:临界点前没有足够的对数周期振荡,模型会低估风险。
- 窗口敏感:同一段行情换 365 / 500 / 750 日窗口,t_c 可能相差数月。
- 多解性:不同
(m, ω)组合可能给出相近残差但差异很大的 t_c。
10. 与行业拥挤度的关系
两个模型看的是不同维度,正好互补:
| 维度 | 行业拥挤度 | LPPLS |
|---|---|---|
| 观察对象 | 资金/交易是否过度集中 | 价格结构是否加速到临界 |
| 数据类型 | 量、价、资金流、情绪(16 个指标) | 价格时间序列 |
| 时间尺度 | 日频,滚动分位 | 数百个交易日的整体结构 |
| 典型输出 | 哪些行业拥挤 / 是否共振 | 临界时间 t_c 与泡沫评分 |
| 互补方式 | 拥挤度提示「谁在过热」,LPPLS 提示「整体价格结构是否进入加速末端」;两者同时报警时信号更有分量 | |
11. 实现与复现
- 数据:新浪财经指数日线(经 AkShare),每日收盘价;
- 窗口:默认 500 个交易日,前瞻 60 个交易日,可在命令行调整;
- 求解:3000 次网格 + 线性最小二乘,单指数 2–5 秒;
- 代码:
lppl_analysis.py(模型)、lppl_web.py(页面)、run_lppl.py(入口); - 复现:
python run_lppl.py --window 500 --horizon 60。