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.25Sentencias 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 quotesLa 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.25IndentationError, 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.0Aritmética y precedencia de operadores
+,-y*suman, restan y multiplican./es la división real y siempre da un resultado decimal:7 / 2es3.5.//divide y redondea hacia abajo;%da el resto:7 // 2es3,7 % 2es1.**eleva a una potencia:1.05 ** 10capitaliza 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 pointsMostrar 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