Побудова ефективної межі з найкращим коефіцієнтом Шарпа
Тепер знову побудуємо ефективну межу та додамо позначку для портфеля з найкращим індексом Шарпа. Візуалізація даних завжди допомагає краще їх зрозуміти.
Нагадаємо, ефективна межа зображається як діаграма розсіювання, де на осі x — волатильність портфеля, а на осі y — дохідність портфеля. Ми отримаємо найпізнішу дату, яка є в наших даних, з covariances.keys(), хоча будь-який зі словників portfolio_returns тощо теж підійде, щоб дістати дату. Потім отримаємо волатильності та дохідності для цієї найпізнішої дати з portfolio_volatility і portfolio_returns. Нарешті, візьмемо індекс портфеля з найкращим індексом Шарпа з max_sharpe_idxs[date] і все побудуємо за допомогою plt.scatter().
Ця вправа є частиною курсу
Machine Learning для фінансів у Python
Інструкції до вправи
- Присвойте
cur_volatilityволатильності портфелів для останньоїdate. - Побудуйте графік «ефективної межі», відклавши волатильність по осі x, а дохідність — по осі y.
- Отримайте індекс найкращого портфеля для останньої
dateзі словникаmax_sharpe_idxs.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Get most recent (current) returns and volatility
date = sorted(covariances.keys())[-1]
cur_returns = portfolio_returns[date]
cur_volatility = ____
# Plot efficient frontier with sharpe as point
plt.scatter(x=____, y=____, alpha=0.1, color='blue')
best_idx = max_sharpe_idxs[____]
# Place an orange "X" on the point with the best Sharpe ratio
plt.scatter(x=cur_volatility[best_idx], y=cur_returns[best_idx], marker='x', color='orange')
plt.xlabel('Volatility')
plt.ylabel('Returns')
plt.show()