How to Verify an AI Trading Track Record
See the six receipts wey fit prove public AI trading record: timestamps, benchmark, trading costs and sample length. One live quarter no dey prove anything.
AI trading track record dey verifiable when stranger fit rebuild am from records wey exist before the outcomes happen. Very small part of wetin people publish online dey meet that standard. Wetin follow na checklist wey reader fit use in about two minutes, with market data behind four items: benchmark, timestamps, trading costs and sample length.
Wetin make AI trading track record verifiable?
Six properties. Each one na something wey you fit check, no be matter of personal judgment.
- Entries wey dem publish before dem know the outcome. Timestamp need dey somewhere wey author no fit rewrite am, like commit wey dem push at that time or broker statement. File wey list old trades na claim about the past, no be record of wetin happen.
- One benchmark, named from the start and never changed. “Beat the market” no mean anything until dem tie the comparison to one specific fund for one specific window.
- Costs inside the reported numbers. Commissions, regulatory fees, borrow cost on short positions, and spread wey dem pay for both entry and exit.
- Runbook wey get versions instead of dem editing am. When public repository support the record, useful link suppose point to tagged release or commit hash. Link to default branch dey show today’s strategy, and e fit no be the strategy wey traded for March.
- Every position and every account, including losers. If dem publish only one account out of five wey dey run, na selection.
- Starting capital wey big enough make the fills believable. Few hundred dollars of notional fit “hold” positions wey no real order fit fill at the printed price.
Record wey miss one of these no mean say e dishonest by default. E just no verifiable, and na the more common situation. E still no useful to reader.
Why benchmark must get name before time
Benchmark wey dem choose after results don show na the cheapest edge for finance. Six broad US index funds, same six months of 2026, price change only:
The exact SQL behind every number
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 return 21.12% and DIA return 8.42%, so 12.7 points dey between the top and bottom of 6 across the same window. To choose which one to measure against after the window close worth that whole gap, and strategy no need do anything to collect am. These na price returns before dividends. Another measurement rule wey good to state from the start dey here (how dem dey measure monthly returns) and e cover the total-return arithmetic.
Why entry timestamp na the whole claim
Entry wey appear after the move don happen na description of chart. Distance wey market fit cover inside one session wide enough say difference between “posted at 09:35” and “posted at 15:55” fit overwhelm most claimed edges. See the distance here, measured from each session first print, across first half of 2026:
The exact SQL behind every number
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_timeInside the 09:30 ET bucket, median session end 0.216% away from opening print. Inside the 15:30 bucket, median distance na 0.415%. Anything agent know at the open excludes almost all that movement. Commit history or dated public feed dey prove the order of events (AI daily market research reports) depend on the same property. Screenshot of equity curve no carry any of that proof.
Wetin suppose dey inside the numbers
Gross returns describe portfolio wey nobody fit really hold. Every entry and exit cross bid-ask spread, meaning the gap between best price to buy and best price to sell. That gap no dey same for every name:
The exact SQL behind every number
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 DESCAcross that one midday hour, median quoted spread na 10.08 basis points on MSTR, compared with 0.27 on SPY. One basis point na one hundredth of a percentage point. On $25,000 position, crossing that spread once in each direction cost $25.2 at the wide end of this list and $0.66 at the tight end, before commissions. Book wey turn over fully once every week pay that toll about fifty times for one year. Record wey omit am don quietly credit those dollars to itself (wetin e cost to trade stock explain the remaining bill).
How long before live results mean anything?
One quarter of live trading na one draw from a wide distribution, and dem fit measure the width. Every overlapping window of one given length since January 2015 for SPY, the biggest S&P 500 tracking fund, sorted into percentiles:
The exact SQL behind every number
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 sessionsAcross 2826 overlapping three-month windows, median outcome from holding and doing nothing na 3.9%. The 5th percentile na -8.8% and the 95th na 12.2%, giving band wey wide by 21.1 points. Any single quarterly result inside that band dey consistent with owning the index and going on holiday. Launch twenty agents, run dem for one quarter, publish the best one, and number wey show go come from top of band like that by construction.
Sample length arithmetic no get mercy. Twelve-month outcomes for the same series get standard deviation of 13.6 points. To separate real edge from noise, you need roughly (2 × variation ÷ edge)² years of live results. With that level of variation, hypothetical 3-point-a-year edge need many decades, while even 10-point edge need years, no be months. The windows above overlap, so 2826 count windows, no be independent samples.
$25,000 real money fit settle am?
Real money improve the evidence in one specific way. Paper trading fills at prices wey no counterparty agree to, and e never get order rejection. Funded $25,000 account dey fill against live quotes and pay real commissions, with statements wey third party fit audit. Position sizes big enough make the fills ordinary, no be imaginary.
But e no solve the sample problem. Twenty-five thousand dollars traded for four months still na one draw from the distribution above. Live account fit close after drawdown and reopen with record starting fresh. Size make the fills honest. Only time make the results informative.
Four failure modes wey you need recognize
- Backtest wey wear track record clothes. Simulated results over past data na hypotheses about the past. Look-ahead bias show how simulation fit absorb information wey strategy no fit get at that time. The clearest sign na equity curve wey start years before the code start.
- Only survivor dey stage. Ten agents launch, one publish. Multi-agent AI trading systems make this easy to do by accident, because framework wey run ten variants fit also pick the one wey dem want write about.
- The restart. Drawdown, pause, fresh account, then curve wey start from restart date. Question wey settle am be: show equity curve from the first dollar of the first account.
- Runbook wey dem rewrite. Prompts and position limits edited between trade and writeup. LLM-generated alpha factors fit produce factors by the thousand, so selection rule need publish before selection. Otherwise record turn into story about factors wey happen to work.
FAQ
AI trading track record fit get verification?
Yes, if dem publish entries before dem know outcomes, fix benchmark in advance, put costs inside the numbers and show every account. The check mechanical and e take minutes. Most published records fail on the first item.
How long live AI trading record need run?
Longer than almost any published record. Twelve-month outcomes for the index get standard deviation of 13.6 points across the windows measured here. So to separate modest edge from luck at conventional confidence, you need years at minimum, and decades for small edge.
$25,000 enough to make AI portfolio results meaningful?
E enough to make fills real: live quotes, real commissions and auditable statements. E no enough to make few months of results statistically meaningful. That one depend on elapsed time, no be account size.
Wetin be difference between backtest and track record?
Backtest apply rules to data wey already exist. Track record na series of decisions wey dem publish before outcomes happen. Na only the second one fit get falsified by wetin happen next, and na that make am evidence.
Why benchmark choice matter so much?
For first half of 2026, the six index funds above finish 12.7 points apart on price alone. Benchmark wey dem select after the window close fit supply that whole margin without any strategy involved.
Every number for this page na stored query over market data, and the SQL dey under each panel. Point the same windows to your own dates on the Strasmore terminal.