Calcolare i rendimenti di portafoglio
Per costruire e fare il backtest di un portafoglio, devi sentirti a tuo agio nel lavorare con i rendimenti di più asset in un unico oggetto.
In questo esercizio userai un oggetto DataFrame di pandas, già salvato nella variabile StockReturns, per contenere i rendimenti di più asset e calcolare i rendimenti di un portafoglio modello.
Il portafoglio modello è costruito con pesi predefiniti per alcune delle aziende più grandi al mondo appena prima di gennaio 2017:
| Company Name | Ticker | Portfolio Weight |
|---|---|---|
| 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% |
Nota che, nella maggior parte dei casi, la somma dei pesi di portafoglio dovrebbe essere pari al 100%
Questo esercizio fa parte del corso
Introduzione alla gestione del rischio di portafoglio in Python
Istruzioni dell'esercizio
- Completa la definizione dell'array NumPy
portfolio_weightscon i valori indicati nella tabella sopra. - Usa il metodo
.mul()per moltiplicareportfolio_weightslungo le righe diStockReturnse ottenere i rendimenti azionari ponderati. - Poi usa il metodo
.sum()lungo le righe sull'oggettoWeightedReturnsper calcolare i rendimenti del portafoglio. - Infine, esamina il grafico dei rendimenti cumulati nel tempo.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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()