Вычисление доходности портфеля
Чтобы построить портфель и провести его бэктестирование, необходимо уверенно работать с доходностью нескольких активов в рамках одного объекта.
В этом упражнении вы будете использовать объект DataFrame из библиотеки pandas, уже сохранённый в переменной StockReturns, для хранения доходности нескольких активов и вычисления доходности модельного портфеля.
Модельный портфель составлен с заранее определёнными весами для ряда крупнейших компаний мира по состоянию на начало января 2017 года:
| Компания | Тикер | Вес в портфеле |
|---|---|---|
| Apple | AAPL | 12% |
| Microsoft | MSFT | 15% |
| Exxon Mobil | XOM | 8% |
| Johnson & Johnson | JNJ | 5% |
| JP Morgan | JPM | 9% |
| Amazon | AMZN | 10% |
| General Electric | GE | 11% |
| FB | 14% | |
| AT&T | T | 16% |
Обратите внимание: в большинстве случаев сумма весов портфеля должна составлять 100%
Это упражнение является частью курса
Введение в управление портфельными рисками на Python
Инструкции к упражнению
- Завершите определение массива numpy с весами модельного портфеля
portfolio_weights, используя значения из таблицы выше. - Воспользуйтесь методом
.mul(), чтобы умножитьportfolio_weightsна строкиStockReturnsи получить взвешенную доходность акций. - Затем примените метод
.sum()по строкам объектаWeightedReturns, чтобы вычислить доходность портфеля. - Наконец, изучите график накопленной доходности за рассматриваемый период.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Finish defining the portfolio weights as a numpy array
portfolio_weights = np.array([0.12, 0.15, 0.08, 0.05, 0.09, 0.10, 0.11, ____, ____])
# Calculate the weighted stock returns
WeightedReturns = StockReturns.____(portfolio_weights, axis=____)
# Calculate the portfolio returns
StockReturns['Portfolio'] = WeightedReturns.____(axis=____)
# Plot the cumulative portfolio returns over time
CumulativeReturns = ((1+StockReturns["Portfolio"]).cumprod()-1)
CumulativeReturns.plot()
plt.show()