WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

fmincon: Portfolio Optimierung

 

maryab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2011, 00:36     Titel:
  Antworten mit Zitat      
hi harald,

hab mir jetzt matlab besorgt und habe für das optimierungsproblem ohne NB ausser summe w = 1 auch brauchbare ergebnisse. allerdings bekomme ich folgende meldung:

Warning: Your Hessian is not symmetric. Resetting H=(H+H')/2.
> In quadprog at 205
Optimization terminated: relative (projected) residual
of PCG iteration <= OPTIONS.TolPCG.


und nun würde ich sehr gerne noch eine weitere bedingung einführen.

also lautet mein problem jetzt

min w'* C*w

u.d.NB summe w= 1
r'*w = K

C,r,K sind gegeben.

hab es probiert mit

w = quadprog(C, zeros(2,1), r',K, ones(1, 2), 1);

für einige werte von r und K macht das ganze sinn, wenn ich die werte ändere wieder nicht. liegt das daran, das A*x <=b gilt. gilt und nicht A*x = b.

lg maryab


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.01.2011, 19:48     Titel:
  Antworten mit Zitat      
Hallo,

um die Warnung erklären zu können, müsste ich den genauen Code sehen.
Eine Idee habe ich: ist deine Matrix C symmetrisch? Wenn nicht, erklärt das die Fehlermeldung.

Der Algorithmus unterscheidet (natürlich) zwischen linearen Gleichungen und Ungleichungen (wäre ja schlecht wenn nicht). Du musst also alle Gleichungen in einer Matrixgleichung unterbringen.

Konkret dürfte das so sein:
Code:
Aeq = [ones(1, n); r']
beq = [1; K]


Dabei ist n die Länge des gesuchten w, und r muss ein Spaltenvektor sein. Wenn es ein Zeilenvektor ist, das ' weglassen.

Letztlich also z.B.
Code:
w = quadprog(C, zeros(2,1), [], [], [ones(1, 2); r'], [1; K] );


Wobei es allerdings wenig sinnvoll sein dürfte, bei 2 Gewichten 2 Nebenbedingungen zu haben. Dann bleibt ja nichts mehr zum Minimieren. Aber ich denke mal, du hast mehr Gewichte und es nur mal so probiert. (was eine gute Idee ist)

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
maryab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2011, 18:45     Titel:
  Antworten mit Zitat      
hi,

quadprog klappt soweit ganz gut, aber hätte noch mal eine frage.

ich der functionbeschreibung lautet der term 1/2 wCw + fw .

meine funktion dagegen wCw. da ich f gleich null setzte fällt dieser teil weg, aber wie verhältsich das mit dem 1/2 vor der ganzen sache. kann mir das mal bitte einer erklären.


und jetzt hätte ich noch eine weitere NB die eingeführt werden soll.

w*r = K

r und K sind gegeben. ( r ist ein Vektor und K eine Zahl).
welche der NB in der matlabhilfe entspricht dieser funktion

danke im vorraus und lg
 
maryab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2011, 18:56     Titel:
  Antworten mit Zitat      
hey harald,

hab deine antwort erst jetzt gesehen, du würdest den ausdruck Aeq * x = beq nehmen um diesen ausdruck abzubilden. habe damit aber eigentlich schon die bedingung w= 1 abgebildet. wenn ich also r'*w = K durch Aeq * x = beq
hab ich ein problem die summe meiner w auf einszu bekommen.

lg maryab
 
maryab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2011, 02:50     Titel:
  Antworten mit Zitat      
hi harald,

habe jetzt alle meine Bedingungen untergebracht und könnte es auf meine 30 wertpapiere übertragen.

möchte mich daher an dieser stelle sehr für deine hilfe bedanken ( du warst meine rettung ).

bleibt lediglich die frage nach dem 1/2 vor dem quadprog- term. wenn du darauf auch noch eine antwort hast bzw. eine lösung kennst nenne ich meinen erstgeborenen nach dir =)

lg maryab
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.01.2011, 12:31     Titel:
  Antworten mit Zitat      
Hallo,

ich würde da keine voreiligen Versprechungen machen Wink

Das 1/2 ist eine reine Bequemlichkeit, da die Ableitung von x' W x sonst ja 2 W x wäre und diese 2 "nervt".
Wenn du also tatsächlich x' W x minimieren möchtest, dann musst du als erstes Argument von quadprog 2*W eingeben.

Viele Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
maryab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2011, 01:16     Titel:
  Antworten mit Zitat      
hi,

wenn ich also einfach meine Kovarianzmatrix mit 2 multipliziere, dann kann ich diese sache umgehen?

dachte eigentlich, dass das unwesentlich ist, da ich ja nach der optimalen gewichtung suche. wenn ich meine matrix also mit 2 multipliziere, dann werden alle elemente ja zu gleichen teilen erhöht und die optimale zusammensetzung ändert sich nicht.

oder habe ich etwas falsch verstanden?

lg maryab
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.01.2011, 11:55     Titel:
  Antworten mit Zitat      
Hallo,

in deinem Fall ist es tatsächlich egal.
Wenn aber noch weitere lineare Terme dazu kommen würden (f nicht nur Nullen), dann wärs natürlich wichtig.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
maryab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2011, 18:09     Titel:
  Antworten mit Zitat      
hi,

weiss nicht ob sich dein wissen nur auf matlab begrenzt, aber hätte jetzt eine weitere Frage.

meine aufgabe ist es ein mean variance portfolio zu ermitteln und anschliessend die sharp ratio

Bsp.:

Schritt 1:

ich habe 36 beobachtungen von 01/1927 - 12/1929 für 30 US Aktien und habe die Kovarianmatrix, sowie die Mittelwerte berechnet. habe dann die optimale Gewichtung jeder Aktie ermittelt. ( für die mean varianz optimierung brache ich einen vektor für die erwarteten renditen. mein schätzer dafür sind die mittelwerte. hoffe das war richtig?)

Schritt 2:

nun investiere ich in t+1, also 01/1930 nach meiner ermittelten Investitionstrategie und erhalte eine Portfoliorendite. (meine Portfoliovarianz entspricht meinem vorher bereits ermittelten wert, quasie der Zielgröße die vorher minimiert werden sollte. hoffe das passt bis hierher ebenfalls)

Schritt 3:

ich suche mit den risikolosen zins für 01/1930, z.B US Staatsanleihe.

Schritt 4:

ich berechne die sharp ratio

SR = (portfoliorendite - risikloser zins) / Portfoliovarianz




bin mir allerdings noch unsicher bei der wahl der richtigen werte an der richtigen stelle.

hoffe mein problem ist verständlich, wenn nicht einfach fragen, was noch unklar ist.

vielen dank in vorraus

lg maryab
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.01.2011, 18:43     Titel:
  Antworten mit Zitat      
Hallo,

ich sehe da keinen Fehler (außer dass es wohl ein Minimum Variance Portfolio sein soll). Allerdings bin ich auch kein Experte auf dem Gebiet.
Verwunderlich wäre für mich höchstens, dass man nur das Risiko minimiert und nicht zugleich versucht, den Return zu maximieren. Dazu könnte man das Sharpe Ratio maximieren, oder statt Risiko den Ausdruck (Risiko - Faktor*Return) minimieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
maryab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2011, 20:01     Titel:
  Antworten mit Zitat      
hi,

soll schon ein mean variance portfolio sein, daher die NB r * w = K.

K ist in dem fall die rendite die das portfolio bei minimaler varianz erwirtschaften soll. wenn ich also K = 0.1 ( spricht 10 % ) wähle, erhalte ich ein Kombination, die diesem wert erzielt und die varianz minimiert.

du konntest also keinen fehler bei meiner vorgehensweise erkennen? wie schon gesagt, bin mir nicht ganz sicher bei der wahl der richtigen große am entsprechender stelle.

danke und lg bayram
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.