最大回撤率是一个风险控制指标,描述了投资者可能面临的最大亏损。最大回撤率越小越好,越大说明风险越大。
什么是最大回撤区间?简单来说,就是发生最大回撤的时间范围。
举个例子,一只基金在净值1元时买入,过了几个月上涨到了2元,又过了一个月,下降到了1.5元,那么最大回撤率=(2-1.5)/2=25%。
接下来,我们开始针对某只基金进行最大回撤的计算分析。
1、读取数据
import pandas as pd
df = pd.read_csv('data/000001.csv')
df.head(5)
2、定义一个想要分析的时间范围
# 定义计算最大回撤率的时间范围
start_time='2018-01-01'
end_time='2021-05-31'
# 进行数据筛选,把指定时间范围内的数据筛选出来
df_filter = df[df['FSRQ'].between(start_time, end_time, inclusive=True)]
3、查找这个时间范围内最大单位净值以及发生日期
# 单位净值最大值、时间
max_start_time = df_filter.loc[df_filter['DWJZ'] == df_filter['DWJZ'].max(), "FSRQ"].values[0]
max_dwjz = df_filter['DWJZ'].max()
4、从产生最大单位净值的日期起,查找最小单位净值及日期
# 单位净值最小值、时间
df_filter_2 = df[df['FSRQ'].between(max_start_time, end_time, inclusive=True)]
min_end_time = df_filter_2.loc[df_filter_2['DWJZ'] == df_filter_2['DWJZ'].min(), "FSRQ"].values[0]
min_dwjz = df_filter_2['DWJZ'].min()
5、计算最大回撤
# 计算最大回撤率
max_drawdown_ratio = round((max_dwjz - min_dwjz) / max_dwjz * 100, 2)
21.63
6、最大回撤区间
# 最大回撤区间
(max_start_time, min_end_time)
('2021-02-10', '2021-03-09')