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

Minimierungsproblem mit fmincon - NBD nicht erfüllt

 

dualfire
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2016, 18:50     Titel: Minimierungsproblem mit fmincon - NBD nicht erfüllt
  Antworten mit Zitat      
Guten Tag, ich habe ein Minimierungsproblem für den Worst Case CVaR und habe das Problem, dass meine Nebenbedinungen nicht erfüllt werden.

Code:
function [WCVaR,w]=P1WCVaR(r, Er, alpha, UB, LB, r1, r2, r3, r4)  

[i, j]=size(r1);
w0=[(1/j)*ones(1,j)];
v0=zeros(1,i*4);
VaR1=-quantile(r1*w0',alpha);
VaR2=-quantile(r2*w0',alpha);
VaR3=-quantile(r3*w0',alpha);
VaR4=-quantile(r4*w0',alpha);
WCVaR=VaR2;
w0=[w0 v0 VaR1 VaR2 VaR3 VaR4 WCVaR];
% objective function

Rfunction=@(w) w(end);
%w(j+1)+(1/i)*(1/(1-b))*sum(max(-w(n)*r(:,n)'-w(j+1),0));

 A=[-mean(r1) zeros(1,4*i+5) ; -mean(r2) zeros(1,4*i+5); -mean(r3) zeros(1,4*i+5); -mean(r4) zeros(1,4*i+5); %3. constraint
    -eye(j) zeros(j,4*i+5); eye(j) zeros(j,4*i+5); %2. constraint
    -r1 -diag(ones(1,i)) zeros(i,3*i) -ones(i,1) zeros(i,4);               %5. constraint
    -r2 zeros(i,i) -diag(ones(1,i)) zeros(i,2*i+1) -ones(i,1) zeros(i,3) ; %5. constraint
    -r3  zeros(i,2*i) -diag(ones(1,i)) zeros(i,i+2) -ones(i,1) zeros(i,2); %5. constraint
    -r4  zeros(i,3*i) -diag(ones(1,i)) zeros(i,3) -ones(i,1) zeros(i,1) ;  %5. constraint
    zeros(i*4,j) -eye(i*4) zeros(i*4,5) %6. contraint
    zeros(1,j) (1/((1-alpha)*i))*ones(1,i) zeros(1,3*i) -1 0 0 0 -1 ;  % 4. constraint
    zeros(1,j)  zeros(1,i) (1/((1-alpha)*i))*ones(1,i) zeros(1,2*i) 0 -1 0 0 -1;  % 4. constraint
    zeros(1,j)  zeros(1,2*i) (1/((1-alpha)*i))*ones(1,i) zeros(1,i) 0 0 -1 0 -1;  % 4. constraint  
    zeros(1,j)  zeros(1,3*i) (1/((1-alpha)*i))*ones(1,i)  0 0 0 -1 -1]; % 4. constraint
    b = [-Er*ones(1,4) -LB*ones(1,j) UB*ones(1,j) zeros(1,8*i+4)]';

 Aeq=[ ones(1,j) zeros(1,4*i+5)]; %1. constraint
 beq=[1];

 % minimize the risk function considering the constraints on w and Er
 options = optimoptions('fmincon','Algorithm','interior-point');
 [w,WCVaR]=fmincon(Rfunction,w0,A,b,Aeq,beq,LB,UB,[],options);
end


In die Matrix A habe ich die meisten Nebenbedinungen reingepackt, allerdings wird gleich die erste nicht erfüllt. Hier soll eine Mindestrendite erfüllt werden.
Ich habe das Optimierungsproblem als Bild angehängt.

Ich hoffe mir kann hier einer mit meinem Problem weiterhelfen.
Viele Dank im Voraus und freundliche Grüße

P1.JPG
 Beschreibung:

Download
 Dateiname:  P1.JPG
 Dateigröße:  16.19 KB
 Heruntergeladen:  385 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.07.2016, 21:06     Titel:
  Antworten mit Zitat      
Hallo,

um das Problem zu reproduzieren, bräuchte man die Eingabeargumente für die Funktion.

Welche Statusmeldung gibt fmincon denn aus?

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2016, 21:16     Titel:
  Antworten mit Zitat      
Hallo, danke schonmal für die schnelle Antwort.

Ich bekomme
''Solver stopped prematurely.

fmincon stopped because it exceeded the function evaluation limit,
options.MaxFunEvals = 3000 (the default value).''

Allerdings habe ich die Iterationsschritte auch schon bis zu 100k hochgestellt und meine Bedinungen werden weiterhin nicht erfüllt.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.07.2016, 22:27     Titel:
  Antworten mit Zitat      
Hallo,
Zitat:

Allerdings habe ich die Iterationsschritte auch schon bis zu 100k hochgestellt und meine Bedinungen werden weiterhin nicht erfüllt.

Und welche Statusmeldungen kommen dann?

Und wie gesagt:
Zitat:
um das Problem zu reproduzieren, bräuchte man die Eingabeargumente für die Funktion.


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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2016, 23:47     Titel:
  Antworten mit Zitat      
Hallo die Eingabeparameter sind [WCVaR,w]=P1WCVaRtest(r,1.15, 0.95, 1, 0, r1, r2, r3, r4)

wobei die Matrix r monatliche Renditen beschreibt die ich entweder aus einer excel matrix oder von yahoo mit folgendem code importiere.

[WCVaR,w]=P1WCVaRtest(r,1.15, 0.95, 1, 0, r1, r2, r3, r4)

Shares={'AAPL', 'AXP', 'BA', 'CAT', 'CSCO', 'CVX', 'DD', 'DIS', 'EBIX', 'GE', 'GS', 'HD', 'IBM', 'INTC', 'JNJ', 'JPM', 'KO', 'MCD', 'MMM', 'MRK', 'MSFT', 'NKE', 'PFE', 'PG', 'TRV', 'UNH', 'UTX', 'VZ', 'WMT', 'XOM'};
clc
closematrix=[];
c = yahoo;

for i=1:length(Shares)
ClosePrice = fetch(c,Shares(i),'Close','08/01/99','04/01/16','m') ;
diff_vec=[];
for j=2:length(ClosePrice)
diff=ClosePrice(j,2)-(ClosePrice(j-1,2));
diff_vec=[diff_vec, diff];
end
closematrix=[closematrix; diff_vec];

end

closematrix
close(c)

%r=closematrix.'
%r1=r(1:50,1:30)
%r2=r(51:100,1:30)
%r3=r(101:150,1:30)
%r4=r(151:200,1:30)



Wenn ich die Funktion mit mehr Iterationen öffne kommt diese Meldung.

''No feasible solution found.

fmincon stopped because the size of the current step is less than
the default value of the step size tolerance but constraints are not
satisfied to within the default value of the constraint tolerance.

<stopping criteria details>''

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.07.2016, 07:58     Titel:
  Antworten mit Zitat      
Hallo,

da gibt die Statusmeldung ja genau an, dass keine Lösung gefunden werden konnte. Insofern sollte es alles andere als verwundern, dass Nebenbedingungen verletzt sind.

Man könnte es z.B. mit anderen Startwerten versuchen.

Sind in der Formel denn Returns wie von dir berechnet gemeint, oder vielleicht eher logarithmische Returns?

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2016, 13:59     Titel:
  Antworten mit Zitat      
Oh ja das kann sein, vielen Dank
Werde die returns jetzt mal mit den logaritmischen returns probieren

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
dualfire
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.07.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2016, 15:05     Titel:
  Antworten mit Zitat      
Habe es mal mit den logarithmischen returns probiert das Problem bleibt aber weiterhin bestehen.

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.07.2016, 16:21     Titel:
  Antworten mit Zitat      
Hallo,

eine Möglichkeit: Nebenbedingungen stückweise hinzufügen und schauen, was passiert. Wenn in einem Schritt Probleme auftreten, dann insbesondere darauf achten, dass die neue Nebenbedingung nicht widersprüchlich zu den bisherigen ist.

Und wie gesagt: auch mal andere Startwerte versuchen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 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.