Les formules de référence¶
Cette page rassemble les définitions que le laboratoire tient pour vraies. Une formule qui ne figure pas ici et qui apparaît dans le code est un défaut à corriger, parce qu'une définition financière qui vit à deux endroits finit par diverger.
Chaque formule renvoie à son implémentation. La docstring de l'implémentation porte le détail : hypothèses, provenance, limites, alternatives, façon de vérifier.
Rendements¶
Rendement simple et rendement logarithmique :
Le simple s'agrège dans la dimension des actifs, le logarithmique dans celle du temps. Aucun des deux n'est le bon en général.
Exemple chiffré à retenir. Une hausse de 10 % suivie d'une baisse de 10 % laisse 0,99, soit une perte de 1 %, alors que la moyenne des deux rendements simples vaut zéro. En logarithme, \(+0{,}09531\) puis \(-0{,}10536\) somment à \(-0{,}01005\), dont l'exponentielle rend exactement 0,99.
Croissance annualisée composée :
où \(T\) est la durée en années, pas en périodes.
Implémentation : quantlab.analytics.returns.
Risque¶
Volatilité annualisée :
où \(N\) est le nombre de périodes par an. La racine suppose des rendements non corrélés dans le temps. Quand ils sont autocorrélés, la correction de Lo (2002) remplace \(\sqrt{N}\) par :
où \(\rho_k\) est l'autocorrélation d'ordre \(k\). Une autocorrélation positive fait sous-estimer la volatilité annuelle, donc surestimer le ratio de Sharpe.
Valeur à risque et perte espérée au-delà :
La convention du laboratoire exprime les deux en perte positive. La perte espérée est sous-additive, la valeur à risque ne l'est pas (Artzner, Delbaen, Eber et Heath, 1999).
Perte depuis le sommet :
Valeurs négatives ou nulles, par convention déclarée.
Implémentation : quantlab.analytics.risk et quantlab.analytics.drawdown.
Ratios¶
Le numérateur s'annualise en \(N\), le dénominateur en \(\sqrt{N}\), donc le ratio annualisé vaut \(\sqrt{N}\) fois le ratio périodique. Le taux sans risque se soustrait avant l'annualisation, jamais après.
Erreur type du ratio de Sharpe sous indépendance (Jobson et Korkie 1981, corrigée par Memmel 2003) :
Implémentation : quantlab.analytics.ratios.
Signal et prédiction¶
Coefficient d'information :
calculé en transversal à chaque date, en Pearson ou en rang de Spearman.
Loi fondamentale de la gestion active (Grinold, 1989) :
où \(BR\) est le nombre de paris effectivement indépendants. C'est le point que la formule cache : mille prédictions fortement corrélées ne valent pas mille paris. Le laboratoire mesure la largeur effective plutôt que de compter les lignes.
Implémentation : quantlab.analytics.ic.
Portefeuille¶
Volatilité, contribution marginale, contribution au risque :
Le théorème d'Euler rend la décomposition exacte et non approximative : la volatilité est homogène de degré un en \(w\), donc \(\sum_i RC_i = \sigma_p\).
Rotation, convention du laboratoire :
Le facteur un demi compte un aller-retour une fois. Les poids dérivés sont ceux vers lesquels le marché a fait glisser le portefeuille avant rééquilibrage : confondre poids cibles et poids dérivés fait payer des frais fantômes.
Fonction objectif de l'optimiseur :
où \(\alpha\) est l'alpha attendu, \(\Sigma\) la covariance, \(\lambda\) l'aversion au risque, \(C\) le coût de négociation et \(\gamma\) son poids.
Cible de volatilité :
avec un plafond de levier obligatoire : quand la volatilité prévue approche zéro, le levier explose, et le plafond est la seule chose qui l'empêche.
Implémentation : quantlab.analytics.contributions, quantlab.analytics.turnover,
puis quantlab.portfolio en phase 5.
Coûts¶
Modèle d'impact en racine carrée, stylisé :
où \(Q\) est la quantité négociée et \(ADV\) le volume quotidien moyen. C'est une approximation sans microstructure, et elle est déclarée comme telle partout où elle sert.
Capacité, le capital \(A\) où le rendement net moyen s'annule. Comme l'impact croît en racine du capital, le net moyen est une droite en \(\sqrt{A}\) :
où \(g\) est le brut moyen par période, \(s\) le demi-écart moyen payé et \(K\) la charge d'impact moyenne au capital unité. Le moteur relancé à \(A^{\ast}\) doit rendre un net moyen nul à la précision machine ; sinon le calcul lève.
Implémentation : quantlab.execution.costs et quantlab.execution.capacity,
phase 6, ADR-012.