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

Umsetzung einer Stop Loss Strategie, Auslösung des Verkaufs

 

Koratis
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.05.2016, 01:22     Titel: Umsetzung einer Stop Loss Strategie, Auslösung des Verkaufs
  Antworten mit Zitat      
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
clear all, close all, 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;
 
end

% initialize values
Underlying_Index=Initial_Investment;  % Wert der Aktien = Anfangsinvestment
Start=Underlying_Index;
Elapsed_Time=0;
Portfolio_Value=Initial_Investment;

if Strategy==4 % Stop Loss
    % Zu beginn werden 100% Aktien gehalten
 Underlying_in_Portfolio_Percent = 1;
end


Underlyings_in_Portfolio=Portfolio_Value*Underlying_in_Portfolio_Percent;
Risk_Free_Asset=Portfolio_Value-Underlyings_in_Portfolio;

% initialize parameters for the plot (no theory in this)
close all;
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;
       
    % ...Portfolio wird umgeschichtet
 


Hier kommt jetzt der eigentliches Stop Loss ins Spiel:

Code:
if Strategy==4 % Stop Loss
        if Underlying_Index < Floor
           Underlyings_in_Portfolio = 0;
% Wird der Floor durchbrochen hält man keine Aktien mehr
 


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 0 1]);
    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

% marginals
NumBins=round(10*log(NumSimul));

subplot('Position',[.05 .3 .18 .6])
[n,D]=hist(Portfolio_Value,NumBins);
barh(D,n,1);
[y_lim]=get(gca,'ylim');
set(gca,'xtick',[])
grid on

subplot('Position',[.3 .05 .6 .2])
[n,D]=hist(Underlying_Index,NumBins);
bar(D,n,1);
[x_lim]=get(gca,'xlim');
set(gca,'ytick',[])
grid on

% joint scatter plot
subplot('Position',[.3 .3 .6 .6])
plot(Underlying_Index,Portfolio_Value,'LineStyle','none','marker','.');
hold on;
so=sort(Underlying_Index);
plot(so,so,'r');
set(gca,'xlim',x_lim,'ylim',y_lim)
grid on;
xlabel('underlying at horizon (~ buy & hold )','fontweight','bold');
ylabel('investment at horizon','fontweight','bold');

set(gcf,'Units','normalized','Position', [0.1, 0.1, .8, .8]);
 


Ich bin relativ unerfahren in Matlab und bin deshalb über jeden Tipp dankbar.

Danke im Voraus

LG
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.05.2016, 13:07     Titel: Re: Umsetzung einer Stop Loss Strategie, Auslösung des Verk
  Antworten mit Zitat      
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.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Koratis
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2016, 13:55     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für deine Tipps, ich habe mir das schon gedacht und gelobe Besserung Smile

LG
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
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 - 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.