Ce dépôt mesure le risque du portefeuille équilibré canadien du dépôt 03-portfolio-ops-ca avec six modèles de VaR et d'Expected Shortfall, puis les fait juger par les quatre backtests que les régulateurs utilisent : Kupiec, Christoffersen, les feux tricolores de Bâle année par année, et Acerbi-Székely pour l'ES.
Le même contenu en PDF : rapport/rapport.pdf.
Résultat en une phrase. Sur 5 476 jours ouvrés hors échantillon (novembre 2004 à août 2026), la simulation historique filtrée est le seul des six modèles qui passe le test de Kupiec (69 dépassements pour 54,8 attendus à 99 %, p = 0,063) et le seul sans aucune année en zone rouge de Bâle ; les modèles à queue normale dépassent 121 à 140 fois, et la VaR historique dépasse en grappes, avec 22 dépassements dans la seule année 2008.
English summary. A risk engine for the balanced Canadian ETF portfolio of repo 03: six one-day VaR and Expected Shortfall models (historical, Gaussian, Student-t, RiskMetrics EWMA, filtered historical simulation, and a GARCH(1,1) fitted by maximum likelihood written from scratch), backtested over 5,476 out-of-sample days with Kupiec, Christoffersen, year-by-year Basel traffic lights and Acerbi-Székely. Filtered historical simulation is the only model that passes Kupiec coverage (69 violations vs 54.8 expected, p = 0.063) and the only one with zero red Basel years; normal-tail models violate 121 to 140 times, and plain historical VaR violates in clusters (22 times in 2008).
Une banque annonce chaque matin sa VaR à 99 %, la perte quotidienne qu'elle ne devrait dépasser qu'un jour sur cent. En mots simples : « demain, sauf malchance rare, je ne perdrai pas plus que ce chiffre ». Le régulateur ne juge pas la formule, il compte les dépassements : si la perte réelle excède la VaR annoncée beaucoup plus d'un jour sur cent, ou plusieurs jours de suite, le modèle est faux et le capital exigé monte. La question du dépôt : parmi six façons classiques de calculer cette VaR, lesquelles survivent à vingt-deux ans de données canadiennes réelles, crises de 2008, 2020 et 2022 comprises ?
La boîte à outils vient de quatre papiers et d'un standard d'industrie : RiskMetrics (J.P. Morgan, 1996) pour la volatilité EWMA, Bollerslev (1986) pour le GARCH, Barone-Adesi, Giannopoulos et Vosper (1999) pour la simulation historique filtrée, Kupiec (1995) et Christoffersen (1998) pour les tests, et le cadre de Bâle (feux tricolores de 1996, puis la FRTB qui impose l'Expected Shortfall à 97,5 %). Ce que ce dépôt apporte :
- Le juge avant le modèle. Les six modèles sont soumis aux mêmes 5 476 jours et aux mêmes quatre tests ; aucun chiffre de qualité de modèle n'est affirmé sans son backtest.
- Un GARCH(1,1) écrit et vérifié ici même, vraisemblance maximisée sans bibliothèque spécialisée, avec un test qui retrouve les paramètres d'une série simulée connue.
- Aucun regard sur le futur, testé : la prévision du jour t n'utilise que les jours antérieurs, et un test choque le dernier jour pour vérifier qu'aucune prévision passée ne bouge.
- La lecture réglementaire : la carte des feux de Bâle année par année, le format que les comités de risque regardent réellement.
Le portefeuille suivi est le profil équilibré du moteur d'allocation : six FNB de Toronto aux poids
25 % actions canadiennes, 20 % actions américaines, 15 % actions internationales, 5 % immobilier
coté, 25 % obligations univers, 10 % obligations court terme. Son rendement QUOTIDIEN, l'échelle de
temps de la VaR réglementaire, est calculé aux poids cibles tenus constants ; l'approximation est
déclarée et de second ordre, le dépôt 03 mesure une rotation réelle de 2,8 % par an. Prix ajustés
Yahoo Finance téléchargés par rke fetch, jamais commités (usage personnel) ; 5 977 rendements
quotidiens d'octobre 2002 à août 2026, mesuré.
Chaque modèle refait chaque jour le même geste : estimer sur les 500 jours ouvrés précédents (deux ans), annoncer la VaR et l'ES du lendemain, puis passer au jour suivant. La VaR au niveau alpha est moins le quantile alpha des rendements, rapportée en positif ; l'Expected Shortfall, la perte moyenne des jours où la VaR est dépassée, en positif aussi. Les six modèles :
- Historique : le quantile empirique des 500 derniers jours, tel quel.
- Gaussien : moyenne et écart-type de la fenêtre, quantile de la loi normale.
- Student-t : une loi de Student, dont les queues épaisses donnent plus de poids aux jours extrêmes, ajustée par maximum de vraisemblance et réajustée tous les 21 jours.
- EWMA : la volatilité RiskMetrics, une moyenne des carrés de rendements qui oublie exponentiellement le passé (lambda = 0,94), avec un quantile normal.
- Simulation historique filtrée (FHS) : chaque rendement passé est divisé par la volatilité EWMA de son jour, puis remis à l'échelle de la volatilité prévue pour demain ; le quantile est pris sur ces rendements re-scalés. La queue reste empirique, le niveau suit la volatilité.
- GARCH(1,1) : la variance de demain est une combinaison estimée de la variance d'aujourd'hui et du choc d'aujourd'hui, réestimée tous les 21 jours par maximum de vraisemblance, innovations normales.
Les quatre juges, appliqués aux mêmes jours pour tous les modèles : le test de Kupiec compare le NOMBRE de dépassements à l'attendu ; le test de Christoffersen vérifie qu'ils n'arrivent pas en grappes (un dépassement hier ne doit rien dire sur demain) ; les feux de Bâle comptent par année civile (vert 0 à 4, jaune 5 à 9, rouge 10 et plus) ; la statistique Z2 d'Acerbi-Székely (2014) vaut zéro si l'ES annoncé égale la perte moyenne des jours de dépassement, elle est négative s'il la sous-estime.
Tous les chiffres viennent de results/tables/backtests_var99.csv et backtests_es975.csv,
régénérés par uv run rke backtest ; 5 476 jours communs, novembre 2004 à août 2026, VaR à 99 %.
| Modèle | Dépassements (54,8 attendus) | Taux | p Kupiec | p indépendance | VaR moyenne |
|---|---|---|---|---|---|
| FHS | 69 | 1,26 % | 0,063 | 0,012 | 1,62 % |
| Historique | 89 | 1,63 % | 0,000 | 0,000 | 1,74 % |
| Student-t | 89 | 1,63 % | 0,000 | 0,000 | 1,78 % |
| GARCH(1,1) normal | 121 | 2,21 % | 0,000 | 0,192 | 1,29 % |
| EWMA | 128 | 2,34 % | 0,000 | 0,277 | 1,30 % |
| Gaussien | 140 | 2,56 % | 0,000 | 0,000 | 1,42 % |
Comment lire ce tableau, en trois constats. D'abord, les deux familles échouent pour des raisons opposées : les modèles à volatilité dynamique et queue normale (EWMA, GARCH) réagissent vite, donc leurs dépassements sont indépendants (p = 0,19 à 0,28), mais la queue normale en produit deux fois trop ; les modèles à queue riche mais niveau figé (historique, Student) ont le bon ordre de grandeur de dépassements mais les font en grappes (p d'indépendance nulle), le pire moment possible. Ensuite, la FHS, qui combine queue empirique et volatilité EWMA, est la seule à passer Kupiec ; son p d'indépendance de 0,012 reste sous 5 %, aucun modèle n'est parfait et c'est écrit. Enfin, le prix de la prudence se lit dans la dernière colonne : l'historique immobilise une VaR moyenne de 1,74 % pour échouer quand même, la FHS fait mieux avec 1,62 %.
Comment lire cette figure : le trait gris est le rendement quotidien du portefeuille, les deux courbes sont moins la VaR 99 % annoncée la veille (historique en bleu, FHS en vermillon), et chaque triangle un jour où la perte a traversé la VaR de la FHS. La courbe historique forme des marches : elle descend après les crises et reste basse environ deux ans, le temps que la fenêtre de 500 jours oublie ; la courbe FHS descend pendant la crise et remonte quelques semaines après.
Comment lire cette figure : une ligne par modèle, une colonne par année, le chiffre est le nombre de dépassements de la VaR 99 % et la couleur la zone de Bâle. La ligne FHS est la seule sans case rouge (18 années vertes, 5 jaunes) ; l'historique est rouge en 2008 (22 dépassements) et 2020 (10) ; le gaussien cumule six années rouges. C'est le tableau qu'un comité de risque regarde, et il suffit à classer les modèles.
Comment lire cette figure : les barres grises sont les rendements quotidiens de janvier à septembre 2020, les courbes moins la VaR 99 % de trois modèles. L'historique (bleu) met deux semaines à réagir puis reste figé à 3,2 % jusqu'en mars 2022 ; l'EWMA et la FHS plongent avec le choc (la FHS jusqu'à 13,5 %) puis reviennent en quelques mois. La VaR historique est en retard dans les deux sens : trop basse pendant la crise, trop haute longtemps après.
Sur l'Expected Shortfall à 97,5 %, le niveau de la FRTB (backtests_es975.csv) : la FHS reste
première (158 dépassements pour 136,9 attendus, p = 0,075) et le gaussien dernier, le Student
reculant derrière le GARCH ; la FHS affiche le Z2 le plus proche de zéro (−0,16) et un ratio perte
réalisée sur ES annoncé de 0,97 les jours de dépassement, contre 1,36 pour le gaussien, qui
sous-estime donc ses pertes de queue d'un bon tiers.
Dans un service de risque, personne ne relit du Python. On relit un classeur, on change une case, et
on regarde ce que le résultat devient. reports/tests_depassement.xlsx permet cela : ses 450
formules sont écrites en Excel, rien n'est calculé en Python puis collé.
Trois feuilles. La notice dit ce que le classeur contient. La feuille « Kupiec » refait le test de
dépassement pour les six modèles, et ses valeurs p redonnent exactement celles de
results/tables/backtests_var99.csv, dont 0,0630 pour la simulation historique filtrée. La
feuille « Feux de Bâle » classe chaque année en vert, jaune ou rouge, avec les seuils de 5 et 10
mis à l'échelle du nombre de jours réellement observés, ce que la formule montre au lieu de le
cacher.
Il n'y a pas de macro, et ce n'est pas un oubli. Un script ne peut pas en écrire : mesuré le
30 août 2026, un fichier enregistré sous l'extension des classeurs à macros ne contient aucun projet
de macros, et Excel l'ouvre comme un classeur ordinaire. Le même test est donc livré en Visual Basic
dans vba/KupiecTest.bas, à importer par Alt+F11 puis Fichier, Importer un fichier ; les fonctions
KUPIEC et ZONE_BALE deviennent alors disponibles dans les cellules. Le classeur fonctionne
entièrement sans elles.
Un piège de format a été évité au passage. Les fonctions Excel ajoutées après 2007 doivent porter un
préfixe technique dans le fichier, faute de quoi Excel affiche une erreur de nom sur chaque cellule.
Le classeur emploie donc CHIDIST, la forme ancienne, qui fonctionne dans toutes les versions, et un
test le vérifie.
uv sync --locked --all-extras # environnement verrouillé (Python 3.12, scipy, sans bibliothèque GARCH)
uv run pytest # 10 tests synthétiques, sans réseau (quantiles, fuite, GARCH, juges)
uv run rke fetch # prix quotidiens des six FNB (quelques secondes, non commités)
uv run rke backtest # 6 modèles x 5 476 jours x 2 niveaux : tables + 3 figures (12 s mesurées)| Limite | Statut |
|---|---|
| Le GARCH utilise des innovations normales ; un GARCH-t ou un GARCH-FHS ferait mieux en queue | reconnu ; la FHS joue déjà ce rôle avec la volatilité EWMA |
| La statistique Z2 est rapportée sans p-valeur simulée (Acerbi-Székely la calculent par simulation du modèle) ; le seuil indicatif de −0,7 est un précepte, pas une mesure | déclaré |
| Poids du portefeuille tenus constants aux cibles (la rotation réelle mesurée au dépôt 03 est de 2,8 % par an) | approximation déclarée |
| Un seul portefeuille testé ; les conclusions valent pour un profil équilibré, pas pour un livre de dérivés | reconnu |
| Fenêtre unique de 500 jours et réajustement tous les 21 jours, non optimisés | choix déclarés |
| Classeur Excel/VBA de restitution pour comité de risque | à venir |
Kupiec, P. (1995), « Techniques for Verifying the Accuracy of Risk Measurement Models » ; Christoffersen, P. (1998), « Evaluating Interval Forecasts » ; Barone-Adesi, G., Giannopoulos, K. et Vosper, L. (1999), « VaR without Correlations for Portfolios of Derivative Securities » ; Bollerslev, T. (1986) ; Acerbi, C. et Székely, B. (2014), « Backtesting Expected Shortfall » ; J.P. Morgan (1996), RiskMetrics Technical Document ; Comité de Bâle (1996, 2019). Données : Yahoo Finance, usage personnel, non redistribuées. Code : Guillaume Vaudescal, 2026, licence MIT.


