获取最佳夏普比率
我们需要为每个日期找到"理想"投资组合,以便将其作为机器学习的目标。我们将先遍历 portfolio_returns 中的每个日期,然后遍历该日期下由 portfolio_returns[date] 生成的各个投资组合。接着计算夏普比率,它等于收益除以波动率(假设无风险收益为 0)。
我们使用 enumerate() 来遍历当前日期的收益(portfolio_returns[date]),并用 i 记录索引。然后使用当前日期和当前索引,从 portfolio_volatility[date][i] 获取每个投资组合的波动率。最后,使用 np.argmax() 获取每个日期夏普比率的最佳索引。稍后我们将用该索引来获取理想的投资组合权重。
本练习是课程的一部分
Python 金融机器学习
练习说明
- 使用
enumerate(),对循环中每个date的portfolio_returns进行枚举。 - 对于循环中的当前
date,将该日期下sharpe_ratio字典项追加值,值为收益(ret)除以当前日期且当前i对应的portfolio_volatility。 - 将当前
date的max_sharpe_idxs设为使用np.argmax()得到的最大夏普比率的"索引"。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Empty dictionaries for sharpe ratios and best sharpe indexes by date
sharpe_ratio, max_sharpe_idxs = {}, {}
# Loop through dates and get sharpe ratio for each portfolio
for date in portfolio_returns.keys():
for i, ret in enumerate(portfolio_returns[____]):
# Divide returns by the volatility for the date and index, i
sharpe_ratio.setdefault(date, []).append(____ / portfolio_volatility[date][____])
# Get the index of the best sharpe ratio for each date
max_sharpe_idxs[date] = np.argmax(sharpe_ratio[____])
print(portfolio_returns[date][max_sharpe_idxs[date]])