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

Renditeberechnung für n Aktien

 

tommythegun
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 02.06.17
Wohnort: leipzig
Version: ---
     Beitrag Verfasst am: 02.06.2017, 09:37     Titel: Renditeberechnung für n Aktien
  Antworten mit Zitat      
Hallo liebe Bordmitglieder,

ich zerbreche mir nun schon seit ein paar Stunden den Kopf über eine for Schleife und komme einfach nicht auf die korrekte Lösung. Vielleicht kann mir ja jemand von euch weiterhelfen.

Mein Code sieht bisher folgendermaßen aus:

% Clear existing
Code:


% Load packages
Code:
pkg load io;
pkg load statistics;
pkg load financial;


% Grab data from Google
% format = {Date, open, High, Low, close, Volume}
Code:
connection = google;

Code:
startdate=datenum('Jan 1 2013');

Code:
enddate=datenum('Aug 27 2013');

Code:
ticker= { 'AAPL', 'F'};

% Grab the number of stocks for the request
Code:

Code:
frequency='d';


% fetch returns the data in a matrix with in the columns date, open, high, low, close, adjusted close and volume
% Attention: ticker is a cell array so you have to be careful using () vs {}.
% Using () gives you a subset of a cell array, effectively another cell array.
% On the other hand, using {} returns you the actual content of the cell array.
Code:
for i=1:n
data=fetch(connection, ticker{i}, startdate, enddate, frequency);
temp=data;
closeprice(:,i)=temp(:,5);
end


% Google plots the oldest date first -> flip the data
Code:
closeprice=flip(close price);

Code:


% Convert datenum in a readable format
Code:
startdate=datestr('Aug 1 2013',1);

Code:
enddate=datestr('Aug 27 2013',1);


% Berechnung der Tagesrenditen
Code:


% Extrahieren der Kursvektoren je Aktie und abspeichern in einen einzelnen Vektor
Code:
for i=1:n
   eval(sprintf('r%d=closeprice(:,i)',i));
end


% k = 165 Values
% n = 2 stocks

Und genau hier fängt mein Problem an. Ich habe durch

Code:
for i=1:n
   eval(sprintf('r%d=closeprice(:,i)',i));
end


jetzt n Kursvektoren vorliegen mit der Bezeichnung r1, r2,....,rn. Jetzt muss die nächste for Schleife quasi für jeden Kursvektor folgendes ausrechnen:

rendite=x(i)/x(i-1)-1

also sieht das dann folgendermaßen aus:

rendite_r1=r1(i)/r1(i-1)-1
rendite_r2=r2(i)/r2(i-1)-1

usw.

Das ganze möchte ich mittels einer for-Schleife darstellen, aber irgendwie funktionieren meine Ideen nicht. Die Schleife sieht bisher wie folgt aus:

for k = 2: 165
for n = 1: 2
rendite_r{n}=r{n}(k)/r{n}(k-1)-1
end
end

Wie kann ich die Klammerausdrücke in rendite_r{n}=r{n}(k)/r{n}(k-1)-1 korrekt darstellen, sodass die Schleife funktioniert und zusätzlich noch rendite_r1, rendite_r2 usw. einzeln als Vektor abgespeichert werden?

Vielen Dank schon mal im Voraus Smile!

P.s Ich hänge mal meine .m Datei mit an, damit ihr das besser nachvollziehen könnt.

BG
Tom

GoogleDataRequestv2.m
 Beschreibung:

Download
 Dateiname:  GoogleDataRequestv2.m
 Dateigröße:  1.69 KB
 Heruntergeladen:  295 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.06.2017, 17:48     Titel: Re: Renditeberechnung für n Aktien
  Antworten mit Zitat      
Hallo tommythegun,

Zitat:
Code:

Schlechte Idee. Das löschen aller Funktionen aus dem RAM erfordert ein Nachladen von der Festplatte. Nützlich ist das nicht.

Zitat:
Code:
for i=1:n
   eval(sprintf('r%d=closeprice(:,i)',i));
end

eval ist immer immer immer eine sehr schlechte Idee. Man macht dadurch den Code langsam und schwer zu warten. Einen Index im Namen einer Variablen zu verstecken ist ein Ansatz, der den Rest des Codes deutlich behindert.
Stattdessen kann man einfach einen Index als Index verwenden. In Deinem Fall ist die Matrix closeprice(:,i) eigentlich bereit optimal. Wozu dient dann die Aufteilung in einzelne Variablen?

Zitat:
rendite_r1=r1(i)/r1(i-1)-1
rendite_r2=r2(i)/r2(i-1)-1

Das wäre doch ganz einfach, wenn Du die Matrix closeprice dafür verwendest.

Gruß, Jan
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 - 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.