|
HaraldPeter |
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2010, 13:08
Titel: Optimierung mit fmincon
|
|
Hallo zusammen!
Wahrscheinlich eine ganz einfach zu beantwortende Frage.
Ich möchte diese Funktion minimieren:
Die Nebenbedingung habe ich so formuliert:
Wie muss ich nun den fmincon-Befehl in das Command-Window eingeben, damit es läuft?
Grüße
Harald
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.06.2010, 13:53
Titel:
|
|
Hallo,
in der jetzigen Form würdest du das so aufrufen:
x0 ist ein noch zu definierender Startwert.
Allerdings ein paar Hinweise:
- wenn du nur Gleichungen hast, c = [] setzen statt 0.
- die Gleichungsnebenbedingungen sind linear, sollten also auch als solche übergeben werden.
- die Zielfunktion ist quadratisch bei linearer Nebenbedingung; man kann also auch (oder sollte sogar) quadprog verwenden, in der Notation:
Grüße vom Namensvetter
|
|
|
HaraldPeter |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2010, 14:07
Titel:
|
|
Hallo,
nach Definition des Startwertes
x=[0.1 0.1 0.8];
und Eingabe des Befehls
>> sol = fmincon(@f, x, [], [], [], [], [], @NB)
bekomme ich folgenden Fehlerhinweis:
??? Error using ==> fmincon at 232
FMINCON only accepts inputs of data type double.
Ziel der Funktion soll sein, das Sigma zu minimieren, wobei sich die Gewichtsvektoren zu 1 addieren sollen.
Ist der Startvektor (hier x) legitim? Und warum muss der überhaupt mitgegeben werden?
Grüße
Harald
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.06.2010, 15:02
Titel:
|
|
Hallo,
es fehlen Klammern, sorry.
Das Ergebnis mag etwas merkwürdig anmuten, aber ich vermute, dass deine Gewichte positiv sein sollen? Dann siehts besser aus:
Der Startwert ist in Ordnung. Gebraucht wird er, weil es sich bei fmincon um einen Algorithmus für lokale Optimierung handelt. Dieser braucht dann logischerweise einen Startwert.
Ich würde das ganze wie gesagt mit quadprog angehen, weil dieser Algorithmus eben genau dafür gedacht ist.
Da brauchst du auch keinen Startwert
Grüße,
Harald
|
|
|
HaraldPeter |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.07.2010, 12:12
Titel:
|
|
Hallo!
OK, das mit quadprog funktioniert (subkjektiv sogar schneller?).
Ich minimiere jetzt aber nicht mehr die Funktion, dessen Ergebnis sigma ist, oder?
Problem: Eigentlich möchte ich eine Portfoliooptimierung durchführen. Dafür gibt es ja die portopt-Funktion. Diese aber gibt das Minimum-Varianz-Portfolio aus. Ich möchte allerdings eine Minimum-Value-at-risk-Optimierung durchführen.
Vorliegende Parameter:
-Ertragsprognose jedes einzelnen Assets
-Vola jedes einzelnen Assets
-Korrelationsmatrix resp Kovarianzmatrix
-Assetklassenrestriktion
-Value-at-Risk des Ausgangsportfolios
-Erwartungswert des Ausgangsportfolios
Ich dachte, da wäre ich mit fmincon gut bedient.
Wie müsste ich da am besten vorgehen?
(Wieso kommt bei der Lösung mit fmincon der imaginäre Anteil dazu?)
Grüße
Harald
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 01.07.2010, 12:40
Titel:
|
|
Hallo,
quadprog ist deutlich schneller, weil dahinter ein Algorithmus steht, der die Problemstruktur ausnutzt. Damit wird das Quadrat von sigma minimiert (bzw die Hälfte davon, siehe Problemformulierung in quadprog), was aber aufs selbe rauskommt, da Quadrat monoton ansteigt.
Wenn dahinter Portfoliooptimierung steht, sollte meines Wissens die Covarianz-Matrix positiv definit sein.
Zu der anderen Frage: formuliere doch bitte deine Zielfunktion und Nebenbedingungen dafür im Detail, dann kann man weiter sehen. So tief, dass ich die ganzen Formeln aus dem Ärmel schütteln könnte, bin ich da nicht drin.
Warum wirds bei fmincon negativ? - Vermutung ist, dass der Betrag unter der Wurzel kurzfristig negativ wird -> komplexe Zielfunktion -> komplex weiterrechnen.
portopt gibt meines Wissens Portfolios auf der Efficient Frontier zurück. Wenn man anders optimieren möchte, muss man selber Arbeit reinstecken - da bist du ja schon dabei.
Grüße,
Harald
|
|
|
HaraldPeter |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.07.2010, 10:29
Titel:
|
|
Hallo!
Ich glaube, ich möchte mich ganz gerne weiter in der Welt von fmincon rumtreiben. Ich vermute, dass quadprog am Ende nicht reichen wird.
Wie müsste ich die fmincon gestalten, wenn ich noch eine zweite Nebenbedingung
mit berücksichtigen möchte?
Also: Minimiere sigma unter Berücksichtigung von NB1 und NB2.
Grüße
Harald
|
|
|
Fourier |
Forum-Guru
|
|
Beiträge: 329
|
|
|
|
Anmeldedatum: 05.04.10
|
|
|
|
Wohnort: Karlsruhe
|
|
|
|
Version: 2009b
|
|
|
|
|
|
Verfasst am: 02.07.2010, 13:59
Titel:
|
|
Hallo,
ich beschäftige mich mit optimization toolbox erst seit 7 stunden. (newbie :))
aber ich denke schon man kann die beiden constraints zusammenfassen:
würde auch gerne wissen ob meine überlegung richtig ist ;)
gruss
_________________
Ein schlechter General ist besser als zwei gute.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 03.07.2010, 22:35
Titel:
|
|
Hallo,
die Idee von Fourier ist prinzipiell richtig.
Jedoch sind das beides lineare NB und sollten auch so umgesetzt werden.
Also als 5. bzw. 6. Argument von fmincon [1 1 1; 0.05 0.08 0.09] und [1; 0.1] - und keine nichtlinearen NB!!
Grüße,
Harald
|
|
|
HaraldPeter |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.07.2010, 08:06
Titel:
|
|
Hallo!
Und wie stelle ich sicher, dass auf beide Nebenbedingungen NB und NB2 zurückgegriffen wird? Mit NB als Argument in der fmincon spreche ich ja NB2 nicht an. Oder?
Grüße
Harald
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 05.07.2010, 08:41
Titel:
|
|
Hallo,
Wie von Fourier und mir gesagt: du musst alle deine Nebenbedingungen in ein Code-File oder (meiner Meinung nach besser!) eine Matrix von linearen Nebenbedingungen integrieren.
Grüße,
Harald
|
|
|
HaraldPeter |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.07.2010, 08:45
Titel:
|
|
Hallo!
Ist mir ja schon fast peinlich: wie mache ich das?
Grüße
Harald
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 05.07.2010, 08:58
Titel:
|
|
|
|
_Fourier |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.07.2010, 09:03
Titel: aa
|
|
ich würde sehr gerne dran teilnehmen, aber es kostet 700 euro !!!!!!!!!
ich lese lieber den 'User Guide' weiter
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 05.07.2010, 11:48
Titel:
|
|
Hallo,
Zitat: |
ich würde sehr gerne dran teilnehmen, aber es kostet 700 euro !!!!!!!!!
ich lese lieber den 'User Guide' weiter |
Meines Wissens bietet Mathworks für Studenten einen Rabatt von 50% auf Schulungen; frag doch bei Interesse einfach mal dort nach.
Das Besuchen einer Schulung hat ja nun auch seine Vorteile. Wer würde z.B. schon sein ganzes Studium nur aus Büchern lernen wollen? Ich zumindest nicht.
Grüße,
Harald
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2024
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.
|
|