function [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;
