IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

portfolio optimization


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut portfolio optimization
    Bonjour,

    SVP j'ai un besoin d'un programme permettant de résoudre un problème d'optimisation de portefeuille. le programme devrait me générer un ensemble de portefeuilles optimaux.

    mon problème est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    min variance
    
       SC/
    
                somme pondérations (xi)=1
    
                          ai<=   xi<=bi 
    
                          -0,5<= corrélation (i,j)<=0,5
    
                           rendement du portefeuille sup ou égal R


    svp j'ai besoin d'une réponse
    Merci

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Pour l'instant je vois pas bien le rapport avec MATLAB...

    Pourrais-tu nous montrer ce que tu as commencé à coder (même si c'est faux)?

    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut portfolio optimization
    Je suis heureuse de retrouver quelqu'un qui s'intéresse à mon problème; bref, voilà mon problème


    min [sum (i allant de 1 à N) ][sum (i allant de 1 à N)] xi *xj *corr (Ri,Rj)*écart type i* écart type j

    avec corr i,j c'est la corrélation entre deux séries temporelles relatives respectivement aux rendements des titres i et j


    les contraintes sont:

    sum xi=1 (1)
    ai<=xi<=bi (avec ai et bi sont des données pour chaque titre i (2)

    -0,5=<corr (Ri,Rj)<=0,5 (3)

    sum xi (sum Ri/n) sup ou égal à une donnée Z (4)


    j'ai commencé le programme sous matlab, mais je n'ai pas encore introduit les contraintes 2, 3 et 4; en fait, déjà le programme ne marche pas

    voici le programme que j'essaye d'exécuter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     function [PortRisk, PortReturn, PortWts,RScharpe] = meanvariance(means,covmatrix,NumPorts,deb_usa,fin_usa,deb_ast,fin_ast)
     
    load usa.txt -ascii;
    X(:,1)=usa(deb_usa:fin_usa);
     
    load astralia.txt -ascii;
    X(:,2)=astralia(deb_ast:fin_ast);
     
     
     
    means = mean(X);
     
     
    covmatrix=cov(X);
     
     
     
     
     
    [PortRisk,PortReturn,Portwts]=portopt(means,cov(X),10)
     
    rsharpe = PortReturn/sqrt(PortRisk);

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut portfolio optimization
    Bonjour tout le monde,

    depuis quelques temps, j'essaye de simplifier mon problème de départ, et de procéder par étapes, ce qui fait, j'ai commencé avec la commande
    [PortRisk,PortReturn,PortWts]=frontcon(ExpReturn,ExpCovariance,30,[],[],[],[])
    cette commande permet de fixer le nombre de solutions à 30, néanmoins, elle ne me permet pas de tenir compte de la contrainte relatiove à la corrélation entre les inputs (ri, rj)

    comment pourrai-je introduire la contrainte suivante:

    -0,5<=corr(ri,rj)<=0,5

    A bientôt

    et merci

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    si tu veux de l'aide, il faut donner un maximum de détail... dans ton post #3, tu as dit que ton programme ne marche pas, as-tu un message d'erreur? le résultat n'est pas celui attendu?

    dans ton post #4, tu parles d'une fonction frontcon, mais tu ne l'as décrit pas, et tu parles d'une contrainte sans préciser à quel endroit tu veux l'introduire...
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut portfolio optimization
    Bonjour,

    en fait j'utilise la fonction 'frontcon' prédéfinie dans matlab, franchement je ne sais pas comment l'exprimer, mais je sais qu'elle permet de minimiser la variance du portefeuille sous un ensemble de contraintes.

    toutefois, cette fonction ne me permet pas de saisir une contrainte sur la corrélation entre les colonnes de la matrice d'entrée: X

    cette contrainte devrait ne permettre l'introduction au niveau du portefeuille uniquement les titres dont la corrélation entre la colonne 1 et le reste des colonnes de la matrice d'entrée sont comprises entre -0,5 et 0,5

    en fait, cette contrainte doit être introduite avant l'exécution de la fonction 'frontcon'

    por ma part, je suis en train de réfléchir sur cette démarche:

    je veux tout d'abord 'demander' à mon programme la chose suivante:

    1)construire la matrice X (matrice d'entrée, formée de 28 COLONNES



    N=28


    demander à mon programme de calculer la corrélation entre la colonne 1 et le reste des colonnes soit 27 colonnes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i=1:N
     
     
        c = corrcoef(X(:,1),X(:,i));
        cc(i-1) = c(1,2);
    end
    3) je vais faire entrer les limites -0,5 et 0,5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    A=[-0.5, -0.5,-0.5,-0.5 ,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5];
    B=[0.5, 0.5,0.5,0.5 ,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,
    0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,
    0.5,0.5,0.5,0.5];
    4)demander à mon programme de construire une nouvelle matrice Y incluant les colonnes dont la corrélation entre la colonne 1 est comprise entre -0,5 ET 0,5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    à ce niveau je propose
     
    if A<=cc(i-1) <B  donc il faut introduire la colonne i dans la nouvelle matrice Y
     
    else, il ne faut pas l'introduire
    voilà ce que je veux faire, j'espère que je vais retrouver de l'aide

    Merci

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    As-tu vu l'exemple de la doc de corrcoef qui fait à peu près exactement ce que tu cherches à faire? A ceci près qu'il faut que chaque ligne soit une observation et chaque colonne une variable (ce qui est la transposée de la façon dont tu as formée ta matrice X). Et l'exemple de la doc te permet de stocker tous les résultats de la corrélation dans une matrice.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Points : 5
    Points
    5
    Par défaut portfolio optimization
    Oui j'ai vu l'exemple de la doc, et j'ai dépassé ce problème...

    maintenant, je rencontre un nouveau problème, qui est le suivant:

    quand j'essaye d'exécuter la commande froncon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [PortRisk, PortReturn, PortWts] = frontcon(ExpReturn, 
    ExpCovariance, NumPorts, PortReturn, AssetBounds, Groups, 
    GroupBounds)
    , après avoir spécifié ExpReturn, ExpCovariance, assetBounds, et NumPorts, tout en laissant empty PortReturn, Groups et GroupBounds), le message suivant s'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [PortRisk,PortReturn,PortWts]=frontcon(ExpReturn,ExpCovariance,NumPorts, [],AssetBounds, [], [])
    ??? Error: File: frontcon.m Line: 8 Column: 83
    Unbalanced or misused parentheses or brackets.
    en fait la colonne 83 correspond au premier bracket dans la ligne de la commande

    je ne pense pas qu'il ya une erreur, mais je ne sais pas pourquoi ça ne marche pas

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    c'est étrange... comment as-tu appelé ton script dans lequel tu exécutes ces commandes? Peux-tu nous montrer le fichier complet?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

Discussions similaires

  1. Recherche de point le plus proche [façon optimal]
    Par norwy dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/10/2005, 17h15
  2. Optimized table
    Par rexxys dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/10/2005, 13h01
  3. Agrandissement optimal
    Par progfou dans le forum Traitement d'images
    Réponses: 10
    Dernier message: 02/09/2005, 08h52
  4. Optim OpenGL
    Par fatpat94 dans le forum OpenGL
    Réponses: 6
    Dernier message: 07/08/2005, 09h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo