σμ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ᵀμ = μ*∫Σ∂∞λ
σμ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 AcademyParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Parcours
AO
+1,2 k apprenants
Connexion
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Parcours Python›Module 1 · Les bases de Python pour les quants›Sujet 1.5·~30 minDébutant

Conditions : if, elif, else

Position dans le parcoursModule 1 sur 11 · Sujet 5 sur 33
1.5 Conditions : if, elif, else
—Score du lab— / 100XP total—Série—

Choisir ce qui s'exécute

Jusqu'ici, chaque ligne s'exécutait, de haut en bas. Une instruction if n'exécute un bloc de code que si une condition est True. Ajoutez elif (« sinon si ») pour d'autres conditions et else pour tout le reste. Python les vérifie dans l'ordre et n'exécute que le premier bloc dont la condition est vraie. Chaque ligne de condition se termine par deux-points.

position, target = 100, 250
if target > position:
    print("buy", target - position)   # buy 150
elif target < position:
    print("sell", position - target)
else:
    print("hold")

L'indentation est la structure

Les lignes indentées sous le if forment le bloc qui lui appartient ; la première ligne revenue à la marge gauche est en dehors. Utilisez quatre espaces par niveau, toujours de la même façon. Python n'a pas d'accolades : l'indentation est la structure, donc une mauvaise indentation change ce que fait le programme.

# The indented lines are the block that belongs to the if
price = 184.5
if price > 184:
    print("above 184")           # above 184
    print("still inside the if")
print("always runs")             # back at the left margin

L'ordre compte : la première correspondance l'emporte

Comme seule la première branche vraie s'exécute, une échelle d'elif peut utiliser des seuils : chaque branche n'a qu'à dire ce qui est nouveau. Un barème de frais en est un cas classique. Placez d'abord la condition la plus étroite ou la plus précise, sinon une condition large placée au-dessus absorbe le cas.

# elif branches are checked top to bottom; the first True wins
monthly_volume = 3_500_000
if monthly_volume < 1_000_000:
    rate = 0.0010
elif monthly_volume < 10_000_000:
    rate = 0.0007
else:
    rate = 0.0004
print(rate)  # 0.0007

Retourner tôt

Dans une fonction, return termine la fonction sur-le-champ. Vous pouvez donc traiter chaque cas avec son propre if et return, sans else ni imbrication profonde ; la dernière ligne est le cas par défaut. Un code écrit ainsi reste plat et se lit comme une liste de règles.

# Early returns keep a function flat
def side(position, target):
    if target > position:
        return "buy"
    if target < position:
        return "sell"
    return "hold"

print(side(100, 250), side(250, 100), side(100, 100))  # buy sell hold

Un choix en une ligne

Quand un if choisit seulement entre deux valeurs, une expression conditionnelle est plus courte : value_if_true if condition else value_if_false. C'est une expression : elle peut se trouver dans une f-string ou un return. Servez-vous-en pour les choix simples, et d'un if normal dès qu'il y a plus à faire.

# A one-line choice between two values
cash = 40.0
status = "ok" if cash >= 0 else "overdrawn"
print(status)  # ok
Ne comparez pas un booléen à TrueSi is_open est déjà un booléen, écrivez if is_open: et if not is_open:. if is_open == True: dit la même chose de façon plus lourde. Il en va de même pour if x: avec des nombres et du texte : cela teste « non nul » et « non vide ».
  • Deux issues : if/else, ou une expression conditionnelle sur une ligne.
  • Plusieurs plages ordonnées : une échelle d'elif, condition la plus étroite d'abord.
  • Cas particuliers et entrées invalides : des return précoces, puis le cas normal en dernier.

À suivre : les boucles for et range, pour répéter un bloc de code pour chaque élément.

Lab : ce qui est noté

  • Décider d'acheter, de vendre ou de conserver avec order_side25 pts
  • Choisir le taux de frais selon un volume avec fee_tier25 pts
  • Garder une valeur entre deux limites avec clamp25 pts
  • Transformer deux moyennes en signal avec crossover_signal25 pts
Explorateur · lab-5-1
▾ lab-5-1
…
bash · dans le navigateur
learner@quantcraft:~/lab-5-1$
Python pas encore chargéPythonLn 1, Col 1Spaces: 4UTF-8

Réinitialiser ce sujet ?

Tout le contenu de lab-5-1 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