σμ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.4·~50 minIntermédiaire

Minimisation et recherche de racines

Position dans le parcoursModule 1 sur 3 · Sujet 4 sur 6
1.4 Minimisation et recherche de racines
—Score du lab— / 100XP total—Série—

Deux tâches : trouver le point le plus bas, trouver où une courbe croise zéro

scipy.optimize résout deux sortes de problèmes. Le premier est la minimisation d'une fonction f(x)f(x)f(x), c'est-à-dire trouver l'entrée dont la sortie est la plus petite. On appelle minimize(f, x0) où x0 est votre première estimation. La méthode BFGS descend en suivant la pente de fff. Nelder-Mead n'a pas besoin de pente et compare simplement des valeurs. SLSQP accepte aussi des bornes et des contraintes, comme des poids dont la somme vaut 1. Le résultat n'est qu'un minimum local, le fond de la vallée où vous avez commencé, et un autre x0 peut donner une autre réponse. Vérifiez toujours res.success.

Le second problème est la recherche de racines : résoudre g(x)=0g(x)=0g(x)=0. brentq(g, a, b) demande un encadrement, deux points où ggg a des signes opposés, et il est alors sûr de trouver une racine en divisant l'intervalle par deux à répétition. Après nnn divisions l'intervalle a pour largeur (b−a)/2n(b-a)/2^n(b−a)/2n. newton(g, x0, fprime) utilise la pente de ggg et est bien plus rapide, mais il lui faut un bon point de départ et il peut sauter très loin quand la pente est presque plate. En finance, le rendement à l'échéance d'une obligation est une racine : c'est le taux yyy qui rend la formule de prix de l'obligation égale à son prix de marché. Un pas de Newton est ynouveau=y−g(y)/g′(y)y_{\text{nouveau}}=y-g(y)/g'(y)ynouveau​=y−g(y)/g′(y).

ynew=y−g(y)g′(y),g(y)=51+y+105(1+y)2−98,width after n halvings=b−a2ny_{\text{new}}=y-\frac{g(y)}{g'(y)},\qquad g(y)=\frac{5}{1+y}+\frac{105}{(1+y)^{2}}-98,\qquad \text{width after }n\text{ halvings}=\frac{b-a}{2^{n}}ynew​=y−g′(y)g(y)​,g(y)=1+y5​+(1+y)2105​−98,width after n halvings=2nb−a​(1)
Le rendement d'une obligation à deux ansUne obligation paie 555 après un an et 105105105 après deux ans, et coûte 989898. Partons de y=6%y=6\%y=6%. La formule de prix donne 98,1798{,}1798,17, donc g=0,17g=0{,}17g=0,17. La pente est g′=−5/1,062−210/1,063=−180,8g'=-5/1{,}06^{2}-210/1{,}06^{3}=-180{,}8g′=−5/1,062−210/1,063=−180,8. Un pas de Newton donne y=0,06−0,17/(−180,8)=6,092%y=0{,}06-0{,}17/(-180{,}8)=6{,}092\%y=0,06−0,17/(−180,8)=6,092%, et brentq sur l'encadrement [0;0,5][0;0{,}5][0;0,5] confirme la racine 6,0923%6{,}0923\%6,0923%. Pour que la dichotomie sur [0;1][0;1][0;1] soit à moins de 0,0010{,}0010,001, il faut 2n≥10002^{n}\ge10002n≥1000, donc n=10n=10n=10 divisions. Pour un minimum, deux actifs de volatilités 202020 et 101010 et de corrélation 0,20{,}20,2 ont une covariance de 404040, donc le poids de variance minimale du premier est (100−40)/(400+100−80)=0,143(100-40)/(400+100-80)=0{,}143(100−40)/(400+100−80)=0,143. Sur données réelles, SPY et TLT sur 5 4045\,4045404 jours depuis février 2005 ont des volatilités de 19,0%19{,}0\%19,0% et 14,6%14{,}6\%14,6% par an et une corrélation de −0,30-0{,}30−0,30. Le poids de variance minimale en SPY est de 40%40\%40%, pour une volatilité de 9,7%9{,}7\%9,7%. Pour une fonction à deux vallées, comme x4−3x2+xx^{4}-3x^{2}+xx4−3x2+x, minimize depuis x0=2x_0=2x0​=2 s'arrête à 1,131{,}131,13 et depuis x0=−2x_0=-2x0​=−2 à −1,30-1{,}30−1,30, qui est le plus bas.
  • Minimiser ou résoudre : minimize trouve un point bas, brentq et newton trouvent où une fonction vaut zéro.
  • Un encadrement est une garantie : brentq converge toujours quand les signes diffèrent, alors que newton est plus rapide mais exige un bon départ.
  • Un minimum peut être local : essayez plusieurs points de départ et lisez res.success avant de croire res.x.

Lab : ce qui est noté

  • Un pas de Newton15 pts
  • Divisions de la dichotomie10 pts
  • Un poids de variance minimale15 pts
  • Le bon outil pour chaque tâche15 pts
  • Un flux de volatilité implicite10 pts
  • Un minimum peut-être local10 pts
  • Pourquoi un encadrement, et pourquoi Newton peut échouer25 pts
0/ 7 traités
Exercices
1Réponse numérique15 ptsSans réponse

Pour l'obligation ci-dessus, à y=0,06y=0{,}06y=0,06 on a g=0,1666g=0{,}1666g=0,1666 et g′=−180,77g'=-180{,}77g′=−180,77. Quelle est la nouvelle estimation y−g/g′y-g/g'y−g/g′, en pourcentage ? Donnez trois décimales.

y=y =y=accepté : ± 0.003
2Réponse numérique10 ptsSans réponse

Vous encadrez une racine dans [0;1][0;1][0;1]. Combien de divisions nnn faut-il pour que l'intervalle soit large d'au plus 0,0010{,}0010,001, c'est-à-dire 2n≥10002^{n}\ge10002n≥1000 ?

n=n =n=accepté : ± 0.01
3Réponse numérique15 ptsSans réponse

Deux actifs ont des volatilités 202020 et 101010 et une covariance 404040. Le poids du premier qui minimise la variance est w=(σb2−c)/(σa2+σb2−2c)w=(\sigma_b^{2}-c)/(\sigma_a^{2}+\sigma_b^{2}-2c)w=(σb2​−c)/(σa2​+σb2​−2c). Que vaut www ? Donnez trois décimales.

w=w =w=accepté : ± 0.002
4Associer15 ptsSans réponse

Associez chaque outil à la situation où il convient le mieux.

Choisissez le partenaire de chaque élément de gauche.

brentq
newton
minimize (SLSQP)
minimize (Nelder-Mead)
5Remettre les étapes dans l'ordre10 ptsSans réponse

Mettez dans l'ordre les étapes pour déduire une volatilité implicite d'un prix d'option.

Faites glisser pour réordonner, ou placez le focus sur un élément, Espace pour le soulever, les flèches pour le déplacer et Espace pour le déposer.

  1. 1Revaloriser l'option avec la réponse pour la vérifier
  2. 2Appeler brentq sur l'encadrement
  3. 3Choisir une volatilité basse et une haute dont les erreurs ont des signes opposés
  4. 4Écrire l'erreur de prix comme fonction de la volatilité
6Choix10 ptsSans réponse

minimize lancé depuis x0=2x_0=2x0​=2 sur une courbe à deux vallées a renvoyé x=1,13x=1{,}13x=1,13 avec success=True. Vous soupçonnez une vallée plus profonde. Quelle est la meilleure étape suivante ?

7Expliquer avec des mots25 ptsSans réponse

En une ou deux phrases, expliquez pourquoi brentq demande deux points de signes opposés, et pourquoi la méthode de Newton peut échouer bien qu'elle soit plus rapide.

Mode mathsSaisie au clavier ou en LaTeXExercice 1 sur 7 · Ctrl ⏎ pour vérifier

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