【诺贝尔粉丝勿入】Dig 一下 Sharpe ratio 和 Sortino ratio

Sharpe ratio和Sortino ratio,它们都用来衡量每获得一份收益面临着多大风险。下面是两者的计算公式:

可以看到,这两者的区别是:分母不同。
接下来会挨个解释一下公式中出现的4种变量,但在这之前,需要做一些假设,我需要数据来说明。
假设要统计过去半年内以月为周期的Sharpe和Sortino,以下是过去6个月的每月相对收益状况:

1. 参数定义

Rp: 期望的收益值。就是字面上的意思。但是初次接触这个公式的人就会问,这个数该怎么填?我期望每月收益率100%!抱歉,这里期望是指数学上的期望(百度一下,你将会温习到中学时代的数理统计方面的内容),这个数暂时我来定,因为指定了上面的pf,期望值就已经确定了。对,期望的意思是,按这种势头搞下去,你一年(或其它自定义的周期)能赚多少。

  • Rf: 抱歉上面的期望不是你的“期望”,但这个Rf(无风险收益率)你可以自行决定。比如像我这种没什么门道的普通人,就6%吧,存个长期的理财。如果你有别的门道,比如把钱放到你二大爷那,他每年都能搞出20%的收益,那么这个值对你来说就是20%。

  • σ:这个东西就是标准差,用来衡量数列的离散程度。比如你今天翻倍,明天又跌去八成,后天又翻倍,这就说明离散程度较大了,虽然你最后还是赚了,但中间的过程比较惊悚,也就是说,你承受的风险比较大。

  • σd:这个东西是下偏差。有学机械的提出疑问,这是搞装配么,怎么还有下偏差,确定这是统计学里面的?额,我学数理统计的时候确实没有这个东西。它的意思是,只统计基准以下的数据;基准以上的数据统统当作0处理。Sortino ration的发明者给出的理由是:我亏的才算风险,赚的再多我不怕,怎么能说是有风险呢!所以它的含意是,未超过基准收益部分的数据的离散程度。

    2. 年化收益率的计算方法

Rp,Rf我们可以简单理解为收益率。但要注意到,收益率是有周期单位的,年化收益和日收益、月收益不在一个维度上,没有可比性。不同周期的收益率不能代入上述公式直接计算,这就存在着收益率换算的问题。在知乎上看到有些量化平台给出的N日收益换算到年化收益的方法是(还是个高票回答):

  • (参考标准最终指数 / 参考标准初始指数 – 1) / 回测交易日数量 × 250

不得不指出,这样的计算方法是不合适的。因为每天的收益会改变帐户的资产状况,不能简单的用算术平均来计算。不同周期收益率之间的换算要考虑到资产的变化,即复利,所以一些乘方和开方的运算是不可避免的。

下面给出了以七日收益来计算年化收益预期的实现代码,原始数据取自己余额宝:

类似的,由月收益得到日收益或年收益的时候,可以相应的修改上面的代码。

3. Sharp ratio的计算方法

接下来是代码show time,先算一下Sharp:

## 4. Sortino ratio的计算方法

计算Sortino ratio与计算Sharpe ratio的唯一区别是,要用下偏差替代标准差。所谓下偏差,就是忽略掉上偏差的影响。我们可以这样处理,当某一个月的收益超过参考收益时,将其差值置为0:

但是,我们会发现,刚才我们使用的SummaryStatistics类,并没有计算下偏差的方法,那么,我们可以写一个:

  • [镭矿量化交易] 公众号菜单栏提供选择因子生成策略的小工具(策略生成 beta),欢迎大家尝试一下量化的神奇。如果你是程序员,也可以进入镭矿 raquant 量化平台,开启量化之旅。