НачатьНачать бесплатно

Нахождение наилучших коэффициентов Шарпа

Нам нужно найти «идеальные» портфели для каждой даты, чтобы использовать их в качестве целевых значений для машинного обучения. Мы будем перебирать каждую дату в portfolio_returns, а затем перебирать портфели, сгенерированные с помощью portfolio_returns[date]. Для каждого портфеля рассчитаем коэффициент Шарпа — отношение доходности к волатильности (при условии нулевой безрисковой доходности).

Мы используем enumerate() для перебора доходностей по текущей дате (portfolio_returns[date]) и отслеживания индекса с помощью i. Затем по текущей дате и текущему индексу получаем волатильность каждого портфеля с помощью portfolio_volatility[date][i]. Наконец, находим индекс наилучшего коэффициента Шарпа для каждой даты с помощью np.argmax(). Этот индекс мы используем для получения оптимальных весов портфеля.

Это упражнение является частью курса

Машинное обучение для финансов на Python

Посмотреть курс

Инструкции к упражнению

  • С помощью enumerate() перечислите значения portfolio_returns для каждой date в цикле.
  • Для текущей date в цикле добавьте в словарь sharpe_ratio значение, равное доходности (ret), делённой на portfolio_volatility для текущей даты и текущего i в циклах.
  • Установите значение max_sharpe_idxs для текущей date равным индексу максимального коэффициента Шарпа с помощью 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]])
Редактировать и запускать код