![]() |
|
![]() |
![]() |
![]() |
||
|
![]() |
![]() |
Beispiel zur UmsetzungEin kleines Beispiel soll die Umsetzung zeitparametervariabler Analysen Verdeutlichen. Vom Dax soll die Volatilität, abhängig sowohl vom Start- und Endzeitpunkt, als auch von der Periodizität ermittelt und dargestellt werden. Das Scripit X1Filmen führt die Berechnungen durch, stellt die resultierende Matrix mit Hilfe von Iso-Oberflächen dar und erstellt das oben sichtbare Video daraus. Die Berechnung übernimmt die Funktion VolMeriM, die sowohl die Zeiträume als such die Periodizität variiert. Der Ablauf innerhalb aller Programme ist kommentiert und somit leicht nachvollziehbar. Die Darstellung wird durch den Aufruf der Funktion isokrrel erreicht. Im Script X1filmen werden mittels einer Schleife verschiedene Niveaus der Matrix unter verschiednen Betrachtungswinkeln dargestellt und aufgezeichnet. Interaktiv lassen sich die Matrizen natürlich noch besser erkunden. Das Script isoDM ermöglicht es, verschiedene Niveaus gleichzeitig darzustellen und zu bewegen, wie es das zweite Video zeigt. |
![]() |
![]() |
X1Filmen
[KPM, Datumk]=VolPeriM(DAXT, 1, 300, DATUMT, DATUMJ, 1) clear F1 for i=1:300 isokorrel(KPM(:,:,1:250), i/1000, Datumk, 0, jet, .05, 0, 0, 10) daspect([50 50 1]) camlight view(100+i*2,(i/100+1)*45) F1(i)=getframe(gcf); i end
VolPeriMfunction [KPM, Datumk]=VolPeriM(ZR1, MindestP, MaxP, Datum, ZMDatum, rollierend) % Ermittelt die Volatilität einer Zeitreihe zu verschiedenen% Periodizitäten für alle Perioden % © norman.schelwies@dekabank.de % KPM periodizitätsvariable Volatilität aller Perioden % (Volumen-Array), darstellbar mit isokorrel % ZR1 Zeitreihe der Wertentwicklung eines Fonds oder eines Index % MindestP Mindestlänge der Renditeberechnung % MaxP Maximaler Abststand der Renditeberechnung % Datum Vektor des Zeitreihendatums % ZMDatum Vektor mit Datumsangaben, zu dem die Korrelationen % berechnet werden sollen % rollierend Angabe, ob die Renditen rollierend berechnet werden sollen % Beispiel: [KPM, Datumk]=VolPeriM(LandT(:,1), 1, 250, LandTD,... % Jahresende, 1) % das kleinste gemeinsame Datum bestimmen a=max([max(find(isnan(ZR1)))+1 1]); b=min(find(ZMDatum>Datum(a))); NZMD=ZMDatum(b:end); L=length(NZMD); KPM(1:L,1:L,1:MaxP)=-1; % die Zeitmatrix befüllen for i=1:L-1; for j=i+1:L; c=find(Datum > NZMD(i) & Datum < NZMD(j)); AZR=ZR1(c); KP(1:MaxP)=nan; for k=MindestP:MaxP; if rollierend==1 AR=AZR(k+1:end)./AZR(1:end-k); % unter Umständen können auch hier die log-Renditen verwendet % werden, der % Unterschied ist aber äußerst gering % AR=log(AZR(i+1:end)./AZR(1:end-i)); % BR=log(BZR(i+1:end)./BZR(1:end-i)); else AZR1=AZR(1:k:end); AR=AZR1(2:end)./AZR1(1:end-1); end KP(k)=std(AR)*sqrt(260/k); end KPM(j,i,1:length(KP))=KP(1:length(KP)); end % rudimentäre Fortschrittsanzeige i end Datumk=NZMD;
isokorrel
function isokorrel(KPM, korrel, Datumk, Transparenz, Farbe, PatchRed, Periodenniveau, ug, Schrift) % erstellt ein Iso-Oberflächen-Diagramm mit Isocaps für Volumendaten % zeitparametervariabler Korrelations- oder Volatilitätsberechnungen sowie % eine Ebene, die über alle Perioden das Niveau einer % Vergleichsperiodizität zeigt % © norman.schelwies@dekabank.de % KPM Volumendaten J x J x P parametervariabler Berechnungen % der Korrelation oder Volatilität, Matrix wird durch % KorrPeriM oder VolPeriM erzeugt % korrel Korrelationsniveau der Iso-Oberfläche % Datumk Datumsvektor zur Achsbeschriftung, wird ebenfalls durch % KorrPeriM oder VolPeriM erzeugt % Transparenz Alpha-Wert der Oberfläche der Vergleichsperiodizität % Farbe Farbvektor der Darstellung % PatchRed Schrupf-Faktor der Patch-Daten; je kleiner dieser Wert, % je schneller die Berechnung und je grober die Oberfläche % Periodenniveau Niveau der Periodizität, bei dem eine transparente % Oberfläche eingeblendet werden soll % ug Untergrenze der Korrelation zur Beschränkung der % Farbwerte-Erhöhung des Kontrasts % Schrift Schriftgröße, die im Diagramm verwendet werden soll % Beispiel: isokorrel(KPM, 0, Datumk, .3, jet, .05, 60, -1, 12) %
% Obergrenze der Farbskala og=.3; % Die Ebene mit den gewünschten Eigenschaften erzeugen L=length(Datumk); P=ones(L,L)*Periodenniveau; C=ones(L,L)*.2; z=surf(P); set(z,'CData',C,'XData',Datumk,'YData',Datumk, 'FaceAlpha', Transparenz,'EdgeColor', [ 0.853 0.853 0.853]) [SX, SY, SZ]=size(KPM); % Funktionsaufruf, der ein X-Y-Z-Raster analog einem meshgrid aufbaut % Die Funktion Wertegitter ist ebenfalls enthalten [BX, BY, BZ]=Wertegitter(Datumk,1:SZ); % Farbwerte der Iso-Oberfläche bestimmen fl=round(length(Farbe)*(korrel-ug)/(og-ug))+1; % Iso-Oberfläche bestimmen [f,v]=isosurface(BX,BY,BZ,KPM,korrel); % Iso-Oberfläche zeichnen p=patch('faces', f, 'vertices', v); set(p,'FaceColor',Farbe(fl,:),'EdgeColor','none'); % Datenmenge rduzieren reducepatch(p,PatchRed) % Glätten der Oberflächen isonormals(BX,BY,BZ,KPM,p) % Isocaps erzeugen und einzeichnen ic = isocaps(BX,BY,BZ,KPM,korrel); p1=patch(ic); set (p1, 'FaceColor','interp','EdgeColor','none'); colormap(Farbe) % Renderer festlegen lighting phong %Achsen einrichten axis equal datetick('x',10)% format der Beschriftung datetick('y',10) % Verhältnis für die Verwendung von Zeitwerten auf der x- und y-Achse anpassen daspect([1000 1000 20]); axis tight set(gcf,'color','white')% Hintergrund des Bildes set(gca,'color',[ 0.9 0.9 0.9 ],'YAxisLocation','right','FontName','Arial','XColor', ... [ 0.253 0.253 0.253 ],'YColor', [ 0.253 0.253 0.253 ],'ZColor', [ 0.253 0.253 0.253 ],'FontSize',[Schrift],... 'CLim', [ug og], 'CameraPosition',[756523 638574 1083.25],'CameraTarget', [726277 726277 100.5], 'ZLim',[0 SZ]) % Lichteinstellungen %camlight headlight camlight right
isoDM
% Diagrammmatrix der Iso-Oberflächen % auch zum Erstellen der der Einzelgrafiken verwendbar for i=1:4 h(i)=subplot(2,2,i) isokorrel(KPM(:,:,1:250), .05+i/20, Datumk, .05, jet, .2, 20, 0, 8) % print -djpeg -r100 'otto.jpg' % copyfile('otto.jpg',['REXP MSWRLD IsoKorr ' int2str(i+100) '.jpg']) end % Verknüpfen der Eigenschaften hlink = linkprop(h,{'CameraPosition','CameraUpVector','CameraTarget','CameraViewAngle','PlotBoxAspectRatio','XLim','YLim'}); setappdata(h(1),'graphics_linkprop',hlink);
|
![]() |
|
![]() |
|
|