开始使用免费开始使用

获取最佳夏普比率

我们需要为每个日期找到"理想"投资组合,以便将其作为机器学习的目标。我们将先遍历 portfolio_returns 中的每个日期,然后遍历该日期下由 portfolio_returns[date] 生成的各个投资组合。接着计算夏普比率,它等于收益除以波动率(假设无风险收益为 0)。

我们使用 enumerate() 来遍历当前日期的收益(portfolio_returns[date]),并用 i 记录索引。然后使用当前日期和当前索引,从 portfolio_volatility[date][i] 获取每个投资组合的波动率。最后,使用 np.argmax() 获取每个日期夏普比率的最佳索引。稍后我们将用该索引来获取理想的投资组合权重。

本练习是课程的一部分

Python 金融机器学习

查看课程

练习说明

  • 使用 enumerate(),对循环中每个 dateportfolio_returns 进行枚举。
  • 对于循环中的当前 date,将该日期下 sharpe_ratio 字典项追加值,值为收益(ret)除以当前日期且当前 i 对应的 portfolio_volatility
  • 将当前 datemax_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]])
编辑并运行代码