glmos-code-explain

这系列的文章主要为了整理和汇总所有主流的评价量化策略和因子的指标。欢迎持续关注。

一、策略评价指标总览

1.1 铺垫

评价量化策略,其实可以从不同角度进行评价;就像人的多维性一样,策略也具有多维性,单一的策略评价指标是不足以评价一个策略的。虽然我知道有些老板刚接触量化,但实际上,光看年化收益回撤比这一个指标去评价一个策略是远远不够的

可能年化收益回撤比从0.2提高到1是一个很大的提升,那2提高到3呢?3提高到4呢?策略的质量一定是提高了吗?那么给我感觉,**后者的提升就确实看不出来明显区别了;甚至如果这个年化收益回撤比达到了10,20,老板们还敢用吗?**这里面会不会有未来函数的风险?

那既然单纯看数字看不出来什么,我们就要想办法跳出单一评价指标的想法,用多维度的视角去看待我们有的每一个策略。同时,如果从多维度的角度看来,比如我们知道了这个策略的容量、知道了这个策略的收益率、知道了这个策略在什么样的行情下赚钱多,什么样的行情下赚钱少等等,我们就可以更好的使用策略甚至让策略按照某些合适的方式轮动起来了

1.2 策略评价的五个维度

前情铺垫完毕,接下来我们揭晓:策略的评价可以从哪些维度进行评价? 我认为可以分为五类:

  • 总体收益水准
  • 总体风险大小
  • 风险调整收益
  • 交易执行与可实施性
  • 稳健性 / 鲁棒性

这五类分别是什么作用?为什么要用这五类评价指标?这五类分别解决了什么样的问题,能带我们了解策略的哪些内容和方面?下面一一介绍:

  • 收益类:可以理解为“策略本身绝对的赚了多少?”,又或者“策略相对于指数多赚了多少?
  • 风险类:可以理解为“策略本身有多少波动?”,或者“策略每次从最高峰到最低谷,最多摔下去多少?用了多久爬出来的?
  • 风险调整收益:主要回答的问题是“每一单位风险我能赚多少收益?”,因为只看收益不看风险是不全面的,因此我们采用比率的方式兼顾二者。
  • 交易执行&可实施性:回测再好,现实中也要落地。这一块主要回答的问题是:“策略能不能真下单,能不能吃得下资金?
  • 稳健型 / 鲁棒性:这一块主要是为了防止过拟合或者策略只适合某一段行情,从而带我们更全面深入的了解这策略是因为“模型真有用”,还是因为“只是在数据上表现的好”,还是因为“正好行情来了,适合这个策略”。

1.3 叙述流程

到此,我们先针对目前主流的评价指标进行了一些概述。但我并不打算使用顺序讲解的方式进行讲解,我觉得可能会有点死板,并且看完之后,可能只是对指标本身有了一些理解,但对于怎么用,还是没有太多想法。

因此我采用的方式是评价的由易到难,先从最简单的年化收益率、最大回撤、夏普比率看起;之后针对夏普比率进行一些调整,我们把夏普比率换成一系列比率,看看会发生什么;最后针对这个模板之外的一些内容进行讲解。

下面请看最简单的那个模板,也是我们较为熟悉的年化收益率、最大回撤、夏普比率

二、梦开始的地方

其实,我在策略构建这一块,最先接触的也就是年化收益、最大回撤、年化收益回撤比这三个指标。但GPT推荐我先看看夏普比率,现在想想,有道理。因为夏普比率其实才是量化中最常用来评价一个策略单位波动对应收益的指标,而年化收益回撤比反而会弱一些,因为它在风险中只关注了最大回撤

下面我们先顺序讲解这三个指标。

2.1 年化收益率(CAGR)

年化收益率相信大家再熟悉不过了,其实相比于年化收益回撤比,我们更早关注到的肯定是收益的高低程度。在一开始对策略没有太多认知的时候,我们一眼就会看中“我每年能用这个策略赚多少收益率?”这个问题。

这个指标的核心恰恰反映了这个问题,但不是以后我能赚多少收益率,而是“在过去,如果我坚持使用这个策略,我能每年用这个策略在我本金的基础上赚多少收益率?”

这两个概念或者说问题,是有本质区别的!!

首先说,这个指标的计算方式很简单,假设我回测了Y年,那么这个指标就是用累积净值开Y分之一次方-1得到的,也就是:

$$
CAGR=(NV)^{1/Y}-1
$$

其中NV是累积净值。从直觉上讲,如果一个策略用三年的时间从净值为1涨到了1.33,那么CAGR就约等于10%,可以直观理解为“每年赚10%,连续三年”。

但这一方面,是我回测区间内每一年的平均情况,这个指标实际上并不能反映每年一定能赚这么多收益率。就好像我和马云平均一下,我们平均后每个人都有数不尽的钱,但我真的有这么多钱吗?(手动狗头)

另一方面,这是回测区间内每一年的平均情况,这个指标不能说明我在真正实盘的时候每年都能达到这么多收益率;实际上,每年的收益有可能比回测的年化收益率高,但也有可能直接是负的。外部的世界会发生很多变故,哪怕发生一个黑天鹅事件,如果策略抵抗能力不强的话,也有可能会让当年的收益直接降低10个点。更不用说每一年的行情都不一样了。也就是,样本内和样本外本质上就是不一样的,是有本质区别的。

**同时,最终通过策略赚的钱,本质上还是和下了多少注有关。下注的金额乘以收益率才是赚来的钱。因此,我们不仅要关注收益,更要关注风险。**这就说到了我们的第二部分:风险度量。我们先简单介绍一个常看的风险度量:最大回撤。

2.2 最大回撤(Max Drawdown)

最大回撤的话,应该是各位老板看到的第二个评价策略的指标。如果说年化收益对应着“贪婪”,那最大回撤就对应着“恐惧”。

最大回撤表示的是在回测区间内,如果我们先到达了净值最高点,但又从这个最高点跌到之后的最低点(这个过程我们称之为回撤),最惨的一次跌了多少收益率。但这,同样是回测区间内我最大回撤了多少,而不是以后我会最大回撤多少。

这个指标的计算方式就稍微复杂一些。**首先,我们要看相对于每个时间点,过往的最大净值。**比如说站在现在,看过去没有比现在更高的净值,那就是现在的净值对应着最大净值;而如果有比现在更高的净值,那就找出过往最大的净值。我们假设每个时间点是现在,就能对每个时间点找出对应的过往最大净值。它的公式如下:

$$
Peak_t=Max_{1\le s\le t}NV_s
$$

**其次,我们要看相对于每个时间点,从最大净值到该时间点环比跌了百分之多少。**还是上面那个例子,如果是前者,那么现在的回撤就是0;如果是后者,那么现在的回撤就是从过往的最高点到现在的总收益率(这个收益率一定是负的)。它的公式如下:

$$
Drawdown_t=\frac{NV_t-Peak_t}{Peak_t}
$$

最后,我们从回测区间中所有的回撤里面,选出最大的那个回撤,我们记为最大回撤,也就是:

$$
Max Drawdown=min_tDrawdown_t
$$

(由于Drawdown为负,所以选出的一定是最小的回撤值,也就是最大的回撤绝对值)这一指标,本质上就是衡量:在过去,如果一直满仓运行这个策略,最多会亏的收益率。也就相当于我过去最多承受住了多少的风险。

但这个最大回撤,由于其最大的属性,因此可能是由于某些黑天鹅事件导致的,也可能是某些行情导致的,这些信息实际上在这个指标中都反映不出来。我们在回测的时候——尤其是A股——很可能会看到一种现象:回撤的水下曲线(也就是那个灰色阴影)就在15,16年股灾那段时间突出一个50%的峰,其他时间都在30,20甚至10%以内。这就说明单纯的最大回撤不足以反应策略整体的信息,只能说明过去扛下的最大的风险。

2.3 两个额外的小补充

刚才我们只是谈论了年化收益,最大回撤这两个衡量收益与回撤的指标。那么其他的收益、回撤指标都有哪些呢?下面我们来列举一下:

  1. 收益类经典指标:
    1. 其他时间尺度的平均收益:如日均收益、月均收益、季度收益等等;
    2. 超额收益:这类指标衡量的是相对于一个基准(benchmark)收益曲线,我对它的收益超出的部分有多少。例如做指增,我们的基准就是指数收益;如果做行业,那基准就是行业指数收益……(那么实际上,这里可以带来一个启发:如果我们在小市值策略增强的时候,按照道理,是应该和小市值的收益进行超额收益对比的,这样才能看出我们增强的那部分究竟有没有起作用。实际上,不仅仅是要看平均的超额收益,更要看超额收益的分布情况以及每个月甚至每个周一、周二之类的分布情况,这样才更能分析出我们增强的那部分带来的收益是什么样的收益。);
    3. 有些老板可能会说,既然有最大回撤,那最大收益有没有用呢?我个人认为哈,最大收益只是行情正好适用该策略,且相当于一个偶发事件。我们其实更想躲避最大风险,而并非追求最大收益。不太可能每个月都创造一个更大的收益,但每个月,都有可能会带来更大的回撤,所以这个回撤我们其实更加关心。
  2. 回撤类经典指标:
    1. 最大回撤持续时间也就是从最深的坑里爬出来,策略用了多长时间。这个时间与最大回撤结合后,更能看出这个策略在过往的抗风险能力有多强。假设最大回撤有10%,但持续时间可能有三个月,这类策略其实收益也不是很好,抗风险能力也是差的。(当然啦,也不太可能最大回撤有50%,但我一周就爬出来了,这类还是少数。)
    2. 平均回撤持续时间(中位数)、平均回撤:也就是回撤和回撤持续时间的平均情况。**这两类指标能反映出负收益的平均情况,更好的帮助心态建设(这个经验来自于我玩b的经验,如果一个策略在亏损时,平均每笔亏损2%,那当我在看到新的一笔亏损了1%的时候,我的心态就很稳)。但其实,这里更建议看看水下曲线,也就是第三个:
    3. 水下曲线:其实也就是那个灰色阴影。这个阴影反应的是每个时间点相对于最高点亏的收益率。**往往我们更怕缓跌而不怕急跌,又比如我们想看看历史上的回撤次数、回撤力度之类,那这个水下曲线无疑是最好的参考。

同时,这里再给大家一个更好的角度看待这些指标。实际上,这些指标,无一例外都和样本量相关。在统计学的视角下,本质上,样本量越大,统计出的指标可信度越高。就好像那个最大回撤,如果我们只看最大回撤,这其实只是一个最坏的样本统计出的结果,但如果我们看平均回撤和平均回撤时间,那其实会比只看最大回撤效果好很多。

更进一步,为什么需要不同的指标一起观察?就是因为这些指标统计的是不同维度的样本。而基于样本量越大可信度越高的思想,我们统计过很多样本之后,再从不同维度进行观察,就会发现更多信息。就好像我们先看绝对收益,再看超额收益,如果绝对收益很高,同时1,4,12月的超额收益也很高,那就说明从这两个角度看来,这个策略可用,且比一般的收益高而超额收益低的策略更好用。

看完了收益和回撤类的评价经典指标,接下来,我们会好奇一件事:光看收益也不行,光看回撤也不行,那我们如何衡量收益与风险之间的关系?我们这时会有一个朴素的想法:利用风险衡量收益,也就是为收益加上风险的这把标尺,这样就能将两类指标进行对比,得出更强的结论。那么接下来,我们就要介绍那个最经典的指标——比率类指标。

三、比率类指标(上)

这里,我们先给出一个结论:**这些比率类的评价指标都是“用收益除以风险”得到的,也就是用某种收益度量除以某种风险度量算出的。**那么,具体有哪些收益和风险的度量方法呢?下面我们先介绍两个常用的比率,分别是:夏普比率(Sharpe Ratio)和年化收益回撤比(Calmar Ratio,这个是有英文名字的)。

3.1 夏普比率

夏普比率描述的是,在承担策略带来的所有风险或波动的前提下,每承担一单位波动能带来多少收益。 具体来说,利用的是日均收益率的平均水平除以日均收益率的波动,得到夏普比率。它的计算步骤如下:

第一步:首先计算平均超额收益(一般这里的基准是无风险收益率,但我们一般设置为0),也就是:

$$
\bar{r}=\frac{\sum_{t=1}^N{(r_t-r_{f,t})}}{N}
$$

其中原始的$r$是日均收益率,而$r_f$是无风险收益率。

第二步:算出收益的波动(也就是标准差):

$$
\sigma=stdDev(r_t-r_{f,t})
$$

其中$stdDev$计算的是每一日的收益率的总体标准差,也就是收益的波动。

第三步:日度夏普计算:

$$
Sharpe_{daily}=\frac{\bar{r}}{\sigma}
$$

第四步:折算为年化夏普:

$$
Sharpe_{Annual}=Sharpe_{daily}\times \sqrt{252}
$$

这样就得到了年化夏普比率。

那么,怎么从直觉上来看这个夏普比率呢?

  • 分子角度:策略平均每天相对于无风险收益多赚了多少?
  • 分母角度:每天这个策略的盈亏起伏有多凶?
  • 所以,Sharpe越高,说明同样的波动下,这个策略相比于别的策略赚钱更稳定更多。

3.2 三剑合一

既然我们得到了收益的观察角度、风险的观察角度、风险度量收益的初始角度,那么最基础的,怎么看一个策略一般意义上好或者不好呢?

首先说,每个人的抗风险能力不一样,这里只是一个一般的说明,具体情况可以具体分析;其次,这里只描述相对来讲的一般意义的好与坏。

那么这三把剑分别代表了什么?我们再次梳理一下:

  • CAGR(年化收益率)高,代表赚钱能力强;
  • Max Drawdown(最大回撤)小,代表抗打击,跌的不惨;
  • Sharpe高,代表情绪稳定,不怎么暴躁,收益很稳。

所以,我们一般会有考虑这样的两种策略:

  • 第一种CAGR高+Max Drawdown高+Sharpe一般,这样的策略我们也称之为冒险型策略。 比如一个策略,年化收益率100%,但最大回撤50%,Sharpe只有0.8,此时,能否扛住最大回撤就是关键。但现实中,我们交易的是自己的钱,所以当最大回撤50%的时候,如果是大资金,其实很可能就已经停止策略了。你的抗风险能力如何?你敢用这样大回撤的策略吗?如果是真的在运行这个策略,你敢在底部的时候加仓吗?这些都是问题。
  • 第二种CAGR一般+Max Drawdown小+Sharpe高,这样的策略我们也称之为稳健型策略。 比如一个策略,虽然年化收益率可能只有20-30%,但最大回撤只有10%甚至9%,Sharpe高达3,这个时候,我们其实就更能相信这个策略,更敢下大注,赚的绝对值也就相应会比第一种更高。Sharpe高达3说明这个策略比较稳定,对我们心态是一个很好的辅助作用。

上面是对于这三类指标相结合的一种基础用法的说明,下面,我们来说说其他的比率类指标。由于篇幅关系,下面我们只介绍一种比率类指标,也就是“年化收益回撤比”,Calmar Ratio。

3.3 年化收益回撤比

为什么光看年化收益回撤比不够?其实从上面已经能看出一些端倪,例如“最大回撤仅仅是一个样本,并不能反映普遍的情况”、“年化收益也不能代表每年这个策略都能收益这么多”等等。但其实,原因还有一个,那就是:这个指标的适用场景和夏普比率不同。

相信这个指标的计算不用赘述。那么我想说的是,首先,这个指标度量的是,在使用策略并满仓承担最大风险的前提下,年化收益率究竟有多值?如果这个比率连1都不到,且最大回撤很深,那确实不值。但同时,正是因为它把最大回撤放入了分母作为风险度量,所以这个指标实际上,对于经常出现大回撤的策略更加受用,而对于只有一次这样大回撤的策略就不太适用。同时,这也就要求评价的策略不仅每次跌的深,还要涨的猛。

四、本期总结

这一期,我们主要深度回顾了四个主要策略评价指标:年化收益、最大回撤、夏普比率以及年化收益回撤比,并简要介绍了三类评价指标体系:收益类、风险类、比率类。

就这样~