请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3354041 新帖:24

【更新说明】新超额收益 和 对数轴

Peace发表于:5 月 9 日 18:31回复(2)

最近我们更新了超额收益的算法,以及增加了对数轴。接下来就为大家解释一下:

一、 超额收益

1. 错误的思路——减法版差额收益

一个最简单的想法是使用简单的超额收益,也就是“策略净值-基准净值”。但是这样做除了能看出我们策略比大盘多赚了多少钱,就没有别的作用了。

1.png

像这种回测倒还好啦,策略和基准的差异不是特别大,从黄线上升的趋势可以看出策略有稳定的超额收益。但是策略和基准的差距变大的话就彻底残废了。

2.png

你看由于策略的净值高出大盘好几十倍,所以减去基准的黄线和策略的蓝线基本都重合了,要这条黄线还有什么用?

我们看超额收益的一个想法的就是想知道如果按照策略进行交易,并且卖空基准,能得到多少的额外收益。那么这个简单相减的差值是个什么意思?假设策略净值和基准净值都是 100 万,那么相减出来的线表达了每买多一块钱策略并且卖空一块钱基准能获得的超额收益,这倒没问题。但是当我们的策略净值涨了十倍,而基准只涨了一倍,相减出来线告诉我们买多五块钱策略并且卖空一块钱基准能得到的差额,这时的对冲比例就没有任何的逻辑和意义了,它也不能展示给我们任何有用的信息。

再者说,一般我们也想知道策略在某一段时间中的表现是强于大盘还是弱于大盘。当大盘和策略净值一样的时候确实可以直接相减来看,但是假设经过一段时间的回测,策略净值是基准的十倍,然后在之后的一年里策略收益2%并且大盘收益 10%,所以策略在这一年里实际上是若于大盘的,但是却因为策略净值基数较大导致策略在这一年的净增长是大盘的两倍,所以相减的超额收益是上涨的,完全不能反应出策略弱于基准的这个事实,那么我们还需要更改回测的起始时间才能看出这个现象。

很明显相减而来的超额收益是不可取的,所以我们要另寻方法。

2. 正确的方法——除法版超额收益

由于投资的资产变动是有复利效应的,所以净值的变动是符合几何增长过程的,在这种情况中,最自然的“减法”不是减法,而是除法,所以一个更合理的超额收益算法是:

/?100%/?100%

/?100%

<br>/?100%<br>


策略收益/基准收益-100\%


先看一眼这条线的效果,第一印象就可以发现它和策略线分开了,不是继续黏在一起。

3.png

回到上面的例子,假如在时间T时策略的净值S是基准B的十倍,那么超额收益线就是:

SB?100%=900%SB?100%=900%

SB?100%=900%

<br>SB?100%=900%<br>


\frac{S}{B}-100\%=900\%


假设在从 T 之后的一年里,策略涨幅 2% 并且基准涨幅 10%,那么,一年之后的超额收益线是:

S?1.02B?1.10?100%=1000%?92.7%?100%=827%S?1.02B?1.10?100%=1000%?92.7%?100%=827%

S?1.02B?1.10?100%=1000%?92.7%?100%=827%

<br>S<em>1.02B</em>1.10?100%=1000%?92.7%?100%=827%<br>


\frac{S1.02}{B1.10}-100\%=1000\%*92.7\%-100\%=827\%


低于了之前的 900%,它表明了在这一年里策略跑输了基准。跑输了多少呢?算一下

827% 100%900% 100%=S?1.02B?1.10?BS=1.021.10=92.7%827% 100%900% 100%=S?1.02B?1.10?BS=1.021.10=92.7%

827%100%900%100%=S?1.02B?1.10?BS=1.021.10=92.7%

<br>827% 100%900% 100%=S<em>1.02B</em>1.10?BS=1.021.10=92.7%<br>


\frac{827\% 100\%}{900\% 100\%}=\frac{S1.02}{B1.10}*\frac{B}{S}=\frac{1.02}{1.10}=92.7\%


告诉我们如果我们在时间T的时候用一块钱策略和一块钱基准一起跑(注意这很重要,不是十块钱策略对一块钱基准),那么在一年之后策略的净值只有基准的 92.7%。

使用除法产生的超额收益线上任意两点的数值都可以进行上面的计算,当然这里要展示的并不是教大家如何去算这个数,而是要让大家明白,只要除法版的超额收益线发生了回撤,就说明在这段时间里策略跑输了基准,而只要超额收益上涨了,就说明策略跑赢了基准,我们不需要再改时间重新回测就可以知道这个信息了。

举一个可以看出效果的例子,看下图标为 1 和 2 的部分:

4.png

  • 在 1 的地方,策略和基准都涨了。谁涨的多?看黄线下跌了,所以是基准涨的多。

  • 在 2 的地方策略和基准都跌了。谁跌的多?看黄线又是下跌了,所以是策略跌的多。

  • 在 1 和 2 哪个地方策略输于基准更厉害?在1的地方黄线挖了一个坑,而在 2 的地方黄线下降并不多,所以虽然看起来2的地方策略跌得很厉害,但其实1的那段输于基准更多。

除此之外,我们知道回测在14年7月4号的超额收益指标是 150% 左右,并且在16年6月24号是接近 200%,并且根据这条黄线的形状,我们可以判断出:如果我从14年7月4号开始运行这个策略,它会在很长一段时间里跑输基准,然后在红色竖线的地方追平,最后在16年6月24号的地方净值大于基准;我们甚至不需要知道策略和基准的收益曲线都可以做出这个判断。

二、 对数轴

上面的的除法版超额收益线解决了多个时间序列在截面上比对的问题,但是同一序列在不同时间的对比还存在着问题。什么问题呢?就是我们没法看清策略在两个不同时间段的涨跌幅的区别。再回顾之前的一个回测的话,

5.png

要不是图上标出了最大回撤的位置,我们肯定目测不出最大回撤的位置。这是因为08年的时候策略净值还相对小,回撤个80%所损失的钱也不是那么多;而15年的时候净值是之前的几十倍,就算回撤20%损失也比之前回撤80%的损失多,所以在图上根本对比不出来。再者说,基准线呢?根本都看不见了啊。

和之前一样,这是由于策略净值有着复合增长效应,导致净值上很难表现出很多的信息。这里的解决办法就是把竖轴做一个变换,改成对数轴。

在对数轴的图上,策略(或者基准)在时间T时显示的高度是:

log(T)log(T)

log(T)

<br>log(T)<br>


log\left ( 在时间 T 的净值 \right )


就像我们之前从减法改成用除法一样,对数log可以把乘法变加法,把除法变减法,

log(x?y)=log(x) log(y)log(x?y)=log(x) log(y)

log(x?y)=log(x)log(y)

<br>log(x?y)=log(x) log(y)<br>


log\left ( x*y \right )=log\left ( x \right ) log\left ( y \right )


log(x/y)=log(x)?log(y)log(x/y)=log(x)?log(y)

log(x/y)=log(x)?log(y)

<br>log(x/y)=log(x)?log(y)<br>


log\left ( x / y \right )=log\left ( x \right )-log\left ( y \right )


这样,在对数轴的图上,涨跌幅的倍数就不再是乘除关系而是加法关系,这样回测图上就能看出更丰富的信息了。

举例来说,策略在时间T的时候净值是 S,在 T 1 时是 2S,在 T 2 时是 4S,也就是说在每个时间段都翻了一倍。那么在普通轴上我们可以看出 T 1 的净值比 T 的净值高很多,但是 T 2 的净值比 T 1 高出更多,然而哪个是阶段的涨幅更大却很难看出。如果改用对数轴,那么在 T 时对数轴上高度是 log(S)log(S)

log(S)

log(S)

log(S)

;在 T 1 时是 log(2S)=log(2) log(S)log(2S)=log(2) log(S)log(2S)=log(2)log(S)log(2S)=log(2) log(S)

log(2S)=log(2) log(S)

;在 T 2 时是 log(4S)=2log(2) log(S)log(4S)=2log(2) log(S)log(4S)=2log(2)log(S)log(4S)=2log(2) log(S)

log(4S)=2log(2) log(S)

。这三个数构成一个等差数列,也就是说在对数轴上它们相互之间的距离是一样的,很容易通过目测看出每个时间段的涨跌幅是一样的。

再举个最大回撤的例子。假设一策略在 08 年高峰时的净值是 S,并且在随后的股灾中回撤 80%,即损失 0.8S;它在 15 年高峰时净值有之前的五十倍,50S,并在股灾中回撤 50%,即 25S。在普通轴上我们根本不可能目测出哪个回撤更大,但如果换到对数轴上,在08年高峰和低点的对数值分别是 log(S)log(S)

log(S)

log(S)

log(S)

log(S/5)=log(S)?log(5)log(S/5)=log(S)?log(5)log(S/5)=log(S)?log(5)log(S/5)=log(S)?log(5)

log(S/5)=log(S)-log(5)

,那么对数轴上的回撤是 log(5)log(5)log(5)log(5)

log(5)

;在15年高峰和低点的对数值分别是 log(50S)log(50S)log(50S)log(50S)

log(50S)

log(25S)=log(50S/2)=log(50S)?log(2)log(25S)=log(50S/2)=log(50S)?log(2)log(25S)=log(50S/2)=log(50S)?log(2)log(25S)=log(50S/2)=log(50S)?log(2)

log(25S)=log(50S/2)= log(50S)-log(2)

,在对数轴上的回撤是 log(2)log(2)log(2)log(2)

log(2)

。由于 log(5)>log(2)log(5)>log(2)log(5)>log(2)log(5)&gt;log(2)

log(5)>log(2)

,我们可以很明显地看出 08 年的回撤大于 16 年。

除此之外,策略和基准在同一时间段中的对比也更简单了。假设基准在一段时间里翻了一倍,策略只涨了 50%,那么如果策略净值太大的话我们在普通轴上根本看不出基准有什么变动。在上边我们提到可以根据除法版超额收益的回撤来观测,而另一个方法就是在对数轴上看:在这段时间里基准在对数轴上上升了log(2)log(2)

log(2)

log(2)

log(2)

个单位,而基准只上升了 log(1.5)log(1.5)log(1.5)log(1.5)

log(1.5)

个单位,很直观,上升多的那个就是赢了。

6.png

我们把之前的回测放到对数轴上,净值规模造成的问题荡然无存。08 年回撤巨大,在图上清晰可见。相比之下,16 年的股灾(标注 3 的地方)虽然净值损失很多,但是实际上回撤比 08 年温柔很多,同时凭目测可以看出标注2的阴跌部分回撤和 16 年股灾中差不多。另外,基准的表现也一下清楚了是不是。

三、 对数轴上的超额收益

对数轴上的超额收益的计算方法为:

log(/)=log()?log()log(/)=log()?log()

log(/)=log()?log()

<br>log(/)=log()?log()<br>


log\left ( 策略净值/基准净值 \right )=log\left ( 策略净值 \right )-log\left ( 基准净值 \right )


也就是说,普通轴上的除法版超额收益可以很方便地移植到对数轴上,只要取一个 loglog

log

log

log

就好。这条曲线集成了上面说过的所有优点。首先,由于log函数是单调的(x小于y的话就有log(x)小于log(y)),那么只要超额收益线在对数轴上上升或下降,就说明它在普通轴上同样也上升或下降,于是可以看出策略在这段时间里是跑赢还是跑输了大盘。另外,在对数轴上,净值的规模效应也被消除了。举例来说,在时间T的时候策略净值 S,基准净值 B,一年之后变动为 3S 和 2B,再假设在多年后的某个时间点策略和基准的净值分别是 10S 和 B,一年后变成 30S 和 2B。在这两个一年期里都是策略翻两倍基准翻一倍,实际上是一样的涨跌幅。在基准轴上超额收益分别是从 S/B-100% 变到3S/2B-100%以及从 10S/B-100% 变到30S/2B-100%,由于净资产规模的影响,后者在图像上的变动是前者的 10 倍。但是如果改用对数轴,我们看到两个一年期内超额收益的对数分别是从 log(S/B)log(S/B)log(S/B)log(S/B)

log(S/B)

变到 log(3/2) log(S/B)log(3/2) log(S/B)log(3/2)log(S/B)log(3/2) log(S/B)

log(3/2) log(S/B)

以及从 log(10S/B)log(10S/B)log(10S/B)log(10S/B)

log(10S/B)

变到 log(3/2) log(10S/B)log(3/2) log(10S/B)log(3/2)log(10S/B)log(3/2) log(10S/B)

log(3/2) log(10S/B)

,都是得到了log(3/2)log(3/2)log(3/2)log(3/2)

log(3/2)

的增长,反映了在这两个一年期里,策略相对于大盘的表现是一样的。

如何看一个策略是否有稳定的alpha收益?最直观的方法莫过于看它在对数轴上的超额收益线了,如果那条线是稳定斜向向上的就对了。

7.png

先看这个回测,它有着整体很高的超额收益,但是我们也发现了几个明显的黄线回撤,说明它在这些时段跑输大盘的地方。而下面这个策略虽然收益不如上面的高,但是超额收益高稳定得多,黄线看不出明显回撤说明它基本没有跑输大盘的时候。

8.png

进一步,我们也可以看出这个策略的超额收益都产生于哪些时候。在第一根红线之前超额收益超额收益斜率较大,说明超额收益很高;两根红线的之间的超额收益基本为零;第二根红线之后又开始有了超额收益,但远没有第一个阶段里高。策略什么时候强什么时候弱,哪些时段需要额外的分析研究,或者很多其他的重要信息,都在一条线上一目了然,这是一条不简单的线。

全部回复

0/140

量化课程

    移动端课程