帮我写一个基金回测的python代码
时间: 2023-08-20 14:29:21 浏览: 197
基金投资管理回测引擎-Python开发
当然可以,以下是一个基金回测的Python代码示例:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 获取基金数据
fund_data = pd.read_csv('fund_data.csv', index_col='date', parse_dates=['date'])
fund_data = fund_data.sort_index()
# 设置回测时间段
start_date = '2018-01-01'
end_date = '2021-08-31'
# 筛选回测时间段内的基金数据
fund_data = fund_data.loc[start_date:end_date]
# 计算基金净值收益率
fund_data['return'] = fund_data['net_value'].pct_change()
# 计算基金累计净值收益率
fund_data['cumulative_return'] = (1 + fund_data['return']).cumprod() - 1
# 计算基金年化收益率
annual_return = (1 + fund_data['return']).prod() ** (252 / len(fund_data)) - 1
# 计算基金年化波动率
annual_volatility = np.sqrt(252) * fund_data['return'].std()
# 计算基金最大回撤
fund_data['max_drawdown'] = (1 - fund_data['cumulative_return'] / (1 + fund_data['cumulative_return'].cummax())).cummax()
# 输出回测结果
print('回测时间段:{} 至 {}'.format(start_date, end_date))
print('基金年化收益率:{:.2%}'.format(annual_return))
print('基金年化波动率:{:.2%}'.format(annual_volatility))
print('基金最大回撤:{:.2%}'.format(fund_data['max_drawdown'].max()))
# 绘制基金累计净值收益率曲线
fund_data['cumulative_return'].plot(figsize=(10, 6), title='Fund Cumulative Return')
plt.show()
```
这个代码示例中,我们首先从 CSV 文件中获取基金数据,并按照日期排序。然后设置回测时间段,并筛选出回测时间段内的基金数据。接着计算基金净值收益率、基金累计净值收益率、基金年化收益率、基金年化波动率和基金最大回撤等指标,并输出回测结果。最后,绘制基金累计净值收益率曲线。
阅读全文