第九章 资金管理模型:凯利公式、固定比例法、波动率调整仓位

资金管理,说白了就是「你该押多大」。

很多做基差交易的朋友,策略回测漂亮得很,实盘一跑就爆仓。为什么?不是策略不行,是仓位没管好。我见过太多人,明明策略胜率60%,却因为一次重仓亏损直接出局。嗯,这章我们就来聊聊怎么管住自己的手。

9.1 为什么资金管理比策略本身更重要?

你想想看,一个胜率70%的策略,如果每次全仓干,连续三次亏损就归零了。基差交易虽然波动相对小,但遇到极端行情(比如2020年3月的原油),基差可以瞬间拉大到离谱的程度。

我个人习惯把资金管理分成三个层次:

  • 生存层:保证不会爆仓
  • 增长层:在控制风险的前提下追求复利
  • 优化层:根据市场状态动态调整

核心原则:永远不要让你的单笔亏损超过总资金的2%。这是我从业十年,用真金白银换来的铁律。

9.2 凯利公式:理论上最优,实战要打折

凯利公式是啥?简单说,它告诉你每次该押多少比例,能让资金增长最快。

标准凯利公式:

f* = (bp - q) / b

其中:

  • f* = 最优投资比例
  • b = 赔率(盈亏比)
  • p = 胜率
  • q = 败率(1-p)

举个例子。假设你的基差交易策略:

  • 胜率 p = 60%
  • 盈亏比 b = 1.5(赚1.5倍,亏1倍)

代入公式:

f* = (1.5 * 0.6 - 0.4) / 1.5 = (0.9 - 0.4) / 1.5 = 0.5 / 1.5 ≈ 0.333

也就是说,凯利建议你每次押33%的资金。

⚠️ 注意:凯利公式假设你知道精确的胜率和赔率。但实盘中,这两个参数都是估计值。我曾经用凯利全仓干过,结果参数一偏差,回撤直接超过50%。

实战中我怎么做?

我用「半凯利」或者「四分之一凯利」。也就是把凯利算出来的比例砍一半甚至砍到四分之一。比如上面算出来33%,我实际只押8%-16%。

为什么?因为凯利公式假设你可以无限次重复交易,但实盘里你只有有限的资金和有限的机会。保守一点,活得久一点。

9.3 固定比例法:简单粗暴,适合新手

固定比例法,就是每次固定用总资金的某个比例去开仓。比如每次用2%的资金去开一个头寸。

这个方法的好处:

  • 简单,不用算胜率赔率
  • 资金曲线平滑,回撤可控
  • 适合基差交易这种中低频策略

我一般建议:

账户规模 建议单笔比例 最大同时持仓数
10万以下 5% 3-5个
10万-100万 3% 5-10个
100万以上 1%-2% 10-20个

举个例子。你有50万资金,每次用2%也就是1万去开一个基差头寸。如果同时开5个,总占用资金5万,占总资金10%。这样即使某个头寸爆了,损失也就2%。

💡 我的经验:固定比例法虽然简单,但有个坑——当账户亏损时,你开仓的绝对金额会变小,回本会变慢。所以我会结合「盈利加仓」的思路,账户盈利10%后,把比例调高0.5%。

9.4 波动率调整仓位:动态适应市场

基差交易的波动不是一成不变的。有时候基差一天波动0.5%,有时候一天波动3%。如果你用固定比例,遇到波动大的时候,实际风险敞口会失控。

波动率调整的核心思想:波动率越大,仓位越小

具体做法:

仓位比例 = 目标风险 / 预期波动率

比如:

  • 你设定目标风险为每笔亏损不超过总资金的1%
  • 当前基差的日波动率是2%
  • 那么仓位比例 = 1% / 2% = 50%

如果波动率上升到4%,仓位比例就降到25%。

实战代码示例

import numpy as np

def volatility_adjusted_position(capital, risk_per_trade, volatility, atr_multiplier=1.0):
    """
    波动率调整仓位计算
    
    参数:
        capital: 总资金
        risk_per_trade: 单笔风险比例 (0.01 = 1%)
        volatility: 当前波动率 (标准差)
        atr_multiplier: ATR倍数调整
    """
    # 基础仓位
    base_position = capital * risk_per_trade
    
    # 波动率调整因子
    vol_factor = 1.0 / (volatility * atr_multiplier)
    
    # 调整后仓位
    adjusted_position = base_position * vol_factor
    
    # 限制最大仓位
    max_position = capital * 0.3  # 不超过总资金30%
    
    return min(adjusted_position, max_position)

# 示例
capital = 1000000  # 100万
risk = 0.01        # 1%风险
vol = 0.02         # 2%日波动率

position = volatility_adjusted_position(capital, risk, vol)
print(f"建议仓位: {position:.2f} 元")

关键点:波动率调整不是让你频繁交易,而是让你在波动率低的时候多赚点,波动率高的时候少亏点。基差交易里,波动率往往在交割日前会放大,这时候减仓是明智的。

9.5 三种方法的对比与选择

我整理了一个对比表,方便你根据自己情况选:

方法 优点 缺点 适合场景
凯利公式 理论上增长最快 需要精确参数,容易过激 高胜率、高盈亏比的策略
固定比例法 简单、稳定、易执行 不能动态适应市场 新手、中低频交易
波动率调整 动态控制风险 需要实时计算波动率 波动率变化大的品种

我个人习惯是:用固定比例法打底,叠加波动率调整。比如固定2%仓位,但如果波动率超过3%,就降到1%。如果波动率低于1%,可以提到3%。这样既简单,又灵活。

⚠️ 避坑指南:我曾经在2021年螺纹钢基差交易中,只用固定比例法没做波动率调整。结果遇到政策调控,基差波动率从1%飙到5%,单日亏损直接吃掉了我一个月的利润。从那以后,波动率调整就成了我的标配。

9.6 资金管理的核心框架

下面这张图是我自己总结的资金管理决策流程,你可以照着搭:

资金管理决策流程 总资金 风险预算(单笔1%-2%) 选择资金管理方法 凯利公式 需胜率+赔率 固定比例法 简单稳定 波动率调整 动态适应 最终仓位比例

这张图的核心逻辑是:先定总资金,再定风险预算,然后选方法,最后输出仓位比例。每一步都环环相扣,缺一不可。

9.7 实战中的几个建议

  1. 别迷信凯利:理论最优不等于实战最优。我见过太多人用凯利算出来30%仓位,结果连续两次亏损就慌了。
  2. 波动率要算对:基差波动率用20日滚动标准差比较靠谱。别用太短的周期,容易过度反应。
  3. 留足保证金:基差交易需要保证金,别把仓位算得太满。我一般留20%的闲置资金应对追加保证金。
  4. 定期复盘:每个月检查一次资金管理模型是否还适用。市场变了,你的仓位管理也得跟着变。

💡 最后说一句:资金管理不是让你赚更多,而是让你活更久。基差交易是个长期活,活得久的人才能笑到最后。

公众号:蓝海数据掘金营,微信 deep3321