fim702: lecture 5
TRANSCRIPT
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-CarloModelisation de strategies en finance de
marcheSeance 10 : Estimation de la VaR
Alexander Surkov, CFA, FRM, PRM, [email protected]
Faculte d’AdministrationUniversite de Sherbrooke
Le 16 mars 2016
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Table de matiere
Valeur a risqueSimulation historique filtreeMethode de Monte-Carlo de l’estimation de VaR
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Table de matiere
Valeur a risqueSimulation historique filtreeMethode de Monte-Carlo de l’estimation de VaR
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Simulation par la methode de bootstrap (1)
I L’emploie de l’exposant d’echelle introduit l’imprecision.
I Estimer un modele GARCH, disons GARCH(1, 1) :
σ2t = ω + αr2
t−1 + βσ2t−1
I Predire la variance :
σ2t+1 = ω + αr2
t + βσ2t
I Tirer un r des rendements historiques standardises :
rt =rtσt
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Simulation par la methode de bootstrap (2)
I Simulerrt+1 = σt+1r
I Continuer avec de nouveaux r pour l’horizon requis :
σ2t+i+1 = ω + αr2
t+i + βσ2t+i , rt+i = σt+i r
I Calculer le rendement compose
I Repeter pour calculer le quantile desire
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Bootstrap en Matlab
Mdl = garch(1,1);
eMdl = estimate(Mdl, rts);
V = infer(eMdl, rts);
tilde_r = rts ./ sqrt(V);
rep = 2500; % simulations
T = 10; % jours
N = length(rts); % dispo pour le tirage
tirage = tilde_r( unidrnd(N, T, rep) );
[V_sim, r_sim] = filter( eMdl, tirage, ...
’Z0’, tilde_r(end), ’V0’, V(end) );
r_cum = sum( r_sim, 1 );
VaR = - quantile( r_cum, alpha );
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Exemple : bootstrap pour le rendement TSX
2 4 6 8 10−5
0
5
Rnd
mnt
2 4 6 8 100.5
1
1.5
Ec.
type
t, jours
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Bootstrap : conclusion
I Pour le portefeuille, les rendements standardises tirespour tous les facteurs de risque doivent correspondre aumeme t pour refleter les correlations empiriques.
I Pour cela, il faut utiliser le meme ensemble des indicesaleatoires unidrnd(N, T, rep) pour tous les facteursde risque impliques.
I Pour plus d’information, voirI Alexander, Carol, Market Risk Analysis : Vol. 4,
Value-at-risk models, John Wiley & Sons, Ltd., 2008.I http://www.mathworks.com/help/econ/examples/
using-bootstrapping-and-filtered-historical-
simulation-to-evaluate-market-risk.html
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Table de matiere
Valeur a risqueSimulation historique filtreeMethode de Monte-Carlo de l’estimation de VaR
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Simulation par la methode de Monte-Carlo
I L’historique peut etre insuffisant ou limite par leschangements structurels.
I La VaR lineaire n’est pas suffisamment precise.I Construire des modeles pour les facteurs de risque
I distribution multivariee (normale ou une autre),I modeles GARCH etc.
I Simuler un nombre suffisant de trajectoires pour lesfacteurs de risque selon les modeles choisis pourl’horizon desire
I Calculer les rendements pour le portefeuille en utilisantles � mappages � permettant une reevaluationcomplete selon chacune des trajectoires simulees
I Calculer le quantile desire du rendement
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Monte-Carlo en Matlab : TSX
Mdl = garch(1,1);
eMdl = estimate(Mdl, rts);
V = infer(eMdl, rts);
rep = 2500; % trajectoires
T = 10; % jours
[V_sim, r_sim] = simulate( eMdl, T, ...
’NumPaths’, rep, ...
’E0’, rts(end)/sqrt( V(end) ), ’V0’, V(end) );
r_cum = sum( r_sim, 1 );
VaR = - quantile( r_cum, alpha );
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Monte-Carlo en Matlab : portefeuille (1)
% fr : 1 - RBC, 2 - taux 5 ans, 3 - taux $/$US
dfr = [ fr( 2:end, 1 ) ./ fr( 1:(end-1),1 )-1 ...
fr( 2:end, 2:3 ) - fr( 1:(end-1), 2:3 ) ];
sigma = nancov(dfr);
V0 = Vprtf( fr(end, :) );
% Mappages
function v = Vprtf(f)
v = f(1)*50 + ...
50*100 * f(3) /(1 + f(2) / 100 )^T + ...
300 * f(3);
end
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Monte-Carlo en Matlab : portefeuille (2)
for i=1:2500 % simulations
R = mvnrnd( zeros(3,1), sigma, 10 );
fr_sim = zeros(1,3);
fr_sim(1) = prod( 1+R(:, 1) ) * fr(end, 1);
fr_sim(2:3) = sum( R(:, 2:3) ) + fr(end, 2:3);
% profits et pertes
dV(i) = Vprtf( fr_sim ) - V0;
end
alpha = 0.01;
VaR = -quantile(dV, alpha);
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
L’estimateur de quantile (1)
I S’il y a N observations i.i.d. R1, . . . ,RN , pour estimer lequantile qα = F−1
R (α), on peut utiliser la statistiqued’ordre qα = R([nα]).
I Considerons une variable aleatoire YN(q)
YN(q) =1
N
N∑i=1
1Ri≤q, 1Ri≤q ≡{
1, Ri ≤ q0, Ri > q
E1Ri≤q = FR(q), V1Ri≤q = FR(q) [1− FR(q)]
I Notons qu’asymptotiquement,
YN
{R([nα])
}≈ FR
{R([nα])
}= FR(qα)
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
L’estimateur de quantile (2)
I Selon le theoreme central limite, asymptotiquement
YN(q) ∼ N{FR(q),
FR(q) [1− FR(q)]
N
}I Selon la methode � delta �, si YN(q) ∼ N
(µ, σ2
),
pour une fonction monotone g(·), asymptotiquement
g [YN(q)] ∼ N{g(µ), σ2
[g ′(µ)
]2}I Prenons g(y) = F−1
R (y), g ′(y) = 1/fR[F−1R (y)
]:
FR [YN(q)] ∼ N{q,
FR(q) [1− FR(q)]
Nf 2R (q)
}or pour quantile
qα ∼ N[qα,
α(1− α)
Nf 2R (qα)
]
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Precision de la simulation de Monte-Carlo
I Si la precision exigee est p (en %)
1.96
fR(qα)
√α(1− α)
N≤ p|qα|
le nombre minimal de simulations est
Nmin =1.962α(1− α)
[p|qα|fR(qα)]2
I Si α = 0.01, la loi est normale et p = 5% :
q0.01 = −2.33, fR(q0.01) = 0.0267, Nmin ≈ 4 · 103
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Precision de la simulation de Monte-Carlo
-2.6 -2.5 -2.4 -2.3 -2.2 -2.1Quantile, , =0.01
0
20
40
60
80
Nom
bre
d'est
imat
ions,
N=
4000
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Echantillonnage preferentielI L’idee est de remplacer la distribution a la base de
simulation de Monte-Carlo par une autre, biaisee poursouligner les valeurs d’interet :
P (L > x) =
+∞∫x
fL(L) dL =
+∞∫x
fL(L)
g(L)g(L) dL
I La loi biaisee peut etre decalee, avoir une matrice decorrelation differente ou une toute autre forme.
I Exemple : si les rendements sont distribues selon la loinormale standard N (0, 1), on peut choisir
g(L) : L ∼ N (2, 1) ,fL(L)
g(L)= e−L
2/2+(L−a)2/2
I Dans un cas multivarie, la matrice de correlation peutetre ajustee pour accentuer des combinaisons defacteurs de risque qui influencent le plus le rendementdu portefeuille.
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Exemple : echantillonnage preferentiel
-6 -4 -2 0 2 4Rendement, r
0
0.1
0.2
0.3
0.4
PD
F
fR(r)
g(r)
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Example : echantillonnage preferentiel
1.8 2 2.2 2.4 2.6 2.8Quantile, , =0.01
0
20
40
60
80
100
120
Nom
bre
d'est
imat
ions,
N=
1000
q1
q2
Modelisation destrategies en
finance de marche
Alexander Surkov
Valeur a risque
Bootstrap
Monte-Carlo
Echantillonnage preferentiel en Matlab
Nest = 500; Nsim = 1000; alpha = 0.01; a = -2;
for i = 1:Nest
x = normrnd( 0,1, Nsim, 1 );
q1(i) = - quantile(x,alpha);
y = normrnd( a, 1, Nsim, 1 );
y = sort(y);
prb = cumsum( 1/Nsim * exp( - y .^2 /2 +...
( y - a ) .^2 /2 ) );
[~,idx] = max( prb > alpha );
p2 = prb( idx );
p1 = prb( idx - 1 );
q2(i) = - ( y( idx ) * ( alpha - p1 ) +...
y( idx-1 ) * ( p2 - alpha ) ) / ( p2-p1 );
end