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

Matlab Überlappung

 

Puszek
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2010, 15:58     Titel: Matlab Überlappung
  Antworten mit Zitat      
Hallo ich habe ein Code geschrieben, wo ich einmal meine ergebnisse bei vResults nicht überlappen soll also die ergebnisse von vResults(4-7)
1-60 61-120 und dann
61-120 121-180
gehen sollen und bei der Überlappungsfunktion, die ich nicht hinbekomm soll dann bei vResults (4-7)
1-60 61-120
2-61 62-121
stehen!
Mein Professor hat mir schon die Variablen gegeben die zur Überlappung führen , doch ich weiss net genau wie.
vom Proffesor:
% Nicht-Überlappende Holding Periods -Index Tracking
iWindowLength = iRankingPeriod + iHoldingPeriod + iGapPeriod ;
iNumIteration= (iNumPeriods - iRankingPeriod - iGapPeriod)/ iHoldingPeriod;
for i = 1:iNumIteration
mWindow = mReturns (i*iHoldingPeriod-iHoldingPeriod+1:i*iHoldingPeriod-iHoldingPeriod+iWindowLength,Smile;


und nun mit ÜBERLAPPUNG:
iWindowLength = iRankingPeriod + iHoldingPeriod + iGapPeriod;% mit Überlappung
% iNumIteration = iNumPeriods - iWindowLength +1;% mit Überlappung
mWindow = mReturns(i:i+iWindowLength-1,Smile; % mit Überlappung



Doch es müssen noch die vResults geändert werden, ich weiss aber net wieso er mir immer ein Fehler ausspuckt!

Hier ist der gesamte Code!
Hoffe ihr könnt ihr mir weiterhelfen







clear; % Variablen löschen
clc; % Command Window löschen, d.h. die ganzen variablen löschen

%load Endprodukt1.mat
% load Endprodukt.mat
% save Endprodukt.mat
% Einlesen der Daten von Excel nach Matlab


% mKurse1= xlsread('Assets.xls', 'Tabelle1', 'B3:IQ10561');
% mKurse2= xlsread('Assets.xls', 'Tabelle2', 'B3:IQ10561');
% mKurse3= xlsread('Assets.xls', 'Tabelle3', 'B3:IQ10561');
% mKurse4= xlsread('Assets.xls', 'Tabelle4', 'B3:IQ10561');
% mKurse5= xlsread('Assets.xls', 'Tabelle5', 'B3:IQ10561');
% mKurse6= xlsread('Assets.xls', 'Tabelle6', 'B3:IQ10561');
% mKurse7= xlsread('Assets.xls', 'Tabelle7', 'B3:IQ10561');
% mKurse8= xlsread('Assets.xls', 'Tabelle8', 'B3:IQ10561');
% mKurse9= xlsread('Assets.xls', 'Tabelle9', 'B3:DZ10561');
%
% mKurse= lentgh(mKurse1 mKurse2 mKurse3 mKurse4 mKurse5 mKurse6 mKurse7 mKurse8 mKurse9);

mKurse= xlsread('Assets.xls','Tabelle1','B9517:AE10561'); %kurse einleiten d.h. wenns 2000 sind muss man 2000 schreibn


vRankingPeriod = [60 120 180 240];
iNumRankingPeriods = length(vRankingPeriod);
vHoldingPeriod = [60 120 180 240];
iNumHoldingPeriods = length(vHoldingPeriod);
vGapPeriod =[0 1 2 3 4];
iNumGapPeriods = length(vGapPeriod);
vUsingPortfolio = [50 100 150 200];
iUsingPortfolios = length (vUsingPortfolio);
% iRankingPeriod = 60;
% iHoldingPeriod = 60;
% iGapPeriod = 1;
iNumPortfolios = 5; %anzahl portfolios
iUsingPortfolio = 5; %welches portfolio soll verwendet werden
%Niedrigste Zahl = schlechtestes Portfolio; höchste
%Zahl = bestes Portfolio



%routine
[iNumPeriods iNumAssets] = size (mKurse); %Zeilen und Spalten von mKurse:Perioden und Anzahl Aktien werden ermittelt
iNumAssetsPerPortfolio = floor(iNumAssets/iNumPortfolios)+1;

% Stetige Renditen ausrechnen
mReturns = log(mKurse(2:end,Smile)-log(mKurse(1:end-1,Smile);



mResults = [];
vColsPortfolio=[];
for r = 1:iNumRankingPeriods
iRankingPeriod = vRankingPeriod(r);

for h = 1:iNumHoldingPeriods
iHoldingPeriod = vHoldingPeriod(h);

for g = 1:iNumGapPeriods
iGapPeriod = vGapPeriod(g);

for u = 1:iUsingPortfolios
iNumPortfolio = vUsingPortfolio(u);

% iWindowLength = iRankingPeriod + iHoldingPeriod + iGapPeriod;% mit Überlappung
% iNumIteration = iNumPeriods - iWindowLength +1;% mit Überlappung

% Nicht-Überlappende Holding Periods -Index Tracking
iWindowLength = iRankingPeriod + iHoldingPeriod + iGapPeriod ;
iNumIteration= (iNumPeriods - iRankingPeriod - iGapPeriod)/ iHoldingPeriod;
for i = 1:iNumIteration
mWindow = mReturns (i*iHoldingPeriod-iHoldingPeriod+1:i*iHoldingPeriod-iHoldingPeriod+iWindowLength,Smile;
% mWindow = mReturns(i:i+iWindowLength-1,Smile; % mit Überlappung
mWindow = [1:iNumAssets; mWindow]; %spalten werden nummeriert, damit man nachher die felder ohne einträge rausschmeißen kann
% remove assets with NaN's
for a = 1:iNumAssets
if any (isnan(mWindow(2:iRankingPeriod+iGapPeriod+1,a)))
%if any(isnan (mWindow(2:end,j)))
vLogic(1,a) = 0;
else
vLogic (1,a) = 1;
end
end
%durchschnittliche Tagesrendite
mWindowNoNan = mWindow(:,logical(vLogic)); %alte matrix, alte zeilen, aber nur die spalten, in denen auch eine 1 im logischen vektor steht,werden übernommen
vRanking = mean (mWindowNoNan(2:iRankingPeriod+1,Smile,1); %die 1 hinten stellt sicher, dass matlab jeweils die spalten mittelt!
dQuantileStepSize = 1/iNumPortfolios; %anzahl portfolios..
vQuantile = 0:dQuantileStepSize:1;
vQuantileVAL = quantile(vRanking,vQuantile);
vQuantileVAL(1,1)= vQuantileVAL(1,1) - 0.00001;
% Prüfung der schlechtesten Rankings, ob der Quantilswert
for j = 1:size(vRanking,2)
if ((vRanking(j) > vQuantileVAL (iUsingPortfolio)) && (vRanking(j) <= vQuantileVAL(iUsingPortfolio+1)));
vColsPortfolio = [vColsPortfolio mWindowNoNan(1,j)];
end
end
mHolding = mWindow(1+iRankingPeriod+iGapPeriod+1:end,[vColsPortfolio]);
vResults = NaN(1,9+iNumAssetsPerPortfolio);
vResults(1,1) = iRankingPeriod; % number of ranking periods
vResults(1,2) = iGapPeriod; % number of gap periods
vResults(1,3) = iHoldingPeriod; % number of holding periods
vResults(1,4) = i*iHoldingPeriod-iHoldingPeriod+1; %Ranking FROM Period
vResults(1,5) = i*iHoldingPeriod-iHoldingPeriod+iRankingPeriod; % Ranking TO Period
vResults(1,6) = i*iHoldingPeriod-2*iHoldingPeriod+iWindowLength+1; % Holding FROM Period
vResults(1,7) = i*iHoldingPeriod-iHoldingPeriod+iWindowLength; % Holding TO Period
vResults(1,Cool = iUsingPortfolio; % used portfolio
vResults(1,9)= nanmean (nanmean(mHolding)); % average performance of portfolio in window per period
[rows cols] = size (vColsPortfolio);
vResults (1,10:9+cols)= vColsPortfolio;
mResults = [mResults; vResults];
vColsPortfolio =[];

end
end
end
end
end



P.s. hoffe ihr kriegt es schnell hin, da ich gern weiterarbeiten würde und mich schon einige Zeit gekostet hat Smile


Vielen Dank im Vorraus

Endprodukt1.m
 Beschreibung:

Download
 Dateiname:  Endprodukt1.m
 Dateigröße:  9.67 KB
 Heruntergeladen:  440 mal
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.