σμ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 SciPy›Module 1 · Ajuster et trouver›Sujet 1.3·~45 minIntermédiaire

Tests d'hypothèses et bootstrap

Position dans le parcoursModule 1 sur 3 · Sujet 3 sur 8
1.3 Tests d'hypothèses et bootstrap
—Score du lab— / 100XP total—Série—

Une barre d'erreur pour chaque affirmation

Un backtest dit qu'une stratégie a gagné 0,05 % par jour. Compétence ou chance ? Un test d'hypothèse répond par une p-valeur : si la vraie moyenne était nulle, à quelle fréquence un échantillon paraîtrait-il aussi bon ? stats.ttest_1samp(r, 0.0) teste une moyenne, et stats.ttest_ind(a, b, equal_var=False) compare deux actifs sans supposer qu'ils ont la même volatilité (test de Welch, le choix sûr par défaut). stats.jarque_bera(r) vérifie si les rendements sont normaux d'après l'asymétrie et l'aplatissement. Une petite p-valeur est un indice contre l'idée testée, pas la preuve de l'idée qu'on aime. Et un test ne vaut que par ses hypothèses : le test t suppose des queues fines, ce que les rendements quotidiens n'ont pas.

Quand les formules sont douteuses, rééchantillonnez. Le bootstrap tire de nombreux échantillons avec remise dans vos données, recalcule une statistique à chaque fois (la moyenne, un ratio de Sharpe, un quantile) et lit un intervalle dans la dispersion des résultats : stats.bootstrap((r,), stat, method='percentile', random_state=np.random.default_rng(seed)). La statistique doit accepter un argument axis, car SciPy passe un lot entier de rééchantillons d'un coup, et la graine rend la réponse reproductible. Un test de permutation mélange les étiquettes de deux groupes pour voir à quelle fréquence le hasard seul donne un écart aussi grand que celui observé. Enfin, testez 62 actifs au seuil de 5 % et environ trois paraîtront significatifs par pur hasard. stats.false_discovery_control(p) applique la correction de Benjamini–Hochberg et indique quelles découvertes survivent.

Ce que disent les vraies donnéesSur les 2 500 derniers jours de bourse, SPY a gagné en moyenne 0,046 % par jour, avec t=2,80 et p=0,005. Son ratio de Sharpe annualisé est de 0,89, et un intervalle bootstrap à 95 % va de 0,26 à 1,53 : les données ne le précisent pas mieux. Sur les 62 actifs, 22 passent le test à 5 % d'une moyenne non nulle, mais seulement 12 survivent à la correction de Benjamini–Hochberg. Le test de Jarque–Bera rejette la normalité de SPY avec une p-valeur de 0.
  • Welch par défaut : ne supposez pas que deux actifs ont la même volatilité.
  • Rééchantillonner dans le doute : un bootstrap demande une statistique avec un argument axis et une graine.
  • Comptez vos tests : 62 tests à 5 % donnent environ trois fausses découvertes ; corrigez-les.

Lab : ce qui est noté

  • La moyenne est-elle nulle ?8 pts
  • Deux actifs, deux volatilités8 pts
  • Un test de normalité6 pts
  • Un intervalle bootstrap18 pts
  • Un ratio de Sharpe annualisé8 pts
  • Un ratio de Sharpe avec barre d'erreur10 pts
  • Un test de permutation14 pts
  • Compter les fausses découvertes12 pts
  • L'étude complète16 pts
Explorateur · lab-sp-13
▾ lab-sp-13
▾ data
…
bash · dans le navigateur
learner@quantcraft:~/lab-sp-13$
Python pas encore chargéPythonLn 1, Col 1Spaces: 4UTF-8

Réinitialiser ce sujet ?

Tout le contenu de lab-sp-13 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