Como verificar um histórico de trading com IA
Veja os seis comprovantes que tornam um histórico público de trading com IA verificável e entenda por que um trimestre ao vivo não prova nada.
Um histórico de negociação com IA é verificável quando um desconhecido consegue reconstruí-lo a partir de registros que já existiam antes de os resultados acontecerem. Muito pouco do que é publicado online passa nesse teste. A seguir está um checklist que o leitor pode aplicar em cerca de dois minutos, com dados de mercado sustentando quatro itens: o benchmark, os timestamps, os custos de negociação e a extensão da amostra.
O que torna verificável um histórico de negociação com IA?
Seis propriedades. Cada uma pode ser verificada, sem depender de julgamento subjetivo.
- Entradas publicadas antes de o resultado ser conhecido. O timestamp precisa estar em um local que o autor não consiga reescrever, como um commit enviado naquele momento ou um extrato da corretora. Um arquivo com operações passadas é uma alegação sobre o passado, não um registro dele.
- Um único benchmark, definido no início e nunca alterado. “Superar o mercado” não significa nada até que a comparação esteja vinculada a um fundo específico em uma janela específica.
- Custos incluídos nos números reportados. Comissões, taxas regulatórias, custo de aluguel em posições vendidas e o spread pago tanto na entrada quanto na saída.
- Um runbook versionado, não editado. Quando um repositório público sustenta o histórico, o link relevante aponta para uma versão marcada ou um hash de commit. Um link para a branch padrão mostra a estratégia de hoje, que pode não ser a estratégia que negociou em março.
- Todas as posições e todas as contas, incluindo as perdedoras. Publicar uma conta entre cinco que estão operando é uma seleção.
- Capital inicial suficiente para que as execuções sejam plausíveis. Algumas centenas de dólares em valor nocional podem “manter” posições que nenhuma ordem real executaria ao preço publicado.
A ausência de um desses itens não torna o histórico desonesto por padrão. Torna-o não verificável, algo mais comum e igualmente inútil para o leitor.
Por que o benchmark precisa ser definido antecipadamente
Escolher o benchmark depois de conhecidos os resultados é a vantagem mais barata do mercado financeiro. Seis fundos de índice amplos dos EUA, nos mesmos seis meses de 2026, considerando apenas a variação de preço:
O SQL exato por trás de cada número
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 registrou retorno de 21.12% e DIA registrou retorno de 8.42%, deixando uma diferença de 12.7 pontos entre o topo e a base do 6 em uma janela idêntica. Escolher contra qual deles medir o desempenho depois do fim da janela vale toda essa diferença, sem que a estratégia precise fazer nada para capturá-la. São retornos de preço antes dos dividendos, outra regra de medição que vale declarar de antemão (como são medidos os retornos mensais detalha o cálculo do retorno total).
Por que o timestamp da entrada sustenta toda a alegação
Uma entrada que aparece depois do movimento é uma descrição de um gráfico. A distância percorrida pelo mercado em uma única sessão é grande o suficiente para que a diferença entre “publicado às 09:35” e “publicado às 15:55” supere a maior parte das vantagens alegadas. Esta é essa distância, medida desde o primeiro print de cada sessão, na primeira metade de 2026:
O SQL exato por trás de cada número
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_timeNo intervalo de 09:30 ET, a sessão mediana terminou 0.216% distante do seu primeiro print. No intervalo de 15:30, a distância mediana foi de 0.415%. Qualquer informação que um agente tivesse na abertura exclui quase todo esse deslocamento. Um histórico de commits ou um feed público datado comprova a ordem dos eventos (relatórios diários de pesquisa de mercado com IA dependem da mesma propriedade). Uma captura de tela de uma curva de patrimônio não comprova nada disso.
O que precisa estar incluído nos números
Retornos brutos descrevem uma carteira que ninguém poderia ter mantido. Toda entrada e saída cruza o bid-ask spread, a diferença entre o melhor preço de compra e o melhor preço de venda, e essa diferença não é igual para todos os ativos:
O SQL exato por trás de cada número
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 DESCAo longo daquela hora do meio do pregão, o spread cotado mediano foi de 10.08 pontos-base em MSTR, contra 0.27 em SPY. Um ponto-base corresponde a um centésimo de ponto percentual. Em uma posição de US$ 25.000, cruzar esse spread uma vez em cada direção custa US$ 25.2 no extremo mais amplo desta lista e US$ 0.66 no extremo mais estreito, antes das comissões. Uma carteira que gira integralmente uma vez por semana paga esse custo cerca de cinquenta vezes por ano, e um histórico que o omite atribui silenciosamente esses dólares a si próprio (quanto custa negociar uma ação detalha o restante da conta).
Quanto tempo é necessário antes que os resultados ao vivo signifiquem algo?
Um trimestre de negociação ao vivo é uma observação de uma distribuição ampla, e sua amplitude pode ser medida. Todas as janelas sobrepostas de determinada duração desde janeiro de 2015 para o SPY, o maior fundo que acompanha o S&P 500, ordenadas em percentis:
O SQL exato por trás de cada número
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 sessionsNas 2826 janelas trimestrais sobrepostas, o resultado mediano de comprar e não fazer nada foi de 3.9%, com o percentil 5 em -8.8% e o percentil 95 em 12.2%, uma faixa de 21.1 pontos de amplitude. Qualquer resultado trimestral isolado dentro dessa faixa é compatível com deter o índice e sair de férias. Lance vinte agentes, opere-os por um trimestre e publique o melhor. Por construção, o número exibido virá do topo de uma faixa como essa.
A aritmética da extensão da amostra é implacável. Os resultados de doze meses na mesma série têm desvio-padrão de 13.6 pontos. Distinguir uma vantagem real do ruído exige aproximadamente (2 × variação ÷ vantagem)² anos de resultados ao vivo. Nesse nível de variação, uma vantagem hipotética de três pontos por ano exige muitas décadas, e mesmo uma vantagem de dez pontos exige anos, não meses. As janelas acima se sobrepõem, portanto 2826 conta janelas, não amostras independentes.
US$ 25.000 em dinheiro real resolvem a questão?
Dinheiro real melhora a evidência de uma maneira específica. Paper trading executa operações a preços com os quais nenhuma contraparte concordou e nunca tem uma ordem rejeitada. Uma conta financiada com US$ 25.000 executa contra cotações ao vivo e paga comissões reais, em extratos que um terceiro pode auditar. Além disso, os tamanhos das posições são suficientes para que as execuções sejam normais, e não imaginárias.
Isso não resolve o problema da amostra. Vinte e cinco mil dólares negociados durante quatro meses continuam sendo uma observação da distribuição acima, e uma conta ao vivo pode ser encerrada depois de um drawdown e reaberta com o histórico começando novamente. O tamanho torna as execuções reais. Apenas o tempo torna os resultados informativos.
Quatro modos de falha a reconhecer
- Um backtest usando as roupas de um histórico de negociação. Resultados simulados sobre dados passados são hipóteses sobre o passado. Viés de antecipação mostra como uma simulação incorpora informações que a estratégia não poderia ter naquele momento. O sinal mais evidente é uma curva de patrimônio que começa anos antes de o código existir.
- Apenas o sobrevivente no palco. Dez agentes foram lançados, um foi publicado. Sistemas de negociação com IA multiagente facilitam isso por acidente, pois a estrutura que executa dez variantes também escolhe aquela que vale a pena apresentar.
- O reinício. Um drawdown, uma pausa, uma conta nova e uma curva que começa na data do reinício. A pergunta decisiva é: mostre a curva de patrimônio desde o primeiro dólar da primeira conta.
- O runbook reescrito. Prompts e limites de posição editados entre a operação e o texto publicado. Fatores de alpha gerados por LLM podem ser produzidos aos milhares. Por isso, a regra de seleção precisa ser publicada antes da seleção; caso contrário, o histórico vira uma narrativa sobre quais fatores, por acaso, funcionaram.
Perguntas frequentes
É possível verificar um histórico de negociação com IA?
Sim, quando as entradas foram publicadas antes de seus resultados serem conhecidos, o benchmark foi definido antecipadamente, os custos estão incluídos nos números e todas as contas são mostradas. A verificação é mecânica e leva minutos. A maioria dos históricos publicados falha no primeiro item.
Por quanto tempo um histórico de negociação com IA ao vivo precisa operar?
Por mais tempo do que quase qualquer histórico publicado. Os resultados de doze meses do índice tiveram desvio-padrão de 13.6 pontos nas janelas medidas aqui. Portanto, separar uma vantagem modesta da sorte, com um nível de confiança convencional, exige no mínimo anos e, para uma vantagem pequena, décadas.
US$ 25.000 são suficientes para tornar relevantes os resultados de uma carteira com IA?
São suficientes para tornar reais as execuções: cotações ao vivo, comissões reais e extratos auditáveis. Não são suficientes para tornar estatisticamente relevantes os resultados de alguns meses. Essa é uma questão de tempo transcorrido, não do tamanho da conta.
Qual é a diferença entre um backtest e um histórico de negociação?
Um backtest aplica regras a dados que já existem. Um histórico de negociação é uma série de decisões publicada antes de seus resultados. Apenas o segundo pode ser refutado pelo que acontece depois, e é isso que o transforma em evidência.
Por que a escolha do benchmark importa tanto?
Na primeira metade de 2026, os seis fundos de índice acima terminaram separados por 12.7 pontos considerando apenas o preço. Um benchmark selecionado depois do fim da janela pode fornecer toda essa margem sem qualquer participação da estratégia.
Todos os números desta página são consultas armazenadas sobre dados de mercado, e o SQL está disponível abaixo de cada painel. Aplique as mesmas janelas às suas próprias datas no terminal Strasmore.