4、Alpha组合构建:选股流程、打分法 vs 优化法、组合约束条件

好,咱们进入正题。Alpha组合怎么搭?说白了,就是把你上一章筛选出来的那些“好股票”,用一套规则组合起来。这步做不好,前面选股再牛也白搭。

我个人习惯把组合构建拆成三个核心问题:选什么?怎么配权重?有什么限制? 今天咱们一个一个聊透。

4.1 选股流程:从候选池到最终组合

先说说我的标准流程。嗯,这流程我用了好几年,踩过坑也优化过,现在基本稳定。

  1. 初筛:剔除ST、停牌、上市不足60天的票。这一步没啥技术含量,但必须做。
  2. 因子打分:用多因子模型给每只股票打分。我一般用5-8个因子,太多了容易过拟合。
  3. 排序分层:按总分从高到低排序,取前10%-20%作为候选池。
  4. 约束过滤:检查行业、市值、流动性等硬约束,不符合的直接剔除。
  5. 权重分配:用打分法或优化法确定最终权重。

核心原则:选股流程要可重复、可回溯。我见过有人靠“感觉”选股,结果回测漂亮实盘崩盘——因为感觉没法复现。

我曾经犯过一个低级错误:初筛时忘了剔除新股,结果组合里全是次新股,波动大得吓人。从那以后,我把初筛规则写成了自动化脚本,每次跑之前先检查一遍。

4.2 打分法 vs 优化法:两种主流思路

权重怎么定?业内两大流派:打分法和优化法。我两种都用过,各有优劣。

4.2.1 打分法:简单粗暴但有效

打分法的逻辑很直观:每个因子给一个权重,加权求和得到总分,然后按总分分配资金。

# 打分法示例(Python伪代码)
def score_weighting(factor_scores, factor_weights):
    total_score = sum(factor_scores[f] * factor_weights[f] for f in factor_weights)
    # 等权重或按得分比例分配
    weight = total_score / sum(total_score)
    return weight

优点很明显:透明、易解释、鲁棒性强。你想想看,基金经理问你“为什么给这只股票配5%”,你可以直接说“因为它综合得分排第10”。

缺点呢?不够精细。打分法不考虑因子之间的相关性,也不考虑风险预算。比如两个因子高度相关,相当于重复计分,组合可能过度暴露在某些风险上。

我的建议:如果你刚开始做组合管理,或者组合规模不大(比如1亿以下),打分法完全够用。我早期做小资金时一直用打分法,效果不错。

4.2.2 优化法:精确但容易过拟合

优化法是用数学规划求解最优权重。常见的目标函数有:最大化Alpha、最小化风险、最大化信息比率等。

# 优化法示例(均值-方差优化)
import cvxpy as cp

w = cp.Variable(n_assets)
objective = cp.Maximize(mu.T @ w - lambda_ * cp.quad_form(w, Sigma))
constraints = [cp.sum(w) == 1, w >= 0, w <= 0.05]
problem = cp.Problem(objective, constraints)
problem.solve()

优化法的优势是精确控制风险暴露。你可以把行业偏离、市值偏离、换手率等全部写成约束条件,一次性求解。

但问题也很明显:对输入参数极其敏感。预期收益差一点,最优权重可能天差地别。我见过有人用优化法跑回测,夏普比率2.5,实盘直接变0.5——因为参数估计误差被放大了。

避坑指南:我曾经用优化法做300只股票的组合,结果优化器给了某只股票0.01%的权重。你说这有意义吗?后来我加了最小权重约束(比如0.5%),才解决这个问题。

4.2.3 我的选择策略

场景 推荐方法 原因
股票数量少(<50) 打分法 简单、稳定、易解释
股票数量多(>100) 优化法 能处理大量约束
追求极致收益 优化法 可以精细调参
追求稳健 打分法 不容易过拟合

我个人习惯:先用打分法做初版,再用优化法微调。这样既保留了打分法的稳健性,又利用了优化法的精确性。

4.3 组合约束条件:行业、市值、换手率

约束条件是什么?说白了就是“不能乱来”。没有约束的组合,就像没有护栏的悬崖——收益可能很高,但掉下去的概率也不小。

4.3.1 行业约束

行业约束是为了避免过度集中。比如你选股时发现消费股得分都很高,如果不加约束,组合可能80%都是消费股。一旦消费行业出问题,组合就崩了。

常见的做法:设定行业偏离上限。比如基准指数中消费行业权重20%,你的组合中消费行业权重不能超过25%(偏离5%)。

实战经验:我一般设两个阈值——硬上限和软上限。硬上限是绝对不能超的(比如30%),软上限是建议不超的(比如25%)。如果某行业确实很强,可以突破软上限但必须写说明。

4.3.2 市值约束

市值约束控制的是风格暴露。如果你做的是沪深300增强,组合的平均市值就不能偏离沪深300太多。否则你名义上做的是大盘股,实际持仓全是小盘股。

具体怎么设?我常用两种方式:

  • 市值中位数偏离:组合市值中位数 vs 基准市值中位数,偏离不超过20%
  • 市值分层限制:大盘股占比不低于60%,小盘股不超过10%

嗯,这里要注意:市值约束和行业约束经常冲突。比如某行业全是小盘股,你既要配够行业权重,又要控制小盘股比例——这时候就需要权衡了。

4.3.3 换手率约束

换手率约束控制的是交易成本。你想想看,如果每周换仓50%,光手续费就能吃掉大部分收益。

我一般设月度换手率上限30%。也就是说,每个月最多调整30%的仓位。这样既保证了组合能跟上市场变化,又不会产生过高的交易成本。

一个小技巧:换手率约束不要设得太死。如果市场出现极端行情(比如2020年3月的暴跌),适当放宽换手率反而能抓住机会。我通常设一个“正常情况”和一个“紧急情况”两套参数。

4.4 知识体系框架图

下面这张图总结了本章的核心逻辑,我手绘的SVG,凑合看:

Alpha组合构建核心流程 选股流程 初筛 → 打分 → 排序 → 过滤 权重分配 打分法 vs 优化法 约束条件 行业/市值/换手率 打分法 • 优点:透明、易解释、鲁棒 • 缺点:不考虑因子相关性 • 适用:小规模、追求稳健 • 方法:加权求和 → 等权/比例分配 优化法 • 优点:精确控制风险暴露 • 缺点:对参数敏感、易过拟合 • 适用:大规模、追求极致 • 方法:均值-方差/风险平价 三大核心约束 🏭 行业约束:偏离基准不超过5%-10% 💰 市值约束:中位数偏离不超过20% 🔄 换手率约束:月度换手率上限30% 核心原则:可重复、可回溯、可解释

4.5 实战避坑总结

最后,分享几个我踩过的坑,希望能帮你少走弯路:

  • 别迷信优化器:优化器给出的结果,一定要人工检查一遍。我曾经遇到优化器给某只ST股票配了5%权重——因为它的“预期收益”被错误地设成了100%。
  • 约束条件要留余地:不要把约束设得太紧。比如行业偏离设±3%,结果每次调仓都因为微小偏离而频繁交易,换手率直接爆表。
  • 定期复盘约束有效性:每季度检查一次约束条件是否还合理。市场在变,约束也要跟着调整。

一句话总结:Alpha组合构建不是选最好的股票,而是选最合适的股票,然后用最稳健的方式配权重。打分法和优化法没有绝对的好坏,关键看你的资金规模、风险偏好和团队能力。


公众号:蓝海资料掘金营,微信deep3321