Variance négative?

En utilisant la formule w * Cov * t (w), je peux générer une variance de portefeuille négative. Quelles sont les implications dune variance négative? Dois-je simplement supposer qu’il s’agit de zéro? Une variance négative est gênante car on ne peut pas prendre la racine carrée (pour estimer l’écart type) d’un nombre négatif sans recourir à des nombres imaginaires. Elle ne semble pas non plus cohérente avec la formule de variance qui est la moyenne des carrés des écarts par rapport à la moyenne puisque la quadrature produit toujours un nombre positif.

La variance négative est la pointe de liceberg de mon vrai problème. Jai une matrice de covariance représentant les attentes (ex ante). Je nai pas et je ne souhaite pas utiliser de retours historiques. Jai 23 classes dactifs. Jai joué avec une certaine optimisation du portefeuille (pas la variance moyenne). Je propose un ensemble de pondérations (w) pour un portefeuille optimal. Jai également un ensemble de pondérations pour mon indice de référence (b). Je calcule une erreur de suivi. Le carré de lerreur de suivi doit être (w-b) * cov * t (w-b). Voilà ce qui est négatif.

De plus, mes poids sont suffisamment différents de mon indice de référence pour que linspection et lintuition me disent que zéro est la mauvaise réponse. Pour le prouver davantage, jai généré 1000 rendements aléatoires (en utilisant mes hypothèses de rendement et la matrice de covariance) pour les classes dactifs et calculé 1000 rendements pour w et pour b. Ensuite, jai calculé la différence, puis jai pris la variance. Et depuis que jai un ordinateur, je lai répété 1000 fois. Lerreur de suivi la plus faible (racine carrée de la variance des différences) était de 2,7%. Je suis donc convaincu que la variance devrait être positive.

FWIW, jai une matrice de covariance 23×23. La plupart provient dune source publique ( Recherche Affiliés ). Jajoute des obligations municipales. Je suis plutôt satisfait de la matrice de covariance dans ses autres utilisations – par exemple la variance du portefeuille de w et de b semble être grande.

Toute idée de ce que je pourrais faire de mal, que ce soit par calcul ou par interprétation, serait appréciée. Tout mon travail est en R et je pourrais partager des données et du code.

Commentaires

  • Votre matrice nest pas semi-définie positive donc elle ne lest pas une matrice de covariance. Cest un problème avec les matrices de «covariance» conçues «manuellement». Il existe des moyens de créer une matrice de covariance légitime qui est «proche» (dans un certain sens de la distance) de votre matrice.
  • Pouvez-vous publier les données de votre matrice var / cov? Comme lindique le commentaire ci-dessus, il est fort probable quil ne soit pas semi-défini positif.

Réponse

Comme indiqué par dautres utilisateurs ici, votre matrice de covariance conçue nest apparemment pas définie positivement et vous obtenez donc ce comportement étrange.

Veuillez noter quil ne sagit pas simplement dun problème mathématique mais économique.

Comme exemple de jouet, regardez ceci: si A et B sont fortement corrélés négativement (disons -1), ils ne peuvent pas les deux être corrélé négativement (encore -1) à une troisième C. Vous pouvez concevoir (= écrire) une telle matrice mais cest quelque chose que vous ne pouvez pas rencontrer dans les mathématiques correctes ou dans la vraie vie.

Quoi vous pouvez faire:

  1. Choisissez des variances non négatives pour chaque actif $ V = diag (v_1, v_2, \ ldots, v_n) $
  2. choisissez une matrice définie positive pour les corrélations $ C $
  3. Calculez $ Cov = \ sqrt {V} C \ sqrt {V} $ où la racine carrée est composante.

Le calcul de la troisième étape est discuté sur stack.overflow . Le package corpcor offre des moyens de réduire les covariances aux cibles choisies et propose des vérifications de la définition positive.

La fonction make.positive.definite est disponible pour trouver la matrice définie positive la plus proche (dans un sens choisi) dune matrice donnée.

Réponse

Comme Ivan la souligné dans son commentaire, votre matrice nest pas une matrice de covariance valide. En dautres termes, il nexiste aucun ensemble de données (avec des observations complètes) à partir duquel vous auriez pu estimer une telle matrice de covariance.

Le moyen le plus simple de réparer une telle matrice est de remplacer les valeurs propres négatives de la matrice par des zéros . Cette méthode est implémentée dans la fonction repairMatrix dans le package R NMOF , que je maintiens.

Réponse

Le commentaire dIvan est une bonne réponse. Jajoute quelque chose mais je crée principalement un répondez au lieu dun commentaire pour vous assurer que les résultats de la recherche indiquent quil y a une réponse. Ma matrice de covariance doit être positive semi-définie. Si je comprends bien, cela se traduit en gros par un nombre non négatif. Lorsque vous multipliez par elle, vous obtiendrez zéro ou quelque chose avec le même signe.Voici un lien vers une brève explication de positif semi-défini et positif défini que jai trouvé utile. Merci Ivan.

Commentaires

  • Ce nest pas correct. Pour le vérifier votre matrice est semi-définie positive vous avez plusieurs options étant les plus faciles pour vérifier que toutes les valeurs propres sont positives. Une autre bonne alternative est de vérifier si ses principaux mineurs principaux sont tous positifs. Matlab peut vérifier cela en une fraction de seconde.
  • Une matrice semi-définie positive implique que $ x ‘ \ Sigma x $ est non négatif, pour tout réel $ x $. Pour une matrice définie positive, $ x ‘ \ Sigma x $ est strictement supérieur à zéro.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *