Strasmore Research
学习 Matt Connor作者: Matt Connor

如何验证公开AI交易记录是否可信

什么样的公开AI交易记录才可验证?这份约两分钟清单列出六项核查依据,包括基准、时间戳、交易成本、版本记录和样本长度,并解释为何一个实盘季度远远不够。

如果一份 AI 交易记录可以由陌生人根据结果出现前已经存在的记录重建,那么它就是可验证的。网上公开的记录很少达到这一标准。下面是一份读者约两分钟即可完成的核查清单,其中四项有市场数据支持:基准、时间戳、交易成本和样本长度。

什么样的 AI 交易记录才可验证?

六项特征。每一项都可以直接查找,而不是依赖主观判断。

  1. 在结果揭晓前公布入场记录。 时间戳必须位于作者无法改写的位置,例如当时推送的 commit 或券商对账单。列出过往交易的文件,只是对过去的陈述,而不是过去交易的记录。
  2. 只有一个基准,开始时就明确且从不更换。 在比较对象和比较区间都没有明确之前,“跑赢市场”毫无意义。
  3. 报告数字已计入交易成本。 包括佣金、监管费、空头头寸的借券成本,以及入场和出场时支付的 spread。
  4. 运行手册经过版本管理,而不是直接编辑。 如果公开仓库支持这份记录,有效链接应指向带标签的版本或 commit hash。指向默认分支的链接展示的是今天的策略,未必是三月实际交易的策略。
  5. 每个仓位和每个账户都要披露,包括亏损者。 五个账户中只公布一个,是一种选择性呈现。
  6. 初始资金足够大,使成交价格合理。 几百美元的名义金额可能“持有”真实订单根本无法按显示价格成交的仓位。

缺少其中一项,并不代表记录默认不诚实。它只是不可验证,而这类情况更常见,对读者同样没有用。

为什么必须提前确定基准

事后选择基准,是金融市场中成本最低的优势。六只美国宽基指数基金,在2026年同一个六个月区间内,仅比较价格变动:

查询六只美国指数基金,同一时间窗口:价格回报,2026年1月2日至6月30日
每个数字背后的完整 SQL
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 DESC
Run this yourself

IWM上涨了21.12%,DIA上涨了8.42%。在相同区间内,6的最高和最低结果相差12.7个百分点。区间结束后再选择比较对象,相当于直接获得这整段差距,而且策略无需做任何事情。这些是股息发放前的价格回报;另一项应提前说明的测量规则是总回报计算方法(月度回报如何计算对此有详细说明)。

为什么入场时间戳就是整个主张的基础

如果入场记录出现在行情变动之后,它描述的只是图表。市场在一个交易日内的波动幅度足够大,“09:35发布”和“15:55发布”之间的差异,会超过大多数所谓的交易优势。下面是2026年上半年的数据,按每个交易日的首次成交价测量这一幅度:

查询2026年上半年SPY较开盘价的变动幅度,按美东时间半小时划分
每个数字背后的完整 SQL
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_time
Run this yourself

09:30 ET时段,交易日收盘价与开盘首次成交价的中位距离为0.216%。在15:30时段,中位距离为0.415%。代理在开盘时掌握的任何信息,都不包含之后几乎全部的这段行情。commit 历史或带日期的公开信息流可以证明先后顺序(AI每日市场研究报告同样取决于这一点)。股票净值曲线的截图则无法证明任何先后关系。

数字中必须包含哪些内容

毛回报描述的是没人能够实际持有的投资组合。每次入场和出场都要跨越买卖价差,即最佳买价与最佳卖价之间的差额,而且这一差额并非所有股票都相同:

查询中午时段的报价价差中位数及25,000美元往返交易成本:2026年7月15日
每个数字背后的完整 SQL
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 DESC
Run this yourself

在这一个午间小时内,MSTR的报价 spread 中位数为10.08个基点,而SPY0.27个基点。一个基点是百分之一个百分点。对于25,000美元的仓位,按价差成交一次并完成反向交易,在这份列表中,价差较大的一端成本为25.2美元,价差较小的一端成本为0.66美元,且尚未计入佣金。一个投资组合每周完整换手一次,每年大约要支付这项成本五十次。忽略这项成本,就等于悄悄把这些金额计入自己的收益(交易一只股票的成本会拆解其余费用)。

多长时间后,实盘结果才有意义?

实盘交易一个季度,只是从一个分布很宽的分布中抽取一次样本,而这个宽度可以测量。自2015年1月以来,对标普500指数最大跟踪基金 SPY 的每个重叠区间进行统计,并按百分位排序:

查询自2015年以来SPY持有期结果:第5百分位数、中位数、第95百分位数
每个数字背后的完整 SQL
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 sessions
Run this yourself

2826个重叠的三个月区间内,持有 SPY 且不进行交易的中位结果为3.9%,第5百分位为-8.8%,第95百分位为12.2%,两者相差21.1个百分点。任何落在这一范围内的单季度结果,都可能只是持有指数后去度假。启动二十个代理运行一个季度,再公布其中表现最好的一个,展示出来的数字按定义就来自这类区间的顶部。

样本长度的计算结果并不宽松。同一序列的十二个月结果,标准差为13.6个百分点。要区分真实优势和噪音,大约需要(2 × 波动 ÷ 优势)²年的实盘结果。在这一波动水平下,假设每年有3个百分点的优势,需要数十年;即使优势达到10个百分点,也需要数年,而不是数月。上面的区间彼此重叠,因此2826统计的是区间数量,而不是相互独立的样本数量。

25,000美元实盘资金能解决问题吗?

实盘资金能以一种具体方式增强证据。模拟交易按没有交易对手同意的价格成交,而且订单从不会被拒绝。25,000美元的实盘账户则按实时报价成交,支付真实佣金;对账单可供第三方审计,仓位规模也足够大,因此成交价格正常,而不是凭空假设。

但它无法解决样本问题。用25,000美元交易四个月,仍然只是从上述分布中抽取一次样本;实盘账户也可能在回撤后被关闭,再以新账户重新开始记录。资金规模能让成交变得真实。只有时间才能让结果具备信息量。

四种需要识别的失败模式

  • 穿着交易记录外衣的回测。 基于历史数据的模拟结果,只是关于过去的假设。前视偏差说明了模拟如何吸收策略当时不可能获得的信息;最明显的信号是,净值曲线早在代码运行之前数年就已经开始。
  • 台上只有幸存者。 启动十个代理,只公布一个。多代理 AI 交易系统很容易无意中造成这种结果,因为运行十个变体的框架也会挑出最值得撰写的那个。
  • 重新开始。 出现回撤、暂停交易、开立新账户,净值曲线从重启日期开始。最关键的问题是:展示第一个账户从第一美元开始的完整净值曲线。
  • 被改写的运行手册。 在交易发生与撰写报告之间修改提示词和仓位限制。大语言模型生成的 alpha 因子可以批量生成,因此必须在选择之前公布选择规则,否则记录就会变成一篇关于哪些因子碰巧有效的故事。

常见问题

AI 交易记录可以验证吗?

可以,前提是入场记录在结果揭晓前发布,基准提前确定,数字中已包含交易成本,并且所有账户都已展示。核查过程是机械性的,只需几分钟。大多数公开记录第一项就无法通过。

AI 实盘交易记录需要运行多久?

要比几乎所有公开记录都长。根据这里测量的区间,指数的十二个月结果标准差为13.6个百分点。因此,要在传统置信水平下将适度优势与运气区分开,至少需要数年;如果优势较小,则需要数十年。

25,000美元足以让 AI 投资组合的结果具备意义吗?

这足以让成交变得真实:使用实时报价,支付真实佣金,并提供可审计的对账单。但这不足以让几个月的结果具备统计意义。后者取决于经过的时间,而不是账户规模。

回测和交易记录有什么区别?

回测将规则应用于已经存在的数据。交易记录则是一系列在结果出现前公布的决策。只有后者会受到未来结果的证伪,因此才能构成证据。

为什么基准的选择如此重要?

2026年上半年,上述六只指数基金仅按价格计算就相差12.7个百分点。区间结束后再选择基准,无需策略参与,就可能直接获得这整段差距。


本页面的每个数字都来自针对市场数据运行的存储查询,每个面板下方均附有 SQL。您可以在 Strasmore 终端中,将相同区间替换为自己的日期。

#ai agents#track record#live trading#backtesting#quant