1. Por qué un cuaderno que funciona no es un sistema
Nivel 7: Del cuaderno al proceso
Tienes un cuaderno que funciona. Descarga precios, calcula la señal, dimensiona la posición y, en la última celda, manda la orden al bróker. Lo has ejecutado veinte veces y las veinte ha hecho lo correcto. La conclusión natural es que ya tienes un sistema y que solo falta dejarlo corriendo. Es justo al revés: lo que tienes es un experimento que ha salido bien veinte veces mientras alguien lo vigilaba.
El estado real no está en el código, está en el intérprete
Un cuaderno tiene dos cosas distintas: el texto de las celdas, que es lo que ves y lo que compartes, y la memoria del intérprete, que es lo que de verdad manda. Esa memoria contiene variables creadas por celdas que ya has borrado, una serie que recortaste a mano hace una hora y una constante que cambiaste solo para probar y no volviste a dejar como estaba.
# Celda 3, ejecutada a las 09:12
capital = 100000
# Celda 3, editada a las 09:41 para una prueba rapida y nunca vuelta a ejecutar
capital = 1000
# Celda 9, ejecutada a las 09:55: usa lo que hay en memoria, no lo que esta escrito
tamano = calcular_tamano(capital, precio, volatilidad)Nadie que abra ese fichero puede saber con qué capital se calculó el tamaño. El código dice mil; la orden salió con cien mil. No hay ningún error visible por ninguna parte: hay dos verdades a la vez, y la que llegó al mercado no es la que está escrita.
El orden de ejecución no queda registrado
En un cuaderno ejecutas las celdas en el orden que te conviene: bajas, subes, repites la del medio, saltas la de la descarga porque tarda. Ese orden es información esencial y no se guarda en ningún sitio. El fichero solo conserva un número de ejecución junto a cada celda, y ese número se reinicia en cuanto reinicias el núcleo.
La consecuencia es dura de aceptar: un cuaderno no describe un cálculo, describe una sesión. Dos personas con el mismo fichero pueden obtener dos resultados distintos sin que ninguna de las dos haya hecho nada mal. Y tú mismo, la semana que viene, eres una de esas dos personas.
Depende de que haya alguien delante
Un cuaderno da por supuesto un operador humano que mira. Ese operador hace, sin darse cuenta, cinco trabajos que un sistema tiene que hacer solo:
- Decide cuándo empieza. Abre el portátil y lo lanza. Si ese día está en un tren, no se lanza.
- Interpreta los errores. Ve una traza en rojo, entiende que el proveedor de datos ha devuelto un hueco y decide seguir o parar.
- Reintenta. Vuelve a ejecutar la celda que falló, a ojo, sin criterio escrito.
- Comprueba el resultado. Mira el número, le parece razonable y sigue.
- Recuerda. Sabe si ayer se ejecutó, aunque ese conocimiento solo exista dentro de su cabeza.
Quita al operador y no queda nada de eso. No hay registro de lo que se ejecutó ayer, no hay forma de saber si se ejecutó dos veces, no hay recuperación tras un fallo y no hay nadie que note que hoy no se ha ejecutado en absoluto. El silencio de un cuaderno y su éxito se parecen demasiado.
El fallo caro: la misma orden dos veces
Este es el riesgo concreto, y conviene mirarlo de frente:
# Ultima celda del cuaderno
respuesta = broker.enviar_orden(simbolo='SPY', lado='compra', cantidad=120)
print(respuesta)La petición se queda colgada cuarenta segundos. Interrumpes el núcleo, no ves confirmación, vuelves a ejecutar la celda. Para el bróker han llegado dos peticiones legítimas e indistinguibles, y ahora tienes doscientas cuarenta acciones donde querías ciento veinte. El cálculo era correcto; la señal era una sola. Lo que faltaba era una marca que dijera esta intención concreta ya se intentó, y un cuaderno no tiene dónde ponerla, porque no tiene memoria entre sesiones. Cómo se construye esa marca es el Nivel 8 entero; aquí basta con entender por qué el cuaderno no puede tenerla.
Lo que sí sirve de un cuaderno
Nada de esto significa tirarlo. El cuaderno es un laboratorio excelente: mirar datos, probar una idea en diez minutos, dibujar una curva. Lo que no es, es una fábrica. La regla práctica es sencilla: el cuaderno puede leer y calcular todo lo que quiera, pero no debe escribir en ningún sitio del que dependa nadie más, y mucho menos enviar órdenes. En cuanto una celda produce un efecto sobre el mundo exterior, esa celda ha dejado de pertenecer al laboratorio.
La forma sana de convivir con él es la contraria a la habitual: en lugar de convertir el cuaderno en el programa, el cuaderno importa el programa. Las funciones viven en ficheros normales, versionados y probados, y el cuaderno se limita a llamarlas y a dibujar el resultado. Así lo que exploras y lo que se ejecuta mañana en el servidor son literalmente el mismo código.
Caso real: un modelo de riesgo que vivía en hojas de cálculo
En 2012 JPMorgan perdió más de seis mil millones de dólares en el episodio conocido como la Ballena de Londres. El informe interno del propio banco, publicado en enero de 2013, describe cómo el nuevo modelo de riesgo de esa cartera se operaba a mano: los datos se copiaban y pegaban de un libro a otro, y una de las fórmulas dividía entre la suma de dos cifras en vez de entre su media, lo que reducía a la mitad la volatilidad calculada.
La hoja de cálculo no causó la pérdida por sí sola, y sería falso contarlo así: hubo posiciones enormes y decisiones muy discutibles detrás. Pero explica algo importante, y es por qué durante meses nadie vio el tamaño real de lo que había. Un artefacto manual, sin control de versiones, sin pruebas y operado por una persona que copia y pega, puede sostener una cifra equivocada durante mucho tiempo sin que el error deje ni una huella. Un cuaderno con una celda que manda órdenes es exactamente el mismo tipo de artefacto.