企业微信

在资本市场的博弈中,资金管理往往比选股或择时更为关键。许多投资者拥有高胜率的策略,却因仓位过重而在波动中出局;也有投资者即便胜率不高,却因合理的赔率与仓位控制实现了长期复利。凯利公式(Kelly Criterion)正是为了解决这一核心矛盾而生,它通过严谨的数学推导,告诉投资者在面对正期望值的机会时,应当投入多少比例的资金,从而在规避破产风险的最大化账户的长期增长率。

凯利公式的数学本质与直观理解

凯利公式的标准形式为:$f = (bp - q) / b$。其中,$f$ 代表最优下注比例(即资金配比),$b$ 为赔率(即获胜时的净收益与本金之比),$p$ 为获胜概率,$q$ 为失败概率($q = 1 - p$)。

如何利用凯利公式进行资产组合的资金配比

这个公式的推导基于对数效用函数,其核心目标是最大化期末财富的几何平均值。直观上,公式可以拆解为两个部分:$(bp - q)$ 代表期望收益,$b$ 代表波动幅度。当期望收益为正时,公式给出正的仓位建议;当期望收益为负时,建议不参与。

举个简单的例子:假设抛硬币游戏,正面赢1元,反面输1元(本金1元)。此时 $b=1$,若硬币公平,$p=0.5$,$q=0.5$。代入公式得 $f = (1 \times 0.5 - 0.5) / 1 = 0$。这意味着在零和且公平的游戏中,不应下注。如果硬币经过作弊使得正面概率为0.6,则 $f = (1 \times 0.6 - 0.4) / 1 = 0.2$,即每次应投入总资金的20%。

资产组合中的资金配比应用

将凯利公式应用于资产组合,需要将抽象的“下注”转化为具体的“资产权重”。在多资产配置中,通常有两种应用路径:单一资产的极致优化,以及多资产的凯利组合。

1. 单一资产的动态仓位管理

对于股票、期货或加密货币等资产,投资者需要预估未来的预期收益率和波动率。此时,公式变形为:$f = (\mu - r_f) / \sigma^2$。这里 $\mu$ 是资产预期收益率,$r_f$ 是无风险利率,$\sigma^2$ 是收益率的方差(波动率的平方)。

这个变形揭示了凯利公式的另一个重要特性:它不仅看涨跌幅度,还极度厌恶波动。波动率 $\sigma$ 在分母上,意味着波动越大的资产,即便预期收益率相同,凯利公式给出的仓位也会越低。这是一种天然的风险控制机制。

2. 多资产的凯利组合

当面对股票、债券、商品等多个资产时,我们需要构建一个权重向量。这涉及到协方差矩阵的计算。公式形式为:$w = \Sigma^{-1} (\mu - r_f \mathbf{1})$,其中 $w$ 是权重向量,$\Sigma$ 是协方差矩阵,$\mathbf{1}$ 是全1向量。

这种计算方式考虑了资产间的相关性。如果两个资产高度正相关,同时持有它们并不会显著分散风险,凯利公式会自动降低两者的总权重。反之,负相关的资产可以相互对冲波动,从而允许更高的资金配比。

实战中的代码演示

为了更清晰地展示如何计算,我们使用 Python 来演示一个简单的双资产配置过程。假设我们有资产A和资产B,我们需要计算它们的最优凯利权重。


import numpy as np

# 定义参数

# 预期收益率向量 [资产A, 资产B]

expected_returns = np.array([0.15, 0.08]) 

# 无风险利率

risk_free_rate = 0.03

# 协方差矩阵 (反映了波动率和资产间的相关性)

# 对角线是方差,非对角线是协方差

cov_matrix = np.array([

    [0.04, 0.01],  # 资产A方差0.04 (波动率20%), 与B协方差0.01

    [0.01, 0.02]   # 资产B方差0.02 (波动率14%), 与A协方差0.01

])

# 计算超额收益向量

excess_returns = expected_returns - risk_free_rate

# 计算协方差矩阵的逆矩阵

try:

    inv_cov_matrix = np.linalg.inv(cov_matrix)

except np.linalg.LinAlgError:

    print("协方差矩阵不可逆,无法计算")

    exit()

# 计算凯利权重向量

kelly_weights = np.dot(inv_cov_matrix, excess_returns)

# 归一化处理(如果允许做空,权重可以为负;如果只允许做多,通常需要截断或归一化)

# 这里我们展示纯多头的情况,将负权重设为0,并重新归一化

kelly_weights[kelly_weights < 0] = 0

total_weight = np.sum(kelly_weights)

if total_weight > 0:

    normalized_weights = kelly_weights / total_weight

else:

    normalized_weights = np.zeros_like(kelly_weights)

print(f"资产A的凯利权重: {normalized_weights[0]:.2%}")

print(f"资产B的凯利权重: {normalized_weights[1]:.2%}")

这段代码的核心逻辑在于利用协方差矩阵的逆矩阵来寻找在特定风险收益结构下的最优解。它自动惩罚了高波动资产,并考虑了资产间的相关性。

凯利公式的局限性与风险控制

尽管凯利公式在理论上完美,但在实际应用中存在巨大的陷阱,这被称为“凯利灾难”(Kelly Disaster)。

1. 参数估计的误差

公式对输入参数极其敏感。如果你高估了胜率或赔率,哪怕只有微小的误差,计算出的最优仓位也可能导致毁灭性的后果。例如,将胜率从55%误判为60%,可能会让建议仓位翻倍。因此,实操中极少有人使用“全凯利”(Full Kelly)。

2. 半凯利策略

为了缓解波动性,投资者通常使用“半凯利”(Half Kelly),即计算出的仓位除以2。数学上,半凯利虽然牺牲了一部分理论上的增长率,但能大幅降低账户净值的回撤幅度,且在参数估计错误时提供了巨大的安全边际。

3. 连续亏损的打击

凯利公式假设下注是连续的,且次数无限。但在现实中,连续出现几次亏损可能导致账户大幅缩水,甚至触发止损线。因此,在应用凯利公式进行资产配置时,必须结合硬性止损或最大回撤控制。

利用凯利公式进行资产组合资金配比,本质上是在寻找“增长”与“生存”之间的平衡点。它将模糊的“感觉”转化为精确的数字,强迫投资者直面赔率与概率的现实。对于量化交易者而言,凯利公式不仅是仓位计算器,更是一种思维模型:只有当具备正期望值且波动可控的系统时,才值得投入重金。在不确定的市场中,半凯利策略结合严格的参数风控,是通往长期复利之路的稳健选择。