Verfasst am: 04.08.2013, 15:33
Titel: Optimierung mean - mean absolute deviation model . Umsetzung
Hallo, das ist mein erster Post hier. Hoffe ich mache alles richtig.
Ich versuche verschiedene Portfoliooptimierungsmodelle in Matlab nachzubauen.
Ich habe das mean - variance model nach Markowitz mit quadprog nachbauen können und versuche mich nun am mean - mean absolute Deviation (MAD) Model nach Konno.
es handelt sich um ein lineares optimierungsverfahren. Opti Problem als screenshot angehängt.
was noch fehlt. die summe der portfolio gewichte muss 1 ergeben.
in worten . Minimiere MAD (mean absolute deviation) mit portfolio wichtung wj . kein short - selling (wichtungen nicht unter null ) .
delta = min. target mean return
Kann mir jemand helfen ? ich verstehe einfach nicht wie ich die optimierung zum laufen bringen kann. bei quadprog hab hat das alles mehr sind gemacht . hatte die covariances, means und die restrictions.
Ich wäre sehr dankbar wenn mir jemand helfen könnte.
halli hallo ^^ bumping ist erst nach 24 stunden erblaubt ^^ sihe dazu go matlab knigge
was hast du denn bis jetzt so programmiert? was funktioniert nicht? welche fehler treten auf? sihe dazu richtig fragen aus meiner signatur . soll dir jemand das programm schreiben ? dann solltest du dich ans unterforum programmieraufträge wenden.
_________________
hey, danke schonmal für deine Hinweise. Entschuldige bitte - kannte die "Knigge" nicht. (werd ich mir nachher mal durchlesen).
Ich poste gliech mal meinen code soweit. ich würde es ja schon gern selbst schaffen.
Ansonsten werde ich mich mal an das unterforum wenden. Kostet das Geld? wenn ja - viel ? (sollte ja an sich nicht mehr sein als eine handvoll variablen in linprog zu hauen)
Ich hab meinen code noch ein paar mal überarbeitet und versucht so viele Fehler wie möglich zu korrigieren - aber ich komme nicht weiter.
Hier der aktuelle Stand der Dinge :
Code:
% This script will calculate and plot the efficient frontier for a % mean - mean absolute deviation model in the Konno context.
% Take sample 'Sample' and calculate the mad -> transpose PeriodMAD % and store variable in the workspace
% Set some restrictions -> as shown in the graphic I have provided. NOt % sure if I set them up correctly to be honest. % PeriodDeviations includes nothing more than Observation at time(i) - % mean of the asset (PeriodDeviations -> (9,1) vector) % PeriodReturns -> ln returns for the observations 782 -> vector (9,1)
% Not sure if that is correct. Store respective mean in Output(1,i) % do the same for the portfolio MAD -> is that correct? % This is a modified "Sharpe- Ratio" or Konno Ratio. the quotient of % the former two variables % Finally store the weights x in Output as well -> 9 variables % therefore Output(5,i) to Output(13,i)
werde mich später darum kümmern dass alle werte noch aufs jahr hochgerechnet werden könnten.
Aktuell bekomme ich folgenden Fehler :
Error using linprog (line 231)
The number of rows in Aeq must be the same as the number of elements of beq.
Error in MAD (line 65)
x = linprog ( f,[],[],Aeq,Beq,lb,ub,[], options );
EDU>>
ich verstehe ja auch - dass das so sinn macht und auch was mir der Fehler sagen will . mein Aeq besteht auf 36 x 1 und Beq aus 28 x 1
liegt am targetreturn -> das is ja nur ein einzelner wert.
Bei quadprog hat das so auch funktioniert. da war die Bedingung
dass der Portfolio return >= targetreturn sein musste.
hier geht das leider nicht.
Ich hoffe jetzt ist die Situation besser verdeutlicht -> ich hänge seit heute Mittag fast ohne Pause dran. Bin noch Matlab und programmieranfänger.
Sorry - falls die Frage/ das Problem kinderleicht zu lösen ist , ich schaff es einfach nicht.
ah entschuldige ich dachte du meintest in meinem Code. Ja - im optimierungsproblem sind die w_i die Anteile und X stellt - wenn ich mich richtig erinnere - eine zufallsvariable "Portfolio" da. die Combi aus allen w_i bildet dann eine ausprägung von X .
ist aber ansich nur Mathe.käse der für das problem egal sein sollte.
ich meinte nicht das große X, sondern die vielen kleinen x (Kreuze) in deinen Formeln.
Zitat:
ist aber ansich nur Mathe.käse der für das problem egal sein sollte.
Für die Lösung eines Optimierungsproblems halte ich eine korrekte mathematische Formulierung für nicht unwichtig.
Zitat:
Für Hilfe würde ich auch zahlen.
Ich helfe gerne kostenlos. Allerdings blicke ich eben noch nicht durch, welche Variablen in den Formeln welchen Variablen in deinem Code entsprechen. Wenn du das einheitlich machen könntest, wäre das recht hilfreich.
ich glaube ich kann jetzt endlich folgen - der screenshot (das math. optimisation problem) enthält x als Zeichen für eine Multiplikation - es ist seltsam, aber ich habe mir das irgendwann mal so angewöhnt.
die objective function als Beispiel -> steht also für 1/s * Sum(y_i)
Vielen Dank schon mal Harald. Ich helfe gelegentlich beim Spiele-programmieren in C# aus und kenne die schwierigkeiten verschiedener Notationen zu gut. Es ist immer etwas kompliziert - für mich selbst macht meine Notation Sinn (leider nur für mich selbst)
ich fände es weiterhin hilfreich, wenn du die verwendeten Variablen im Code denen in der Problemformulierung angleichen könntest oder umgekehrt. Dann ließe sich das ganze viel einfacher nachvollziehen.
Zwischenzeitlich habe ich einen genaueren Blick auf die Gleichungen geworfen. Wenn ich das richtig sehe, ergeben die ersten beiden NB zusammen eine Gleichungs-NB, die zusammen mit dem "where..." am Ende zu einer >= 0 - Bedingung wird.
Letzten Endes solltest du also in deinem Fall nur Ungleichungsbedingungen haben. Du hast die NB aber als Gleichungsbedingungen angegeben (auf die Reihenfolge der Argumente achten).
Grüße,
Harald
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
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.