σμ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 AcademySkills
Ctrl K
AO
+1,2 Tsd. Lernende
AnmeldenBeitreten ↗
Skills
AO
+1,2 Tsd. Lernende
Anmelden
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Python-Skill›Modul 1 · Python-Grundlagen für Quants›Thema 1.2·~30 Min.Einsteiger

Ganzzahlen und Gleitkommazahlen

Position in der SkillModul 1 von 11 · Thema 2 von 33
1.2 Ganzzahlen und Gleitkommazahlen
—Lab-Punkte— / 100XP gesamt—Serie—

Ganze Zahlen und Dezimalzahlen

Python hat zwei Zahlentypen für den Alltag. Ein int ist eine ganze Zahl wie 200 Aktien. Ein float ist eine Dezimalzahl wie 184.25, ein Preis. type() verrät, welcher Typ vorliegt. Zählwerte (Aktien, Lots, Tage) sind ints; Preise, Renditen und Verhältnisse sind floats.

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

Drei Arten der Division

+, - und * verhalten sich wie erwartet. Die Division gibt es in drei Varianten. / liefert immer einen float, auch bei 10 / 2 (also 5.0). // ist die ganzzahlige Division: Sie teilt und rundet nach unten auf eine ganze Zahl. % liefert den Rest. ** potenziert eine Zahl.

# Division, floor division, remainder and power
print(7 / 2)    # 3.5
print(7 // 2)   # 3
print(7 % 2)    # 1
print(2 ** 10)  # 1024
Floor heißt nach unten// rundet Richtung minus unendlich, daher ist -7 // 2 gleich -4, nicht -3. Bei positiven Zahlen sieht das nach Abschneiden der Nachkommastellen aus, bei negativen nicht.

Wie viele ganze Aktien können Sie kaufen?

Die ganzzahlige Division beantwortet „wie oft passt das hinein?“. Bei 1.000 Bargeld und einem Preis von 184,25 ist cash // price die Zahl ganzer Aktien und cash - shares * price der Rest. Bei floats liefert // einen float (5.0); umhüllen Sie ihn mit int(), wenn Sie eine echte Anzahl brauchen.

# 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

Floats sind Näherungen

Ein float speichert eine Zahl binär, und die meisten Dezimalzahlen wie 0.1 haben keine exakte Binärdarstellung. Python speichert die nächstgelegene, daher entstehen winzige Fehler. Das passiert in jeder Sprache und ist kein Python-Fehler. Die Regel für Quants: Floats nie mit == vergleichen. Verwenden Sie math.isclose, das eine kleine Toleranz erlaubt.

# 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

Auf den Tick runden

round(x, n) rundet auf n Nachkommastellen. Börsen akzeptieren nur Preise auf einem Tick (zum Beispiel alle 0,05): Teilen Sie durch den Tick, runden Sie auf eine ganze Zahl von Ticks und multiplizieren Sie zurück. Beachten Sie außerdem: round rundet eine exakte Hälfte zur nächsten geraden Zahl, also ist round(2.5) gleich 2 und round(3.5) gleich 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

Geld in ganzen Cent

Weil floats nur Näherungen sind, speichern Systeme, die exakt sein müssen, Geld als ganzzahlige Cent-Beträge. Zum Umrechnen multiplizieren Sie mit 100 und runden. int() schneidet nur die Nachkommastellen ab, sodass 19.99 * 100, in Wahrheit 1998.9999999999998, einen Cent verlieren würde.

# 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
  • Zählwerte (Aktien, Lots, Tage): int.
  • Preise, Renditen und Verhältnisse: float, verglichen mit math.isclose.
  • Exaktes Geld: ganze Cent (oder das Modul decimal).

Als Nächstes: Strings und f-Strings, mit denen Sie diese Zahlen in lesbaren Text wie AAPL 184.25 x 184.50 verwandeln.

Lab: Was bewertet wird

  • Mit shares_for_cash die ganzen Aktien zählen, die ein Budget kauft25 Pkt.
  • Mit leftover_cash das übrige Bargeld finden25 Pkt.
  • Mit round_to_tick einen Preis auf den nächsten Tick runden25 Pkt.
  • Mit cents Dollar in exakte ganze Cent umrechnen25 Pkt.
Explorer · lab-2-1
▾ lab-2-1
…
bash · im Browser
learner@quantcraft:~/lab-2-1$
Python noch nicht geladenPythonLn 1, Col 1Spaces: 4UTF-8

Dieses Thema zurücksetzen?

Alles in lab-2-1 wird auf die Startdateien zurückgesetzt und das Terminal geleert. Ihre aktuelle Lösung geht verloren – das lässt sich nicht rückgängig machen.

Wird zurückgesetzt
  • main.py → Startcode
  • Terminal-Verlauf und Testausgabe
  • Nicht eingereichte Änderungen
Bleibt erhalten
  • Beste Lab-Punktzahl
  • Ihre XP und Ihre Serie
  • Vorlesungsfortschritt und Notizen

Melde dich an, um deinen Code auszuführen.

Alle Lektionen kannst du kostenlos lesen. Erstelle ein Konto oder melde dich an, um Code auszuführen, Tests zu starten und dieses Lab abzugeben.

  • IDE im Browser mit Bash-Terminal — nichts zu installieren
  • Sofortige Bewertung, XP und dein Platz auf der Skill
Konto erstellenAnmelden
ODER
Weiter mit GitHub