σμ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.4·~30 minPrincipiante

Booleanos y comparaciones

Posición en la rutaMódulo 1 de 11 · Tema 4 de 33
1.4 Booleanos y comparaciones
—Puntuación del lab— / 100XP total—Racha—

Verdadero y falso

Un booleano (bool) tiene exactamente dos valores: True y False, con mayúscula. Toda regla de trading termina en uno: «¿está cruzado el mercado?», «¿podemos pagar esta orden?». Comparar dos valores produce un booleano, así que ask > bid aún no es una decisión, es un valor que puedes guardar, imprimir y combinar.

bid, ask = 184.25, 184.5
print(ask > bid)        # True
print(type(ask > bid))  # <class 'bool'>

Operadores de comparación

Python compara con == (igual), != (distinto), <, <=, > y >=. Un solo = es una asignación, no una comparación: price = 5 guarda un valor mientras que price == 5 hace una pregunta. Las comparaciones se pueden encadenar: low <= price <= high se lee como en matemáticas y comprueba ambos lados a la vez.

# Comparison operators give True or False
price = 184.4
print(price == 184.4)         # True
print(price != 184.25)        # True
print(184.25 <= price < 185)  # True (chained)

Combinar condiciones: and, or, not

a and b es True solo cuando ambos lo son. a or b es True cuando al menos uno lo es. not a invierte el valor. Juntos expresan reglas reales, como «el mercado está abierto, el valor no está suspendido y tenemos el efectivo».

# Combine conditions with and, or, not
market_open, halted, cash = True, False, 500.0
can_buy = market_open and not halted and cash >= 184.5
print(can_buy)               # True
print(halted or cash < 100)  # False

and y or hacen cortocircuito: Python se detiene en cuanto conoce la respuesta y no evalúa el resto. Es útil como guarda: pon primero la comprobación segura para que la arriesgada solo se ejecute cuando se puede.

# Short-circuit: the division never runs when quantity is 0
quantity = 0
print(quantity > 0 and 100 / quantity > 1)  # False

Veracidad

Cualquier valor puede usarse como condición. 0, 0.0, el texto vacío "" y None cuentan como falso; casi todo lo demás cuenta como verdadero. bool(value) muestra cómo lee Python un valor. Cuidado: quantity and price > 0 puede devolver 0 en lugar de False, así que escribe la comparación completa cuando necesites un bool real.

# Zero, empty text and None count as False
print(bool(0), bool(0.0), bool(""), bool(None))  # False False False False
print(bool(200), bool("AAPL"))                    # True True
Devuelve la propia condiciónUna comparación ya es True o False. Escribe return quantity > 0, no un if que devuelve True y otra rama que devuelve False: es más corto y no puede contradecirse.

Comparar floats, y None

== entre floats es arriesgado por el error de redondeo (ver enteros y flotantes): usa math.isclose para «suficientemente igual». == compara valores; la palabra is pregunta si dos nombres apuntan exactamente al mismo objeto, y solo la necesitas para una cosa: x is None, para comprobar «ningún valor».

# Floats need a tolerance; None is tested with "is"
import math

print(0.1 + 0.2 == 0.3)              # False
print(math.isclose(0.1 + 0.2, 0.3))  # True
fill_price = None
print(fill_price is None)            # True

A continuación: condicionales, donde un booleano decide qué líneas de código se ejecutan: if, elif y else.

Lab: qué se califica

  • Detectar un mercado cruzado con is_crossed25 pts
  • Comprobar que un precio está dentro de una banda con within_band25 pts
  • Combinar las condiciones de trading con can_trade25 pts
  • Validar una orden con is_valid_order25 pts
Explorador · lab-4-1
▾ lab-4-1
…
bash · en el navegador
learner@quantcraft:~/lab-4-1$
Python aún no cargadoPythonLn 1, Col 1Spaces: 4UTF-8

¿Restablecer este tema?

Todo lo que hay en lab-4-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