上一篇《个人量化选股(六):差异化风控与退出机制:杠杆防守、反弹陷阱与高波移动止盈》分析了杠杆账户的 P0 强制止损、港 A 现货过滤短期微观噪声的季度内持有纪律,以及高波动标的的动态跟踪止盈规则。
当候选标的通过趋势门槛、截面精排与双线缓冲区的筛选,并完成退出规则设定后,量化选股流水线进入了关键的最终环节:
入选标的的资产配置权重与资金规模如何科学求解?
许多量化研究者在因子挖掘与信号排序上投入大量资源,但在资金配置环节往往采用简化的等金额加权( 等权重),例如入选 4 只标的即机械分配各 25% 的资金份额。这种看似均衡的名义等权配置,在多资产组合的微观方差结构中会导致风险暴露的严重失衡。

一、等金额不等于等风险:边际风险贡献度的方差失衡
在真实的股票截面中,不同标的的微观波动特征存在天然的巨大差距。
假设系统在美股市场选出了 4 只合格股票:
- 2 只处于右侧爆发期的高弹性科技股(如年化波动率 55.3% 的标的 A 与年化波动率 48.9% 的标的 B);
- 2 只走势平稳的大盘稳健股(如年化波动率 18.5% 的可口可乐与年化波动率 17.2% 的苹果)。
如果每只股票各分配 25% 的资金,我们根据欧拉风险分解定理(Euler's Risk Budgeting)计算组合整体的边际风险贡献(Marginal Contribution to Risk, MCTR):
投资组合的年化总方差为 ,资产 对组合总方差的绝对风险贡献(Variance Contribution)为:
各资产的风险方差贡献比例(Percentage Risk Contribution)为:
在资产间相关性较弱的常规截面中,该比例近似正比于 。在等金额配置下(),风险方差贡献度正比于波动率的平方()。
以这 4 只标的的真实协方差矩阵测算,结果如下:

如上图左侧所示,在等金额配置(权重各为 25.0%)下:
- 标的 A(年化波动率 55.3%)单标的解释了组合 46.8% 的方差贡献;
- 标的 B(年化波动率 48.9%)解释了组合 39.9% 的方差贡献;
- 两只高波动标的合计贡献了组合 86.7% 的总方差风险;
- 稳健标的 C(年化波动率 18.5%)的风险贡献仅为 6.8%;
- 稳健标的 D(年化波动率 17.2%)的风险贡献仅为 6.5%。
尽管将 50.0% 的名义资本配置于低波动资产,但在截面方差结构中,组合 86.7% 的净值收益率方差完全由高波动资产主导。低波动资产不仅未能有效平滑组合整体波动率,反而占用了大量可用资金。当高波动资产遭遇深度回调时,组合净值将承受非对称的单边大幅下行。
名义资本均等,并不代表风险贡献均等。
二、波动率倒数加权算法与三道现实物理防线
为消除高波动标的对组合方差的过度主导,实现各标的对组合风险贡献的相对均衡,系统采用波动率倒数配仓(Inverse Volatility Sizing):
其中 为标的过去 20 个交易日前复权对数收益率的年化标准差:
选定 20 个交易日(约 1 个自然月),兼顾了近期微观波动率状态跃迁的灵敏度,同时避免了 200 日长期波动率的滞后钝化。
如上图右侧所示,按波动率倒数重新分配后:
- 标的 A 资金权重从 25.0% 压缩至 13.8%;
- 标的 B 资金权重从 25.0% 压缩至 15.2%;
- 稳健标的 C 资金权重从 25.0% 提升至 35.0%;
- 稳健标的 D 资金权重从 25.0% 提升至 36.0%;
- 4 只股票的风险贡献度平稳收敛至 23.5% 到 26.8% 之间,组合年化波动率直接从 25.4% 降低至 17.4%(压缩 8.0 个百分点)。
在实盘交易中,纯数学上的波动率倒数无法直接投入运行。现实物理世界存在三道工程约束,系统设置了专门的防线予以封堵:

1. 单资产 35% 权重硬上限与溢出再分配迭代
如果候选池中出现公用事业等低波动品种(例如长江电力年化波幅仅 12.0%),纯算倒数可能分配给它 45% 甚至 50% 的极高仓位。
任何单一个股都存在财务造假、行业监管黑天鹅或突发停牌的特质风险。系统设置单资产最大权重为 35.0%(max_asset_weight = 35.0)。
一旦某只股票无约束权重超过 35.0%,系统将其强制压回 35.0%,并将多出的溢出资金按比例再分配给其他未达上限的合格标的。这一过程通过迭代循环完成,直至全部标的收敛满足约束。
2. 10% 战略现金垫预留
全仓 100% 满额配置而缺乏资金冗余,在实盘交易中具有显著的操作风险。多币种日间汇率波动、融资利息扣划、调仓冲击成本以及临时资金冻结,均可能导致账户被动产生非预期透支。
系统在股票配比外部常态化预留 10.0% 的战略现金缓冲垫。各市场股票资产整体按 90% 预算进行折算分配,保留底线流动性。
3. 港 A 股整手交易物理约束与 1.5 倍超额拦截
美股市场支持碎股(Fractional Shares)交易,可以精确买入 0.1 股;但港股和 A 股是严格的整手市场:
- A 股主板通常为 100 股一手,科创板单笔最低 200 股;
- 港股各标的整手股数差异极大,从 100 股、500 股到 2,000 股、5,000 股不等。
在数十万元规模的个人量化账户中,单市场卫星组合的可用预算通常在 4.5 万元至 5.0 万元。若某只高单价港股的最小交易单位(一手)名义金额达 3.8 万元,而波动率倒数分配的目标预算仅为 1.5 万元,单笔最小委托将占用该市场 85% 的可用资金,导致资产配置比例严重失真。
系统在测算目标权重的过程中,强制执行最小交易单位名义金额与目标预算的校验:当单手交易金额超过目标预算的 1.5 倍(lot_cost > 1.5 * target_budget)时,系统触发预算超额拦截,提示人工介入审核或依截面得分顺延配置候补标的。
系统底层向量化配仓函数的完整生产代码如下:
def apply_inverse_vol_weights(
assessments: list[MicroRiskAssessment],
max_asset_weight: float = 35.0,
is_single_query: bool = False,
max_weight_cap: float | None = None,
) -> list[MicroRiskAssessment]:
"""对多头留存仓位(非 P0 标的)按 20 日历史波动率倒数加权,计算目标权重与差额。"""
if max_weight_cap is not None:
max_asset_weight = max_weight_cap
# 单标的查询保护:避免单只标的查询时误输出 100% 集中度持仓
if is_single_query or len(assessments) <= 1:
for a in assessments:
a.target_weight, a.weight_diff = None, None
return assessments
# 过滤数据失效与 P0 破位清仓标的
eligible = [
a for a in assessments
if not a.is_stale
and a.alert_level not in (RiskAlertLevel.P0_RED, RiskAlertLevel.P0_PENDING, RiskAlertLevel.STALE)
and a.state in (MarketRegimeState.STATE_1_ADVANCING, MarketRegimeState.STATE_2_DISTRIBUTION)
and a.ann_vol_20d is not None and a.ann_vol_20d > 0
]
if not eligible:
for a in assessments:
a.target_weight = 0.0
a.weight_diff = (0.0 - a.current_weight) if a.current_weight is not None else None
return assessments
# 1. 基础波动率倒数归一化
inv_vols = [1.0 / (a.ann_vol_20d / 100.0) for a in eligible]
sum_inv_vol = sum(inv_vols)
raw_weights = {a.symbol: (iv / sum_inv_vol) * 100.0 for a, iv in zip(eligible, inv_vols)}
# 2. 单资产上限封顶(默认 35%)与溢出循环再分配
capped: dict[str, float] = {}
uncapped = set(raw_weights.keys())
while True:
excess = 0.0
newly_capped = []
for s in list(uncapped):
if raw_weights[s] > max_asset_weight:
excess += raw_weights[s] - max_asset_weight
capped[s] = max_asset_weight
newly_capped.append(s)
uncapped.remove(s)
if not newly_capped or not uncapped or excess <= 1e-4:
break
# 将溢出额度按比例再分配给未达上限的标的
uncapped_sum = sum(raw_weights[s] for s in uncapped)
if uncapped_sum > 0:
for s in uncapped:
raw_weights[s] += excess * (raw_weights[s] / uncapped_sum)
else:
break
eligible_symbols = {a.symbol for a in eligible}
for a in assessments:
if a.symbol in eligible_symbols:
w = capped.get(a.symbol, min(raw_weights.get(a.symbol, 0.0), max_asset_weight))
a.target_weight = round(w, 1)
else:
a.target_weight = 0.0
if a.current_weight is not None:
a.weight_diff = round(a.target_weight - a.current_weight, 1)
return assessments
三、全周期回测实证:等权重 vs 纯倒数 vs 35%上限+10%现金垫
为了检验不同资金构建方案对长期复利与极端下行风险的影响,我们使用 2021 年 1 月至 2026 年 10 月跨越 5 年多的中外多市场真实日 K 数据,运行了全周期的策略对比回测。
回测对比了三种资金构建规则:
- 等金额配置(1/N Equal Weight):所有合格标的分配完全相同的资金权重;
- 纯波动率倒数(Raw Inverse Volatility):不设单票上限,按 完全归一化;
- 约束优化版(35% Cap + 10% Cash Cushion):单票 35% 封顶,全组合留存 10% 现金垫。
回测收益率、波动率、最大回撤与风险调整后指标对比见下图:

核心实测绩效数据汇总如下:
| 配置方案 | 年化复合收益 (CAGR) | 年化波动率 | 最大回撤 (MDD) | 夏普比率 (Sharpe) | 卡玛比率 (Calmar) |
|---|---|---|---|---|---|
| 方案 1:等金额配置 (1/N) | +10.8% | 22.4% | -29.8% | 0.48 | 0.36 |
| 方案 2:纯波动率倒数 | +12.6% | 15.8% | -21.4% | 0.80 | 0.59 |
| 方案 3:35%封顶 + 10%现金垫 | +13.9% | 14.1% | -16.2% | 0.99 | 0.86 |
实测数据显示出几个规律:
等金额配置在 2022 年美联储加息周期的单边下行中,最大回撤深达 -29.8%。高波动标的在下行期大幅拉长了回撤深度,年化波动率高达 22.4%,拖累长期几何复合增速降至 +10.8%。
纯波动率倒数配仓将年化波动率压缩至 15.8%,最大回撤收敛至 -21.4%,夏普比率从 0.48 提升到 0.80。
加入了 35% 封顶与 10% 现金垫的优化方案表现最优:
- 最大回撤被严格压制在 -16.2%(相比等金额减少了 13.6 个百分点);
- 年化波动率降至 14.1%;
- 卡玛比率从 0.36 提升至 0.86(提升超过 138%);
- 最终年化复合收益提高到 +13.9%。
投资组合有效抑制了极端回撤风险,避免了深度净值回撤所需的长期修复周期,显著改善了长期的几何复合增长率。
四、2026 年 10 月最新实盘截面配仓推演与整手物理约束检测
结合 2026 年 10 月 23 日的最新实盘收盘快照(总净资产 429,353.22 CNY,其中雪球 373,636.23 CNY,富途 55,716.99 CNY),系统对现有持仓与新晋候选标的执行了客观运算推演。

1. 存量持仓标的的目标权重诊断
如上图左侧所示,系统监控输出了各持仓标的的最新 20 日年化波动率与权重偏离情况:
| 标的代号 | 中文名称 | 20日年化波幅 | 当前实际权重 | 波动率倒数目标权重 | 调仓差额 | 状态机研判指引 |
|---|---|---|---|---|---|---|
| US.KO | 可口可乐 | 18.5% | 20.3% | 11.4% | -8.9% | 实际权重偏重,等待月末窗口按目标权重调低 |
| US.V | Visa | 18.1% | 14.4% | 11.6% | -2.8% | 适度超配,调仓日小幅再平衡 |
| US.MRK | 默沙东 | 30.0% | 13.7% | 7.0% | -6.7% | 波动率由 16% 扩大至 30.0%,目标配额下调至 7.0% |
| US.XOM | 埃克森美孚 | 17.3% | 11.5% | 12.2% | +0.7% | 权重匹配良好,顺势持有 |
| US.AAPL | 苹果 | 17.2% | 11.1% | 12.2% | +1.1% | 权重匹配良好,顺势持有 |
| JP.9101 | 日本邮船 | 25.1% | 6.4% | 8.4% | +2.0% | 处于 Top 8 缓冲区内,调仓日补充配额 |
| JP.6501 | 日立 | 27.3% | 4.9% | 7.7% | +2.8% | 处于 Top 8 缓冲区内,调仓日补充配额 |
| JP.8001 | 伊藤忠商事 | 22.3% | 2.0% | 9.4% | +7.4% | 欠配明显,调仓日增加配仓 |
| JP.8306 | 三菱日联金融 | 37.0% | 2.9% | 5.7% | +2.8% | 高波 37.0% 跌破 MA50,触发移动止盈锁定浮盈 |
| US.NVDA | 英伟达 | 29.6% | 5.1% | 7.1% | +2.0% | 跌破 50 日线警戒,不加仓 |
| HK.00857 | 中国石油股份 | 28.3% | 3.4% | 7.4% | +4.0% | 跌破 50 日线警戒,港股季度内不加仓 |
| JP.8729 | Sony Financial | 22.9% | 0.3% | 0.0% | -0.3% | P0 强制止损:跌破年线 1.5% 满 3 天,市价清仓还债 |
系统输出的调仓指令具备明确的量化执行规则:
- 长期持仓因资本利得产生的权重偏离(例如可口可乐权重上升至 20.3%),在定期调仓窗口执行再平衡;
- 触发 P0 破位离场条件的 Sony 金融(JP.8729),目标权重即刻置为 0.0%,次日开盘执行平仓;
- 20 日年化波动率由 16% 上升至 30.0% 的默沙东,系统自动下调目标权重,动态约束微观波动暴露。
2. 候选标的的一手金额与整手超额拦截
在调仓日买入新标的时,港股与 A 股卫星仓位各自对应约 4.5 万元人民币预算,每个市场选 3 只股票,平均每只股票的目标预算为 1.50 万元。
如上图右侧所示,系统对港 A 股候选池进行了整手资金压力排查:
-
联想集团 (HK.00992):
- 现价 22.64 HKD,每手 2,000 股;
- 买入一手所需资金折合人民币达 38,600 元;
- 一手金额占单市场总预算(4.5 万元)的 85.8%,是单标的目标预算(1.5 万元)的 2.57 倍;
- 系统立刻触发红色超额拦截警报。如果机械执行买入,单只个股将直接占满该市场全部流动性,资金纪律完全失效。系统提示必须顺延候补。
-
顺延候补标的评估:
- 港股候补第 1 名 药明康德 (HK.02359):每手 100 股,一手约 15,870 元,为单标的目标预算的 1.06 倍,整手适配良好;
- 港股候补第 2 名 中国银行 (HK.03988):每手 1,000 股,一手仅 5,085 元,为目标预算的 0.34 倍,可以根据波动率分配从容买入 2 到 3 手;
- A 股首选 生益科技 (SH.600183):每手 100 股,一手 11,081 元,为目标预算的 0.74 倍,适配良好;
- A 股候补 长江电力 (SH.600900):每手 100 股,一手仅 2,945 元,为目标预算的 0.20 倍,门槛极低。
通过这一层整手约束的物理过滤,选股系统彻底脱离了纸面回测的理想化假设,保证了实盘账户的执行可行性。
选股全流程总结:七层量化流水线的闭环运转
至此,《个人量化选股》系列的七层量化流水线全部构建完成:

这套体系的核心逻辑为:
在入场端不博取未经验证的超额溢价,而在持仓全生命周期通过客观数据与物理防线约束尾部风险。
日常运行中,系统通过本地命令行工具自动化执行监控:
- 每个交易日盘后运行
cang sync同步最新持仓与行情; - 运行
cang positions查看各市场聚合净值; - 运行
cang monitor自动输出宏观红绿灯、四态状态机、止损触发点、目标配仓权重与调仓动作清单。
系统排除了情绪化主观交易与盘感臆断,每一个决策节点均依赖确定性的数据输入、统计实证检验与边界约束规则,实现系统化闭环运转。