第五部分 · 量化研究如何产生可信结论 · 第 32 章
从预测到仓位: 组合优化和风险模型
量化研究员忙完一阵,手里通常是一列预测分数: 哪些股票更可能跑赢,哪些更可能跑输。你可能会以为下一步很简单——把分最高的买满就行。但真实投资恰恰不是这么干的。你还要控制行业、风格、市值、个股集中度、换手、交易成本和流动性。预测告诉你想要什么,组合优化决定你能以什么代价、承担什么风险去实现它。这一章讲的就是这中间隔着的那道工序。
本部分的问题:一个金融判断怎样变成可证伪假设,再经过数据、回测、模型和实盘约束?
读完后,你能从问题出发完成研究闭环,而不是先找模型、再给结果编故事。
读完这一章,你会明白
- 模型分数不能直接等于仓位,中间还要过风险、成本、流动性和产品约束这几道关。
- 风险模型帮你拆出市场、行业、风格和个股特有风险,避免把暴露误认成能力。
金融现场 1. 2007 年 8 月,互不相识的量化基金一起卖出了同样的股票
2007 年 8 月初,多家采用多空股票策略的量化基金突然在几天内同步大亏。它们并没有共同收到一条公司坏消息,模型代码也不相同;真正的共同点藏在仓位里:许多团队都偏爱相似的便宜、优质或短期反转股票,也在做空相似的另一侧。
当其中一些资金因别处亏损或风险限制开始去杠杆,卖出的正是同行也持有的多头,买回的又是同行共同做空的股票。价格变化触发更多模型减仓,减仓继续制造价格变化。原本看似分散的独立策略,在同一扇出口前变成了一群人。
组合优化如果只用历史波动和相关性,很难看见“别人也持有什么”。拥挤度、容量、共同因子暴露和强制减仓路径,都是风险模型必须补上的现实变量。市场最危险的相关性,有时不是资产天生相似,而是持有它们的人在同一天需要现金。
2. 预测分数不是仓位
模型输出的通常是预期收益、排序分数或概率。它只能说明模型相对看好或看空哪些股票,并不直接等于买多少。分数最高的股票,可能流动性差,可能已经涨停买不到,可能和你组合里的已有持仓高度相关,也可能让行业暴露超标。
来看一个具体场景。模型给某只小盘股打了最高分,但它每天成交额只有 2000 万元,而你的产品规模有 20 亿元。直接按分数买入 5% 仓位,就是要买 1 亿元——相当于吃掉很多天的成交量,价格会被你自己一路推上去。预测再强,也绕不开成交能力这堵墙。
所以组合构建的目标,是把预测翻译成可执行仓位,在收益、风险、成本、流动性和约束之间折中。量化行业里,预测模型和组合优化通常是两层系统: 一层负责“想要什么”,一层负责“能实现多少”。把两层混成一个简单排序,是很多业余策略和专业策略的分水岭。
分数一路到订单要经过五道工序:打分、过约束、成目标、比现仓、拆订单。故事从后往前排查:订单下错最先看订单系统,组合走形先看约束,最后才轮到怪模型。
3. 你承诺偏离多少
如果产品是指数增强,组合就要围绕某个指数基准来建。比如中证 500 指数增强: 客户掏钱买的是一个承诺——大体跟住中证 500,同时多赚一些超额收益。组合不能因为模型一时看好银行股,就把大量仓位搬进银行,完全跑出中证 500 的形状。那不叫指数增强,叫换了底仓。
这类承诺落到纸面上,就是基准约束: 个股相对权重、行业偏离、风格偏离和跟踪误差。跟踪误差用大白话讲,就是组合收益偏离基准收益的幅度有多大。跟踪误差越小,组合越像指数,超额空间也可能越小;跟踪误差越大,组合越自由,但客户承担的偏离风险也越大。
这就是指数增强的核心取舍: 想多赚 Alpha,就得允许一些偏离;但偏离太大,产品就不再像它承诺的那个东西。组合优化器的活儿,就是把这种“承诺”翻译成数学约束,写进求解过程里。
定下 4% 的跟踪误差上限,等于提前签好一张借条:平时风平浪静没人看,等组合连续跑输基准三个月,客户和渠道都会拿着这张纸来敲门。教训通常集中在那天到齐:预算定小了,超额施展不开;定大了,持有人先熬不住。定预算别拍脑袋——回测里把历史上最难熬的几段偏离翻出来,看自己睡得着觉的上限到底在哪一格。
4. 风险模型在估计什么
风险模型试图解释一个朴素问题: 你的组合为什么会波动? 它通常把股票收益拆成四层——市场、行业、风格和个股特有风险。市场风险来自大盘整体涨跌;行业风险来自行业共同变化;风格风险来自市值、价值、动量、波动、质量等共同因子;个股风险来自公司自身的事件。
这个拆分的关键用处在于: 你持有很多股票,个股特有风险会被分散掉一部分,但行业和风格风险不会自动消失。你以为买了 100 只股票已经很分散,风险模型却可能告诉你: 组合其实重仓小市值和高波动风格,一旦这些风格反转,100 只股票会手拉手一起跌。
所以要明白,风险模型不是为了让投资没有风险,而是让你知道自己在承担什么风险。没有风险模型,很多收益归因会变成错觉: 看起来像选股能力,实际可能只是刚好押中了某个风格。
说“这个组合风险大”没有意义;要说“哪个维度”的风险大。先看波动、再看关联、最后看暴露——三层都过了,才算真正把风险看透了。
5. 行业和风格暴露
行业暴露很好理解: 组合里医药、银行、电子、消费各占多少,摊开持仓一看便知。风格暴露稍微抽象一些,它描述的是组合在市值、估值、成长、动量、波动率、流动性这些维度上的倾向。
举个例子。一个组合看起来买了很多行业,挺分散,但翻开来全部偏小市值、高波动、高换手。它的行业是分散了,风格却一点没分散。市场如果切换到大盘蓝筹行情,这个组合可能长期跑输,而你还以为只是运气不好。
所以量化组合常会主动限制风格暴露。不是因为风格一定不好,而是因为你要知道自己想赚的是什么钱。如果策略号称靠模型选股,却主要靠小市值暴露赚钱,那模型能力就被夸大了——这是诚实问题,不只是技术问题。
6. 个股上限和集中度
个股上限是最直白的风险约束,比如单只股票不超过组合 2%,或者相对基准不超过 1%。它防的是单点爆雷: 财务造假、停牌、黑天鹅、流动性枯竭,这些事都可能发生在单个股票上,仓位越重,炸得越疼。
集中度还能用很多指标看: 前十大持仓占比、行业前几大占比、Herfindahl 指数等。集中度越高,组合越依赖少数判断;集中度越低,组合更分散,但也可能把最强信号摊薄。两个方向都有代价。
所以量化不是永远越分散越好。太分散,预测优势被稀释;太集中,单点风险被放大。组合构建要在这两头之间找平衡——信号强度说话,风险控制兜底。
7. 换手约束和交易成本模型
组合优化不能只看“今天理想持仓是什么”,还得看另一个问题: 从昨天的持仓走到今天的持仓,路上要付多少过路费? 调仓越大,换手越高,成本越高。交易成本包括显性费用、买卖价差、滑点和市场冲击。
成本模型负责估计每笔交易大概会漏掉多少钱。流动性好的大盘股成本低,流动性差的小盘股成本高;小单成本低,大单成本高;平稳成交成本低,急着成交成本高。同样是“买”,代价差别很大。
于是会出现一个反直觉的结论: 如果新组合比旧组合只多一点点预期收益,却需要大量换仓,优化器很可能选择不交易。很多时候,最优动作不是追今天分数最高的组合,而是在收益提升和交易成本之间,找到净收益最高的那个变化。
8. 约束优化的直觉
组合优化听起来公式味很重,其实一句话就能说清: 最大化预期收益,减去风险惩罚,减去交易成本,同时满足一堆约束。约束包括仓位总和、个股上下限、行业偏离、风格暴露、换手、现金比例、禁买名单和流动性限制。
这套机制不是为了把金融变成数学游戏,而是为了让所有取舍都摊开写清楚。想象同一张会议桌: 模型说这只股票好,风险模型说它会增加小盘暴露,成本模型说买它很贵,产品合同说不能偏离行业太多——优化器的工作,就是让这几方当场把架吵完,吵出一个可执行的结论。
而且在实际机构里,优化器的输出还要过交易员、风控和合规的检查。因为模型和约束都可能漏掉现实问题: 临时停牌、公告风险、监管限制、交易通道异常、赎回压力,这些常常不在数学式子里,却在市场里真实发生。
优化的式子一句话就能写完:收益减风险减成本,再满足一堆约束。真正的工夫全在“一堆约束”那一栏——每一条背后都站着一个会真的来索赔的人:合同承诺、流动性、成本、合规。约束少写一条,数学上照样有最优解,只是那个解下了单就可能被停牌、涨停或通道异常当场打回。所谓组合优化,就是让这些反对意见在成交之前把架吵完。
量化不是“写个模型就赚钱”,而是一条流水线:数据、因子、组合、执行、风控环环相扣。任何一环掉链子,前面做得再好也白搭。
9. 多头、空头和市场中性
普通多头组合只做一件事: 买入资产。所以它的收益跟着市场整体涨跌大起大落。市场中性策略则想换个活法: 买入看好的资产,同时卖空或用股指期货对冲掉市场暴露,让组合主要赚相对选股收益——大盘涨跌,理论上与我无关。
“中性”听起来很稳,但绝不等于无风险。空头或对冲工具有成本;融券可能借不到;股指期货有基差;多空两边可能一起亏;极端行情里,资产之间的相关性和平时完全不是一个物种。
组合优化在多空策略里也更复杂: 要同时控制多头和空头规模、净暴露、总杠杆、行业中性、风格中性、融资融券成本和强平风险。个人投资者通常不适合一上来就玩复杂多空,先把单纯多头走通再说。
10. 赚的钱从哪里来
策略跑了一段时间,赚了或亏了,接下来该做归因。归因就是把收益拆开对账: 市场贡献多少,行业贡献多少,风格贡献多少,选股贡献多少,交易成本扣掉多少。不做归因,你只知道盈亏结果,不知道原因——赚了不知道怎么赚的,下次就守不住。
举个例子。一个指数增强产品本月跑赢 2%,归因一做,发现 1.5% 来自超配了上涨行业,0.3% 来自小市值风格,真正的个股选择只贡献了 0.2%。这结果不一定坏,但它告诉你一件事: 收益来源和你对外宣称的能力,到底一不一致。
归因还是判断失效的雷达。模型亏钱时,是所有因子一起失效,还是某个行业暴露拖累? 是成本上升,还是预测本身反向? 是风险模型低估了暴露,还是交易执行变差? 每个答案都指向不同的修法,不归因就只能说一句“行情不好”,然后继续亏钱。
11. 个人项目怎么简化组合优化
个人做第一个量化项目,不必一上来就写优化器。先用简单规则就够: 选分数最高的 30 只股票,等权持有;单只不超过 5%;剔除停牌、ST、涨跌停无法买入、成交额太低的股票;每月调仓;扣固定成本和滑点。这套规则土,但每一步你都能看懂。
然后再逐步加约束。先加行业上限,再加市值暴露控制,再加换手限制,再加成本敏感性。每加一层,都观察收益、回撤、换手和超额有没有改善。这样你能真正理解每个约束在干什么,而不是把一堆参数扔进优化器,对着输出结果一脸懵。
等规则组合跑通了,再去学 cvxpy、二次规划或商用优化器都不迟。工具从来不是重点,重点是知道从预测分数到真实仓位之间,横着多少现实约束。
小结
这一章的正文不是让你记住几个孤立名词,而是要把它们放回同一条因果链里。读完后,先用自己的话复述下面几条判断,再顺着“小节回看”检查是否能解释每一步。
- 模型分数不能直接等于仓位,中间还要过风险、成本、流动性和产品约束这几道关。
- 风险模型帮你拆出市场、行业、风格和个股特有风险,避免把暴露误认成能力。
小节回看
- 1. 2007 年 8 月,互不相识的量化基金一起卖出了同样的股票
- 2. 预测分数不是仓位
- 3. 你承诺偏离多少
- 4. 风险模型在估计什么
- 5. 行业和风格暴露
- 6. 个股上限和集中度
- 7. 换手约束和交易成本模型
- 8. 约束优化的直觉
- 9. 多头、空头和市场中性
- 10. 赚的钱从哪里来
- 11. 个人项目怎么简化组合优化
自测
为什么预测最高的股票不能直接满仓买?
它可能流动性差、风险暴露过高、违反个股或行业约束,也可能根本买不到,或者买起来成本太高。
风险模型主要拆解哪些风险?
市场风险、行业风险、风格风险和个股特有风险。
交易执行和实盘系统: 策略如何真的下到市场里
讲清订单生命周期、执行算法、拒单、部分成交、撤单、风控和盘后对账。