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

Entiers et flottants

Position dans le parcoursModule 1 sur 11 · Sujet 2 sur 33
1.2 Entiers et flottants
—Score du lab— / 100XP total—Série—

Nombres entiers et décimaux

Python propose deux types de nombres pour le travail courant. Un int est un nombre entier, comme 200 actions. Un float est un nombre décimal, comme 184.25, un prix. type() indique de quel type est une valeur. Les quantités (actions, lots, jours) sont des int ; les prix, rendements et ratios sont des float.

shares = 200
price = 184.25
print(type(shares), type(price))  # <class 'int'> <class 'float'>

Trois sortes de division

+, - et * se comportent comme prévu. La division existe en trois variantes. / renvoie toujours un float, même pour 10 / 2 (soit 5.0). // est la division entière : elle divise et arrondit vers le bas à un nombre entier. % donne le reste. ** élève un nombre à une puissance.

# Division, floor division, remainder and power
print(7 / 2)    # 3.5
print(7 // 2)   # 3
print(7 % 2)    # 1
print(2 ** 10)  # 1024
Plancher signifie vers le bas// arrondit vers moins l'infini, donc -7 // 2 vaut -4 et non -3. Pour les nombres positifs, cela revient à supprimer les décimales ; pas pour les négatifs.

Combien d'actions entières pouvez-vous acheter ?

La division entière répond à « combien de fois cela tient-il ? ». Avec 1 000 en liquidités et un prix de 184,25, cash // price donne le nombre d'actions entières, et cash - shares * price ce qu'il reste. Sur des floats, // renvoie un float (5.0) : entourez-le de int() quand il vous faut un vrai compteur.

# Whole shares for a cash budget, and the cash left over
cash, price = 1000, 184.25
shares = int(cash // price)
left = cash - shares * price
print(shares, left)  # 5 78.75

Les floats sont des approximations

Un float stocke un nombre en binaire, et la plupart des décimaux comme 0.1 n'ont pas de forme binaire exacte. Python conserve la plus proche, d'où de minuscules erreurs. Cela arrive dans tous les langages et ce n'est pas un bogue de Python. La règle pour un quant : ne jamais comparer des floats avec ==. Utilisez math.isclose, qui accepte une petite tolérance.

# Floats are approximate: compare with isclose, not ==
import math

print(0.1 + 0.2)                      # 0.30000000000000004
print(0.1 + 0.2 == 0.3)               # False
print(math.isclose(0.1 + 0.2, 0.3))   # True

Arrondir au tick

round(x, n) arrondit à n décimales. Les places de marché n'acceptent que des prix multiples d'un tick (par exemple 0,05) : divisez par le tick, arrondissez à un nombre entier de ticks, puis multipliez de nouveau. Notez aussi que round envoie une moitié exacte vers le nombre pair le plus proche : round(2.5) vaut 2 et round(3.5) vaut 4.

# Snap a price to the nearest 5-cent tick
price, tick = 184.267, 0.05
ticks = round(price / tick)
print(ticks, ticks * tick)     # 3685 184.25
print(round(2.5), round(3.5))  # 2 4

L'argent en centimes entiers

Comme les floats sont approximatifs, les systèmes qui doivent être exacts conservent l'argent sous forme d'un nombre entier de centimes. Pour convertir, multipliez par 100 et arrondissez. int() ne fait que couper les décimales : 19.99 * 100, qui vaut en réalité 1998.9999999999998, perdrait un centime.

# Dollars to integer cents: round, do not truncate
amount = 19.99
print(amount * 100)          # 1998.9999999999998
print(int(amount * 100))     # 1998  (a cent is lost)
print(round(amount * 100))   # 1999
  • Quantités (actions, lots, jours) : int.
  • Prix, rendements et ratios : float, comparés avec math.isclose.
  • Argent exact : centimes entiers (ou le module decimal).

À suivre : les chaînes et les f-strings, pour transformer ces nombres en texte lisible comme AAPL 184.25 x 184.50.

Lab : ce qui est noté

  • Compter les actions entières qu'un budget permet d'acheter avec shares_for_cash25 pts
  • Trouver les liquidités restantes avec leftover_cash25 pts
  • Ramener un prix au tick le plus proche avec round_to_tick25 pts
  • Convertir des dollars en centimes entiers exacts avec cents25 pts
Explorateur · lab-2-1
▾ lab-2-1
…
bash · dans le navigateur
learner@quantcraft:~/lab-2-1$
Python pas encore chargéPythonLn 1, Col 1Spaces: 4UTF-8

Réinitialiser ce sujet ?

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