Calcul des rendements d’un portefeuille
Pour construire et tester un portefeuille en historique, vous devez être à l’aise avec la manipulation des rendements de plusieurs actifs dans un même objet.
Dans cet exercice, vous utiliserez un objet DataFrame de pandas, déjà stocké dans la variable StockReturns, pour conserver les rendements de plusieurs actifs et calculer les rendements d’un portefeuille modèle.
Le portefeuille modèle est construit avec des pondérations prédéfinies pour certaines des plus grandes entreprises au monde juste avant janvier 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% |
Notez que, dans la plupart des cas, la somme des pondérations du portefeuille doit être égale à 100 %.
Cet exercice fait partie du cours
Introduction à la gestion du risque de portefeuille en Python
Instructions
- Terminez la définition du tableau numpy
portfolio_weightsavec les valeurs du tableau ci-dessus. - Utilisez la méthode
.mul()pour multiplierportfolio_weightssur les lignes deStockReturnsafin d’obtenir des rendements pondérés par action. - Utilisez ensuite la méthode
.sum()sur les lignes de l’objetWeightedReturnspour calculer les rendements du portefeuille. - Enfin, examinez le graphique des rendements cumulés dans le temps.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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()