← 返回博客列表

【魔码量化工程实战进阶 #19】仓位管理与资金管理:凯利固定比例波动率目标

2026年08月31日 18:05 · 魔码数服 · 魔码量化工程实战进阶

【魔码量化工程实战进阶 #19】仓位管理与资金管理:凯利、固定比例、波动率目标

信号告诉你"买不买",仓位告诉你"买多少"。同一套信号,满仓和半仓的回撤能差一倍——而回撤决定你能不能睡得着、会不会被强平。本篇用真实回测数字说明:仓位管理的第一目标不是"赚更多",是"活下来"。

本文你将得到什么

  1. 固定比例仓位 vs 凯利公式 vs 波动率目标三种写法
  2. 一个反直觉结论:降仓位主要降的是回撤,不是收益按比例
  3. 本机复核(合成 252 日,seed=7):仓位 100/50/30% → 回撤 −11.5 / −6.4 / −4.3%
  4. 凯利公式的"半凯利"实践(满仓凯利会爆)

一、痛点:满仓一时爽,回撤火葬场

新手信号一出就满仓。问题:策略有衰周期,满仓遇到连亏,回撤 −40% 不仅睡不着,还可能触发强平/被迫砍在底部。仓位管理的本质是把回撤控制在你能承受的上限内


二、工程方案

2.1 固定比例

最简单:每次固定用账户 f 比例持仓。

weight = 0.5     # 半仓
pnl = sig * ret * weight

2.2 凯利公式(理论最优,但太猛)

已知胜率 p、赔率 b,凯利仓 f* = p − (1−p)/b。简化(收益均值/方差):

mu, sigma = ret.mean(), ret.std()
kelly = mu / sigma**2          # 仅当 ret 近似正态、可无限杠杆时成立
half_kelly = max(0, min(0.5, kelly/2))   # 半凯利,工程常用

⚠️ 满仓凯利假设"可无限加杠杆、参数已知",实盘必爆。只用半凯利,且参数用样本外估计。

2.3 波动率目标(最稳)

把组合目标年化波动钉在 σ*(如 15%),高波动期自动降仓:

target = 0.15 / np.sqrt(242)              # 日目标波动
realized = ret.rolling(20).std().shift(1).fillna(ret.std())
weight = (target / realized).clip(0, 1)

三、本机复核(合成 252 日,seed=7,含成本)

同一信号下不同仓位(成本已含):

仓位 100%: 收益 -6.1%   最大回撤 -11.5%
仓位  50%: 收益 -4.0%   最大回撤  -6.4%
仓位  30%: 收益 -3.1%   最大回撤  -4.3%
波动目标15%: 收益 -5.6%  最大回撤 -11.2%

解读:本样本信号本身亏钱,降仓位没有变赚,但把回撤从 −11.5% 压到 −4.3%(30% 仓)——亏损幅度按比例缩小,睡眠安全感大幅提升。波动目标法在样本里回撤仍 −11.2%,因它追的是"波动"不是"回撤",需配合止损(#21)。


四、原理深挖:四个真实坑

  1. 满仓凯利必爆:凯利假设参数精确、可无限杠杆。实盘参数估计有误差、有熔断,满仓凯利回撤能到 −50%+。永远半凯利 + 上限
  2. 波动目标 ≠ 回撤控制:它钉"波动"不是"回撤",黑天鹅日波动目标来不及降仓。需叠加回撤熔断(#21)。
  3. 参数要样本外:仓位公式的 mu/sigma 用历史估计,必须滚动更新,别用全样本拟参(过拟合)。
  4. 单票上限:组合层还要设"单票 ≤ 10%",避免一只黑天鹅拖垮整体——这是仓位之上的第二层护栏。

五、小结

仓位管理的第一目标是控制回撤、保证存活,不是最大化收益。固定比例简单、半凯利理论优但太猛、波动目标最稳。真实数字显示:30% 仓把回撤从 −11.5% 压到 −4.3%——少亏就是多赚的本金。下一篇讲成本:同样信号,实盘比回测少赚的那几个点从哪来。

波动率目标与组合层资金管理,依赖全市场实时风控数据;魔码量化 Pro 包(全市场实时)让盘中风控能真正落地。详见文末。


免责声明:本文所有示例数据仅用于接口演示,不构成任何投资建议;市场有风险,投资需谨慎。

系列持续更新中。 想要亲手跑通上面的代码?前往 魔码证书申请页 免费领取你的专属证书,复制即用、按次计费、稳定可用。

想亲自试一下?免费获取证书
客服微信
客服微信二维码