%[Date,Open,High,Low,Close,Volume,AdjClose] = textread(‘file’,'SP_1993_2006.tex', ...
%'delimiter',',','headerlines',1) ;

% Si importation par le menu
Date = data(:,1) ;
AdjClose = data(:,7) ;

% Tracer les les prix à la fermeture
plot(AdjClose)

% Avec la date en abscisse
an = fix(Date/10000) ;
an(1:5)
temp = Date-an*10000 ;
temp(1:5)
mois = fix(temp/100) ;
mois(1:5)
jour = temp-mois*100 ;
jour(1:5)
tps = datenum(an,mois,jour) ; % variable temps dans un format reconnu par matlab

plot(tps,AdjClose)
datetick('x','mm/yyyy')
ylabel('SP500')
xlabel('Date')
title('Indice ajusté à la fermeture')

%Rendement (rangé par ordre de date)
AdjC_ord = AdjClose(end:-1:1) ; % On met le vecteur AdjClose dans l'ordre du temps
X = diff(AdjC_ord)./AdjC_ord(1:end-1) ; % rendement (')
DateReturns = tps(end:-1:2) ;
SampleSize = length(X) ;

plot(DateReturns,X)
datetick('x','mm/yyyy')



EstimationWindowSize = 250
TestWindowStart = find(an(end:-1:2) == 1995,1) ;
TestWindow = TestWindowStart:SampleSize ;
% Calcul des valeurs de risques, quantiles 95 % et 99 %
pVar = [0.95, 0.99] ; % Probabilités
Zscore = [1.64 ,2.33]; % Quantiles

Normal95 = zeros(length(TestWindow),1) ; % On créé les vecteurs qui vont stocker les VaR ; permet de réserver l'espace mémoire
Normal99 = zeros(length(TestWindow),1) ;

for t = TestWindow ,
i = t-TestWindowStart+1;
EstimationWindow = t-EstimationWindowSize:t-1 ; % fenêtre glissante de longueur 1 an environ qui couvre le passé de t
Sigma = std(X(EstimationWindow)); % Ecart-type estimé dans la fenêtre glissante
Normal95(i) = Zscore(1)*Sigma ;
Normal99(i) = Zscore(2)*Sigma ;
end ;

plot(DateReturns(TestWindow),X(TestWindow),'k')
hold on % pour ajouter une courbe sur le même graphique
plot(DateReturns(TestWindow),Normal95,'m')
plot(DateReturns(TestWindow),Normal99,'r')
datetick('x','mm/yyyy')
legend('SP500','VaR 95','VaR 99')


% Histogrammes
subplot(1,2,1)
hist(X)
subplot(1,2,2)
G = randn(1,SampleSize) ;
hist(G)
title('Loi de Gauss')



Hist95 = zeros(length(TestWindow),1) ;
Hist99 = zeros(length(TestWindow),1) ;

r99 = round(99/100*EstimationWindowSize) ;
r95 = round(95/100*EstimationWindowSize) ;
for t = TestWindow ,
i = t-TestWindowStart+1;
EstimationWindow = t-EstimationWindowSize:t-1 ; % fenêtre glissante de longueur 1 an environ qui couvre le passé de t
xs = sort(X(EstimationWindow)) ;
Hist95(i) = xs(r95) ; % quantile empirique d’ordre 95 %
Hist99(i) = xs(r99) ;
end ;

plot(DateReturns(TestWindow),X(TestWindow),'k')
hold on % pour ajouter une courbe sur le même graphique
plot(DateReturns(TestWindow),Normal95,'m')
plot(DateReturns(TestWindow),Normal99,'r')
plot(DateReturns(TestWindow),Hist95,'m--')
plot(DateReturns(TestWindow),Hist99,'r--')
datetick('x','mm/yyyy')
legend('SP500','VaR 95','VaR 99')


EMWA95 = zeros(length(TestWindow),1) ; % On créé les vecteurs qui vont stocker les VaR ; permet de réserver l'espace mémoire
EMWA99 = zeros(length(TestWindow),1) ;

lambda = 0.94 ;
sig2  = var(X) ;
for t = TestWindow ,
i = t-TestWindowStart+1;
sig2 = (1-lambda)*X(t)+lambda*sig2 ;
EMWA95(i) = Zscore(1)*sqrt(sig) ;
EMWA99(i) = Zscore(2)*sqrt(sig) ;
end ;

plot(DateReturns(TestWindow),X(TestWindow),'k')
hold on % pour ajouter une courbe sur le même graphique
plot(DateReturns(TestWindow),Normal95,'m')
plot(DateReturns(TestWindow),Normal99,'r')
plot(DateReturns(TestWindow),Hist95,'m--')
plot(DateReturns(TestWindow),Hist99,'r--')
plot(DateReturns(TestWindow),EMWA95,'c')
plot(DateReturns(TestWindow),EMWA99,'g')
datetick('x','mm/yyyy')
legend('SP500','VaR 95','VaR 99')


% Histogrammes
subplot(1,2,1)
hist(X)
subplot(1,2,2)
G = randn(1,SampleSize) ;
hist(G)
title('Loi de Gauss')



Hist95 = zeros(length(TestWindow),1) ;
Hist99 = zeros(length(TestWindow),1) ;

r99 = round(99/100*EstimationWindowSize) ;
r95 = round(95/100*EstimationWindowSize) ;
for t = TestWindow ,
i = t-TestWindowStart+1;
EstimationWindow = t-EstimationWindowSize:t-1 ; % fenêtre glissante de longueur 1 an environ qui couvre le passé de t
xs = sort(X(EstimationWindow)) ;
Hist95(i) = xs(r95) ; % quantile empirique d’ordre 95 %
Hist99(i) = xs(r99) ;
end ;
