创建回撤函数
在本节中,我们将计算我们策略的回撤。回撤是一个非常有趣的指标,因为它可以让我们了解最大回撤。这是我们策略在一段时间内的最大损失。这可以让您根据您的厌恶程度了解该策略是否有风险。
所以让我们开始创建一个return回撤的函数。
首先我们需要计算所有serie的累积回报。它可以使用“cumsum()”函数来计算,就像我们实际要做的那样,或者使用累积预测。
所以然后我们需要计算 running Max,
running Max 很容易,例如,如果你有这个向量,你应用那个 running Max 函数,你将得到这个向量作为回报。就是说,比如这里的Max数是1,那么这个指数的累计收益就是1。然后我们传递到最大值 3,然后我们进入最大值 5,但随后我们减小该值,我们保持最大值 5。只有出现高于5的数字时,最大值5才会被替换。
为此,我们将使用 Numpy 中的最大累积函数。
现在我们可以计算回撤,即累积回报除以运行最大值减 1。
def drawdown_function(serie): # We compute Cumsum of the returns cum = serie.dropna().cumsum() + 1 # We compute max of the cumsum on the period (accumulate max) # (1, 3, 5, 3, 1) --> (1, 3, 5, 5, 5) running_max = np.maximum.accumulate(cum) # We compute drawdown drawdown = cum / running_max - 1 return drawdown
现在我们可以使用这个函数来创建回撤。
因此,例如,如果我将“return_serie”放入函数中并打印出来
drawdown = drawdown_function(return_serie) drawdown
然后我们要绘制回撤图,并计算 Google 股价的最大回撤。
首先,我们要调整图形大小,以获得更好的可视化效果,然后我们将绘制缩减图,但缩减图很窄,
所以有必要使用“fill_between”函数而不是“plot”函数.
# We compute drawdown drawdown = drawdown_function(return_serie) # Adapt figure size plt.figure(figsize=(20, 8)) # Plot the drawdown plt.fill_between(drawdown.index, drawdown * 100, 0, drawdown, color='#CE5757', alpha=0.65) # Put a little plt.title('Drawdown') plt.show drawdown
正如我们所见,我们对回撤有了更好的可视化。
例如,我们可以看到谷歌损失最严重的是在 2008 年的次贷危机期间,另一次,我们有一笔双重贷款,
除此之外没有一个非常高,因为我们可以看到,如果我们把 2008 年的那段时间搁置起来,我们的平均回撤是 5%。
所以现在让我告诉你如何计算最大回撤。所以这很容易,要做到这一点,我们使用了 Numpy 的“min”函数,我们只输入百分比,然后我们使用 f-string 提取这个数字。
实际上,我们只需要在这里加一个减号,因为所有回撤值都是负数,而最大回撤通常是正值。
# Computation Max drawdown max_drawdown = - np.min(drawdown) * 100 print(f"Max drawdown: {'%.2f' % max_drawdown} %")
原创文章,作者:朋远方,如若转载,请注明出处:https://caovan.com/10-shilianghuahuice/.html