1810 字
9 分钟

看懂收益与风险:年化收益、最大回撤与夏普比率

本课目标:掌握评价一条净值曲线的三把尺子——年化收益、最大回撤、夏普比率,理解它们各自度量什么,并能用 pandas 亲手算出来。

累计收益与年化收益#

累计收益率回答”这段时间总共赚了多少”:期末净值除以期初净值减一。但”三年赚 40%“和”一年赚 40%“显然不是一回事,所以需要年化——把不同时长的收益折算到统一的”每年”口径上,才能互相比较。

年化的正确方式是几何年化(复利口径),而不是简单地除以年数:

total_return = nav.iloc[-1] / nav.iloc[0] - 1 # 累计收益
n_years = len(nav) / 252 # 约 252 个交易日/年
ann_return = (1 + total_return) ** (1 / n_years) - 1 # 几何年化

为什么必须用复利口径?因为收益是叠乘关系:先亏 50% 再赚 50%,结果不是回到原点,而是净亏 25%。简单平均会掩盖这种不对称,几何年化才如实反映资金的真实增长速度。

两个注意点:一是时间太短不要年化。把一个月的收益年化成”年化百分之几十”,是数字游戏,没有统计意义。二是年化收益抹平了过程——它不告诉你中途经历了什么,这正是接下来两个指标要补的课。

波动率:过程有多颠簸#

波动率是日收益率的标准差,通常乘以 √252 折算成年化口径:

daily_ret = nav.pct_change().dropna()
ann_vol = daily_ret.std() * (252 ** 0.5)

直觉上,波动率高意味着净值曲线上蹿下跳,持有体验差,也意味着你在任意一天被迫卖出时,价格可能很不利。两条年化收益相同的曲线,波动率低的那条几乎在所有意义上更好。

要注意波动率不是一成不变的:市场平静期和剧烈波动期的数值可能差好几倍。所以除了看整段样本的波动率,也可以用 rolling 算滚动波动率,观察策略在不同市场环境下的风险水平是否稳定。

最大回撤:最痛的一段经历#

最大回撤(Max Drawdown)回答一个非常具体的问题:如果我不幸买在历史最高点,之后最惨的时候亏了多少? 它是净值从任意历史高点回落的最大幅度。

计算思路分三步:对净值序列求”截至每一天的历史最高值”;用当天净值除以历史最高值减一,得到当天的回撤;取整个序列中最深的那个值。

peak = nav.cummax() # 截至当天的历史最高净值
drawdown = nav / peak - 1 # 每天的回撤(负数或零)
max_dd = drawdown.min() # 最大回撤

最大回撤的价值在于它贴近真实痛感:它直接对应”账户从最高点缩水多少”,是普通人最容易感知、也最容易导致中途放弃的数字。评估策略时问自己一句:回测里的最大回撤如果真实发生在我的账户上,我拿得住吗?拿不住,再高的年化收益也和你无关。

除了深度,还要看回撤持续时间:从净值创下高点到重新收复这个高点,中间隔了多久。有些策略回撤不算深,但一套就是一两年,对持有人的心理消耗同样巨大。用上面算出的 drawdown 序列找出连续为负的最长区间,就能得到这个数字。

夏普比率:每承担一份风险换来多少收益#

夏普比率把收益和风险放进同一个数字:超额收益(相对无风险利率)除以波动率。

rf_daily = 0.02 / 252 # 假设年化无风险利率示意值
excess = daily_ret - rf_daily
sharpe = excess.mean() / excess.std() * (252 ** 0.5)

直觉理解:夏普比率衡量的是”性价比”——每承担一个单位的波动,换来多少超额收益。同样赚到 10%,一条曲线平稳爬升、另一条大起大落,前者夏普更高,说明它的收益更”便宜”。

夏普比率也有局限:它把向上和向下的波动同等对待,而投资者真正讨厌的只是向下的波动;对收益分布极端不对称的策略,它可能给出误导性的高分。所以夏普适合当第一道筛子,而不是唯一标准。

使用夏普时还要注意可比性:比较两个夏普比率,前提是它们用同样的时间区间、同样的数据频率、同样的无风险利率假设算出来。拿别人报告里的夏普和自己算的直接比大小,经常是在比较两个口径不同的数字。

只看收益不看风险的坑#

把上面的指标合起来看一个对比:

指标策略 A策略 B
年化收益较高中等
年化波动率很高较低
最大回撤很深较浅
夏普比率较低较高

只看第一行,策略 A 完胜;四行一起看,策略 B 很可能才是多数人真正能坚持持有的那个。收益率排行榜只展示第一行,这就是”冠军基金第二年常令人失望”的一个结构性原因:高收益样本里混着大量高风险策略,运气成分被当成了实力。

另一个常见坑是用短期收益外推长期:某策略最近三个月表现出色,不代表它的长期年化就是那个水平。看指标时永远配上时间长度和期间的市场环境——一个只覆盖单边上涨行情的回测,无论指标多漂亮,都没有经历过真正的考验。

最后提醒一句:所有指标都应该在扣除交易成本之后计算。佣金、印花税和滑点会同时拉低收益、加深回撤,一个换手频繁的策略在扣费前后可能是两个完全不同的结论。本文不构成投资建议。

本课小结#

  • 年化收益用几何(复利)口径计算,时间太短的收益不要年化。
  • 波动率度量过程的颠簸程度,同等收益下越低越好。
  • 最大回撤是”买在最高点后最惨亏多少”,直接对应持有人的真实痛感。
  • 夏普比率衡量单位风险换来的超额收益,适合做第一道筛子但不是唯一标准。
  • 评价任何策略或基金,收益、波动、回撤、夏普四个数字要一起看。

动手练习:用前几课下载的股票(或一只宽基 ETF)近三年的后复权数据,构造”买入并持有”的净值曲线,计算年化收益、年化波动率、最大回撤和夏普比率四个指标,并找出最大回撤对应的起止日期,回想那段时间市场发生了什么。