Знайдіть найкращі коефіцієнти Шарпа
Нам потрібно знайти «ідеальні» портфелі для кожної дати, щоб використати їх як цілі для машинного навчання. Ми пройдемося циклом по кожній даті в portfolio_returns, а потім по портфелях, згенерованих у portfolio_returns[date]. Далі обчислимо коефіцієнт Шарпа — це дохідність, поділена на волатильність (припускаємо безризикову дохідність 0).
Ми використовуємо enumerate(), щоб ітеруватися за доходностями для поточної дати (portfolio_returns[date]) і відстежувати індекс за допомогою i. Потім використовуємо поточну дату та поточний індекс, щоб отримати волатильність кожного портфеля через portfolio_volatility[date][i]. Нарешті, отримуємо індекс найкращого коефіцієнта Шарпа для кожної дати за допомогою np.argmax(). Незабаром ми використаємо цей індекс, щоб отримати ваги ідеального портфеля.
Ця вправа є частиною курсу
Machine Learning для фінансів у Python
Інструкції до вправи
- Використовуючи
enumerate(), пронумеруйтеportfolio_returnsдля кожноїdateу циклі. - Для поточної
dateу циклі додайте до словникаsharpe_ratioзначення — дохідність (ret), поділену наportfolio_volatilityдля поточної дати та поточногоiу циклах. - Встановіть для поточної
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]])