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

Cadenas y f-strings

Posición en la rutaMódulo 1 de 11 · Tema 3 de 33
1.3 Cadenas y f-strings
—Puntuación del lab— / 100XP total—Racha—

El texto es una cadena

Una cadena (str) es texto. Escríbela entre comillas simples o dobles: significan lo mismo, así que elige un estilo y mantenlo. Una barra invertida inicia una secuencia de escape, como \n para un salto de línea. len() cuenta los caracteres. Las cadenas son inmutables: nunca se cambia una en su sitio, se construye una nueva.

symbol = "AAPL"
note = 'bid and ask'
print(symbol, len(symbol))  # AAPL 4
print(note)                 # bid and ask

Indexación y segmentación

Cada carácter tiene una posición, contando desde 0. text[0] es el primer carácter y text[-1] el último. Un segmento text[start:stop] toma los caracteres desde start hasta stop, sin incluirlo. Deja un lado vacío para llegar hasta ese extremo.

# Indexing starts at 0; a slice stops before its end index
ticker = "AAPL.US"
print(ticker[0], ticker[-1])   # A S
print(ticker[:4], ticker[5:])  # AAPL US

Métodos para limpiar y dividir texto

Los métodos son funciones asociadas a un valor y se llaman con un punto. Devuelven una cadena nueva y dejan intacta la original. strip() quita los espacios y saltos de línea alrededor del texto, upper() y lower() cambian las mayúsculas, replace(old, new) sustituye texto y split(",") corta una línea en cada coma y devuelve una lista de trozos. Los flujos de datos están llenos de líneas así.

# Clean up a raw line from a data feed
raw = "  aapl,184.25,200 \n"
parts = raw.strip().split(",")
print(parts)             # ['aapl', '184.25', '200']
print(parts[0].upper())  # AAPL
print(float(parts[1]))   # 184.25
# join is the opposite of split; in tests for a piece of text
print("-".join(["AAPL", "MSFT"]))  # AAPL-MSFT
print("AAPL" in "AAPL,MSFT")       # True

Las f-strings insertan valores en el texto

Pon una f antes de la comilla de apertura y escribe cualquier expresión entre { y }: Python la evalúa e inserta el resultado como texto. Esto sustituye pegar trozos con + y convertir los números a mano. Cualquier expresión válida funciona dentro de las llaves, incluso una operación.

# f-strings put values straight into text
symbol, bid, ask = "AAPL", 184.25, 184.5
print(f"{symbol} {bid} x {ask}")       # AAPL 184.25 x 184.5
print(f"{symbol} spread {ask - bid}")  # AAPL spread 0.25

Especificaciones de formato

Tras los dos puntos dentro de las llaves, una especificación de formato controla el aspecto del valor. .2f muestra dos decimales, , añade separadores de miles, + muestra siempre el signo, >8 alinea a la derecha en un ancho de 8 y .1% muestra una fracción como porcentaje. Se combinan: +,.2f es un importe con signo, separadores y dos decimales.

# After the colon, a format spec controls the look
price, pnl, quantity = 184.5, 1234.5, 200
print(f"{price:.2f}")       # 184.50
print(f"{pnl:+,.2f}")       # +1,234.50
print(f"{quantity:>8d}|")   # "     200|"
print(f"{0.0123:.1%}")      # 1.2%
Formatea solo para mostrarUn valor formateado es texto, ya no un número. Sigue calculando con los números (ver enteros y flotantes) y formatea solo en el momento de mostrar o guardar texto.

A continuación: booleanos y comparaciones, los valores True y False con los que se construye cada decisión de una regla de trading.

Lab: qué se califica

  • Escribir una cotización como texto con quote_line25 pts
  • Mostrar la ganancia o pérdida con signo usando signed_pnl25 pts
  • Limpiar un símbolo bursátil con normalize_symbol25 pts
  • Leer una línea de ejecución de un feed con parse_fill25 pts
Explorador · lab-3-1
▾ lab-3-1
…
bash · en el navegador
learner@quantcraft:~/lab-3-1$
Python aún no cargadoPythonLn 1, Col 1Spaces: 4UTF-8

¿Restablecer este tema?

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