σμ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.1·~45 minDébutant

Syntaxe Python et premier programme

Position dans le parcoursModule 1 sur 11 · Sujet 1 sur 33
1.1 Syntaxe Python et premier programme
—Score du lab— / 100XP total—Série—

Comment s'exécute un programme Python

Un programme Python est un fichier texte composé d'instructions. Python le lit de haut en bas et exécute une instruction à la fois, sans code superflu : le fichier main.py est le programme. Cliquez sur Run, ou tapez python main.py dans le terminal.

bid = 184.25
ask = 184.50
print(ask - bid)  # 0.25

Instructions et expressions

Une expression produit une valeur, comme ask - bid ou 2 * 3. Une instruction fait quelque chose, comme bid = 184.25 ou print(bid). Chaque instruction occupe sa propre ligne, et la fin de la ligne termine l'instruction : pas de point-virgule. Quand une instruction est trop longue, placez-la entre parenthèses et poursuivez sur les lignes suivantes.

total_cost = (
    price * quantity
    + commission
    + exchange_fee
)

Commentaires et docstrings

Tout ce qui suit # jusqu'à la fin de la ligne est un commentaire : Python l'ignore. Servez-vous des commentaires pour expliquer pourquoi le code fait quelque chose, pas pour répéter ce qu'il fait. Une chaîne entre triples guillemets placée en tête d'un fichier ou d'une fonction est une docstring, la description officielle que les outils et help() affichent.

# Mid price: the fair value halfway between bid and ask.
mid = (bid + ask) / 2  # average of the two quotes

L'indentation fait partie de la syntaxe

Là où d'autres langages utilisent des accolades, Python utilise l'indentation. Une ligne qui se termine par deux-points ouvre un bloc, et ce bloc est formé des lignes indentées en dessous. Indentez avec quatre espaces et ne mélangez jamais tabulations et espaces. Le code placé contre la marge gauche est du code de premier niveau.

def spread(bid, ask):
    # both lines below are the block: indented by four spaces
    width = ask - bid
    return width

print(spread(184.25, 184.50))  # back at the left margin: 0.25
AttentionUn espace manquant ou en trop provoque une IndentationError, et des deux-points oubliés provoquent une SyntaxError. Python s'arrête avant d'exécuter quoi que ce soit : lisez d'abord le numéro de ligne dans le message. Configurez votre éditeur pour insérer des espaces quand vous appuyez sur Tab.

Variables et affectation

nom = valeur associe un nom à une valeur. Le signe = signifie affecter, et non égal : Python calcule d'abord le membre de droite, puis attache le nom au résultat. Les noms sont sensibles à la casse, peuvent contenir des lettres, des chiffres et des tirets bas, ne peuvent pas commencer par un chiffre et ne peuvent pas être un mot-clé comme if ou for. Le style Python est le snake_case, par exemple last_price.

price = 184.25
quantity = 200
notional = price * quantity
price = 185.00      # rebinds price; notional is unchanged
quantity += 50      # shorthand for quantity = quantity + 50
print(notional)     # 36850.0

Arithmétique et priorité des opérateurs

  • +, - et * additionnent, soustraient et multiplient.
  • / est la division réelle et donne toujours un résultat décimal : 7 / 2 vaut 3.5.
  • // divise et arrondit vers le bas ; % donne le reste : 7 // 2 vaut 3, 7 % 2 vaut 1.
  • ** élève à une puissance : 1.05 ** 10 capitalise 5 % dix fois.

Python suit l'ordre des mathématiques : ** d'abord, puis * et /, puis + et -. Ainsi 2 + 3 * 4 vaut 14, alors que (2 + 3) * 4 vaut 20. Dans le doute, ajoutez des parenthèses : elles ne coûtent rien et rendent l'intention évidente. Les tirets bas dans les nombres, comme 10_000, sont ignorés et rendent les grands nombres lisibles.

spread = ask - bid                   # 0.25
mid = (bid + ask) / 2                # 184.375
spread_bps = spread / mid * 10_000   # the spread in basis points

Afficher des résultats avec print

print() écrit des valeurs dans le terminal, séparées par des espaces. Un texte entre guillemets est une chaîne ; les sujets suivants traitent en détail des chaînes et des nombres. Pour l'instant, print est votre moyen de regarder à l'intérieur de votre programme : affichez une valeur, vérifiez-la à la main, puis continuez.

print("bid", bid, "ask", ask)
print("mid", mid)

Dans le lab, vous écrirez de petites formules de prix en n'utilisant que ce qui figure sur cette page : affectation, arithmétique et parenthèses. À suivre : comment Python stocke les nombres, et pourquoi 0.1 + 0.2 ne vaut pas exactement 0.3.

Lab : ce qui est noté

  • Calculer la valeur d'une position avec notional25 pts
  • Trouver le prix médian avec midpoint25 pts
  • Mesurer l'écart bid-ask avec spread25 pts
  • Exprimer l'écart en points de base avec spread_bps25 pts
Explorateur · lab-1-1
▾ lab-1-1
…
bash · dans le navigateur
learner@quantcraft:~/lab-1-1$
Python pas encore chargéPythonLn 1, Col 1Spaces: 4UTF-8

Réinitialiser ce sujet ?

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