2. Variables, tipos de datos y operadores
Nivel 2: Python desde Cero para Finanzas
En Python, crear una variable es tan simple como asignarle un valor con el signo =: no hace falta declarar antes de qué tipo va a ser, porque Python es un lenguaje de tipado dinámico — el tipo se deduce automáticamente del valor que le asignas.
precio = 182.52
ticker = "AAPL"
en_cartera = TrueLos nombres de variable pueden usar letras, números y guiones bajos, pero deben empezar por una letra, y por convención se escriben en minúsculas. Hay un puñado de palabras reservadas del lenguaje — class, import, return, lambda, entre otras — que no puedes usar como nombre de variable, porque Python las necesita para su propia sintaxis.
Aunque no lo declares explícitamente, cada variable tiene un tipo, y puedes consultarlo con la función type():
type(precio) # <class 'float'>
type(ticker) # <class 'str'>
type(en_cartera) # <class 'bool'>Los tipos fundamentales que vas a usar constantemente en finanzas cuantitativas son cuatro: int para números enteros (por ejemplo, el número de acciones que compras), float para números decimales (el precio, el retorno), bool para verdadero/falso (¿está la posición abierta?), y str para texto (el ticker, el nombre de la estrategia).
Un detalle importante: si reasignas una variable con un valor de otro tipo, Python no se queja — simplemente cambia el tipo de la variable sobre la marcha.
x = 10 # x es int
x = 10.5 # ahora x es float, sin ningun errorEsto es cómodo, pero también es una fuente de bugs sutiles: si tu función espera un número de acciones (int) y por error le pasas un float como 10.5, Python no te va a avisar, y comprar "media acción" puede no tener sentido según el bróker con el que trabajes.
Para convertir explícitamente entre tipos se usa el casting: int(), float(), str(), bool().
precio_texto = "182.52"
precio_numero = float(precio_texto) # 182.52, ahora si es un numero con el que puedes operar
acciones = 10.9
acciones_enteras = int(acciones) # 10 - int() trunca, no redondeaOjo con ese último detalle: int() no redondea al entero más cercano, trunca la parte decimal. int(10.9) da 10, no 11. Si necesitas redondear de verdad, la función correcta es round().
Los operadores aritméticos en Python son los que esperas — +, -, *, / — más dos que suelen sorprender a quien viene de otros lenguajes: // es la división entera (te da el cociente sin decimales) y ** es la potencia (no ^, que en Python significa otra cosa).
capital = 10000
precio_accion = 182.52
acciones_que_puedo_comprar = capital // precio_accion # division entera: cuantas acciones completas puedo pagar
retorno_compuesto = 1.08 ** 5 # ** es la potencia: 1.4693, el multiplicador del capital tras 5 anos al 8% anualLos operadores de comparación (>, <, >=, <=, ==, !=) devuelven siempre un booleano, y son la base de cualquier regla de entrada o salida en una estrategia: precio_actual > media_movil es, literalmente, el núcleo de una señal de trading.