在python中找到时间序列的前五个缩编

时间:2018-09-21 17:12:48

标签: python

我希望算出股票曲线的前5个跌幅。最大跌幅是最大负收益的度量。

请参阅 Start, End and Duration of Maximum Drawdown in Python

提款由drawdown = cummax - cummax.cummax()

定义

现在,我将使用上面的代码(因为我不知道如何跟进帖子),所以我们得出一个系列xs

n = 1000
xs = np.random.randn(n).cumsum()

现在,我们可以计算出达到峰值的时间段

i = np.argmax(np.maximum.accumulate(xs) - xs) # end of the period
j = np.argmax(xs[:i]) # start of period

并绘制结果

plt.plot(xs)
plt.plot([i, j], [xs[i], xs[j]], 'o', color='Red', markersize=10)

这是链接中的代码。不是我自己的,但现在适合。

现在,此代码将仅向我们显示最大下拉菜单,但我想对前5个下拉菜单执行相同的操作;这可能吗?即我不仅要找到arg max,还要找到前5个argmax。

尽管此链接是相关的,但它仅专注于最大的单个亏损,而不是最大的五个亏损 Calculate max draw down with a vectorized solution in python

1 个答案:

答案 0 :(得分:0)

在计算了当前时间序列的最大缩编以及开始日期和结束日期之后,删除此缩编周期并将两个端点连接到一个新的时间序列中。然后重新计算此新时间序列的缩编,依此类推。 请记住使用返回时间序列来确保两个端点可以连接。否则,如果您使用水平价格,则亏损将被错误计算。