σμ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.1·~45 minPrincipiante

Sintaxis de Python y tu primer programa

Posición en la rutaMódulo 1 de 11 · Tema 1 de 33
1.1 Sintaxis de Python y tu primer programa
—Puntuación del lab— / 100XP total—Racha—

Cómo se ejecuta un programa de Python

Un programa de Python es un archivo de texto formado por sentencias. Python lo lee de arriba abajo y ejecuta una sentencia cada vez, sin código de relleno: el archivo main.py es el programa. Pulsa Run o escribe python main.py en el terminal.

bid = 184.25
ask = 184.50
print(ask - bid)  # 0.25

Sentencias y expresiones

Una expresión produce un valor, como ask - bid o 2 * 3. Una sentencia hace algo, como bid = 184.25 o print(bid). Cada sentencia va en su propia línea y el final de la línea termina la sentencia: sin punto y coma. Cuando una sentencia es demasiado larga, enciérrala entre paréntesis y continúa en las líneas siguientes.

total_cost = (
    price * quantity
    + commission
    + exchange_fee
)

Comentarios y docstrings

Todo lo que va desde # hasta el final de la línea es un comentario: Python lo ignora. Usa los comentarios para explicar por qué el código hace algo, no para repetir lo que hace. Una cadena entre comillas triples al principio de un archivo o una función es una docstring, la descripción oficial que muestran las herramientas y help().

# Mid price: the fair value halfway between bid and ask.
mid = (bid + ask) / 2  # average of the two quotes

La sangría forma parte de la sintaxis

Donde otros lenguajes usan llaves, Python usa la sangría. Una línea que termina en dos puntos abre un bloque, y el bloque son las líneas con sangría que hay debajo. Sangra con cuatro espacios y nunca mezcles tabuladores y espacios. El código pegado al margen izquierdo es código de nivel superior.

def spread(bid, ask):
    # both lines below are the block: indented by four spaces
    width = ask - bid
    return width

print(spread(184.25, 184.50))  # back at the left margin: 0.25
OjoUn espacio que falta o sobra provoca una IndentationError, y unos dos puntos olvidados provocan una SyntaxError. Python se detiene antes de ejecutar nada, así que lee primero el número de línea del mensaje. Configura tu editor para que inserte espacios al pulsar Tab.

Variables y asignación

nombre = valor asocia un nombre a un valor. El signo = significa asignar, no igual: Python calcula primero el lado derecho y luego asocia el nombre al resultado. Los nombres distinguen mayúsculas de minúsculas, pueden contener letras, dígitos y guiones bajos, no pueden empezar por un dígito ni ser una palabra clave como if o for. El estilo de Python es snake_case, como last_price.

price = 184.25
quantity = 200
notional = price * quantity
price = 185.00      # rebinds price; notional is unchanged
quantity += 50      # shorthand for quantity = quantity + 50
print(notional)     # 36850.0

Aritmética y precedencia de operadores

  • +, - y * suman, restan y multiplican.
  • / es la división real y siempre da un resultado decimal: 7 / 2 es 3.5.
  • // divide y redondea hacia abajo; % da el resto: 7 // 2 es 3, 7 % 2 es 1.
  • ** eleva a una potencia: 1.05 ** 10 capitaliza un 5 % diez veces.

Python sigue el orden de las matemáticas: primero **, luego * y /, y después + y -. Así, 2 + 3 * 4 es 14, mientras que (2 + 3) * 4 es 20. Ante la duda, añade paréntesis: no cuestan nada y dejan clara la intención. Los guiones bajos dentro de los números, como 10_000, se ignoran y hacen legibles las cifras grandes.

spread = ask - bid                   # 0.25
mid = (bid + ask) / 2                # 184.375
spread_bps = spread / mid * 10_000   # the spread in basis points

Mostrar resultados con print

print() escribe valores en el terminal, separados por espacios. El texto entre comillas es una cadena; los siguientes temas tratan las cadenas y los números en profundidad. Por ahora, print es tu forma de mirar dentro del programa: imprime un valor, compruébalo a mano y sigue adelante.

print("bid", bid, "ask", ask)
print("mid", mid)

En el lab escribirás pequeñas fórmulas de precios usando solo lo de esta página: asignación, aritmética y paréntesis. A continuación: cómo guarda Python los números y por qué 0.1 + 0.2 no es exactamente 0.3.

Lab: qué se califica

  • Calcular el valor de una posición con notional25 pts
  • Hallar el precio medio con midpoint25 pts
  • Medir la diferencia bid-ask con spread25 pts
  • Expresar la diferencia en puntos básicos con spread_bps25 pts
Explorador · lab-1-1
▾ lab-1-1
…
bash · en el navegador
learner@quantcraft:~/lab-1-1$
Python aún no cargadoPythonLn 1, Col 1Spaces: 4UTF-8

¿Restablecer este tema?

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