量化优化的基础:目标函数、真假改进与风险平价
第一篇把”钱从哪来”拆成了三层结构,第二篇把”钱怎么留下”焊成了七环节的流水线。但写完跑回测时,手里还攥着一根没拔的刺:每一次优化,到底该盯哪个数字? 回测表上年化、夏普、回撤、卡玛一排指标,单策略迭代时按谁排序?上线时在几个候选组合之间又按谁拍板?这篇把标尺立起来:从一个公式出发,解释年化里藏着的税、真改进与假改进的区别、风险平价在整套体系里的位置,最后用这套标尺给我自己的两个组合打分。
收益率是结果,夏普率是资产,回撤是租金。你真正拥有的,只有夏普率。
一、目标函数:一个公式说清所有指标的底层
所有优化最终只服务一个目标:长期复合增长率 g 的最大化,约束条件是”任何一年都不死”。
g 有一个近似公式,是整栋大楼的地基:
\[g \approx \mu - \frac{\sigma^2}{2}\]- \(\mu\):算术平均收益(进水口)
- \(\sigma\):波动(漏水孔,而且是平方惩罚——波动翻倍,拖累翻四倍)
先看连乘和连加的差别。两个月收益 +20%、-20%:算术平均是 0%,实际净值 1.2 × 0.8 = 0.96,磨掉了 4%。那 4% 没有人扣,是乘法自己扣的——涨 20% 的基数大,跌 20% 的基数小,同样的百分比永远不对等。把全年逐月连乘,这种”涨跌幅不对等”的磨损累积起来,期望值就是 σ²/2。
数学上只需要一步:
\[\ln(1+r) \approx r - \frac{r^2}{2}\]连乘取对数变连加:左边是累计对数增长,右边第一项是算术均值,第二项就是波动税。σ²/2 是泰勒展开的二阶项——它不是被”执行”的,是复利结构里自动浮现的。
这个公式解释了为什么所有指标的优先级长这样:收益 μ 在分子,波动 σ 在分母,而 Sharpe = μ/σ 刚好站在两者的比值上,所以它是 g 最好用的代理指标。用开车打比方:所有司机都在踩油门(μ),但赛车手的第一课是刹车(σ)——目标不是某一圈最快,是完赛的前提下总时间最短,冲出赛道一次,前面所有快圈清零。
二、年化 23.76% 已经扣过税了:CAGR 就是 g
一个容易困惑的点:回测软件输出的”年化 23.76%”,公式只是”期末净值开 n 次方根”,没看到哪里减了 σ²/2 啊?
答案:这个”税”不在代码里,在上面的乘法结构里。回测输出的年化是几何年化(CAGR),它就是 g 本身——σ²/2 在逐月连乘时已经被收走了,只是没收据。所以:
- M4 的 g = 23.76%(波动约 24%)
- 三腿等风险×1.33 的 g = 16.21%(波动约 11.7%)
单纯比 g,M4 赢。这个直觉没错——但别急,第四节会说为什么这个比法不公平。
σ²/2 公式还有两个正当用途。其一,解释为什么”月度收益简单平均×12”(算术 μ)总比 CAGR 高出一截,差值约等于 σ²/2——所以看策略要盯 CAGR,别盯算术均值。其二,它是仓位理论的发动机,第四节会用到。
想亲手验证的话,拿任意一条回测净值序列算三个数:算术年化(月均值×12)、CAGR(连乘开方)、年化波动(月标准差×√12)²÷2。你会看到第一个数减第二个数 ≈ 第三个数。跑完这一遍,g、CAGR、σ²/2、夏普这四个概念就焊在一起了。
三、真假改进:优化阶段盯夏普,不盯收益
既然 CAGR 就是 g,那优化目标是不是”把年化做高,上线时再把风险打平”?顺序反了。 因为高年化有两种,只有一种值得上线:
| 改进类型 | 长什么样 | 打平风险之后 |
|---|---|---|
| 真改进(夏普升) | 收益涨得比波动快 | g 变高 |
| 假改进(夏普不变) | 收益和波动一起涨,只是更猛 | g 不变甚至变低 |
年化 23.76% 这个数字本身不告诉你它是哪种。如果优化阶段只追收益,可能花了半年把夏普从 0.98”优化”到 0.98(只是波动变大了),上线打平风险那一刻才发现 g 反而缩水——低夏普的高收益,是借波动堆出来的假钞,兑现时要还。
我自己的实验史,三个案例正好排成一列:
- M1 纯模型选股:OOS RankIC 更高、毛收益更高,按”优化收益”的标准它是赢家;但换手 79%,一年费用吃掉约 4.55pp,净指标全输。假改进。
- M4 排雷(规则选 Top40 → 模型剔除最差 14 只 → 留 30 只):年化 22.76%→23.76%,Sharpe 0.94→0.98,回撤 -37.5%→-37.2%,Calmar 0.50→0.61——收益、风险、效率一起动,四项全优。真改进。
- 过度集中(保留缩到 18 只以下):收益继续微涨,但波动上升、最大回撤恶化到 -43.9%~-48%——按收益标准还在进步,按夏普标准已经在倒退。假改进,而且危险。
所以流程只有一句话:优化阶段每动一刀,都问”夏普动了没有”;只有夏普动了的改进才配进候选池,风险打平只是上线前给候选排队用的最终裁判。
四、公平比较的前提:同一风险预算
第三节留下的问题:既然 M4 的 g(23.76%)比三腿(16.21%)高,为什么上线还选三腿?因为g 必须在”同一张风险预算”下比。
波动才是真正的稀缺资源:你的心态按波动计价,杠杆空间按波动计价,家庭财务安全线按回撤计价。M4 和三腿占用的是不同大小的风险额度,直接比 g,就像拿超载卡车和面包车比”谁一次运得多”,而你只有一座限重桥。
把两边调到同样的 11.7% 波动(三腿×1.33 当前的水平):
| 调法 | 算法 | g |
|---|---|---|
| M4 缩仓至 48% 仓位,52% 现金货基 | 0.48×23.76% + 0.52×2% | ≈12.5% |
| 三腿×1.33 不动 | 原样 | 16.21% |
反方向,调到 M4 的 24% 波动:三腿加约 2 倍杠杆,毛收益 33% 减利息约 6%,净 g ≈ 27%,对 M4 裸奔的 23.76%。两个方向都是三腿赢——这就是”夏普是单位风险的价格”的算术版:0.98 对 1.38,你的风险预算该配给谁,一目了然。
这套数学还有一根总发条。把 g 公式对注码 f 求导:
\[g(f) \approx f\mu - \frac{f^2\sigma^2}{2} \Rightarrow f^* = \frac{\mu}{\sigma^2}\]最大化长期增长率的注码,正比于收益、反比于波动平方——全凯利掉出来了。全凯利是数学上限不是推荐值(参数估错一点就进爆仓区,路径回撤也没人拿得住),实务惯例是 1/4~1/2 凯利。《财富公式》整本书讲的其实就是 g:长期增长率最优的注码,和”你拿得住的注码”之间,必须留折扣。 g 公式、波动税、半凯利、夏普优先,是同一个公式族的四种说法。
五、风险平价:把风险预算分给最能装的腿
有了”波动是稀缺资源、夏普是价格”这两块积木,风险平价就不再是一个孤立技巧,而是它们的直接推论。
为什么按风险配权,不按钱配权? 因为亏损是按风险敞口发生的,不是按钱发生的。60/40 组合跌 20% 的那天,不是”60% 的钱在挨打”,是约 90% 的风险敞口在挨打。用数字看:股票波动 24%、债券 8%,60/40 出钱的风险贡献是 0.6×24 : 0.4×8 = 82 : 18——名义分散,实际上命运的八成押在股票一张牌上。钱只是入场券,风险才是赌桌上的座位数;所以配权该按”让每个资产坐多少座位”分,不是按”给谁买了多少入场券”分。
本质一句话:承认”我不知道未来谁赢”,但”我不允许任何一类资产的坏运气单杀我”。 配平的手段只有两个:低波的加杠杆,或高波的降仓。桥水选加杠杆,因为砍高波资产 = 总风险砍小、收益也砍小;给低波资产加杠杆 = 总风险不变、收益装得更满——同样的风险预算,后者期望收益更高,这就是”更陡的有效前沿”的全部含义。它不需要预测能力,只需要”股票波动大于债券”这个几百年不变的排序——这比任何收益预测都可靠。
好处三条:单一资产最多贡献 1/N 的波动,分散真正生效;低波腿的赚钱能力不再浪费;总风险变成各腿之和,拧得准——60/40 的真实风险由股票说了算,你以为的中等风险实际是重仓股票。
我自己的实验两次撞上这个数学。M4(波动约 24%)配 TREND(波动约 12%),风险贡献相等的解是 w×24 = (1−w)×12,w = 1/3——回测扫出的最优档 30/70(Sharpe 1.29)正是它。三腿组合里,按钱配权 40/40/20 得到 16.74%/Sharpe 1.26/回撤 -17.6%,改成等风险配权 15/67/18 得到 12.10%/Sharpe 1.37/回撤 -11.6%,同样的腿,只是换了分法。代价也诚实写上:要借得起便宜的钱、扛得住危机时的流动性抽贷——桥水的融资成本是国债回购利率,个人两融是 6-8% 还带强平线,危机时你最需要杠杆活着的那天,恰好是它被抽走的那天。个人借不到,就退化成已经做了的版本:低波腿多配钱,吃到一半红利。
六、上线决策:用这套标尺打分
把前面所有积木拼起来,决策顺序是固定四步:
- 先画生死线:这个策略最坏回撤多少?上不上杠杆、杠杆能扛多深而不被强平?
- 再比夏普率:在活着的候选里,谁的单位风险装载效率高。
- 然后过真实关:样本外衰减、参数敏感度、扣完成本,虚高一律打折。
- 最后才轮到收益:不加追求,用风险预算调——加低相关腿、按风险配权、把夏普最高的组合的风险预算顶回目标水平。
用这套标尺给我的两个组合打分,答案为什么是三腿而不是 M4:
- 生死线:M4 回撤 -37.2%,需要 +59% 才回本,深坑中心态变形的概率不为零;三腿 -15.2%。
- 夏普:0.98 对 1.38,同预算下 g 的差距是每年 3-4 个点。
- 真实关:M4 的 23.76% 还没跑 FF5+动量归因,2019-2026 恰好是微盘风格最强的七年,风格顺风占多少是未知数;三腿分散三类资产,g 的期望稳定性更高。
- 收益调配:三腿还有”风险预算上调、乃至温和杠杆”的后手;M4 的深回撤把杠杆后门焊死了。
M4 什么时候才轮到?条件苛刻但明确:纯闲钱、十年不动、永不上杠杆、且已经用真金白银扛过一次 -30% 回撤证明拿得住。四条缺一条,23.76% 就只是回测里的数字。
七、结语
浓缩成三句话:
- 目标是 g,不是年化:g ≈ μ − σ²/2 一个公式解释了为什么波动是平方惩罚、为什么夏普是核心货币、为什么半凯利要打折扣——它们是同一个公式族。
- 优化盯夏普,上线比同风险预算下的 g:夏普升一刀才是真改进;风险预算相等时,装载效率高的组合自然胜出,收益到时候调出来。
- 风险平价不是技巧,是推论:当”波动是稀缺资源”和”夏普是价格”成立,按风险配权就是唯一合理分法——先有了尺子,才谈得上度量。
赛车手的第一课不是踩油门,是刹车。把目标函数从”赚得多”换成”活得久的前提下复利得快”,仪表盘上所有的数字会自己排好队。
免责声明:本文为个人量化研究与学习记录,所引数据均来自个人回测,存在过拟合风险且未经实盘验证,不构成任何投资建议。市场有风险,投资需谨慎。
💬 评论(使用 Giscus,登录 GitHub 即可发言)