已知基金净值数据为dataframe格式计算基金的最大回撤恢复天数-请给出算法和python代码
算法:
- 计算基金每日收益率
- 计算基金净值历史峰值
- 计算每天与历史峰值的跌幅比例
- 计算最大跌幅和最大跌幅恢复时间
Python代码:
import pandas as pd
def max_drawdown_recovery_days(net_value): # 计算基金每日收益率 daily_returns = net_value.pct_change().fillna(0) # 计算基金净值历史峰值 peak_value = net_value.expanding().max() # 计算每天与历史峰值的跌幅比例 drawdown = (net_value - peak_value) / peak_value # 计算最大跌幅和最大跌幅恢复时间 max_drawdown = drawdown.min() max_drawdown_date = drawdown.idxmin() recovery_date = (drawdown[drawdown == 0]).index[-1] recovery_days = (recovery_date - max_drawdown_date).days return max_drawdown, recovery_days
示例
net_value = pd.DataFrame({'net_value': [1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5]}) max_drawdown, recovery_days = max_drawdown_recovery_days(net_value) print('最大回撤:', max_drawdown) print('恢复天数:', recovery_days)
原文地址: https://www.cveoy.top/t/topic/gfC 著作权归作者所有。请勿转载和采集!