halo 的技术博客

返回

先说结论:TIPP 用一个只升不降的棘轮地板,把 CPPI「只保本金、不保利润」的痛点修掉了——牛市里每创一次净值新高,保本线就上抬一格,已赚的利润被锁死在地板之上;代价是地板永远紧追净值,缓冲垫被结构性压薄,牛市仓位只有 CPPI 的六成,右尾收益被系统性砍掉。它是确定性和上行空间之间的一次显式交换,本文把交换比价用蒙特卡洛算给你看。

一、CPPI 的痛点:赚了 70% 之后,保险还在保「本金」#

上一篇讲过 CPPI 的机制:风险敞口 = 乘数 × (净值 − 地板),地板设在起始资金的 85%,按无风险利率缓慢增长。这套机制保护的是起点

问题来了:假设你 100 万入场,牛市三年做到 177 万。此刻你的地板在哪?还在 90 万附近(85 万复利爬了三年)。这意味着什么?从 177 万跌回 90 万——吐掉 49%——你的「保险」全程一声不吭。它确实在履约:合同保的是「不亏穿 85 万本金」,从没承诺保护你赚到的 77 万利润。

对人性而言这是致命的。行为金融学里这叫参照点漂移:账户到过 177 万之后,你的心理参照点就是 177 万,跌回 120 万你感受到的不是「还赚 20%」,是「亏掉了 57 万」。一份不保护参照点的保险,在心理账户上约等于没有保险。

TIPP(Time-Invariant Portfolio Protection,Estep 和 Kritzman 1988 年提出)的修复思路直白到近乎粗暴:让地板追着历史最高净值走

二、只改一行代码:地板装上棘轮#

CPPI 的地板更新是 F[t+1] = F[t] * (1 + rf)。TIPP 改成:

peak = max(peak, V[t+1])                    # 跟踪历史最高净值
F[t+1] = max(F[t], floor_pct * peak)        # 地板 = 锁定比例 × 峰值,只升不降
python

两个 max 各司其职:第一个让峰值只增不减,第二个让地板只升不降——这是一个棘轮(ratchet),只朝一个方向转。锁定比例 85% 的含义变成:无论何时,你的净值都不会跌破「历史最高点的 85%」。注意这句话的量词——不是「起始资金的 85%」,是任意时刻历史峰值的 85%。换句话说,TIPP 直接把最大回撤钉死在 15% 以内(连续交易假设下)。

完整实现(与上一篇 CPPI 共用骨架,日频再平衡):

import numpy as np

def run_tipp(risky_ret, m=4, floor_pct=0.85, rf_daily=0.02/252, max_lev=1.0):
    """TIPP:地板 = floor_pct × 历史最高净值,棘轮只升不降"""
    n = len(risky_ret)
    V = np.empty(n + 1); V[0] = 1.0
    F = np.empty(n + 1); F[0] = floor_pct
    peak = 1.0
    for t in range(n):
        cushion = max(V[t] - F[t], 0.0)
        w = min(m * cushion / V[t], max_lev)   # 敞口 = 乘数 × 缓冲垫
        V[t+1] = V[t] * (1 + w * risky_ret[t] + (1 - w) * rf_daily)
        peak = max(peak, V[t+1])
        F[t+1] = max(F[t], floor_pct * peak)   # 棘轮
    return V, F
python

「Time-Invariant」这个名字也来自这里:CPPI 隐含一个投资期限(地板对应到期保本额),TIPP 的保护规则与时间无关——任何一天进场看到的规则都一样:峰值的 85% 是底线。没有到期日,永续适用。

三、正面对决:先给你一场牛市,再抽走地毯#

测试路径是精心设计的:5 年日线,前 400 天牛市(风险资产涨到 1.77),第 700-760 天深度崩盘(含单日 -7.5% 跳空,高点回撤超 -50%),其余时间正常波动。这个结构专打两者的差异点:牛市里谁赚得多,崩盘时谁保得住

TIPP 棘轮地板 vs CPPI 静态地板

图里最值得看的是两条虚线的形态差异:CPPI 的地板(绿虚线)是一条近乎水平的直线,从 0.85 缓慢爬到 0.9;TIPP 的地板(橙虚线)像楼梯一样跟着净值峰值逐级上抬,崩盘前已经爬到 1.415——比 CPPI 的地板高出 57%,这 57% 就是被棘轮锁进保险箱的利润

崩盘前后的账目(t=700 崩盘开始,t=780 尘埃落定):

崩盘前净值地板崩盘后净值崩盘中损失
风险资产1.7680.842-52.4%
CPPI m=41.6830.8990.957-43.1%
TIPP m=41.5071.4151.424-5.5%

CPPI 崩盘前净值 1.683、地板才 0.899——缓冲垫厚达 0.78,公式给出的权重是满仓。于是崩盘来临时它几乎全程满仓挨打,从高点吐回 43%,三年牛市利润几乎清零,终值 0.976 甚至跌破本金线附近。地板太远的保险等于没系安全带。TIPP 崩盘前地板已咬到净值脚后跟(1.507 vs 1.415,缓冲垫只剩 0.09),权重早被压到很低,崩盘只伤到 5.5%。

全程结果:

策略终值总收益最大回撤Sharpe
风险资产0.848-15.2%-70.8%-0.25
CPPI m=40.976-2.4%-58.7%-0.14
TIPP m=41.469+46.9%-14.6%1.07

TIPP 的最大回撤 -14.6%,正好压在锁定比例承诺的 15% 之内——棘轮兑现了它的合同。

回撤对比

四、代价:棘轮是勒在自己脖子上的#

看到这里 TIPP 像是免费午餐——同一条路径上收益、回撤、Sharpe 三杀 CPPI。别急,这条路径是「先牛市后崩盘」,是 TIPP 的主场。代价藏在权重轨迹里:

权重对比:TIPP 仓位被结构性钳制

牛市段(前 400 天)CPPI 平均仓位 91%(缓冲垫厚,公式给满仓),TIPP 只有 57%。原因是结构性的:净值每创新高,地板立刻跟上来咬住脚后跟,缓冲垫 = 净值 − 0.85×峰值,在净值≈峰值时缓冲垫恒定被压在净值的 15% 附近——这正是「时间不变」的另一面:TIPP 的缓冲垫占比有一个结构性上限 (1 − 锁定比例),永远无法像 CPPI 那样越赚越厚。乘数 4 × 15% = 60%,这就是 TIPP 在创新高途中仓位的天花板。

如果市场不崩呢?一路长牛,TIPP 拿 57% 仓位跟着 CPPI 的 91%,收益差距会持续累积。你为一场可能不来的崩盘,预付了每一天的仓位折扣

1500 条蒙特卡洛路径(4 年、含随机跳空)把这笔交换算清楚:

蒙特卡洛:终值与回撤分布

中位终值5% 分位95% 分位中位最大回撤MDD>20% 占比
CPPI m=41.0340.9331.83815.7%27.5%
TIPP m=41.1050.9241.47510.9%0.0%

读法:TIPP 把 95% 分位终值从 1.84 砍到 1.48——右尾(最好的那批行情)被砍掉约 36 个百分点;换来的是 MDD 超过 20% 的路径占比从 27.5% 降到 0.0%,回撤分布整体左移。有趣的是中位数 TIPP 反而略高(1.105 vs 1.034):在含跳空的普通路径上,CPPI 「吐回利润再重来」的模式拖累了典型表现,而 TIPP 锁住利润的棘轮在中等波动路径上是净贡献。TIPP 卖掉的是彩票,买回的是确定性

五、锁定比例:85% 不是玄学,是权衡的解#

锁定比例(地板/峰值)是 TIPP 最重要的参数。扫描 75% 到 95%:

锁定比例敏感性

锁定比例终值最大回撤平均仓位
75%1.777-24.6%46%
80%1.619-19.6%37%
85%1.469-14.6%29%
90%1.328-9.7%21%
95%1.196-4.7%12%

规律干净得像教科书:锁定比例每加 5 个点,最大回撤降约 5 个点,终值掉约 0.15。极端的 95% 锁定把回撤压到 -4.7%,但平均仓位只剩 12%——这已经不是「有保护地参与市场」,是「持有货币基金外加一点股票味精」。85% 恰好落在拐点附近:回撤被压进 15%,仓位还能维持在有意义的水平。实务上锁定比例应该从你的真实痛点反推:机构风控红线是回撤 20%,就用 80%;个人无法忍受 10% 以上,就用 90%,同时接受收益相应缩水。

六、四类真实陷阱#

陷阱一:棘轮不可逆是双刃剑。 地板只升不降意味着一次「假突破」也会永久抬高地板:净值冲高 3% 又跌回,地板却已按新峰值上移,缓冲垫被永久性压缩一截。高波动震荡市里,棘轮被反复的假新高逐步拧紧,仓位越勒越低——TIPP 在无趋势的高波动环境里退化最快。

陷阱二:TIPP 的 cash-lock 比 CPPI 更结构性。 CPPI 锁死需要一场深跌;TIPP 不需要——只要净值长期贴着峰值的 85% 附近震荡,缓冲垫就长期趴在零附近,仓位长期个位数。而且 TIPP 的地板不会像 CPPI 那样被时间稀释(CPPI 地板相对净值的占比会随净值增长下降),TIPP 锁死后连「等地板变得相对便宜」这条出路都没有,只能靠无风险利息一点点垫高净值。工程缓解与 CPPI 相同:定期重置、权重下限、或者干脆换成滚动买入认沽。

陷阱三:波动拖累在 TIPP 上被放大。 TIPP 的权重变化方向与 CPPI 相同(跌减仓、涨加仓),但因为缓冲垫更薄,同样的净值波动引起的权重摆动比例更大,震荡市里「高买低卖」的磨损率更高。本文未计交易成本;实盘中 TIPP 的换手率通常高于同参数 CPPI,锁定比例越高磨损越凶。

陷阱四:「锁定 85%」不等于「最多亏 15%」。 这个承诺有两个前提:连续交易(跳空面前失效,gap risk 与 CPPI 完全同源,乘数铁律 m < 1/单期最大跌幅 照样适用)和无摩擦执行(成本、滑点、最小交易单位都会让实际回撤略穿 15%)。蒙特卡洛里 TIPP 的 5% 分位终值 0.924,意味着最差路径亏损仍然略超地板隐含的下限——数学承诺和工程现实之间永远有一条缝。

七、收尾#

TIPP 对 CPPI 的修改只有一行——F = max(F, 0.85 × peak)——但这一行改变了保险的标的:从保护本金变成保护峰值,从保护起点变成保护你最在意的那个心理参照点。实测代价表清清楚楚:牛市仓位 57% vs 91%,95% 分位终值 1.48 vs 1.84,换来最大回撤钉死在 15% 之内、MDD>20% 概率归零。它不是更好的 CPPI,是不同风险偏好的 CPPI:如果你的痛点是「亏掉本金」,用 CPPI;如果你的痛点是「吐回利润」——对大多数真实人类而言是后者——TIPP 才是那份对症的保单。只是记住:棘轮锁住利润的每一格,同时也勒紧了你参与下一段行情的绳索。保险的第一定律在这里依然成立——保费永远是真实的,区别只在于你用什么货币支付:权利金、仓位折扣,或是错过的右尾


本文所有模拟数据与图表由纯 numpy 生成,参数与代码可复现。与上一篇《CPPI 回撤控制》共用实现骨架,建议对照阅读。组合保险不构成投资建议。

TIPP 组合保险:把保本线钉在历史最高净值上
https://blog.halo26812.eu.org/blog/tipp-portfolio-insurance
Author halo
Published at 2026年7月25日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨