关于 bet-sizing
bet-sizing 是面向投资者和投资组合管理者的金融规划技能,介绍 Kelly 仓位计算,以及风险预算、持仓限制、信念加权和波动率缩放,并附有可运行的 Python 参考脚本。
主要功能
- 01离散与连续 Kelly 仓位计算
- 02分数 Kelly 调整
- 03VaR 与跟踪误差预算
- 04持仓限制与信念加权
- 05按波动率缩放仓位
- 06Python 演示与验证
适用场景
- 01根据赔率和胜率估算下注规模
- 02依据收益与波动率估算调整配置
- 03设定持仓风险与集中度限制
- 04运行或验证附带的仓位示例
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ joellewis/ finance_skills --skill bet-sizing安装后在 Claude Code 中输入/bet-sizing确认已加载。
附带文件scripts/bet_sizing.py
详细介绍
下注规模
核心概念
凯利准则(离散型)
对于赔率为 b、获胜概率为 p、失败概率为 q = 1-p 的二元下注:
f* = (b*p - q) / b
其中,f* 是应下注的财富比例。凯利准则通过最大化重复下注时财富的对数期望(几何增长率)来确定下注规模。
特性:
- f* = 0 表示优势 = 0(没有优势时不下注)
- f* < 0 表示优势为负(该公式建议你押另一边)
- 只有当 bp > q(期望值为正)时,f > 0
注意:参考脚本中的 discrete_kelly 会将负的凯利比例限制为 0(不下注),而不是返回负值——它不会建议押另一边。
凯利准则(连续型/投资)
对于收益呈正态分布、预期超额收益为 mu-r_f、方差为 sigma^2 的投资:
f* = (mu - r_f) / sigma^2
这给出了应配置的总财富比例。例如,某资产的预期超额收益为 8%、波动率为 20%:f* = 0.08 / 0.04 = 2.0(即财富的 200%——意味着使用杠杆)。
分数凯利
满额凯利在理论上最优,但在实践中进取性过强,原因如下:
- 它假定对概率和收益有完全准确的认知
- 它会导致较大的回撤(满额凯利的预期回撤很显著)
- 参数估计误差可能使最优策略变成灾难性策略
实用做法:使用凯利比例的一部分,常见做法包括:
- 半凯利(f/2):* 在显著降低方差和回撤风险的同时,实现 75% 的增长率
- 三分之一凯利(f/3):* 更为保守;适用于参数不确定性较高的情况
- 四分之一凯利(f/4):* 适用于估计结果高度不确定的情况
关键在于:增长率曲线在峰值附近较为平坦。从满额凯利降至半凯利,只会损失 25% 的增长率,却能大幅降低风险。
风险预算
在不同头寸之间分配风险(而非资金)。总风险预算是可接受的最高投资组合风险(例如,VaR 为 10% 或跟踪误差为 5%)。
基于 VaR 的预算:
- 总 VaR 预算:例如,95% 置信度下为 $1M
- 在不同头寸之间分配:头寸 VaR_i <= 分配的 VaR_i
- 头寸 VaR = w_i * sigma_i * z_alpha * 投资组合价值
跟踪误差预算(适用于主动型管理人):
- 总主动风险预算:例如,跟踪误差为 4%
- 在不同押注之间分配:每项主动押注都会占用一部分跟踪误差
- 调整主动头寸规模,使风险贡献之和等于总风险预算
头寸规模上限
为单个头寸设定硬性上限,以防止集中风险:
基于流动性的限制:
- 头寸 < 平均每日成交量(ADV)的 X%——常见限制:ADV 的 10-25%
- 确保能在合理时间内退出(例如,5-10 个交易日)
基于风险的限制:
- 头寸的风险贡献 < 投资组合波动率的 X%(例如,单个头寸最多占投资组合风险的 10%)
- 单个头寸 < 投资组合价值的 X%(常见标准:多元化投资组合为 5%,集中投资组合为 10%)
监管/授权限制:
- 共同基金:单一股票的持仓不得超过 5%(多元化基金)或 25%(非多元化基金)
- 指数跟踪:权重相对基准的偏离不得超过规定幅度
信心加权
根据投资论点的力度调整头寸规模:
- 高信心(最大头寸): 优势显著、研究深入,且有多个因素相互印证
- 中等信心: 投资论点扎实,但存在一些不确定性或信息有限
- 低信心(最小头寸): 处于早期阶段的想法、优势有限,或纯粹出于多元化目的
框架:按优势强度(1-5)和确定性(1-5)为每个头寸打分。头寸规模与两者的乘积成正比:优势 * 确定性。
最优持仓数量
在分散化与信念强度之间权衡:
- 集中持仓(10-20 个): 信念强,研究深入。每个持仓占投资组合的 5-10%。适用于管理者确实具备专业能力和优势的情况。
- 分散持仓(50-100 个): 对单个持仓的信念较弱,但风险分散更广。每个持仓占 1-3%。适用于系统化或基于因子的策略。
- 高度分散(100 个以上): 类似指数。风险来自因子倾斜,而非单个持仓。
波动率缩放
根据波动率反向调整持仓规模,以保持每个持仓的风险一致:
调整后规模 = 目标风险 / 当前波动率
波动率翻倍时,持仓规模减半,从而保持美元风险不变。这是管理期货和风险目标策略的核心原则。
反马丁格尔(类似凯利)仓位规模
盈利后增加持仓规模(财富增长,因此凯利比例应用于更大的基数),亏损后则减少。这与马丁格尔策略(亏损后加倍下注)相反,后者可能导致破产。
凯利策略会自然实现反马丁格尔式的仓位规模:按当前财富的固定比例下注,因此绝对下注金额会随财富增长而增加,随亏损而减少。
关键公式
| 公式 | 表达式 | 使用场景 |
|---|---|---|
| 凯利公式(离散) | f* = (b*p - q) / b | 二元下注的仓位规模 |
| 凯利公式(连续) | f* = (mu - r_f) / sigma^2 | 投资仓位规模 |
| 半凯利 | f = f* / 2 | 实用的保守仓位规模 |
| 凯利增长率 | g* = (mu - r_f)^2 / (2*sigma^2) | 最大几何增长率 |
| 比例 f 下的增长率 | g(f) = f*(mu - r_f) - f^2*sigma^2/2 | 任意比例下的增长率 |
| 波动率缩放后的规模 | w = target_risk / sigma_i | 保持每个持仓的风险恒定 |
| 持仓 VaR | VaR_i = w_i * sigma_i * z_alpha * V | 持仓层面的风险 |
示例计算
示例 1:离散下注的凯利准则
已知:
- 获胜概率:p = 55%
- 失败概率:q = 45%
- 偶数赔率:b = 1(每下注 1 美元,获胜时赢得 1 美元)
计算: 最优下注规模
解答:
f* = (b*p - q) / b = (1 * 0.55 - 0.45) / 1 = 0.10 / 1 = 10%
解释:每次下注使用当前财富的 10%。这能最大化长期几何增长率。
实用调整(半凯利):f = 10% / 2 = 5% — 以大幅降低回撤风险为代价,实现最大增长率的 75%。
全凯利下的预期回撤:在某个时点损失 50% 财富的概率相当高。半凯利能大幅降低这种尾部风险。
示例 2:投资的连续凯利公式
已知:
- 预期超额收益(mu - r_f):8%
- 波动率(sigma):20%
计算: 凯利最优配置
解答:
f* = (mu - r_f) / sigma^2 = 0.08 / (0.20)^2 = 0.08 / 0.04 = 2.00(200%)
这意味着配置比例为 200%(2 倍杠杆),非常激进。
实用调整:
- 半凯利:100%(无杠杆,满仓投资)
- 三分之一凯利:67% 配置
- 四分之一凯利:50% 配置
考虑到 8% 的预期收益和 20% 的波动率都是存在较大不确定性的估算值,采用半凯利(100%)或更低的比例较为审慎。增长率曲线如下:
- 全凯利:g* = 0.08^2 / (2 * 0.04) = 每年 8%
- 半凯利:g(1.0) = 1.0 * 0.08 - 1.0^2 * 0.04/2 = 每年 6%(最大值的 75%)
- 四分之一凯利:g(0.5) = 0.5 * 0.08 - 0.5^2 * 0.04/2 = 每年 3.5%(最大值的 44%)
常见陷阱
- 完整凯利策略在实际应用中过于激进——概率和收益估算中的误差可能导致过度下注并造成破产;务必使用部分凯利策略
- 凯利策略假设概率和收益已知——现实中,这些数据都是估算得出的,且存在显著误差,因此完整凯利策略很危险
- 凯利策略最大化的是对数财富(几何增长率),这可能与投资者的实际效用函数或风险承受能力不符
- 忽略流动性限制:凯利最优仓位可能超过市场能够承受且不会产生冲击的规模
- 仓位之间的相关性:单资产凯利公式未考虑投资组合效应;风险相关的仓位需要整体缩小规模
- 参数估算中的幸存者偏差:历史胜率可能高估未来的优势
- 未根据市场状态变化进行调整:优势和波动率会随时间变化
交叉引用
- historical-risk(财富管理插件):已实现波动率是凯利仓位规模计算的重要输入
- forward-risk(财富管理插件):预期收益预测是凯利准则的输入
- diversification(财富管理插件):集中投资(大额下注)与分散投资(多笔小额下注)之间的权衡
- asset-allocation(财富管理插件):下注规模在资产配置框架内进行
- rebalancing(财富管理插件):仓位会偏离目标规模,因此需要再平衡
- quantitative-valuation(财富管理插件):基于估值的优势估算会影响信念权重
运行脚本
uv run scripts/bet_sizing.py # run the demo (uses PEP 723 inline deps)
uv run scripts/bet_sizing.py --verify # check demo outputs against the worked examples (exit 1 on mismatch)
python3 scripts/bet_sizing.py # alternative (requires: pip install numpy)
演示程序会输出上文涉及的计算结果;其中的数值与此技能中的计算示例一致。运行 --help 可查看类和函数列表。如需以编程方式使用,请导入模块而不是运行它——演示程序仅会在运行 python bet_sizing.py 时执行。