σμ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 AcademyRutas
Ctrl K
AO
+1,2 k estudiantes
Iniciar sesiónUnirse ↗
Rutas
AO
+1,2 k estudiantes
Iniciar sesión
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Ruta de Python›Módulo 1 · Fundamentos de Python para quants›Tema 1.5·~30 minPrincipiante

Condicionales: if, elif, else

Posición en la rutaMódulo 1 de 11 · Tema 5 de 33
1.5 Condicionales: if, elif, else
—Puntuación del lab— / 100XP total—Racha—

Elegir qué se ejecuta

Hasta ahora se ejecutaba cada línea, de arriba abajo. Una sentencia if ejecuta un bloque de código solo cuando una condición es True. Añade elif («si no, si») para más condiciones y else para todo lo demás. Python las comprueba en orden y ejecuta solo el primer bloque cuya condición sea verdadera. Cada línea de condición termina con dos puntos.

position, target = 100, 250
if target > position:
    print("buy", target - position)   # buy 150
elif target < position:
    print("sell", position - target)
else:
    print("hold")

La sangría es la estructura

Las líneas con sangría bajo el if son el bloque que le pertenece; la primera línea que vuelve al margen izquierdo queda fuera. Usa cuatro espacios por nivel, siempre igual. Python no tiene llaves: la sangría es la estructura, así que una sangría equivocada cambia lo que hace el programa.

# The indented lines are the block that belongs to the if
price = 184.5
if price > 184:
    print("above 184")           # above 184
    print("still inside the if")
print("always runs")             # back at the left margin

El orden importa: gana la primera coincidencia

Como solo se ejecuta la primera rama verdadera, una escalera de elif puede usar umbrales: cada rama solo tiene que decir lo que es nuevo. Una tarifa de comisiones es un caso clásico. Pon primero la condición más estrecha o específica; si no, una amplia por encima se traga el caso.

# elif branches are checked top to bottom; the first True wins
monthly_volume = 3_500_000
if monthly_volume < 1_000_000:
    rate = 0.0010
elif monthly_volume < 10_000_000:
    rate = 0.0007
else:
    rate = 0.0004
print(rate)  # 0.0007

Retornar pronto

Dentro de una función, return termina la función en el acto. Así puedes tratar cada caso con su propio if y return, sin else ni anidación profunda; la última línea es el valor por defecto. El código escrito así se mantiene plano y se lee como una lista de reglas.

# Early returns keep a function flat
def side(position, target):
    if target > position:
        return "buy"
    if target < position:
        return "sell"
    return "hold"

print(side(100, 250), side(250, 100), side(100, 100))  # buy sell hold

Una elección en una línea

Cuando un if solo elige entre dos valores, una expresión condicional es más corta: value_if_true if condition else value_if_false. Es una expresión, así que puede ir dentro de una f-string o un return. Úsala para elecciones simples, y un if normal en cuanto haya más que hacer.

# A one-line choice between two values
cash = 40.0
status = "ok" if cash >= 0 else "overdrawn"
print(status)  # ok
No compares un booleano con TrueSi is_open ya es un booleano, escribe if is_open: y if not is_open:. if is_open == True: dice lo mismo de forma más torpe. Lo mismo vale para if x: con números y texto: comprueba «distinto de cero» y «no vacío».
  • Dos resultados: if/else, o una expresión condicional de una línea.
  • Varios rangos ordenados: una escalera de elif, la condición más estrecha primero.
  • Casos especiales y entradas inválidas: return tempranos y el caso normal al final.

A continuación: los bucles for y range, para repetir un bloque de código por cada elemento.

Lab: qué se califica

  • Decidir comprar, vender o mantener con order_side25 pts
  • Elegir la tarifa según el volumen con fee_tier25 pts
  • Mantener un valor entre dos límites con clamp25 pts
  • Convertir dos medias en una señal con crossover_signal25 pts
Explorador · lab-5-1
▾ lab-5-1
…
bash · en el navegador
learner@quantcraft:~/lab-5-1$
Python aún no cargadoPythonLn 1, Col 1Spaces: 4UTF-8

¿Restablecer este tema?

Todo lo que hay en lab-5-1 vuelve a los archivos iniciales y se limpia el terminal. Tu solución actual se perderá: no se puede deshacer.

Se restablecerá
  • main.py → código inicial
  • Historial del terminal y salida de pruebas
  • Cambios sin enviar
Se conservará
  • Mejor puntuación del lab
  • Tu XP y tu racha
  • Progreso de la lección y notas

Inicia sesión para ejecutar tu código.

Todas las clases se pueden leer gratis. Crea una cuenta o inicia sesión para ejecutar código, lanzar las pruebas y enviar este lab.

  • IDE en el navegador con terminal bash — sin instalar nada
  • Corrección instantánea, XP y tu lugar en la ruta
Crear una cuentaIniciar sesión
O
Continuar con GitHub