TIPP 组合保险:把保本线钉在历史最高净值上
CPPI 有个让人夜不能寐的缺陷:它只保本金、不保利润——牛市赚了 70%,崩盘时地板还钉在起始资金的 85%,账面利润可以全数吐回。TIPP(时间不变组合保险)的修复只改一行代码:地板 = 锁定比例 × 历史最高净值,且只升不降——这是一个棘轮,净值创新高,保本线就跟着上抬,赚到的利润被逐级锁进保险箱。本文用纯 numpy 实现 TIPP,在『先牛市大涨 +77%、再深度崩盘』的路径上与 CPPI 正面对决:崩盘中 CPPI 从高点吐回 43.1%(利润几乎清零),TIPP 只回撤 5.5%、终值 1.469 完胜;代价在牛市段——棘轮地板紧追净值把缓冲垫越压越薄,TIPP 牛市平均仓位只有 57%(CPPI 是 91%)。1500 条蒙特卡洛路径给出完整代价表:TIPP 把 95% 分位终值从 1.84 砍到 1.48(砍掉右尾),换来 MDD>20% 的路径占比从 27.5% 降到 0.0%。锁定比例敏感性扫描揭示 85% 是回撤与收益的平衡点。打穿棘轮不可逆的双刃剑、结构性 cash-lock、波动拖累、锁定比例幻觉四类陷阱(中阶)。
先说结论: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, Fpython「Time-Invariant」这个名字也来自这里:CPPI 隐含一个投资期限(地板对应到期保本额),TIPP 的保护规则与时间无关——任何一天进场看到的规则都一样:峰值的 85% 是底线。没有到期日,永续适用。
三、正面对决:先给你一场牛市,再抽走地毯#
测试路径是精心设计的:5 年日线,前 400 天牛市(风险资产涨到 1.77),第 700-760 天深度崩盘(含单日 -7.5% 跳空,高点回撤超 -50%),其余时间正常波动。这个结构专打两者的差异点:牛市里谁赚得多,崩盘时谁保得住。

图里最值得看的是两条虚线的形态差异:CPPI 的地板(绿虚线)是一条近乎水平的直线,从 0.85 缓慢爬到 0.9;TIPP 的地板(橙虚线)像楼梯一样跟着净值峰值逐级上抬,崩盘前已经爬到 1.415——比 CPPI 的地板高出 57%,这 57% 就是被棘轮锁进保险箱的利润。
崩盘前后的账目(t=700 崩盘开始,t=780 尘埃落定):
| 崩盘前净值 | 地板 | 崩盘后净值 | 崩盘中损失 | |
|---|---|---|---|---|
| 风险资产 | 1.768 | — | 0.842 | -52.4% |
| CPPI m=4 | 1.683 | 0.899 | 0.957 | -43.1% |
| TIPP m=4 | 1.507 | 1.415 | 1.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=4 | 0.976 | -2.4% | -58.7% | -0.14 |
| TIPP m=4 | 1.469 | +46.9% | -14.6% | 1.07 |
TIPP 的最大回撤 -14.6%,正好压在锁定比例承诺的 15% 之内——棘轮兑现了它的合同。

四、代价:棘轮是勒在自己脖子上的#
看到这里 TIPP 像是免费午餐——同一条路径上收益、回撤、Sharpe 三杀 CPPI。别急,这条路径是「先牛市后崩盘」,是 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=4 | 1.034 | 0.933 | 1.838 | 15.7% | 27.5% |
| TIPP m=4 | 1.105 | 0.924 | 1.475 | 10.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 回撤控制》共用实现骨架,建议对照阅读。组合保险不构成投资建议。