gpt4 book ai didi

python Pandas 数据帧: Duration of DrawDown

转载 作者:行者123 更新时间:2023-12-01 09:32:05 25 4
gpt4 key购买 nike

我知道 dd 的持续时间有很多样本。大多数情况下,他们会获取高峰日期和低谷日期,然后获取 datediff。但就我而言,我需要每天的所有持续时间,如下所示。

(实际上,我有 Excel 电子表格,我正在将所有电子表格转换为 Python 源)

enter image description here

enter image description here

     A     B    Cum(A)  Cum(B)  DD(A)   D(B)   Duration(A)  Duration(B)
1 3.5 2.2 3.5 2.2 0 0 0 0
2 -2.1 1.8 1.4 4 -2.1 0 1 0
3 0.7 0.7 2.1 4.7 -1.4 0 2 0
4 -1.1 -1.8 1 2.9 -2.5 -1.8 3 1
5 2.4 3.2 3.4 6.1 -0.1 0 4 0
6 1.3 -1.8 4.7 4.3 0 -1.8 0 1
7 -0.5 -0.9 4.2 3.4 -0.5 -2.7 1 2
8 0.8 -0.7 5 2.7 0 -3.4 0 3
9 -0.2 1.8 4.8 4.5 -0.2 -1.6 1 4


# The main DataFrame
data = {'A':[3.5, -2.1, 0.7, -1.1, 2.4, 1.3, -0.5, 0.8, -0.2],
'B':[2.2, 1.8, 0.7, -1.8, 3.2, -1.8, -0.9, -0.7, 1.8]}
df_return = pd.DataFrame(data)

# Cumulative Sum
df_return_cumsum = df_return.cumsum()

# DrawDown
df_return_dd = df_return_cumsum - df_return_cumsum.cummax()

# Duration of DrawDown
df_return_duration = ?? # I'd like to know how to generate

请帮忙...

最佳答案

下面是一种方法。您也许能够找到更有效的方法来计算Duration(A)Duration(B)

from itertools import groupby, chain
import pandas as pd, numpy as np

data = {'A':[3.5, -2.1, 0.7, -1.1, 2.4, 1.3, -0.5, 0.8, -0.2],
'B':[2.2, 1.8, 0.7, -1.8, 3.2, -1.8, -0.9, -0.7, 1.8]}

df = pd.DataFrame(data)

df['Cum(A)'] = df['A'].cumsum()
df['Cum(B)'] = df['B'].cumsum()
df['DD(A)'] = df['Cum(A)'] - df['Cum(A)'].cummax()
df['D(B)'] = df['Cum(B)'] - df['Cum(B)'].cummax()

df['Duration(A)'] = list(chain.from_iterable((np.arange(len(list(j)))+1).tolist() if i==1 \
else [0]*len(list(j)) for i, j in groupby(df['DD(A)'] != 0)))

df['Duration(B)'] = list(chain.from_iterable((np.arange(len(list(j)))+1).tolist() if i==1 \
else [0]*len(list(j)) for i, j in groupby(df['D(B)'] != 0)))

结果

print(df)

A B Cum(A) Cum(B) DD(A) D(B) Duration(A) Duration(B)
0 3.5 2.2 3.5 2.2 0.0 0.0 0 0
1 -2.1 1.8 1.4 4.0 -2.1 0.0 1 0
2 0.7 0.7 2.1 4.7 -1.4 0.0 2 0
3 -1.1 -1.8 1.0 2.9 -2.5 -1.8 3 1
4 2.4 3.2 3.4 6.1 -0.1 0.0 4 0
5 1.3 -1.8 4.7 4.3 0.0 -1.8 0 1
6 -0.5 -0.9 4.2 3.4 -0.5 -2.7 1 2
7 0.8 -0.7 5.0 2.7 0.0 -3.4 0 3
8 -0.2 1.8 4.8 4.5 -0.2 -1.6 1 4

关于 python Pandas 数据帧: Duration of DrawDown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49877387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com