σμ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.6·~30 Min.Einsteiger

for-Schleifen und range

Position in der SkillModul 1 von 11 · Thema 6 von 33
1.6 for-Schleifen und range
—Lab-Punkte— / 100XP gesamt—Serie—

Einen Block für jedes Element wiederholen

Eine for-Schleife führt ihren eingerückten Block einmal für jedes Element einer Sammlung aus und gibt dem Element für diesen Durchlauf einen Namen. Die Sammlung ist hier eine Liste, geschrieben mit eckigen Klammern und Kommas (Listen bekommen später ein eigenes Thema). Die Syntax gleicht der von if: ein Doppelpunkt am Ende der ersten Zeile und ein eingerückter Block darunter.

prices = [184.25, 184.5, 184.0]
for price in prices:
    print(price)  # 184.25, then 184.5, then 184.0

range: zählen ohne Liste

range(n) erzeugt die ganzen Zahlen von 0 bis n - 1: Der Endwert ist nicht enthalten, deshalb hat range(5) fünf Zahlen. range(start, stop) beginnt, wo Sie wollen, und range(start, stop, step) springt in Schritten von step, der zum Rückwärtszählen negativ sein darf. Nutzen Sie es, wenn etwas mehrfach wiederholt werden soll oder Positionen durchlaufen werden.

# range counts, and stops before the stop value
print(list(range(5)))          # [0, 1, 2, 3, 4]
print(list(range(2, 10, 3)))   # [2, 5, 8]
print(list(range(3, 0, -1)))   # [3, 2, 1]

Das Akkumulator-Muster

Die meisten Schleifen folgen einem Muster: eine Variable vor der Schleife anlegen, sie in der Schleife aktualisieren und danach verwenden. total += price * quantity ist die Kurzform von total = total + price * quantity. Hier ist jedes Listenelement ein Paar, und die Schleifenzeile benennt beide Hälften auf einmal (die nächsten Themen erklären dieses Entpacken ausführlich).

# Accumulate a total over the trades
trades = [(184.25, 200), (185.0, 100), (183.5, 50)]
total = 0.0
for price, quantity in trades:
    total += price * quantity
print(total)  # 64525.0

Positionen durchlaufen

Manchmal muss jedes Element mit dem vorherigen verglichen werden. Durchlaufen Sie die Positionen mit range(1, len(prices)): Sie beginnt bei 1, also ist prices[i - 1] immer gültig. len() liefert die Anzahl der Elemente, und prices[i] holt das Element an Position i, gezählt ab 0.

# Compare each price with the one before it
prices = [184.0, 184.5, 184.25, 185.0]
ups = 0
for i in range(1, len(prices)):
    if prices[i] > prices[i - 1]:
        ups += 1
print(ups)  # 2

Eine Liste beim Durchlaufen aufbauen

Um pro Durchlauf ein Ergebnis zu sammeln, beginnen Sie mit einer leeren Liste [] und rufen in der Schleife .append(value) auf. Preisleitern, laufende Summen und Tagessignale entstehen alle so. Die Liste wird nach dem Ende der Schleife zurückgegeben (oder verwendet).

# Build a list of prices, one per tick level
start, tick = 184.0, 0.25
ladder = []
for level in range(4):
    ladder.append(start + level * tick)
print(ladder)  # [184.0, 184.25, 184.5, 184.75]
Die Schleifenvariable bleibt bestehenNach der Schleife behält die Schleifenvariable ihren letzten Wert, und auch eine in der Schleife gesetzte Variable existiert danach. Ist die Sammlung leer, läuft der Block nie, eine nur dort angelegte Variable würde also nicht existieren: Legen Sie sie vor der Schleife an.

Als Nächstes: while-Schleifen, break und continue, um zu wiederholen, bis sich eine Bedingung ändert, statt für eine feste Zahl von Elementen.

Lab: Was bewertet wird

  • Mit total_notional den Wert vieler Trades addieren25 Pkt.
  • Mit price_ladder Preisstufen auslegen25 Pkt.
  • Mit count_up_days die Tage mit steigendem Preis zählen25 Pkt.
  • Mit running_total eine laufende Summe führen25 Pkt.
Explorer · lab-6-1
▾ lab-6-1
…
bash · im Browser
learner@quantcraft:~/lab-6-1$
Python noch nicht geladenPythonLn 1, Col 1Spaces: 4UTF-8

Dieses Thema zurücksetzen?

Alles in lab-6-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