- Published on
RiskMetrics
- Authors

- Name
- CoresightQuant
NOTE
本文为公开交易策略的技战术复盘,聚焦方法逻辑、交易场景与风险边界。
策略解读
这个库的名字叫“RiskMetrics”,但要注意,它和我们常说的、由J.P. Morgan在1994年提出的那个市场风险计量模型“RiskMetrics”并不是一回事。这里的 RiskMetrics 其实是一套“计算风险调整后绩效指标的公共函数库”。它的设计初衷非常朴素:在量化交易中,我们评价一个策略好坏时,不能只看总收益率,还要看为了获得这个收益承担了多大的风险。同样赚了20%,一个最大回撤5%、波动率10%的策略,显然比一个回撤40%、波动率50%的策略更优秀。于是,夏普比率、索提诺比率这类指标就成为了行业通用的“标尺”。
原文提到的“周期性价格收益”是关键。周期可以是分钟、小时、日、周、月等。库内部会先处理这些收益率序列,然后计算出各种风险指标。它的好处是“纯计算、无依赖”——它不关心你用的是均线突破还是机器学习模型,也不在乎你是否模拟了手续费和滑点,它只对收益率序列本身负责。这种做法在量化研究中有很大优势:第一,便于不同策略之间的横向比较;第二,避免了回测平台内部细节对指标计算造成的偏差;第三,开发者可以将这些指标嵌入到任意工作流中,而不必被平台绑定。
从设计哲学上看,这个库非常契合量化交易中的“风险预算”思想。所谓风险预算,就是先明确自己愿意承受多少风险,再在这个约束下追求最大收益。而“风险调整后绩效指标”正是把风险和收益打包成一个数字,方便我们做出决策。例如,夏普比率告诉我们“每承担一单位总波动,能换来多少超额收益”;索提诺比率则更进一步,把波动的定义聚焦在“亏损方向”,因为投资者对下跌的厌恶天然大于对上涨的喜欢。
在实际应用中,我们可以将任何一条策略的资金曲线转换成收益率序列,然后输入到这个类库中,得到一组风险指标。这些指标可以用于策略筛选、参数优化、组合配置以及风险监控。需要注意的是,指标本身只是工具,如何解释、如何设定无风险利率、如何确定收益周期,都取决于使用者自己的判断。
名词解释
为了帮助初学者更好地理解,这里解释几个本文涉及的核心术语:
-
收益率(Return):投资资产在特定时间段内的价值变化比例。例如,昨天收盘价100元,今天收盘价105元,那么日收益率为5%。收益率是绩效计算的最基本输入。
-
波动率(Volatility):通常指收益率的统计标准差,用来衡量资产或策略收益的波动幅度。波动率越高,说明收益越不稳定,风险越大。年化波动率是常见的表达方式。
-
夏普比率(Sharpe Ratio):由诺贝尔经济学奖得主威廉·夏普于1966年提出,计算公式为“策略收益率与无风险利率之差”除以“收益率标准差”。它衡量的是每承担一单位总风险所能获得的超额回报。夏普比率越高,说明策略在相同风险下收益越好。
-
索提诺比率(Sortino Ratio):与夏普比率类似,但分母只考虑下行偏差(即只有亏损时的波动),而忽略上涨时的波动。因此索提诺比率更关注策略的“抗跌能力”,适合厌恶亏损的投资者。
-
下行偏差(Downside Deviation):只计算收益率低于目标值(通常为0或最小可接受回报率)时的波动幅度。它比标准差更合理,因为上涨波动其实是好事。
-
无风险利率(Risk-Free Rate):理论上无违约风险的投资回报率,如短期国债利率。它是计算超额收益的基准,即“你至少可以无风险赚到的钱”。
策略思路讲解
这个库背后的核心策略思路可以用一句话概括:用数学统一“收益”与“风险”,让不同策略在同一个尺度下被衡量。
它首先把价格序列转化为周期收益率。以日线数据为例,假设有100根日线收盘价,那么就能得到99个日度收益率。这些收益率就是后续计算的原料。然后,库会计算这些收益率的均值,作为“平均收益”的估计;再计算标准差,作为“总体风险”的估计。接着,减去无风险利率,就得到“超额收益”。最后,用超额收益除以标准差,得到夏普比率。如果换成索提诺比率,则分母改成“下行偏差”。
这种思路的本质,是承认“高收益必然伴随高风险”这一基本事实。因此,它不追求收益最大化,而是追求“收益/风险”的最大化——也就是在相同风险下获取更高收益,或者在同收益下承担更低风险。这正是机构投资者常说的“风险调整后收益”管理模式。
在实际交易中,我们可以用这个库来回答一系列问题:
- 策略A在近三年的年化收益率为35%,策略B为28%,仅看收益,A胜出。但A的夏普比率为0.9,B为1.6,那么B的单位风险收益更优。
- 某个策略在牛市中表现优异,但在熊市回撤巨大,用索提诺比率可以更直接地暴露其“跌起来没完”的弱点。
- 面对多个子策略,我们可以根据风险调整后指标分配资金权重,把更多资金投给夏普比率更高、回撤更小的子策略。
此外,该库的“不依赖策略特定功能”这一属性,让它非常适合做“策略外评估”。也就是说,你可以在某个回测环境中生成一组交易记录,再把记录转换成收益率序列,拿到这个库中来计算指标。这样即使更换回测平台,只要收益率序列相同,指标结果也能保持一致,从而保证评估的可重复性。
优点
1. 通用性强,适用面广
只要你能提供一段时间内的价格数据或收益率序列,就能计算风险调整后指标。它不限定于某一类交易品种,不要求具体的买卖信号逻辑。股票、期货、加密货币、外汇策略都可以用。
2. 计算口径标准化,便于横向比较
它模仿了主流回测系统在计算策略绩效时所用的方法,因此用该库算出来的夏普比率、索提诺比率,与你在其他专业基金评价系统里看到的数字保持可比。这有利于不同策略、不同基金经理之间的业绩排名。
3. 不受策略逻辑干扰,独立性好
库只处理收益率序列,不关心策略内部如何决策。这样就避免了“策略特定功能”带来的计算偏差。例如,有些回测系统会因手续费、滑点、订单撮合逻辑不同而导致同一策略的绩效指标有差异,而该库可以提供一个统一的“纯收益”口径。
4. 组件化思想,易于集成到研究工作流
作为一个函数库,它可以被灵活调用。你可以把它嵌入批量回测脚本中,对成百上千组参数自动计算风险指标,也可以把结果输出到风险管理仪表盘。这种“只管计算,不干涉逻辑”的设计,大大提高了研发效率。
5. 引导投资者关注“风险调整后收益”,而非单看收益率
这是策略思想上的优点。它天然地教育用户:收益必须除以风险才有效。因此,在策略研发阶段就能过滤掉那些“高风险博取高收益”的脆弱型策略。
缺点
1. 依赖收益率分布的正态性假设
夏普比率和索提诺比率都隐含假设收益率服从或近似服从正态分布。然而真实市场中,收益率普遍具有“尖峰厚尾”特征,即极端值出现概率高于正态分布预测。这会导致指标低估极端风险,从而让人误以为策略很安全,直到黑天鹅事件发生。
2. 对数据频率和样本长度敏感
使用日度收益、周度收益还是月度收益,计算出的年化夏普比率可能差异很大。样本太短时,统计量方差很大,指标缺乏说服力;样本太长则可能包含了多个市场周期,导致代表性下降。因此,指标值的稳定性并不总是可靠。
3. 无风险利率的选择具有主观性
不同投资者可能选择短期国债利率、存款利率或某个固定常数作为无风险利率。无风险利率不同,超额收益就不同,夏普比率也随之改变。这导致同一策略在不同人的评估中可能得到完全不同的分数。
4. 不考虑流动性风险与交易成本
该库只基于收益率序列计算,而收益率序列本身可能已经包含了交易成本,也可能没有。如果仅仅以价格数据计算,则会严重高估策略的实际收益。此外,它完全无视市场深度、冲击成本、持仓容量等现实约束,对资金量较大的策略来说,这个缺陷尤其致命。
5. 容易诱导“指标优化”而产生过拟合
当人们知道了夏普比率是衡量标准,就会不自觉地在策略参数优化时把夏普比率作为目标函数。结果可能是策略在历史数据上表现得“完美”,但在未来实盘中迅速失效。这种“指标最大化”并非该库本身的问题,但它是副产品。
起源年份考证
这里需要明确:我们讨论的这个“RiskMetrics 函数库”本身,在公开交易社区中没有清晰的首发年份记录,因此无法考证其确切的发布时间。我们只能指出,它属于“基于价格收益序列计算风险调整绩效指标”的这一类方法。
该类方法的学术和行业时间线大致如下:
- 1952年:哈里·马科维茨发表《投资组合选择》论文,提出了均值-方差分析框架。这是第一次用数学语言精确刻画“资产组合的收益”与“风险(方差/标准差)”之间的权衡,为后续所有风险调整绩效指标奠定了理论基础。
- 1966年:威廉·夏普提出“报酬-波动性比率”(Reward-to-Variability Ratio),即后来的“夏普比率”。他最初用它来评价共同基金的业绩表现,此后该比率迅速成为基金行业最常用的风险调整指标。
- 1970年代:资本资产定价模型(CAPM)被广泛接受,进一步强化了“贝塔”与“超额收益”之间的关系。投资者开始习惯用“单位风险溢价”来思考问题。
- 1980年代初:弗兰克·索提诺等学者指出,夏普比率将上涨波动与下跌波动等同对待,并不符合投资者对风险的真实感知。于是他们提出了只关注下行风险的绩效指标,即“索提诺比率”,并给出了“下行偏差”的计算方式。这是对夏普比率的重要修正。
- 1990年代:J.P. Morgan等大型机构开始发布市场风险计量框架,如1994年推出的RiskMetrics模型,将风险量化推向工程化、工具化。业界逐渐出现“指标函数库”这一软件形态,旨在把复杂的金融计量算法封装成可复用组件。
- 21世纪初至今:量化交易平台和开源金融社区开始广泛内置夏普、索提诺、卡玛等指标,作为策略回测的标准输出。如今,“风险调整后绩效指标”已经成了量化研究的默认语言,几乎所有专业级策略评估报告都会包含这类指标。
因此,我们可以说,“基于周期收益率计算风险调整绩效指标”的思想根源可追溯到1952年的现代投资组合理论,而作为软件库的流行形态,则是在1990年代末至2000年代初,随着量化交易工具的发展而逐渐成型的。
改进建议
1. 引入尾部风险指标(VaR、CVaR)
在夏普比率和索提诺比率之外,增加“在险价值”和“条件在险价值”等指标。这些指标专门刻画极端亏损场景,能有效弥补正态假设带来的尾部盲区。例如,可以在收益序列的分位数层面估算“最坏情况下会亏多少”。
2. 动态化处理无风险利率
不要使用固定常数作为无风险利率,而是根据评估周期动态获取对应期限的国债收益率。同时可以做敏感性分析,检验无风险利率在1%、2%、3%等水平下指标如何变化,从而判断策略对基准的依赖程度。
3. 增加多周期对比功能
对同一策略分别计算日频、周频、月频的风险调整后指标,并输出每个频率下的年化结果。这样可以帮助研究者判断策略收益来源是否稳定。如果日频夏普比率很高但月频夏普比率很低,说明策略可能依赖高频交易摩擦或短周期噪声。
4. 使用自助抽样或贝叶斯方法估计置信区间
对于样本量较小的策略,可以通过有放回的随机抽样(自助法)生成大量收益率序列的重新采样,再计算每次的夏普比率,从而得到该指标的置信区间。这比直接给一个点估计值更可靠。贝叶斯方法还可以将先验知识融入到指标推断中。
5. 合并最大回撤与卡玛比率
在原有的指标体系中加入“最大回撤”和“卡玛比率(年化收益/最大回撤)”。最大回撤衡量的是策略在历史上最糟糕时点从峰顶跌到谷底的幅度,它是许多机构投资者最关心的风险数字。卡玛比率则直接从“回撤”角度给出风险调整收益,与夏普比率形成互补。
6. 对收益率进行交易成本和滑点调整
在使用价格数据计算收益率之前,应当根据策略的换手率和平均持仓期,估算每笔交易的成本,并将这些成本从收益率中扣除。这样才能反映策略的真实可实现收益。对于高频策略,这一点尤其重要。
7. 分市场环境评估
将完整历史数据按“牛市、熊市、震荡市”等不同市场状态进行分段,然后在每个子时期计算风险调整后指标。这样可以从时间维度观察策略的风险收益特征是否随时间漂移,有助于识别策略的市场适应性。
8. 增加正偏度奖励机制
在计算绩效指标时,可以引入偏度(Skewness)和峰度(Kurtosis)调整项。例如,如果策略的收益分布呈现右偏(即少数超高收益拉动整体),可以在评分上给予适当奖励;如果是左偏(大亏集中在少数几天),则应给出惩罚。这能更全面地刻画收益质量。
总结
“RiskMetrics”本质上不是一个具体的交易策略,而是一套“风险测量工具箱”。它把收益率、标准差、下行偏差等底层概念,组装成了夏普比率、索提诺比率这类被行业广泛认可的风险调整后绩效指标。它的价值在于将“收益与风险是不可分割的整体”这一投资核心思想,转化成可计算、可比较、可复用的代码函数。
对于量化交易者而言,理解并善用这类工具,远比追求“绝对收益率”更有意义。因为在真实市场中,高收益率往往是高风险的表象,只有在扣除风险之后还能剩下的收益,才是真正属于投资者的“智慧回报”。同时我们也应当清醒地看到,任何指标都有其假设边界。夏普比率不能预防黑天鹅,索提诺比率不能解决流动性危机。它们只是辅助我们决策的光谱仪,而不是包治百病的良药。
未来,随着算法交易和机器学习模型的普及,风险调整后指标的计算方式可能会更加复杂——从线性假设走向非线性、从静态参数走向动态贝叶斯、从单一指标走向多维度风险画像。但无论工具如何进化,“先衡量风险,再评价收益”这一原则,将永远是量化投资的定海神针。