跳转至

⚠️ 免责声明:本章仅为教育与研究方法展示,不构成任何投资建议。 所有回测结果来自历史数据,不代表未来表现。投资有风险,决策需独立判断。

第十课:夏普比——每单位风险的回报

本章代码:code/lesson10_sharpe.py 运行方式:python lesson10_sharpe.py

10.0 策略概述

这是什么策略

前九课里你学会了看收益、看风险、看估值、看动量。现在该问一个整合性问题了:哪个指数性价比最高?

夏普比 = (年化收益 - 无风险利率) / 年化波动率。

翻译:每承受 1% 的颠簸,你额外赚了多少。就像买西瓜算"多少钱一斤"——不是只问总价,是问单价

它回答什么问题

问题 方法
哪个指数"性价比"最高? 夏普比排名
夏普比最高的指数一定最值得买吗? 不一定——夏普比惩罚上涨波动
夏普比为负 = 什么? 买理财比买这个指数更好

10.1 16 指数夏普比排名

python code/lesson10_sharpe.py,你会得到(1990—2026 全数据,无风险利率 3.5%):

排名  指数        夏普比   年化收益   波动率
  1   中证 500    0.24     10.3%     28.8%
  2   深证红利    0.23      9.9%     27.4%
  3   深证 100    0.23      9.8%     27.7%
  4   上证指数    0.21     11.1%     36.1%
  5   中证 800    0.18      8.2%     25.4%
 ...
 15   深证价值   -0.03      2.7%     23.4%
 16   深证成长   -0.09      1.2%     25.7%

图 10-1:16 指数夏普比排名柱状图。 绿柱(>0.5)= 优秀,橙柱(0—0.5)= 一般,红柱(<0)= 不如存银行。注意垫底的深证价值(-0.03)和深证成长(-0.09)——买理财比买它们好。上证 50 的夏普只有 0.05,排在倒数第四——"上证 50 最稳"是常见错觉。

图 10-1

10.2 夏普比的死穴

夏普比把"上涨波动"和"下跌波动"同等对待。一个指数如果暴涨 50% 再跌 10%,波动率会很大——夏普比会很低。但这个指数的持有者赚了 35%。

Sortino 比率修正了这个缺陷——只计算下跌波动。但大多数资料引用的还是夏普比,所以你要知道它的局限。

10.3 这一课教了你什么

  1. 夏普比 = "性价比"——每单位风险的超额回报。
  2. 中证 500 是 26 年综合性价比冠军(夏普 0.24),深证价值/深证成长垫底(负值)。
  3. 上证 50 夏普仅 0.05——"大盘蓝筹最稳"需要数据检验,不能靠感觉。
  4. 夏普比惩罚上涨波动——这不是 bug,但使用时要意识到。
  5. 夏普比最大的用处不是选指数——是排除。夏普比 < 0 的指数直接跳过。

10.3 课堂问答

问:夏普比 0.24 的指数,和夏普比 0.18 的指数,我应该选前者吗?

不一定。夏普比的差异在统计上可能不显著——0.24 和 0.18 之间的差距,换一个数据窗口可能就反转了(本课代码里沪深300 的 3 年滚动夏普在 -1.09 到 +2.78 之间波动)。夏普比最大的价值在排除——夏普比 < 0 的指数(深证价值 -0.03、深证成长 -0.09),你可以确定它"不如存银行"。但夏普比 0.24 和 0.18 之间——需要结合其他因素(估值、动量、你自己的信息优势)综合判断。

问:为什么不用 Sortino 比率?

应该用。Sortino 只计算下跌波动——它不会因为一个指数涨得太好而惩罚它。但因为大多数资料和基金报告引用的是夏普比,你要先学会看夏普比——然后自己心里默默算 Sortino。


动手练习(第 10 课)

  1. 入门:实现 Sortino 比。把分母从"总波动"改成"下行波动" (只取负收益的标准差),重新排名。谁上升了?谁下降了? 想想为什么(惩罚上涨波动的夏普,对谁最不公平)。
  2. 进阶:改无风险利率。把 3.5% 改成 2% 和 5%,16 个指数的排名变化大吗? 如果排名对无风险利率不敏感,说明结论稳;如果敏感,说明结论脆。
  3. 挑战:找"从未为负"的指数。写代码算每个指数 3 年滚动夏普的历史最低值—— 有没有一个指数在任何 3 年窗口都没亏过钱?如果答案是"没有", 你就理解了为什么"过去表现好"不能推导"未来表现好"。

下节预告: 最后一课——强弱势策略。不是"涨了还是跌了",是"涨了多少个标准差"。跃升等级,第十一课。