IA Trader

01Portada

Capítulos

Experimento · 28-feb → 20-oct-2026 · paper trading

Dos agentes de IA operaron en bolsa durante casi ocho meses. Uno casi triplicó la cuenta; el otro acabó perdiendo.

Claude Haiku 4.5 como gestor, Alpaca Paper como bróker, Cloud Run cada 30 minutos. Mismo código, mismas reglas, dos personalidades. Dinero ficticio, consecuencias reales para la charla.

Agente Fundamental

«THE FUNDAMENTALIST»

Lee 50 titulares al día e indicadores técnicos, y habla como un fondo institucional: «elite institutional quantitative hedge fund algorithm».

Agente WSB

«THE WSB DEGEN»

Sigue lo más comentado en r/wallstreetbets y escribe como un «ape»: tendies, diamond hands, 🚀. «Analytical but degenerate».

Resultado oficial a 20-oct-2026, el día de la última decisión de la IA

Agente Fundamental

+191,4 %

$291.410 de $100.000

Pico $398.540 · 6-oct · caída máxima −27,9 % (11 → 30-mar)

Después, sin gestión hasta el 9-nov: −0,8 % ($289.210)

Agente WSB

−7,6 %

$92.387 de $100.000

Pico $132.065 · 24-sep · caída máxima −32,8 % (24-sep → 16-oct)

Después, sin gestión hasta el 9-nov: −20,2 % ($73.680)

SPY · benchmark

+12,1 %

769,09 $ por acción · 686,16 $ el 27-feb

Comprar y aguantar el índice: la referencia que había que batir

Después, sin gestión hasta el 9-nov: −4,4 % (735,40 $)

El experimento terminó el 20-oct-2026, cuando se agotó el crédito de la IA. Las carteras siguen abiertas y se mueven solas con el mercado; lo mostramos en línea punteada.

Desliza para empezar

02 · Cómo leer esto

Cuatro ideas y ya puedes seguir la charla

No hace falta saber de bolsa. Con esto basta; el resto está en el glosario.

Paper trading

Dinero ficticio. Precios y órdenes reales en una cuenta de simulación del bróker: nadie ganó ni perdió dinero de verdad.

Equity

Lo que vale la cuenta: efectivo + acciones a precio de mercado − lo que se debe al bróker.

SPY

Comprar y aguantar el índice S&P 500. Es la referencia a batir: si un bot no le gana, no aporta nada.

Apalancamiento

Operar con dinero prestado. 3x significa que la cartera vale tres veces tu dinero: multiplica las ganancias… y las pérdidas.

Abrir el glosario línea continua: la IA decidepunteada: nadie decide

03 · La carrera

Casi toda la ganancia llegó cuando nadie estaba operando

En pocas palabras: cuánto valía cada cuenta cada día. Línea continua, la IA decide; línea punteada, nadie al volante. Pulsa «Reproducir» para verla en el tiempo.

Equity diaria de las dos cuentas frente al SPY normalizado a $100.000. Entre el 9-may y el 23-sep (pausa de 137 días) no hay datos diarios: las carteras siguieron abiertas, apalancadas 2–3x, y solo conocemos el valor al principio y al final, así que los unimos con una recta punteada. Desde el 20-oct sí hay datos diarios, pero la IA ya no decide.

  • Fundamental
  • WSB
  • SPY (normalizado)
  • IA operando
  • sin decisiones
  • Pausa sin datos diarios
  • Sin gestión tras el 20-oct

Pulsa «Reproducir» o arrastra la barra: la carrera contada en ocho momentos.

Ver tabla de hitos

Cronología

  1. Primeros jobs en Cloud Run: news RAG y un trader v1 que solo operaba QQQ. Commits iniciales.

  2. Reset. Dos cuentas paper de $100.000 y arquitectura dual-agente. Primer trade del WSB: NFLX.

  3. El Reddit RAG se mueve a una Spot VM con VPN: Reddit bloquea las IPs de Google Cloud.

  4. Mínimo del Fundamental: $75.540 (−24,5 %). El SPY también toca mínimos ($632).

  5. Primer agotamiento del crédito de Anthropic. Última decisión a las 11:00 ET; los jobs siguen corriendo tres semanas sin decidir nada (el mismo patrón que se repetirá el 20-oct).

  6. Pausa de 137 días. La cuenta de facturación original de Google Cloud se cierra y Cloud Scheduler y Cloud Run quedan suspendidos: sin snapshots ni decisiones. Las carteras quedaron invertidas, apalancadas ~2–3x. El 11-jun Google deshabilita además la API de Compute Engine del proyecto.

  7. Split 4:1 de CRWD en la cuenta Fundamental: 228 → 912 acciones.

  8. Reinicio. El proyecto se vincula a una nueva cuenta de facturación, se recompila la imagen, se redespliegan jobs y schedulers y se recarga crédito en Anthropic: a las 14:55 la IA vuelve a decidir. Fundamental en $362.683; WSB en $124.605.

  9. Pico del WSB: $132.065.

  10. Pico del Fundamental: $398.540 (+298 %).

  11. El Fundamental des-apalanca masivamente en plena caída de semiconductores (KOSPI −5 %, Micron). Pasa de 3,15x a 0,26x.

  12. Fin oficial del experimento. Segundo agotamiento del crédito de la API de Anthropic. Los jobs siguen corriendo cada 30 min, pero fallan con HTTP 400 «credit balance is too low»: 0 decisiones desde entonces.

  13. Mínimo del WSB: $53.321 (−46,7 %), apalancado 2,8x sin nadie al volante.

  14. Snapshot de este informe.

04 · Qué pasó después del 20 de octubre

El mismo mercado (−4,4 %) costó un 0,8 % al Fundamental y un 20 % al WSB

En pocas palabras: sin nadie que vendiera, el que había pedido dinero prestado lo pagó caro.

Fundamental

−0,8 %

$291.410 → $289.210 (−$2.200)

Ya había vendido casi todo: solo un 0,44x invertido y mucho efectivo. La caída del mercado apenas le tocó.

WSB

−20,2 %

$92.387 → $73.680 (−$18.708)

Seguía con 2,5–2,8x de dinero prestado en chips e IA (AMD, MU, CRWV, META). Tocó fondo el 5-nov en $53.321.

SPY

−4,4 %

769,09 $ → 735,40 $

Corrección del mercado en noviembre: la vara de medir para los dos.

Barras a la misma escala (0 → −25 %). 20-oct → 9-nov, 14 sesiones de mercado.

¿Por qué tanta diferencia? Entre el 14 y el 16 de octubre el Fundamental vendió la mayor parte de sus acciones: el 20-oct solo tenía invertido un 0,44x de su valor y el resto en efectivo, así que una caída del mercado le afectaba menos de la mitad. El WSB, en cambio, seguía comprado por 2,5–2,8 veces su capital con dinero prestado, casi todo en semiconductores e IA, justo el sector que más cayó. Cada punto que bajaba el mercado le restaba unas tres veces más. Nadie estaba al volante para reducir la posición.

Lo que la IA dejó abierto el 20 de octubre

En pocas palabras: lo que cada agente tenía comprado cuando se apagó la IA, y cuánto vale ahora que nadie lo toca.

Estas son las posiciones que la IA dejó abiertas con su última decisión, el 20-oct. Desde entonces nadie compra ni vende: la columna «20-oct» es el valor al cierre de ese día y la columna «hoy», el snapshot de Alpaca del 9-nov. P&L no realizado = lo que se ganaría o perdería si se vendiera a ese precio.

Fundamental

6 posiciones · apalancamiento 0,44x el 20-oct → 0,43x hoy · cash hoy +$163.714 · P&L no realizado +$15 → −$1.880

WSB

13 posiciones · apalancamiento 2,46x el 20-oct → 2,84x hoy · cash hoy −$135.213 · P&L no realizado −$10.729 → −$28.204

05 · Duelo de agentes

Mismo código, dos caracteres

En pocas palabras: el Fundamental ganó en casi todo; al WSB se le ejecutaron más órdenes, pero apostó más concentrado y salió peor.

Ocho comparaciones hasta el 20-oct. Pulsa una tarjeta para girarla, o gira todas con el selector.

Fuentes: Alpaca Paper y Firestore. «Decisiones ejecutadas» y «símbolo favorito» salen del registro de 6.104 decisiones; «compras : ventas», de las órdenes realmente ejecutadas en Alpaca.

06 · Mes a mes

Abril lo cambió todo; octubre lo devolvió en parte

En pocas palabras: cuánto ganó o perdió cada cuenta cada mes. Las barras rayadas son meses dominados por periodos en los que la IA no decidía.

Rentabilidad mensual sobre la equity de fin de mes. Mayo cuenta solo hasta el día 9 y, además, la IA ya no decidía (crédito agotado el 20-abr); septiembre recoge casi entera la pausa de 137 días (lo que hizo el mercado con una cartera que nadie tocó); noviembre es todo «sin gestión».

  • Fundamental
  • WSB
  • sin decisiones de la IA

Apalancamiento estimado

Valor invertido / equity. Por encima de 1x la cuenta opera con margen.

2x = por cada dólar propio, la cuenta tenía dos invertidos; el segundo, prestado por el bróker.

El Fundamental deshizo el margen entre el 6 y el 14 de octubre. El WSB nunca bajó de 2x: el 20-oct estaba en 2,46x y hoy, sin gestión, sigue en 2,84x con un cash de −$135.213.

07 · Mejores y peores decisiones

Lo que dijeron antes de pulsar el botón

En pocas palabras: qué acciones dieron más dinero y cuáles más perdieron, y lo que el modelo escribió al comprarlas o venderlas.

P&L por símbolo a 20-oct (vendido − comprado + valor de lo que quedaba abierto al cierre del 20-oct) y las citas literales del campo reasoning que el modelo escribió en cada orden. Las del WSB van con sus emojis: son parte del experimento.

Agente Fundamental

«Elite institutional quantitative hedge fund algorithm». Noticias Alpaca + RSI/MACD/Bollinger + RAG de noticias.

Top 6 ganancias y pérdidas por símbolo · a 20-oct

69 símbolos distintos · 1.612 órdenes ejecutadas · $22,6 M negociados · 40,7 % de ventas con beneficio (FIFO)
BUY AMD 74 acc. @ $200
«AMD is a leading semiconductor company that is benefiting from the growth in AI…»

+$69.885 Vendida en octubre a $531–543. La tesis era correcta, pero la mayor parte del beneficio llegó durante la pausa: 137 días sin tocarla.

BUY INTC 225 acc. @ $44,9
«Intel is currently undervalued with a low RSI of 32…»

+$48.144 Compra contraria en sobreventa, vendida a ~$90 en octubre. La lectura técnica más limpia de todo el experimento.

RSI bajo (32) = la acción había caído mucho y rápido; suele rebotar. Undervalued = barata respecto a lo que vale.

SELL CRWD 1.260 acc. @ $266
«CRWD is 91.7% of portfolio (massive concentration risk)… Reduce to 15-20%».

+$140.550 La mejor posición del experimento: split 4:1 y revalorización durante la pausa. Gestión de riesgo correcta… sobre una concentración que el propio bot había creado.

Concentration risk = demasiado dinero en una sola acción: si cae, arrastra toda la cartera.

BUY LRCX @ $347–350
«RSI 91 (overbought but in confirmed uptrend)… momentum is undeniable… Highest conviction signal in dataset.»

−$26.115 Persiguió el momentum en el pico con RSI 90–91 y vendió a $300–310 diez días después. Su propia señal técnica avisaba; la ignoró con «máxima convicción».

Overbought (sobrecompra) = la acción ha subido tan rápido que suele corregir. Momentum = «lo que sube, sigue subiendo».

Agente WSB

«Analytical but degenerate WSB Ape». Top-20 de ApeWisdom + 20 noticias + RAG de Reddit (congelado desde febrero).

Top 6 ganancias y pérdidas por símbolo · a 20-oct

56 símbolos distintos · 876 órdenes ejecutadas · $7,5 M negociados · 39,9 % de ventas con beneficio (FIFO)
BUY NVGS 239 acc. @ $20,64
«🚀 Apes, I'm YOLOing into NVGS based on the DD in the long-term context! This tiny shipping stock could 🌕 if there's a disruption in the Hormuz Strait…»

+$24.889 Acumuló 11.466 acciones ($262k, el 207 % del equity) y las vendió el 23-sep a $22,87. La mejor del WSB. Buen resultado, proceso temerario: la posición solo pudo crecer tanto por el bug de apalancamiento.

YOLO = apostar fuerte a una sola idea. DD («due diligence») = el análisis que justifica la apuesta. 🌕 = que la acción se vaya «a la luna».

BUY → SELL IT 13 acc. · 1 h después
«🤔 WAIT WHAT? IT (Gartner) has 22 mentions but INSANE 5946 upvotes—this is a meme pump… classic WSB trap».

+$3.831 Detectó el pump por la relación menciones/upvotes y deshizo la posición en una hora. Aquí el «ape» leyó bien su propio foro.

Meme pump = subida inflada por el foro, no por la empresa. «Ape» = como se llaman a sí mismos los usuarios de r/wallstreetbets.

BUY MU 18 acc. @ $1.077
«🔥 MEMORY CHIP MOON MISSION 🔥 MU trending #2 on WSB (241 mentions, 986 upvotes)…»

−$12.463 Compró en el pico el mismo día del reinicio. A 20-oct era su peor posición (y el 9-nov, ya sin gestión, MU cotizaba a $731). Su ticker más obsesivo de octubre: 180 decisiones sobre MU entre el 23-sep y el 20-oct.

«Moon mission» = la apuesta de que la acción se dispare. «Trending #2 on WSB» = la segunda más comentada del foro ese día.

BUY CRWV 77 acc. @ $65,6
«🎯 YOLO INTO THE DIP 🎯 CoreWeave… RSI 22 = OVERSOLD»

−$2.333 Dos días después vendió 522 acciones a $62,3 («technicals are TERRIBLE… The stock is in freefall») y volvió a comprar el 20-oct, su último día con IA. Sin gestión, esas 486 acciones bajaron a $48,75 el 9-nov y la pérdida creció a −$8.826.

Oversold (sobreventa) = ha caído tanto y tan rápido que suele rebotar. «Buy the dip» = comprar cuando baja; aquí, comprar un cuchillo que seguía cayendo.

08 · Explorador de decisiones

Las 6.104 decisiones, una a una

En pocas palabras: busca por agente, acción, símbolo o fechas y lee lo que el modelo escribió en cada orden.

Todas las decisiones registradas en Firestore hasta el 20-oct. Cada raya de la franja es una decisión; arrastra sobre ella para elegir un rango de fechas. Horas en horario de Madrid.

Cargando las 6.104 decisiones…

  • BUY
  • SELL
  • CANCEL / REDUCE
  • inventadas
28 feb → 20 oct · arrastra para acotar
Saca al azar una cita del WSB o un razonamiento del Fundamental.

El patrón general

En pocas palabras: el modelo intentaba comprar mucho más de lo que podía pagar, y casi nunca pensó que el mercado fuera a caer.

Datos de Firestore: 4.405 decisiones del Fundamental y 1.699 del WSB. Dos de cada tres eran compras, y el motivo número uno para no ejecutarlas fue que no quedaba dinero.

2 : 1

Ratio compras/ventas en ambos agentes

Sesgo comprador estructural: el prompt les decía cada ciclo que estaban «infra-invertidos» por el bug del apalancamiento.

−20 %

Stop-loss semanal (7 días)

Se disparó en el WSB el 19-oct y del 3 al 9-nov. Pero solo aborta la ejecución: no cierra posiciones. Con 2,8x de apalancamiento, la cartera siguió cayendo sola.

09 · El humor de la IA

Optimista casi siempre, pesimista solo en marzo

En pocas palabras: en cada ejecución el modelo declaraba si veía el mercado alcista o bajista. Casi siempre lo vio alcista y nunca declaró una caída grave.

Por día y por agente: hacia arriba, ejecuciones que declararon el mercado BULLISH (alcista); hacia abajo, BEARISH (bajista). Pulsa un día para leer un análisis de ejemplo de ese día.

BULLISH · alcistaBEARISH · bajistamarzo

Desliza el gráfico en horizontal para ver todos los días →

Sin datos entre el 20-abr y el 23-sep: primero se agotó el crédito de la IA y luego llegó la pausa de 137 días.

0

Veces que declaró CRASH o activó emergency_liquidate

El único mecanismo de liquidación dependía de que el modelo lo pidiera. Nunca lo pidió.

Marzo

El único mes mayoritariamente bajista

Fundamental: 205 BEARISH frente a 163 BULLISH. WSB: 180 frente a 135.

2 de 3

Ejecuciones optimistas

Fundamental: 613 BULLISH, 288 BEARISH, 7 MIXED. WSB: 610 BULLISH, 239 BEARISH.

10 · Cómo funciona

Un contenedor, treinta minutos, una decisión en JSON

En pocas palabras: cada media hora, un programa en la nube junta noticias y precios, le pregunta a Claude qué hacer y ejecuta su respuesta.

Cloud Scheduler lanza un Cloud Run Job por agente cada 30 minutos en horario de mercado (9:00–16:30 ET, 16 ejecuciones al día). El job descarga su memoria RAG, recoge señales, calcula indicadores, pregunta a Claude y ejecuta las órdenes en Alpaca Paper. Todo queda en Firestore.

Diagrama de arquitectura: Cloud Scheduler lanza los jobs de Cloud Run (trader Fundamental, trader WSB, news RAG, Reddit RAG), que leen de Alpaca, Reddit/ApeWisdom y Anthropic, guardan en Firestore y GCS, y alimentan el dashboard público en Firebase Hosting
Arquitectura. Abrir a tamaño completo
Diagrama de flujo del ciclo de 30 minutos: descargar índice RAG, comprobar stop-loss semanal, recoger señales, snapshot de cuenta, datos de mercado e indicadores, consulta RAG, prompt a Claude Haiku 4.5, comprobación de emergency_liquidate, ejecución de cada decisión y registro en Firestore
El ciclo de 30 minutos. Abrir a tamaño completo

Dos personalidades, un mismo trader.py

The Fundamentalist

«elite institutional quantitative hedge fund algorithm»
Señal
50 titulares de Alpaca (24 h) + RSI, MACD, Bollinger, ATR, SMA50/200 + RAG de noticias
Tono
Sin jerga. Argumenta con indicadores y titulares.
Prompt
≈ 8.100 caracteres

The WSB Degen

«analytical but degenerate WSB Ape»
Señal
Top-20 de ApeWisdom (menciones y upvotes) + 20 noticias + RAG de posts de Reddit
Tono
Debe razonar con evidencia pero escribir con jerga: tendies, diamond hands, 🚀.
Prompt
≈ 6.000 caracteres

Modelo

claude-haiku-4-5-20251001 · temperature 0.1 · max_tokens 4096 · salida JSON con acción (BUY / SELL / HOLD / CANCEL / REDUCE), sentimiento de mercado y watchlist. Tamaño de cada orden: equity × % objetivo / precio, comprobando solo el buying power.

Stack

  • Python 3.9
  • alpaca-trade-api
  • anthropic SDK
  • LangChain
  • ChromaDB
  • sentence-transformers · all-MiniLM-L6-v2 (CPU)
  • pandas / numpy
  • google-cloud-firestore
  • google-cloud-storage
  • Docker · linux/amd64
  • Cloud Run Jobs
  • Cloud Scheduler
  • Artifact Registry
  • GCS
  • Compute Engine Spot + WireGuard
  • Firestore Native
  • Firebase Hosting
  • Astro 5
  • React 19
  • Tailwind 4
  • Recharts
  • GitHub Actions

11 · Lecciones aprendidas

Diez hallazgos para la charla

En pocas palabras: los resultados los explican más los fallos de ingeniería y el calendario que la inteligencia del modelo.

Lo que de verdad explica los números no está en el prompt: está en una línea de Python, en un calendario y en la factura de la API.

  1. 01

    Un bug de una línea apalancó las dos cuentas 3x

    # en una cuenta margin de Alpaca, buying_power ≈ 4 × equity
    invested_pct = (equity − buying_power) / equity
    # → "Invested: −244 % (Target 80 %)"  … en cada ciclo

    En una cuenta margin de Alpaca el buying power es unas cuatro veces la equity, así que el prompt le decía al modelo «Invested: −244 % (Target 80 %)» en cada ciclo. El modelo, obediente, compraba sin parar hasta agotar el margen. Además, el tamaño de cada orden se calcula con equity × % y solo se comprueba el margen disponible, nunca el cash.

  2. 02

    Buy & hold involuntario

    $229.482 $362.683 durante la pausa de 137 días

    La mayor parte de la ganancia del Fundamental se generó con los schedulers apagados: la cartera de marzo (AMD, INTC, CRWD, NVDA) más el split de CRWD. Operar activamente en octubre costó ≈ $107.000 desde el pico, des-apalancando en plena caída de semiconductores.

  3. 03

    El stop-loss semanal no protege

    Solo aborta el job; no cierra posiciones ni cancela órdenes. El único mecanismo de liquidación (emergency_liquidate) depende de que el modelo responda, y nunca lo activó.

  4. 04

    Dependencia del proveedor

    El crédito prepagado de Anthropic (12 €) se agotó dos veces, el 20-abr y el 20-oct. Las dos veces el sistema siguió «vivo» (snapshots, logs) pero ciego, y nadie se enteró hasta semanas después: no había ninguna alerta.

  5. 05

    El Reddit RAG lleva roto desde marzo

    ia-reddit-rag-job falla en 124 de 126 ejecuciones (la API de Compute Engine está deshabilitada y el contenedor trigger no arranca). El índice es del 28-feb: el WSB operó ocho meses con memoria congelada. Su señal real era ApeWisdom + noticias.

  6. 06

    El modelo inventa acciones

    WATCH, MONITOR, REBALANCE_NOTE… fuera del esquema JSON; el ejecutor las ignora (SKIPPED/ERROR). Hay que validar la salida con un schema estricto.

  7. 07

    Alucinación de tickers

    «ANTHROPIC», «TSMC_PRICE_INCREASE_CATALYST», «FOUNDRY_CAPACITY_PLAYS», «GARTNER», «NAVIGATOR» acabaron guardados en Firestore: la watchlist se escribe sin validar contra Alpaca.

  8. 08

    No entiende su presupuesto

    Sesgo comprador 2:1 e «Insufficient Funds» como primer motivo de omisión: 1.484 veces en el Fundamental y 695 en el WSB.

  9. 09

    Dos proyectos GCP por un modo de Firestore

    ia-tradebot tenía Firestore en modo Datastore, incompatible con el SDK web. Hubo que crear ia-trader-5383 para Firestore Native + Hosting.

  10. 10

    El prompt del WSB funciona (demasiado bien)

    El modelo mantiene la persona (jerga + emojis) y a la vez argumenta con RSI/MACD/volumen. El coste: a veces el «meme reasoning» se cuela en el bot serio, y hay un script (clean_misplaced_trades.py) solo para moverlos.

12 · Coste del experimento

Nueve meses por el precio de una cena

En pocas palabras: unos 30–35 dólares en total: 12 € de IA y unos 20 $ de Google Cloud.

La partida de Anthropic es el crédito realmente cargado; la de Google Cloud es una estimación a partir del uso (el proyecto no tiene export de facturación, y la cifra exacta vive en la consola). Ritmo en un mes completo de mercado: ≈ $2 de Google Cloud y 3–5 € de Claude (≈ 680 decisiones en marzo, 470 en abril, 415 en octubre).

≈ $30–35por 9 meses: 12 € de Claude + ≈ $20 de Google Cloud

ConceptoUsoCoste estimado
Cloud Run Jobs3.477 ejecuciones · ~195 s · 1 vCPU / 512 MiB · ≈ 0,5–0,7 M vCPU-s≈ $0–3 free tier 180k vCPU-s/mes
Cloud Scheduler4 jobs (3 gratis)≈ $1
Artifact Registry19,2 GB de imágenes, muchas sin tag≈ $17 $0,10/GB/mes · la mayor partida GCP
Firestore · Firebase Hosting · Cloud Storage · LoggingDentro del free tier≈ $0
Compute Engine Spot VM (Reddit RAG)2 ejecuciones reales< $0,10
Subtotal Google Cloud≈ $2 al mes, casi todo Artifact Registry≈ $20
Anthropic API · Claude Haiku 4.5 $1/M in · $5/M out1.757 llamadas con respuesta (908 + 849) · ~2,5k tokens in · ~1,5k out12 € crédito prepagado (≈ $14–18 a precio de lista) · agotado el 20-abr y el 20-oct
Alpaca Paper · ProtonVPN Free · dominio ya existente$0
Total≈ $30–35

Se recargará crédito más adelante para una segunda fase.

13 · Glosario

Las palabras del informe, en una frase

Para quien no viene del mundo de la bolsa.

Glosario