【量化投资从入门到精通 #45】买基金看排名就够?用净值算夏普、回撤、卡玛,给基金排座次
专题阶。可转债讲完,这一篇讲基金——普通投资者接触最多的品种。买基金看平台排名?那是最容易被忽悠的选法。用量化,只用一条"净值曲线"就能给基金排座次。
一、这个方法解决什么投资问题
基金销售页最爱晒"近一年涨了 80%"。但:
- 80% 可能是踩中了单一赛道的高波动,跌起来也狠;
- 排名是"和别人比",不是"和风险比";
- 今年第一,明年可能倒数。
量化筛选基金,只用一条可公开获取的净值序列,算几个"风险调整后"的指标,把"赚得多不多"和"赚得稳不稳"分开看。这篇文章给你五个指标 + 一个净值择时套路。
二、核心思想:风险调整后的收益
只看收益是业余,看"每承担一单位风险换来了多少收益"才是专业。五个核心指标:
指标 看什么 越高越好?
年化收益 长期赚钱能力 是
年化波动 颠不颠 否(越低越稳)
夏普比率 每单位波动换来的超额收益 是
最大回撤 最惨一波亏多少 否(越小越好)
卡玛比率 年化收益 ÷ 最大回撤 是
夏普和卡玛是"性价比"指标——一个基金年化 20% 但回撤 50%,和一个年化 15% 回撤 10% 的,后者夏普/卡玛往往更高,持有体验更好。
三、实操演示
合成示意净值(6 只基金,约 1 年):算五指标并按夏普排序;再对单只基金做净值双均线择时。
import numpy as np, pandas as pd
rng = np.random.default_rng(45082026)
T = 250
navs = {}
for i in range(6):
ret = rng.normal(rng.uniform(0.0003,0.0012), rng.uniform(0.008,0.02), T)
navs[f"基金{i+1}"] = 1.0*np.cumprod(1+ret)
df = pd.DataFrame(navs)
def metrics(nav):
ret = nav.pct_change().dropna()
ann = (1+ret).prod()**(252/len(ret)) - 1
vol_a = ret.std()*np.sqrt(252)
sharpe = ann/vol_a if vol_a>0 else 0
dd = (nav/nav.cummax() - 1).min()
calmar = ann/abs(dd) if dd<0 else 0
return ann, vol_a, sharpe, dd, calmar
rows = [([c]+list(metrics(df[c]))) for c in df.columns]
res = pd.DataFrame(rows, columns=["基金","年化","年化波动","夏普","最大回撤","卡玛"]).round(3)
print(res.sort_values("夏普", ascending=False).to_string(index=False))
运行结果(合成示意,T=250,按夏普排序):
基金 年化 年化波动 夏普 最大回撤 卡玛
基金3 0.939 0.167 5.616 −0.084 11.137
基金4 0.735 0.185 3.981 −0.084 8.708
基金5 0.863 0.320 2.699 −0.180 4.787
基金1 0.441 0.249 1.769 −0.174 2.527
基金2 0.237 0.297 0.799 −0.243 0.973
基金6 0.037 0.177 0.211 −0.128 0.291
数据需求标注:基金净值/持仓/分类属需求 R3,行情服务补全后即可用真实净值替换 navs 段,五指标算法完全一致;分类数据还能做"同类基金内排名",比全市场排名更公平。
四、结果解读
按夏普排,基金3 居首(5.616)——它年化近 94% 却只有 8.4% 回撤,性价比极高。而基金5 年化更高(86%)但波动大、回撤 18%,夏普被拉低到 2.7。
这正是量化的价值:把"赚得多"和"赚得稳"拆开。光看年化,基金会误选基金5;看夏普,基金3 才是真优等生。
关于净值择时(双均线):本示意样本里买入持有年化 +0.441,双均线策略 +0.178,择时反而跑输。这是故意保留的诚实结果——择时不是必胜,它牺牲了部分上行、换取下跌保护,在单边上涨市会跑输。所以择时适合波动大、回撤深的基金,不适配所有场景。
五、常见陷阱
- 用短期排名选基金:一年排名噪声极大,看 3–5 年夏普/卡玛才稳。
- 忽略规模与风格:小基金可能因单票暴涨拉高夏普,规模变大后难以复制。
- 回撤要看"修复时间":同样 −20% 回撤,3 个月修复和 2 年修复体验天差地别,卡玛只看了幅度没看时间。
- 净值择时的成本:频繁调仓有申购赎回费、对净值跳空敏感,回测漂亮实盘打折(#32)。
六、小结 + 下篇预告
基金量化 = 只用净值序列算年化/波动/夏普/最大回撤/卡玛,按"风险调整后收益"排座次,而非看平台排名。净值双均线可做简单择时,但非必胜。
下一篇 #46 讲基本面量化——用财报做价值投资(低 PE + 高 ROC 的"魔法公式"),依赖财报基本面(需求 R1),补全后即可实跑。
免责声明
本文为量化方法教学,代码示例使用合成示意数据,不构成投资建议,不承诺收益。基金有净值波动风险,投资需谨慎。

浙公网安备 33010602011771号