Verfasst am: 18.05.2016, 01:22
Titel: Umsetzung einer Stop Loss Strategie, Auslösung des Verkaufs
Hallo zusammen,
ich muss für meien Seminararbeit verschiedene Portfolio Absicherungsstrategien in Matlab zu simulieren. Ich bin gerade dabei den Code von Meucci, A. (2010) um einige Strategien zu erweitern. Speziell dreht sich meine Frage um die Stopp Loss Strategie.
Kurz zur Einführung: Das Portfolio besteht aus einer risikolosen Anlage (Staatsanleihen) und Aktien. Bei der Stop Loss Strategie startet man mit 100% Aktien in seinem Portfolio. Entwickelt sich der Kurs positiv ist man damit vollständig am Aufwärtstrend beteiligt. Fällt der Kurs jedoch soll ab einer bestimmten Schwelle ein Verkaufssignal ausgelöst werden und das Portfolio wird komplett auf die risikolose Anlageform umgeschichtet.
Bei der Umsetzung des Stop Loss Befehls habe ich jedoch ein kleines Problem:
Code:
% Seed clearall, closeall, clc
s = RandStream('mcg16807', 'Seed', 1);
RandStream.setGlobalStream(s);
% Then generate random numbers
randNum = randn(1000,1);
% input parameters
Initial_Investment = 1000;
Time_Horizon = 0.5; % in years
Time_Step = 1/250; % in years
Strategy =4; % 1=Constant exposures; 2=Buy&Hold; 3=CPPI; 4=Stop Loss
m=0.03; % yearly expected return on the underlying
s=0.80; % yearly expected percentage volatility on the stock index
r=0.01; % risk-free (money market) interest rate
NumSimul=1000;
% andere Strategien aus Platzgründen ausgelassen
if Strategy==4 %Stop Loss
%Floor der beim Durchbrechen den Verkauf auslöst
Floor= 600;
% initialize parameters for the plot (no theory in this) closeall;
Portfolio_Series=Portfolio_Value;
Market_Series=Underlying_Index;
Percentage_Series=Underlying_in_Portfolio_Percent;
% Simulation der Entwicklung des Aktienkurses und der Zeit while Elapsed_Time < Time_Horizon -10^(-5)% add this term to avoid errors % time elapses...
Elapsed_Time=Elapsed_Time+Time_Step;
% Aktienentwicklung wird simuliert und das Portfolio nimmt neuen Wert an
Multiplicator = exp((m-s^2/2)*Time_Step+s*sqrt(Time_Step)*randn(NumSimul,1));
Underlying_Index = Underlying_Index.*Multiplicator;
Underlyings_in_Portfolio = Underlyings_in_Portfolio.*Multiplicator;
Risk_Free_Asset = Risk_Free_Asset*exp(r*Time_Step);
Portfolio_Value = Underlyings_in_Portfolio+Risk_Free_Asset;
Hier liegt mein Fehler, die Umschichtung findet nicht statt.
Baue ich noch eine else Schleife ein wie folgend:
Code:
else
Underlyings_in_Portfolio = 1;
% Wird der Floor nicht durchbrochen --> bleibt die alte 100% Gewichtung in Aktien bestehen end
Risk_Free_Asset=Portfolio_Value-Underlyings_in_Portfolio;
Underlying_in_Portfolio_Percent = Underlyings_in_Portfolio./Portfolio_Value;
end
Wird die Umschichtung direkt zu Beginn durchgeführt obwohl der Floor nicht durchbrochen wurde...
Anschließend folgt noch die Darstellung der Ergebnisse
Code:
% store one path for the movie (no theory in this)
Portfolio_Series = [Portfolio_Series Portfolio_Value(1)];
Market_Series=[Market_Series Underlying_Index(1)];
Percentage_Series=[Percentage_Series Underlying_in_Portfolio_Percent(1)];
% play the movie for one path
Time=[0:Time_Step:Time_Horizon];
y_max=max([Portfolio_Series Market_Series])*1.2;
for i=1:length(Time) subplot(2,1,1);
plot(Time(1:i),Portfolio_Series(1:i),'linewidth',2.5,'color','b');
hold on;
plot(Time(1:i),Market_Series(1:i),'linewidth',2,'color','r');
axis([0 Time_Horizon 0 y_max]);
grid on;
ylabel('value','fontsize',12,'fontweight','bold');
title('investment (blue) vs underlying (red) value','fontsize',12,'fontweight','bold')
subplot(2,1,2);
bar(Time(1:i),Percentage_Series(1:i),'stack','r');
axis([0 Time_Horizon 01]);
grid on;
xlabel('time','fontsize',12,'fontweight','bold');
ylabel('%','fontsize',12,'fontweight','bold');
title('percentage of underlying in portfolio','fontsize',12,'fontweight','bold')
set(gcf,'Units','normalized','Position', [0.1, 0.1, .8, .8]);
F(i) = getframe;
end
%break % plot the scatterplot figure
Verfasst am: 18.05.2016, 13:07
Titel: Re: Umsetzung einer Stop Loss Strategie, Auslösung des Verk
Hallo Koratis,
Die BEschreibung Deines Problems mit den vielen Fachausdrücken wird viele Leser abschrecken, z.B. mich. Ich arbeite in einem anderen Feld und kann mit diesen Wörtern nichts anfangen. Matlab allerdings auch nicht, denn für den Computer sind dies alles Zahlen. Wenn Du Dein Problem so formulierst, dass es sich tatsächlich auf den Matlab-Teil und nicht auf Dein Fachgebiet bezieht, wird eine hilfreiche Antwort im Forum sicherlich wahrscheinlicher.
vielen Dank für deine Tipps, ich habe mir das schon gedacht und gelobe Besserung
LG
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.