σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyFeuilles de routeParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Feuilles de routeParcours
AO
+1,2 k apprenants
Connexion
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyFeuilles de routeParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Feuilles de routeParcours
AO
+1,2 k apprenants
Connexion
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Parcours statsmodels›Module 2 · Modèles de séries temporelles›Sujet 2.9·~1 hAvancé

Cointégration et piège de la recherche de paires

Position dans le parcoursModule 2 sur 3 · Sujet 9 sur 9
2.9 Cointégration et piège de la recherche de paires
—Score du lab— / 100XP total—Série—

Deux prix qui restent ensemble, et le piège de la recherche

Les log-prix aₜ et bₜ sont chacun non stationnaires, mais ils sont cointégrés si une combinaison sₜ=aₜ-βbₜ-α est stationnaire : les deux dérivent ensemble et l'écart sₜ revient sans cesse vers zéro. Le ratio de couverture vient d'une régression ordinaire de a sur b avec constante, sm.OLS(a, sm.add_constant(b)).fit() ; sa pente est β et son ordonnée α. La vitesse de retour de l'écart se mesure par un AR(1) : sₜ=c+φsₜ₋₁+uₜ. Avec 0<φ<1, la demi-vie vaut -ln 2/lnφ périodes, le temps pour combler la moitié d'un écart ; φ proche de 1 signifie une marche aléatoire et aucun trade. Le test d'Engle-Granger, coint(a, b), teste l'hypothèse nulle d'une racine unitaire de l'écart, donc une p-value faible est un indice de cointégration. Il utilise des valeurs critiques spéciales, car l'écart sort d'une régression et n'est pas une série ordinaire.

Passons à la recherche. Testez 66 paires au niveau de 5 % et environ 3 passeront par pur hasard ; avec des prix persistants, le test est encore plus généreux. Une correction de Bonferroni divise le niveau par le nombre de tests, 0,05/66, et ne garde que les très petites p-values. Ici, sur les 669 premières observations hebdomadaires de 12 actions, 13 des 66 paires ont p<0,05 et 2 survivent à Bonferroni, et les meilleures ne sont pas naturelles économiquement : une banque (WFC) avec un fabricant de boissons (PEP), p=0,0005. Le contrôle honnête est hors échantillon. Fixez le ratio de couverture sur la première moitié, formez l'écart sur la seconde moitié et testez à nouveau. Aucune des cinq meilleures paires n'est encore cointégrée (p-values de 0,54 à 0,86), et le coefficient AR(1) de l'écart ultérieur est 0,99 : il ne revient plus. Une stratégie issue d'une recherche exige une correction de la recherche et un test sur des données que la recherche n'a jamais vues.

  • La cointégration signifie un écart stationnaire a-βb-α ; l'hypothèse nulle d'Engle-Granger est une racine unitaire, donc p faible = cointégré.
  • La demi-vie -ln 2/lnφ du coefficient AR(1) dit combien de temps un écart met à se combler ; φ≥1 signifie jamais.
  • Cherchez, corrigez, puis testez hors échantillon : 66 paires trouvent du bruit ; Bonferroni aide ; seules des données ultérieures tranchent.

Lab : ce qui est noté

  • Le ratio de couverture10 pts
  • L'écart5 pts
  • Le coefficient AR(1)10 pts
  • La demi-vie10 pts
  • Le test d'Engle-Granger5 pts
  • Balayer toutes les paires15 pts
  • Compter les découvertes10 pts
  • Hors échantillon15 pts
  • L'étude des paires20 pts
Explorateur · lab-sx-19
▾ lab-sx-19
▾ data
…
bash · dans le navigateur
learner@quantcraft:~/lab-sx-19$
Python pas encore chargéPythonLn 1, Col 1Spaces: 4UTF-8

Réinitialiser ce sujet ?

Tout le contenu de lab-sx-19 revient aux fichiers de départ et le terminal est vidé. Votre solution actuelle sera perdue : cette action est irréversible.

Sera réinitialisé
  • main.py → code de départ
  • Historique du terminal et sortie des tests
  • Modifications non soumises
Sera conservé
  • Meilleur score du lab
  • Votre XP et votre série
  • Progression du cours et notes

Connectez-vous pour exécuter votre code.

Tous les cours sont gratuits à lire. Créez un compte ou connectez-vous pour exécuter du code, lancer les tests et soumettre ce lab.

  • IDE dans le navigateur avec terminal bash — rien à installer
  • Correction instantanée, XP et votre place dans le parcours
Créer un compteSe connecter
OU
Continuer avec GitHub