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

Построение эффективной границы с наилучшим коэффициентом Шарпа

Давайте снова построим эффективную границу, но на этот раз добавим маркер для портфеля с наилучшим индексом Шарпа. Визуализация данных всегда помогает лучше понять их.

Напомним: эффективная граница строится как точечный график, где по оси X откладывается волатильность портфеля, а по оси Y — его доходность. Последнюю доступную дату мы получим из covariances.keys(), хотя для этого подойдёт и любой из словарей portfolio_returns и других. Затем мы извлечём волатильности и доходности для этой даты из portfolio_volatility и portfolio_returns. Наконец, получим индекс портфеля с наилучшим индексом Шарпа из max_sharpe_idxs[date] и отобразим всё с помощью plt.scatter().

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

Машинное обучение для финансов на 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()
Редактировать и запускать код