σμ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.20·~35 Min.Einsteiger

Module und Importe

Position in der SkillModul 1 von 11 · Thema 20 von 33
1.20 Module und Importe
—Lab-Punkte— / 100XP gesamt—Serie—

Code mit import wiederverwenden

Ein Modul ist eine Python-Datei, deren Namen (Funktionen, Konstanten, Klassen) anderer Code nutzen kann. import math lädt das Modul math aus der Standardbibliothek und macht es unter diesem Namen verfügbar: Dann schreiben Sie math.sqrt(2). Python wird mit Hunderten von Modulen ausgeliefert, und alles, was Sie später installieren (etwa numpy), wird genauso importiert. Setzen Sie Importe an den Anfang der Datei, damit man sofort sieht, wovon sie abhängt.

import math
import statistics

# Use a name from a module with module.name
print(math.sqrt(252))                     # 15.874507866387544
print(round(math.sqrt(252), 2))           # 15.87

returns = [0.01, -0.02, 0.015, 0.0]
print(round(statistics.stdev(returns), 4))  # 0.0155

from ... import und Aliase

from datetime import date bringt nur einen Namen herein, sodass Sie date(2025, 1, 2) ohne Präfix schreiben. import numpy as np gibt einem Modul einen kürzeren Alias, eine Konvention, die Sie überall sehen. Vermeiden Sie from module import *: Es kippt unbekannte Namen in Ihre Datei und kann Ihre eigenen stillschweigend ersetzen. Bevorzugen Sie klare Namen und nutzen Sie das Präfix, wenn es die Herkunft offensichtlich macht.

from datetime import date
from math import sqrt as square_root
import statistics as stats

# Only the names you asked for are imported
start = date(2025, 1, 2)
end = date(2025, 3, 3)
print((end - start).days)                  # 60
print(square_root(16))                     # 4.0
print(stats.mean([1.0, 2.0, 3.0]))         # 2.0

Ihre eigenen Module

Jede .py-Datei ist ein Modul. Liegt fees.py neben main.py und definiert commission, kann main.py import fees schreiben und fees.commission(...) aufrufen. Wird eine Datei direkt ausgeführt, setzt Python ihr __name__ auf "__main__"; wird sie importiert, ist __name__ der Modulname. Der Wächter if __name__ == "__main__": lässt Code daher nur laufen, wenn die Datei ausgeführt wird, nicht beim Import, und hält Demos und Tests aus dem Weg.

# fees.py
RATE = 0.001

def commission(notional):
    return notional * RATE

if __name__ == "__main__":
    print(commission(10000))   # runs only with: python fees.py

# main.py (next to fees.py)
import fees

print(fees.commission(50000))  # 50.0
print(__name__)                # __main__

Wo Python sucht, und eine klassische Falle

Bei import name sucht Python zuerst im Ordner des laufenden Skripts, dann in der Standardbibliothek und den installierten Paketen (die Liste ist sys.path). Der erste Treffer gewinnt. Deshalb verdeckt eine eigene Datei namens random.py oder statistics.py das echte Modul, und import random lädt dann Ihre Datei und scheitert auf verwirrende Weise. Benennen Sie Ihre Dateien nie wie Module der Standardbibliothek. Vermeiden Sie auch zwei Module, die sich oben gegenseitig importieren (zirkulärer Import); verschieben Sie das Gemeinsame in ein drittes Modul.

import sys
import random

# Imported modules are remembered in sys.modules; sys.path is the search list
print("random" in sys.modules)               # True
print(random.__name__)                       # random
print(len(sys.path) > 0)                     # True

# A quick tour of useful standard-library modules
import collections, datetime, itertools, pathlib
print(collections.Counter("AAPL")["A"])      # 2
print(datetime.date(2025, 1, 2).weekday())   # 3  (Thursday; Monday is 0)
Schauen Sie zuerst in die StandardbibliothekBevor Sie Datumsrechnung, Statistik oder CSV- und JSON-Verarbeitung selbst schreiben, prüfen Sie, ob ein Standardmodul das schon kann (datetime, statistics, csv, json, collections, itertools, pathlib). Getesteter Bibliothekscode ist fast immer sicherer als eine schnelle Eigenbau-Version, und das Lab wertet das manuelle Zerlegen von Datumsangaben als Technikfehler.
  • import module, dann module.name; from module import name für einen Namen; import module as short für einen Alias.
  • Importe stehen oben; vermeiden Sie import *.
  • Benennen Sie Dateien nicht wie Standardmodule; nutzen Sie if __name__ == "__main__": für Code, der nur direkt laufen soll.

Als Nächstes: Pakete und Projektstruktur, wie Sie mehrere Module in Ordnern organisieren, die sauber importierbar sind.

Lab: Was bewertet wird

  • Mit daily_vol die Volatilität messen25 Pkt.
  • Mit annualize_vol die Volatilität auf ein Jahr hochrechnen25 Pkt.
  • Mit days_between die Tage zwischen zwei Daten zählen25 Pkt.
  • Mit is_business_day Werktage von Wochenenden unterscheiden25 Pkt.
Explorer · lab-20-1
▾ lab-20-1
…
bash · im Browser
learner@quantcraft:~/lab-20-1$
Python noch nicht geladenPythonLn 1, Col 1Spaces: 4UTF-8

Dieses Thema zurücksetzen?

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