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

Définir et appeler des fonctions

Position dans le parcoursModule 1 sur 11 · Sujet 8 sur 33
1.8 Définir et appeler des fonctions
—Score du lab— / 100XP total—Série—

Donner un nom à un bloc de code

Une fonction est un bloc de code nommé que l'on peut exécuter encore et encore. On la définit une fois avec def, un nom, des parenthèses et deux-points ; le bloc indenté dessous est le corps. return renvoie une valeur à celui qui a appelé la fonction. L'appeler, c'est écrire son nom avec des parenthèses et les valeurs à traiter.

def gross_value(price, quantity):
    return price * quantity

print(gross_value(184.25, 200))  # 36850.0

Paramètres et arguments

Les noms entre parenthèses dans def sont les paramètres : des emplacements pour les entrées. Les valeurs passées à l'appel sont les arguments et remplissent les paramètres dans l'ordre. Si vous les échangez, le résultat change. Passer le mauvais nombre d'arguments est une erreur. Chaque appel reçoit sa propre copie des paramètres.

# Arguments fill the parameters in order
def spread(bid, ask):
    return ask - bid

print(spread(184.25, 184.5))  # 0.25
print(spread(184.5, 184.25))  # -0.25

return n'est pas print

print affiche quelque chose à l'écran pour un humain. return remet une valeur au code appelant pour qu'il puisse continuer à la manipuler. Une fonction sans return renvoie None, c'est-à-dire « rien ». Les fonctions qui calculent doivent renvoyer ; c'est le code appelant qui décide d'afficher ou non.

# A function with no return gives back None
def show(price):
    print("price", price)

result = show(184.25)   # price 184.25
print(result)           # None

De petites fonctions qui s'appuient les unes sur les autres

Une fonction peut en appeler d'autres : on construit ainsi un comportement complexe à partir de petites pièces testables. Donnez à chaque fonction une seule tâche et un nom qui la dit. La docstring, une chaîne juste sous def, l'explique au prochain lecteur. Définissez une fonction avant que s'exécute la ligne qui l'appelle.

# Small functions build bigger ones
def gross_value(price, quantity):
    """Value of a position before costs."""
    return price * quantity


def commission(gross):
    """0.1% of the value, but never less than 1.0."""
    return max(1.0, gross * 0.001)


def net_cost(price, quantity):
    """What the position really costs: value plus commission."""
    gross = gross_value(price, quantity)
    return gross + commission(gross)


print(net_cost(184.25, 200))  # 36886.85

Renvoyer plusieurs valeurs

return a, b renvoie les deux valeurs d'un coup, sous forme de tuple : une paire ordonnée écrite avec des virgules (les tuples auront bientôt leur propre sujet). L'appelant peut nommer les morceaux tout de suite. Découper un ordre de 1 000 actions en 3 tranches avec // et % renvoie la taille de chaque tranche et le reste.

# return several values as a tuple
def split_fill(quantity, slices):
    return quantity // slices, quantity % slices

size, leftover = split_fill(1000, 3)
print(size, leftover)  # 333 1
Return met fin à la fonctionPython quitte la fonction au premier return atteint ; les lignes qui suivent sur ce chemin ne s'exécutent jamais. Les paramètres et toute variable créée dans la fonction n'existent que pendant l'appel : le code extérieur ne les voit pas (nous y reviendrons dans le sujet sur la portée).
  • Une tâche par fonction, et un nom qui dit ce qu'elle renvoie.
  • Calculer et return ; laisser l'appelant afficher.
  • Ajouter une docstring qui dit ce qui entre et ce qui sort.

À suivre : les arguments et valeurs par défaut des fonctions, pour appeler des fonctions avec des noms, des valeurs facultatives et un nombre quelconque d'arguments.

Lab : ce qui est noté

  • Définir une fonction qui valorise une position avec gross_value25 pts
  • Prélever une commission avec un minimum grâce à commission25 pts
  • Construire le coût réel à partir de deux fonctions avec net_cost25 pts
  • Renvoyer deux valeurs à la fois avec split_fill25 pts
Explorateur · lab-8-1
▾ lab-8-1
…
bash · dans le navigateur
learner@quantcraft:~/lab-8-1$
Python pas encore chargéPythonLn 1, Col 1Spaces: 4UTF-8

Réinitialiser ce sujet ?

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