¿Se puede verificar un historial de trading con IA?
Conoce los seis comprobantes que permiten auditar un historial público de trading con IA y por qué un trimestre en vivo no demuestra resultados sostenibles.
Un historial de trading con IA es verificable cuando un tercero puede reconstruirlo a partir de registros que existían antes de que se conocieran los resultados. Muy poco de lo publicado en internet supera ese criterio. Esta es la lista de comprobación que un lector puede aplicar en unos dos minutos, con datos de mercado detrás de cuatro puntos: el benchmark, las marcas de tiempo, los costos de trading y la duración de la muestra.
¿Qué hace verificable un historial de trading con IA?
Seis propiedades. Cada una se puede comprobar y no depende de una valoración subjetiva.
- Entradas publicadas antes de conocer el resultado. La marca de tiempo debe estar en un lugar que el autor no pueda reescribir, como un commit enviado en ese momento o un estado de cuenta del bróker. Un archivo que enumera trades pasados es una afirmación sobre el pasado, no un registro de este.
- Un solo benchmark, definido al inicio y sin cambios. “Superar al mercado” no significa nada hasta comparar con un fondo específico durante un periodo específico.
- Costos incluidos en las cifras reportadas. Comisiones, cargos regulatorios, costo del préstamo en posiciones cortas y el spread pagado tanto al entrar como al salir.
- Un runbook versionado, no editado. Cuando un repositorio público respalda el historial, el enlace útil apunta a una versión etiquetada o a un hash de commit. Un enlace a la rama predeterminada muestra la estrategia de hoy, que puede no ser la estrategia que operó en marzo.
- Cada posición y cada cuenta, incluidas las perdedoras. Publicar una cuenta de cinco que están operando es una selección.
- Capital inicial suficiente para que las ejecuciones sean plausibles. Un nocional de unos cientos de dólares puede “mantener” posiciones que ninguna orden real habría ejecutado al precio publicado.
Que un historial carezca de uno de estos elementos no significa por defecto que sea deshonesto. Significa que no es verificable, algo más común e igual de inútil para el lector.
Por qué el benchmark debe definirse por adelantado
Elegir un benchmark después de conocer los resultados es la ventaja más barata de las finanzas. Seis fondos indexados amplios de EE. UU., los mismos seis meses de 2026 y solo variación de precio:
El SQL exacto detrás de cada cifra
WITH rets AS (
SELECT ticker,
round(100 * (toFloat64(argMax(close, window_start))
/ toFloat64(argMin(close, window_start)) - 1), 2) AS return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'IWM', 'DIA', 'RSP', 'MDY')
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-02')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker
)
SELECT ticker,
return_pct,
round(return_pct - min(return_pct) OVER (), 2) AS points_above_worst
FROM rets
ORDER BY return_pct DESCIWM registró 21.12% y DIA registró 8.42%, con 12.7 puntos entre el máximo y el mínimo de 6 durante una ventana idéntica. Elegir contra cuál compararse después del cierre de la ventana equivale a quedarse con toda esa diferencia, sin que ninguna estrategia tenga que hacer nada para obtenerla. Son retornos de precio antes de dividendos. También conviene declarar por adelantado esta segunda regla de medición (cómo se miden los retornos mensuales explica la aritmética del retorno total).
Por qué la marca de tiempo de la entrada es toda la afirmación
Una entrada que aparece después del movimiento es una descripción de un gráfico. La distancia que recorre un mercado durante una sesión es suficientemente amplia para que la diferencia entre “publicado a las 09:35” y “publicado a las 15:55” supere la mayoría de las ventajas declaradas. Esta es esa distancia, medida desde el primer print de cada sesión, durante la primera mitad de 2026:
El SQL exacto detrás de cada cifra
WITH minute_px AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
toTimeZone(window_start, 'America/New_York') AS et,
toFloat64(close) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-02')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
),
opens AS (
SELECT session_date, argMin(px, et) AS open_px
FROM minute_px
GROUP BY session_date
),
buckets AS (
SELECT session_date,
toStartOfInterval(et, INTERVAL 30 MINUTE) AS bucket,
argMax(px, et) AS bucket_px
FROM minute_px
GROUP BY session_date, bucket
)
SELECT formatDateTime(b.bucket, '%H:%i') AS et_time,
count() AS session_count,
round(quantileDeterministic(0.5)(abs(100 * (b.bucket_px / o.open_px - 1)),
cityHash64(b.session_date)), 3) AS median_abs_move_pct
FROM buckets AS b
INNER JOIN opens AS o ON b.session_date = o.session_date
GROUP BY et_time
ORDER BY et_timeEn el intervalo de 09:30 ET, la distancia mediana de la sesión al cierre fue de 0.216% respecto del primer print. En el intervalo de 15:30, la distancia mediana fue de 0.415%. Cualquier información que un agente conociera en la apertura excluye casi todo ese recorrido. Un historial de commits o un feed público fechado demuestra el orden de los acontecimientos (los informes diarios de investigación de mercado con IA dependen de la misma propiedad). Una captura de una curva de capital no demuestra nada de eso.
Qué debe estar incluido en las cifras
Los retornos brutos describen una cartera que nadie pudo haber mantenido. Cada entrada y salida cruza el bid-ask spread, es decir, la diferencia entre el mejor precio de compra y el mejor precio de venta. Además, esa diferencia no es igual para todos los nombres:
El SQL exacto detrás de cada cifra
SELECT ticker,
round(quantileDeterministic(0.5)(20000 * (toFloat64(ask_price) - toFloat64(bid_price))
/ (toFloat64(ask_price) + toFloat64(bid_price)),
cityHash64(sip_timestamp)), 2) AS median_spread_bps,
round(25000 * quantileDeterministic(0.5)(2 * (toFloat64(ask_price) - toFloat64(bid_price))
/ (toFloat64(ask_price) + toFloat64(bid_price)),
cityHash64(sip_timestamp)), 2) AS round_trip_cost_per_25k_usd
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'MSTR')
AND sip_timestamp >= toDateTime('2026-07-15 15:00:00')
AND sip_timestamp < toDateTime('2026-07-15 16:00:00')
AND bid_price > 1
AND ask_price > bid_price
GROUP BY ticker
ORDER BY median_spread_bps DESCDurante esa hora de mediodía, el spread cotizado mediano fue de 10.08 puntos básicos en MSTR, frente a 0.27 en SPY. Un punto básico es una centésima de un punto porcentual. En una posición de $25,000, cruzar ese spread una vez en cada dirección cuesta $25.2 en el extremo más amplio de esta lista y $0.66 en el más estrecho, antes de las comisiones. Una cartera que rota por completo una vez a la semana paga ese costo unas cincuenta veces al año. Un historial que lo omite se ha acreditado silenciosamente esos dólares (cuánto cuesta operar una acción desglosa el resto de la factura).
¿Cuánto tiempo debe pasar antes de que los resultados en vivo signifiquen algo?
Un trimestre de trading en vivo es una observación de una distribución amplia, y su amplitud se puede medir. Estas son todas las ventanas superpuestas de una duración determinada desde enero de 2015 para SPY, el mayor fondo que sigue al S&P 500, ordenadas por percentiles:
El SQL exacto detrás de cada cifra
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
toFloat64(argMax(close, window_start)) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2015-01-02')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY session_date
),
series AS (
SELECT groupArray(close_px) AS px
FROM (SELECT close_px FROM daily ORDER BY session_date)
),
horizons AS (
SELECT arrayJoin([21, 63, 126, 252]) AS sessions, px
FROM series
),
windows AS (
SELECT sessions,
arrayJoin(arrayMap(i -> (i, 100 * (px[i + sessions] / px[i] - 1)),
range(1, length(px) - sessions + 1))) AS w
FROM horizons
),
measured AS (
SELECT sessions,
w.1 AS window_index,
w.2 AS window_return_pct
FROM windows
)
SELECT multiIf(sessions = 21, '1 month',
sessions = 63, '3 months',
sessions = 126, '6 months',
'12 months') AS holding_period,
count() AS window_count,
round(quantileDeterministic(0.05)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS p05_return_pct,
round(quantileDeterministic(0.50)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS median_return_pct,
round(quantileDeterministic(0.95)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS p95_return_pct,
round(quantileDeterministic(0.95)(window_return_pct,
cityHash64(window_index * 1000 + sessions))
- quantileDeterministic(0.05)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS spread_pct,
round(stddevSamp(window_return_pct), 1) AS stdev_pct
FROM measured
GROUP BY sessions
ORDER BY sessionsEn 2826 ventanas superpuestas de tres meses, el resultado mediano de mantener la posición sin hacer nada fue de 3.9%. El percentil 5 fue de -8.8% y el percentil 95, de 12.2%, con una banda de 21.1 puntos de amplitud. Cualquier resultado trimestral dentro de esa banda es compatible con haber mantenido el índice y haberse ido de vacaciones. Lance veinte agentes, ejecútelos durante un trimestre y publique el mejor: por construcción, la cifra mostrada provendrá de la parte superior de una banda como esa.
La aritmética de la duración de la muestra es implacable. Los resultados a doce meses de la misma serie tienen una desviación estándar de 13.6 puntos. Distinguir una ventaja real del ruido requiere aproximadamente (2 × variación ÷ ventaja)² años de resultados en vivo. Con ese nivel de variación, una ventaja hipotética de 3 puntos al año necesita muchas décadas. Incluso una ventaja de 10 puntos requiere años, no meses. Las ventanas anteriores se superponen. Por tanto, 2826 cuenta ventanas, no muestras independientes.
¿$25,000 de dinero real resuelven la cuestión?
El dinero real mejora la evidencia de una forma específica. El paper trading ejecuta órdenes a precios que ninguna contraparte aceptó y nunca tiene una orden rechazada. Una cuenta financiada con $25,000 ejecuta contra cotizaciones en vivo y paga comisiones reales. Además, deja estados de cuenta que un tercero puede auditar y utiliza tamaños de posición suficientemente grandes para que las ejecuciones sean normales, no imaginarias.
Pero no resuelve el problema de la muestra. Operar $25,000 durante cuatro meses sigue siendo una observación de la distribución anterior. Además, una cuenta en vivo puede cerrarse después de un drawdown y reabrirse con un historial que empieza de cero. El tamaño hace que las ejecuciones sean reales. Solo el tiempo hace que los resultados sean informativos.
Cuatro fallas que conviene reconocer
- Un backtest con la apariencia de un historial de trading. Los resultados simulados sobre datos pasados son hipótesis sobre el pasado. El sesgo de anticipación muestra cómo una simulación incorpora información que la estrategia no podía haber tenido en ese momento. La señal más evidente es una curva de capital que comienza años antes que el código.
- Solo aparece el superviviente. Se lanzan diez agentes y se publica uno. Los sistemas de trading con IA multiagente facilitan este error, porque el framework que ejecuta diez variantes también elige cuál merece ser presentado.
- El reinicio. Ocurre un drawdown, se pausa la cuenta, se abre una cuenta nueva y la curva comienza en la fecha del reinicio. La pregunta decisiva es: muestre la curva de capital desde el primer dólar de la primera cuenta.
- El runbook reescrito. Los prompts y los límites de posición se editan entre el trade y el artículo. Los factores alpha generados por LLM pueden producirse por miles. Por eso, la regla de selección debe publicarse antes de seleccionar. De lo contrario, el historial se convierte en una historia sobre los factores que casualmente funcionaron.
Preguntas frecuentes
¿Se puede verificar un historial de trading con IA?
Sí, cuando las entradas se publicaron antes de conocer sus resultados, el benchmark se fijó por adelantado, los costos están incluidos en las cifras y se muestran todas las cuentas. La comprobación es mecánica y toma unos minutos. La mayoría de los historiales publicados falla en el primer punto.
¿Cuánto tiempo debe durar un historial de trading con IA en vivo?
Más que casi cualquier historial publicado. Los resultados a doce meses del índice tuvieron una desviación estándar de 13.6 puntos en las ventanas analizadas. Por tanto, separar una ventaja modesta de la suerte con un nivel de confianza convencional requiere como mínimo varios años y, para una ventaja pequeña, décadas.
¿$25,000 son suficientes para que los resultados de una cartera con IA sean significativos?
Son suficientes para que las ejecuciones sean reales: cotizaciones en vivo, comisiones reales y estados de cuenta auditables. No son suficientes para que unos pocos meses de resultados sean estadísticamente significativos. Eso depende del tiempo transcurrido, no del tamaño de la cuenta.
¿Cuál es la diferencia entre un backtest y un historial de trading?
Un backtest aplica reglas a datos que ya existen. Un historial de trading es una serie de decisiones publicadas antes de conocer sus resultados. Solo el segundo puede ser refutado por lo que ocurra después, y eso es lo que lo convierte en evidencia.
¿Por qué importa tanto la elección del benchmark?
Durante la primera mitad de 2026, los seis fondos indexados anteriores terminaron separados por 12.7 puntos solo en términos de precio. Un benchmark elegido después del cierre de la ventana puede aportar todo ese margen sin que intervenga ninguna estrategia.
Cada número de esta página proviene de una consulta almacenada sobre datos de mercado. El SQL aparece debajo de cada panel. Aplique las mismas ventanas a sus propias fechas en la terminal de Strasmore.