Optimisation de portefeuille en Python | Théorie moderne du portefeuille en Python

Partager sur Facebook
Partager sur Twitter
Partager sur lié
Partager sur télégramme
Partager sur WhatsApp

Contenu

introduction

Dans cet article, Nous apprendrons les concepts de gestion de portefeuille et les implémenterons en utilisant les bibliothèques Python.

L'article est divisé en trois parties afin de couvrir les fondamentaux de la gestion de portefeuille comme indiqué ci-dessous:

1. Rendement d'un actif et d'un portefeuille

2. Risque associé à un actif et à un portefeuille

3. La théorie moderne du portefeuille: trouver le portefeuille optimal

Rendement d'un actif et d'un portefeuille

Avant de nous plonger dans le calcul des rendements d'un actif et d'un portefeuille, visitons brièvement la définition du portefeuille et des rendements.

mallette: Un portefeuille est un ensemble d'instruments financiers tels que des actions, obligations, matières premières, Trésorerie et équivalents de trésorerie, ainsi que leurs contreparties de fonds. [Investopedia]

Dans cet article, nous aurons notre portefeuille qui contient 4 les atouts ("Portefeuille axé sur les actions"): Actions d'Apple Inc., Nike (NKC), Google et Amazon. L'aperçu de nos données est présenté ci-dessous:

23351données-7902264

Retour: Désigne le gain ou la perte de nos actifs / portefeuille pour une durée déterminée. Dans cette analyse, nous effectuons un retour sous forme de variation en pourcentage du cours de clôture de l'actif par rapport au cours de clôture de la veille. Nous calculerons les rendements en utilisant.pct_change () fonction en python.

Vous trouverez ci-dessous le code Python pour faire de même et le 5 rangées du haut (entête) des retours

Noter: la première ligne est nulle s'il n'y a pas de ligne précédente pour faciliter le calcul de la variation en pourcentage.

98345pct_change-8183113
73404actif20retours20sortie-8451066

Retourner un portefeuille est défini comme la somme pondérée des rendements des actifs du portefeuille.

Démontrer comment calculer les performances d'un portefeuille en Python, initialisons les poids au hasard (que nous optimiserons ensuite). Le rendement du portefeuille est calculé comme indiqué dans le code ci-dessous et l'en-tête des rendements du portefeuille est également affiché:

92818port_return-5452233
78623port_tet_output-9728010

Nous avons vu comment calculer les rendements, Passons maintenant à un autre concept: Risque

Le risque lié aux actifs et au portefeuille

La méthode pour calculer le risque d'un portefeuille est écrite ci-dessous et plus tard nous expliquons et donnons la formulation mathématique pour chacune des étapes:

  • Calculer la matrice de covariance sur les données de performance.
  • Annualisez la covariance en multipliant par 252
  • Calculer la variance du portefeuille en la multipliant par des vecteurs de poids.
  • Calculer la racine carrée de la variance calculée ci-dessus pour obtenir l'écart type. Cet écart type est appelé volatilité du portefeuille..

La formule pour calculer la covariance et l'annualiser est:

covariance = retours.cov () * 252

comment est-il 252 jours ouvrables, on multiplie la covariance par 252 pour l'annualiser.

La variation du portefeuille, à calculer à l'étape 3 antérieur, dépend de la pondération des actifs du portefeuille et se définit comme:

21018port20var20pour-8559619

où,

  • Lesmallette est la matrice de covariance du portefeuille
  • pondérations est le vecteur des pondérations attribuées à chaque actif du portefeuille

Vous trouverez ci-dessous l'approche pour calculer le risque des actifs en Python.

17723var_matrice-4257434

Comme expliqué ci-dessus, on multiplie la matrice de covariance par 252, puisqu'il y a 252 jours de bourse dans une année.

12834var_output-1090802

Les éléments diagonaux de varnce_matrix représentent la variance de chaque actif, tandis que les termes hors diagonale représentent la covariance entre les deux actifs, par exemple: l'élément (1,2) représente la covariance entre Nike et Apple.

Le code pour calculer le risque de portefeuille en python, dont nous avons vu la méthode plus haut, est comme indiqué:

37080port_varvol-6643533
85529port_varvoloutput-9210600

À présent, la tâche pour nous est d'optimiser les poids. Parce que? Afin que nous puissions maximiser notre rendement ou minimiser notre risque, Et nous le faisons en utilisant la théorie moderne du portefeuille !!

La théorie moderne du portefeuille

La théorie moderne du portefeuille soutient que les caractéristiques de risque et de rendement d'un investissement ne doivent pas être considérées seules, Ils doivent plutôt être évalués en fonction de la manière dont l'investissement affecte le risque global et le rendement du portefeuille.. MPT montre qu'un investisseur peut construire un portefeuille de plusieurs actifs qui maximiseront les rendements pour un niveau de risque donné.. en outre, étant donné un niveau souhaité de rendement attendu, un investisseur peut construire un portefeuille avec le risque le plus faible possible. Basé sur des mesures statistiques telles que la variance et la corrélation, la performance d'un investisseur individuel est moins importante que son impact sur l'ensemble du portefeuille. [Investopedia]

Cette théorie est résumée dans la figure suivante. Nous trouvons la frontière comme indiqué ci-dessous et maximisons le rendement attendu pour le niveau de risque ou minimisons le risque pour un niveau de rendement attendu donné.

36018sampef-1787570

Notre objectif est de choisir les pondérations de chaque actif de notre portefeuille afin de maximiser le rendement attendu compte tenu d'un niveau de risque..

Mathématiquement, la fonction objectif peut être définie comme indiqué ci-dessous:

69651img-6724-2025910

Une autre façon de considérer la frontière efficace et la fonction objectif est que nous pouvons minimiser le risque étant donné que le rendement attendu est au moins supérieur à la valeur donnée.. Mathématiquement, cette fonction objectif peut s'écrire:

99523img-6723-5286689

la première ligne représente que l'objectif est de minimiser la variance du portefeuille, c'est-à-dire, à son tour la volatilité du portefeuille et, pourtant, minimiser les risques.

Restreint implique que les rendements doivent être supérieurs à un rendement cible particulier, tous les poids doivent s'additionner 1 et les poids ne doivent pas être négatifs.

Maintenant que nous connaissons le concept, Passons maintenant à la partie pratique!

En premier lieu, nous créons la frontière efficace en exécutant une boucle. Dans chaque cycle, nous considérons un ensemble différent de pondérations attribuées au hasard pour les actifs de notre portefeuille et calculons le rendement et la volatilité pour cette combinaison de pondérations.

Pour cela nous créons 3 listes vides, un pour stocker les retours, un autre pour stocker la volatilité et le dernier pour stocker les pondérations du portefeuille.

29899c1-2600534

Une fois que nous avons créé les listes, nous générons aléatoirement les poids de nos actifs à plusieurs reprises, puis on normalise la pondération pour ajouter 1. Ensuite, nous calculons les rendements de la même manière que nous avons calculé ci-dessus. Ensuite, on calcule la variance du portefeuille puis on prend la racine carrée puis on l'annualise pour obtenir la volatilité, la mesure du risque de notre portefeuille.

16432c2-6971130

Maintenant, nous agrégeons les données dans un dictionnaire, puis créons un bloc de données pour voir la combinaison des pondérations des actifs et les rendements et la volatilité correspondants qu'ils génèrent..

51715c3-6913887
62289c4-9105515

Voici l'aperçu des données de rentabilité, volatilité et pondération du portefeuille.

21078c5-7590957

Maintenant, nous avons tout avec nous pour entrer dans le dernier tour de cette course et trouver le jeu de poids optimal !!

Nous traçons la volatilité par rapport aux rendements que nous avons calculés précédemment, cela nous donnera la frontière efficace que nous voulions créer au début de cet article.

21481c6-7412065

Et c'est reparti!!

97146c7-6006044

Maintenant que nous avons la frontière efficace avec nous, trouvons les poids optimaux.

Nous pouvons optimiser l'utilisation de diverses méthodes décrites ci-dessous.:

  • Portefeuille avec une volatilité minimale (risque)
  • Portefeuille optimal (Ratio maximal de Sharpe)
  • Rendement maximal au niveau de risque; Risque minimal à un niveau de rendement attendu; Portefeuille avec le ratio Sortino le plus élevé

Dans cet article, je vais optimiser à travers les deux premières approches. Dans le troisième segment, le « rendement maximal à un niveau de risque’ et le « risque minimum à un niveau de rendement attendu’ ils sont assez simples, tandis que celui basé sur l'indice de Sortino est similaire à l'indice de Sharpe.

1. Volatilité minimale

Pour trouver la combinaison de volatilité minimale, nous sélectionnons la ligne de notre bloc de données qui correspond à la variance minimale et trouvons cette ligne à l'aide de la fonction .idxmin (). Le code pour faire la même chose est montré ci-dessous:

63020c8-3042165

Les poids que nous en tirons sont:

69752c9-1175797

À présent, découvrir où se trouve le point de volatilité le plus bas sur la courbe ci-dessus. La réponse s'affiche à la fin! Mais ne triche pas!

2. Rapport de netteté plus élevé

L'indice Sharpe est le rendement moyen obtenu au-delà du taux sans risque par unité de volatilité ou de risque total.. La formule utilisée pour calculer le ratio de Sharpe est donnée ci-dessous:

Rapport de netteté = (Rpage – RF)/ DAKOTA DEL SURpage

où,

  • Rpage est le rendement du portefeuille
  • RF est le taux sans risque
  • Dakota del Surpage est l'écart type des rendements du portefeuille

Le code pour calculer le portefeuille le plus optimal, c'est-à-dire, portefeuille avec l'indice Sharpe le plus élevé, indiqué ci-dessous:

38331c10-3534930

Ensuite, Les pondérations du portefeuille qui donnent l'indice Sharpe le plus élevé sont indiquées:

82649c11-1437711

Découvrez où se trouve le point de relation de Sharpe le plus élevé sur la courbe ci-dessus. La réponse est montrée ci-dessous! Une fois de plus, ne pas tricher!

91780c13-9005749

Comme promis voici la réponse aux deux questions ci-dessus !!

76675c14-3443834

L'étoile bleue correspond au point de relation de Sharpe le plus élevé et l'étoile jaune correspond au point de volatilité minimale.

À présent, avant de finir cet article, Je vous encourage à trouver le portefeuille Maximum Return à un niveau de risque et’ Risque minimum à un niveau de rentabilité attendu 'et les marquer dans le graphique précédent.

En plus d'utiliser la relation de Sharpe, nous pouvons également optimiser le portefeuille à l'aide de la relation Sortino.

Faire un brief à ce sujet:

Les Relation Sortino est une variation de l'indice Sharpe qui différencie la volatilité nuisible de la volatilité globale en utilisant l'écart type des actifs des rendements négatifs du portefeuille (écart à la baisse) plutôt que l'écart type total des rendements du portefeuille. Le ratio de Sortino prend le rendement d'un actif ou d'un portefeuille et soustrait le taux sans risque, puis diviser ce montant par la dérive à la baisse de l'actif. [Investopedia]

Taux de tri = (Rpage – rF)/ DAKOTA DEL SUR

où,

  • Rpage est le rendement du portefeuille
  • rF est le taux sans risque
  • Dakota del Sur est l'écart type du handicap

Si vous avez des difficultés à mettre en œuvre ou à comprendre les 3 méthodes d'optimisation que j'ai décrites ci-dessus, écris-moi à [email protégé] | [email protégé] | ou contactez LinkedIn sur https://www.linkedin.com/in/parth-tyagi-4b867452/

Remarque sur l'auteur: Parth Tyagi étudie actuellement le PGDBA à l'IIM Calcutta, IIT Kharagpur & Indian Statistical Institute-Kolkata et a terminé le B.Tech de l'IIT Delhi. A ~ 4 années d'expérience de travail dans l'analytique avancée.

Les médias présentés dans cet article d'optimisation de portefeuille Python ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.