1. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Mod´elisation de strat´egies en finance de
march´e
S´eance 10 : Estimation de la V`aR
Alexander Surkov, CFA, FRM, PRM, PhD
alexander.surkov@usherbrooke.ca
´Ecole de gestion
Universit´e de Sherbrooke
Le 22 mars 2017
2. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Table de mati`ere
Valeur `a risque
Simulation historique filtr´ee
M´ethode de Monte-Carlo de l’estimation de V`aR
3. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Table de mati`ere
Valeur `a risque
Simulation historique filtr´ee
M´ethode de Monte-Carlo de l’estimation de V`aR
4. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Simulation par la m´ethode de bootstrap (1)
L’emploie de l’exposant d’´echelle introduit l’impr´ecision.
Estimer un mod`ele GARCH, disons GARCH(1, 1) :
ˆσ2
t = ˆω + ˆαr2
t−1 + ˆβˆσ2
t−1
Pr´edire la variance :
ˆσ2
t+1 = ˆω + ˆαr2
t + ˆβˆσ2
t
Tirer un ˜r des rendements historiques standardis´es :
˜rt =
rt
ˆσt
5. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Simulation par la m´ethode de bootstrap (2)
Simuler
ˆrt+1 = ˆσt+1˜r
Continuer avec de nouveaux ˜r pour l’horizon requis :
ˆσ2
t+i+1 = ˆω + ˆαˆr2
t+i + ˆβˆσ2
t+i , ˆrt+i = ˆσt+i ˜r
Calculer le rendement compos´e
R´ep´eter pour calculer le quantile d´esir´e
6. Mod´elisation de
strat´egies en
finance de march´e
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 );
7. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Exemple : bootstrap pour le rendement TSX
2 4 6 8 10
−5
0
5
Rndmnt
2 4 6 8 10
0.5
1
1.5
Ec.type
t, jours
8. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Bootstrap : conclusion
Pour le portefeuille, les rendements standardis´es tir´es
pour tous les facteurs de risque doivent correspondre au
mˆeme t pour refl´eter les corr´elations empiriques.
Pour cela, il faut utiliser le mˆeme ensemble des indices
al´eatoires unidrnd(N, T, rep) pour tous les facteurs
de risque impliqu´es.
Pour plus d’information, voir
Alexander, Carol, Market Risk Analysis : Vol. 4,
Value-at-risk models, John Wiley & Sons, Ltd., 2008.
http://www.mathworks.com/help/econ/examples/
using-bootstrapping-and-filtered-historical-
simulation-to-evaluate-market-risk.html
9. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Table de mati`ere
Valeur `a risque
Simulation historique filtr´ee
M´ethode de Monte-Carlo de l’estimation de V`aR
10. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Simulation par la m´ethode de Monte-Carlo
L’historique peut ˆetre insuffisant ou limit´e par les
changements structurels.
La V`aR lin´eaire n’est pas suffisamment pr´ecise.
Construire des mod`eles pour les facteurs de risque
distribution multivari´ee (normale ou une autre),
mod`eles GARCH etc.
Simuler un nombre suffisant de trajectoires pour les
facteurs de risque selon les mod`eles choisis pour
l’horizon d´esir´e
Calculer les rendements pour le portefeuille en utilisant
les mappages permettant une r´e´evaluation
compl`ete selon chacune des trajectoires simul´ees
Calculer le quantile d´esir´e du rendement
11. Mod´elisation de
strat´egies en
finance de march´e
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 );
12. Mod´elisation de
strat´egies en
finance de march´e
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
13. Mod´elisation de
strat´egies en
finance de march´e
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);
14. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
L’estimateur de quantile (1)
S’il y a N observations i.i.d. R1, . . . , RN, pour estimer le
quantile qα = F−1
R (α), on peut utiliser la statistique
d’ordre ˆqα = R([nα]).
Consid´erons une variable al´eatoire YN(q)
YN(q) =
1
N
N
i=1
1Ri ≤q, 1Ri ≤q ≡
1, Ri ≤ q
0, Ri > q
E1Ri ≤q = FR(q), V1Ri ≤q = FR(q) [1 − FR(q)]
Notons qu’asymptotiquement,
YN R([nα]) ≈ FR R([nα]) = FR(ˆqα)
15. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
L’estimateur de quantile (2)
Selon le th´eor`eme central limite, asymptotiquement
YN(q) ∼ N FR(q),
FR(q) [1 − FR(q)]
N
Selon la m´ethode delta , si YN(q) ∼ N µ, σ2 ,
pour une fonction monotone g(·), asymptotiquement
g [YN(q)] ∼ N g(µ), σ2
g (µ)
2
Prenons g(y) = F−1
R (y), g (y) = 1 fR F−1
R (y) :
FR [YN(q)] ∼ N q,
FR(q) [1 − FR(q)]
Nf 2
R (q)
or pour quantile
ˆqα ∼ N qα,
α(1 − α)
Nf 2
R (qα)
16. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Pr´ecision de la simulation de Monte-Carlo
Si la pr´ecision exig´ee 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
Si α = 0.01, la loi est normale et p = 5% :
q0.01 = −2.33, fR(q0.01) = 0.0267, Nmin ≈ 4 · 103
17. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Pr´ecision de la simulation de Monte-Carlo
-2.6 -2.5 -2.4 -2.3 -2.2 -2.1
Quantile, , =0.01
0
20
40
60
80
Nombred'estimations,N=4000
18. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
´Echantillonnage pr´ef´erentiel
L’id´ee est de remplacer la distribution `a la base de
simulation de Monte-Carlo par une autre, biais´ee pour
souligner les valeurs d’int´erˆet :
P (L > x) =
+∞
x
fL(L) dL =
+∞
x
fL(L)
g(L)
g(L) dL
La loi biais´ee peut ˆetre d´ecal´ee, avoir une matrice de
corr´elation diff´erente ou une toute autre forme.
Exemple : si les rendements sont distribu´es selon la loi
normale standard N (0, 1), on peut choisir
g(L) : L ∼ N (2, 1) ,
fL(L)
g(L)
= e−L2/2+(L−a)2/2
Dans un cas multivari´e, la matrice de corr´elation peut
ˆetre ajust´ee pour accentuer des combinaisons de
facteurs de risque qui influencent le plus le rendement
du portefeuille.
19. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Exemple : ´echantillonnage pr´ef´erentiel
-6 -4 -2 0 2 4
Rendement, r
0
0.1
0.2
0.3
0.4
PDF
fR(r)
g(r)
20. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
Example : ´echantillonnage pr´ef´erentiel
1.8 2 2.2 2.4 2.6 2.8
Quantile, , =0.01
0
20
40
60
80
100
120
Nombred'estimations,N=1000
q1
q2
21. Mod´elisation de
strat´egies en
finance de march´e
Alexander Surkov
Valeur `a risque
Bootstrap
Monte-Carlo
´Echantillonnage pr´ef´erentiel 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