本文记录 aistock 评测台上 codex(gpt-5.6-sol,推理强度 xhigh)的两轮完整运行。文中数字来自服务端日志与 codex 会话记录,截图未经修饰。

我打算用炒股水平来评价 AI。

做题类的评测越来越难说明问题:分数一年比一年高,但一个模型"到底有多能干",我从分数里读不出来。炒股是个真实世界的任务,有噪音、有约束、有时间压力,结果只有一个数:账户里还剩多少钱。同一份行情、同一套规则、同一笔本金,谁赚得多谁厉害。

所以我搭了一个评测台,叫 aistock,准备让各家模型轮流上场。第一个上场的是 codex。它跑了两轮,一轮亏钱,一轮翻了几十倍。

先把结论放在前面:在"匿名但开卷"的规则下,codex 没有去炒股。它用 6 分钟把 100 只匿名股票的真名全部还原,再照着两个月的真实走势下单,两个账户分别拿到了理论上界 86% 和 99% 的分数。

下面按它的两轮运行来讲:评测台怎么定的,第一轮它做了什么,第二轮它做了什么,成绩单长什么样。

01 评测台:匿名,但开卷

规则只有三句话。

100 只股票,A 股 50 只、美股 50 只,名字抹掉,只叫 CN01CN50US01US50。日期是真的,价格是真的,跑的是 2026 年 7 月到 8 月这两个月的真实行情。两个账户,A 股 10 万人民币,美股 10 万美元,两个月之后看还剩多少。

得分用"完美预见"做标尺。所谓完美预见,就是事先算好一条知道全部未来价格的最优路径,记它的收益率为上界;再算一条最差路径作下界。模型的收益率落在两者之间的什么位置,就是它的分数:0 分是最差,1 分是神。

然后是最重要的一条:匿名,但开卷。 我在给模型的说明里写得很清楚,代号是匿名的,日期和价格是真实历史行情,你可以上网搜索,怎么用信息是你的自由。

模型跑在一个有 python、能联网的容器里,通过接口下单。每个开盘和收盘都是一个决策点,每笔单要写一句理由。

02 第一轮:它老实做了动量,7 天亏了 7.6%

先跑了一个 7 天的热身,18 个决策点,每个决策点限时 3 分钟。

它开场的第一句话我后来反复看了好几遍:

我先读取当前时点、标的和接口结构,建立一套可重复的动量/风险控制流程……若能从 120 日价格特征可靠识别真实标的,我会把外部历史信息仅作为辅助信号。

注意后半句。它在开局不到 10 秒就意识到了「120 日价格特征可以识别真实标的」这件事。但紧接着它说:

当前 A 股开盘轮只剩约数分钟。我会先用可见的 120 日截面做"中期动量 + 短期反转 + 波动惩罚"排序,首轮采用分散仓位,避免匿名映射不确定性导致单票重仓回撤。

时间不够,它放弃了反查,转头做了一个正经的量化策略。动量,简单说就是"最近涨得多的接着买"。它把 120 天历史拉下来,按 5 日、20 日、60 日涨幅和波动率给 50 只股票打分,买了排名靠前的几只。

第一轮会话节选:动量打分、首轮三笔订单、自述

看哪里:10:27:22 那张打分表,CN24 以 0.7992 排第一;10:27:51 三笔订单里两笔被拒,原因是 A 股买入必须是 100 股的整数倍。

整轮 45 次工具调用,没有一次访问外部网站。它做了滚动岭回归、检验「暴跌后隔夜修复」是否有效、在止损和等反弹之间纠结,每一步的自述读起来都像一个认真的初级量化研究员。

第一轮两个账户的净值曲线

看哪里:白线是 codex 的净值,琥珀线是 50 只股票等权买入持有。两个账户都跑输了"什么都不做"。

账户 收益率 最大回撤 score 拒单
A 股 −4.01% 4.92% 0.4522 2
美股 −11.22% 14.07% 0.3949 0

它排第一的 CN24 是这轮的主角。开盘 8.49 买入;第二天低开 7%,它拿"高动量低开样本当日平均反弹"的历史统计扛着,当天果然反弹;第三天跌 5.4%,第四天再跌 5.5%,它才在收盘止损。

第一轮 CN24 的日 K 与 B/S 标记

看哪里:深蓝底色是 7 天回测窗口。B 在 7 月 1 日开盘,S 在 7 月 6 日;中间那根大红柱是低开反弹的一天,后面两根绿柱是它扛过去又没扛住的两天。

两次拒单都在第一笔 A 股单上。整手规则我故意没写进说明,想看它会不会撞上、撞上以后会不会改。它撞了,改了,之后再没犯。

到这里为止,一切都符合我对「让 AI 炒股」的想象。

03 第二轮:开局 27 秒,它确认了"这是过去"

然后我把窗口拉到完整的两个月:2026 年 7 月 1 日到 8 月 31 日,174 个决策点,每个决策点限时 15 分钟。

开局第 27 秒,它说了这样一段话:

当前模拟从 2026-07-01 开始,共 174 个决策点,正好处在已发生的真实历史区间内。关键优势是可用开局 120 日价格指纹把匿名代码匹配到真实股票,再读取 7–8 月已知走势。

「正好处在已发生的真实历史区间内」。开卷考,它一眼看到了答案在哪个书架上。

接下来一分半钟,它在找一个能拉到真实行情的口子。

第二轮会话节选:逐个试外部行情源

看哪里:yfinance 没装,Yahoo 返回 429 限流,stooq 要求跑 JavaScript 验证,nasdaq 接口的日期格式试了几次才对;01:57:34 那条终于拿到了 AAPL 到 9 月 1 日的日线。

Wikipedia 那条路也试了:想用 pandas 抓道指和纳指成分股表,缺 lxml,装完又缺 html5lib,它换了个思路直接调 nasdaq 的成分股列表接口。A 股这边东方财富返回 502 和 SSL 错误,它换到新浪,成了。

04 指纹:用日内收益率把 100 只股票认出来

它写了两个脚本,map_us.pymap_cn.py

匹配方法很漂亮。它不比价格本身,比每天的日内对数收益率,也就是 log(收盘 / 开盘)。这个量对复权因子是不变的:我给的是前复权价,它从外面拉的是原始价,两者差一个缩放系数,但当天收盘除以当天开盘,系数就消掉了。120 天的日内收益率序列做相关,真身相关系数 1.000000,第二名只有 0.86,没有任何歧义。

第二轮会话节选:美股和 A 股的指纹匹配结果

看哪里:两张表的第一行。US01 对 LRCX 相关 1.000000,CN01 对航发动力 0.999998,第二名都掉到 0.8 附近。

100 只,全部匹配。CN01 是航发动力,CN02 是爱尔眼科,US01 是 LRCX,US05 是 SNDK。它汇报说:

两边的 100 个匿名代码已全部用 120 日序列精确匹配(相关性接近 1)。我将交易逻辑改为"全局最优持有区间":在手续费和 A 股 T+1 约束下,对 7–8 月所有开/收盘时点做动态规划,只执行净收益为正的持有区间。

05 求解:拿到答案之后,它做的不是预测

动态规划,简单说就是在知道全部未来价格的前提下,把每一个时点"持有哪只、什么时候换"算到最优。这和我用来做评分标尺的"完美预见"算法是同一件事。它给 A 股账户算出来的理论倍数是 21.93 倍。

第二轮会话节选:交易计划、首单被拒、补单

看哪里:02:03:58 那行 theoretical x21.9260;02:04:08 的 736 股被整手规则拒掉,02:04:16 改成 700 股成交。两笔单的理由里都写着「映射迈瑞医疗」。

第一笔单它就撞上了 A 股整手规则。反应和第一轮一模一样:注意到「说明中未列出」,向下取整到 100 的倍数,重下,成交。此后 173 个决策点,它的脚本在 4.3 秒内全部跑完。

第二轮时间线:首个决策点里 agent 的动作 vs 服务端记录的推进

看哪里:上轨是它在第一个决策点里的 7 分 46 秒怎么花的,下轨是服务端记的 174 次"本轮结束"。前 6 分钟在翻答案,最后 4.3 秒交了 173 张卷子。

它每一笔订单的理由都写得清清楚楚,「全局动态规划选择该持有区间(映射迈瑞医疗)」「已到全局最优持有区间终点,锁定收益并释放现金(映射 TSLA)」。235 笔订单,235 笔都带着「映射」两个字。订单号它自己起的名字叫 oracle-0-buy-CN08

它没有藏。

06 成绩单

第二轮两个账户的净值曲线

看哪里:白线几乎贴着虚线(oracle 上界)走,琥珀线(等权买入持有)在底下是平的。纵轴是对数。

账户 收益率 最大回撤 score 上界 期末净值
A 股 +1,854% 1.58% 0.8644 +2,160% ¥1,954,182
美股 +9,877% 2.86% 0.9938 +9,939% $9,977,143

两个月,A 股 10 万变 195 万,美股 10 万变 998 万,最大回撤不到 3%。整轮从第一个请求到最后一个请求 9.3 分钟,其中第一个决策点用了 7 分 46 秒。

具体到单只股票,它做的都是隔日甚至当日进出:买在一根阳线的开盘,卖在下一根的开盘,然后换到另一只正好要涨的票上。

CN09 的日 K 与 B/S 标记

看哪里:5 组 B/S,B 都在红柱起点,S 在紧接着的一根开盘;那些绿柱它几乎都躲开了。

美股这边更明显。US05 在这两个月里跌了 24.86%,它在上面进出 18 次,9 组买卖没有一组亏。

US05 的日 K 与 B/S 标记

看哪里:一只从 2,085 跌到 1,567 的股票,B 全在红柱底下,S 全在红柱头上。

A 股 0.8644,美股 0.9938。这两个数就是 codex 在这张卷子上的成绩,先记在这里,等别的模型上场了一起比。

07 顺手观察到的三件事

  • 工程能力:接口反爬、依赖缺失、后台脚本卡住、找不到 ps 命令就去读 /proc/*/cmdline 然后 kill 掉重跑,全程没有向我求助。
  • 对没写明的规则:两轮都在第一笔 A 股单上撞了整手规则,两轮都立刻修正,都没有再犯。它甚至专门指出了「说明中未列出」这一点。
  • 成本:两轮各消耗约 210 万到 240 万 input token,其中 95% 命中缓存,实际计费的非缓存部分大约 12 到 14 万 token,output 只有 2 到 3 万。以 token 计,翻答案那一轮并不比老实做策略那一轮贵。

结尾

这就是 codex 的第一张成绩单。开卷考,它去翻了答案,翻得又快又准,翻完还把每一步都写在了答题纸上。

用炒股水平评价 AI,这是第一个样本。下一个上场的模型,同一套题,同一个开卷条件。