介绍如何利用 Astra 的超大上下文窗口每周生成数千条策略假设,并通过成本排序门控与合成行情带验证发现能力与幸存者偏差的区别。
AI translation, not an official translation. Refer to the original for technical details.
Adapted from @gemchange_ltd# 如何像量化交易台一样使用 GPT-6 Astra 进行研究。每一道门控,每一个公式,可运行的代码 Astra 于 9 月 3 日上线,拥有 1,050,000 个 token 的上下文窗口,公布的定价为每百万输入 token 10 美元,每百万输出 token 50 美元。 一个策略想法的成本大约是三分之一美分。把它对准一条行情带,让它整夜提出策略,醒来就能看到一份排好序的列表。 每周一万条假设。没有任何在世的分析师能做到这一点。 取一个纯噪声市场——一个具有可信形态的随机过程。 1. 在上面跑 200 个随机策略,你得到的最佳结果夏普比率为 0.80。 1. 跑 1,000 个,最佳结果是 0.94。 1. 跑 100,000 个,最佳结果是 1.27,权益曲线平滑,回撤在可接受范围内。 从零均值分布中抽取 N 次所得的最大值并不是零,它随 N 的增大而增大。因此,单靠吞吐量本身就会产生一个不断升高的阈值,你真正的优势必须超过这个阈值才算数。 科技、AI 与金融资讯,快速获取。@entropymarkets(https://x.com/entropymarkets) 一个始终在线的研究引擎,其有价值之处在于追踪你查询次数的计账机制。 结构与二月那篇相同。每次一层,每层附带一个公式和可运行的代码。不同之处在于,现在由机器来生成假设,因此昂贵的技能已经从"产生想法"转移到了"拒绝想法"。 --- 在开始之前,先说一下数据的问题。 行情带是合成的,其中恰好植入了一个真实的优势信号。在真实数据上,你永远无法判断一个存活下来的策略究竟是真实能力还是幸存者偏差,因此真实数据无法告诉你你的发现引擎是否真的有效。 而一条你已知答案的行情带可以做到这一点。这个引擎必须同时通过两项考验:找到植入的优势信号,同时拒绝它额外生成的 1,400 个看似合理的东西。下面所有的数字和图表都来自那次运行。 ## 1. 循环的整体结构 十四个夜晚。1,400 条规格被提出,43 条晋升,折叠掉近似重复项后剩下 5 个不同的想法。每道门控按成本顺序运行,最便宜的优先,因此昂贵的测试只会接触到已经通过免费测试的候选项。 试验计数是在工厂整个生命周期内累计的,而不是按每晚计算,因此你曾经针对这份数据运行过的每一条假设,都会提高下一条的准入阈值。 支出按批次计量,真正值得关注的数字是每个存活的不同想法的成本,而不是每条假设的成本。 ## 2. 允许模型交给你什么 最直接的做法是让 Astra 来写 Python 代码。不要这样做。这会给你留下一个无边界的审计面,而没有人会在凌晨三点去审计第 4,812 条假设。 让它输出一份规格说明(spec)。这是一套小型的、带类型约束的策略形态词汇表,加上数值参数,由你的引擎执行——而你已经提前验证过该引擎一次。 现在问题不再是"这段代码正确吗",而是"这条规格在语法范围内吗",一个验证器用二十行就能回答这个问题。 永远不要修复格式错误的规格说明。如果你去修复它,你测试的就不是模型提出的、也不是你选择的东西,而这一点会在几个月后最关键的时候才暴露出来。 > key 与 from_key 这对字段值得单独说一下,因为搞错它们让我损失了一个下午。早期版本将 entry_z 打印为两位小数,而 Spec 存储的是三位。key 是你用来记录日志、做聚类和重新定价的依据,因此每次重建时都会悄悄地还原出一个与当初晋升的策略略有不同的版本。 什么都没有崩溃。什么都没有抛出异常。只是我审计日志中的夏普比率突然与日志里记录的策略名称对不上了,我盯着它看了一个小时才发现问题所在。 Astra 通过 response_format 中的 JSON schema 支持结构化输出,这消除了绝大多数解析失败的情况。 不管如何,还是要保留验证器。顺便说一句,函数调用需要走 Responses 端点,Chat Completions 会拒绝任何携带工具的请求。 proposer 的温度设置在接近 1.0 的位置运行。这是方差本身就是产出的唯一阶段。下游的所有环节都会自动淘汰坏的方差,所以你真正昂贵的失败模式,是一个不断把同样那三个想法换件衣服递给你的 proposer。 如果你确实想要代码生成,就把生成目标指向语法本身,而不是绕开它。让模型提出一个新的族,手动审查一次,将其加入引擎,从此它就和其他参数一样,不再特殊。 ## 3. 一个引擎,审计一次 每一份规格说明都经过同一套代码处理。三条规则,而每一条都是一种流行的"偶然制造出阿尔法"的方式。 滞后只存在于一个地方。信号根据截至 T 时刻的信息计算,持仓从 t+1 开始持有。我发现过的每一个前瞻偏差 bug,都出现在将位移逻辑写在两个地方、结果重复计算了一次的代码中。 成本从第一次回测起就按换手率收取。毛夏普不是净夏普的缩小版,它是一个不同的数字,有着不同的排名,策略从毛口径换成净口径后,排序不会保持不变。 所有数据都用同一种方式年化,因为后续的多重检验运算要比较 1,400 个夏普比率,如果其中一半是在不同的惯例下计算的,这种比较毫无意义。 把成本拖累写成公式,第一道筛选条件就自然浮现了。设 c 为每单位名义换手的往返成本,t 为平均日换手率,σd 为日收益率标准差。 将其设为零,解出 c∗,得到的就是策略停止盈利时的成本水平。 把这个数打印在每个候选策略旁边。一个在 4bps 假设成本下勉强盈亏平衡、而你假设的实际成本是 2bps 的策略,根本不是策略,它只是经纪商利润里的一个舍入误差。 在这里最终存活下来的规格说明,盈亏平衡点在 53 到 59bps 之间,这才是真金白银投入之前你想要看到的那种安全边际。 ## 4. 夏普比率到底有多噪 在设定任何阈值之前,你需要了解你所阈值化的那个量的抽样分布。对于在 T 个观测值上每期夏普比率为 s 的收益序列,该估计量的方差大约是 对本文第 6 节构建的该数据序列中 1,680 次随机打乱时序回测的实测离散度为 0.289。闭合形式与经验零假设吻合到小数点后三位,这是两者都在测量同一事物的一个不错的信号。 闭合形式假设收益独立,而策略收益显然不满足这一点。Lo 对滞后至 q 阶自相关的修正,将夏普比率乘以 对于下文存活的策略,前五阶自相关系数分别为 -0.033、-0.092、-0.013、+0.026 和 +0.009,由此得出 η(5)=1.093。轻微的负自相关,所以此处朴素夏普比率略显保守。 对于具有正自相关的趋势策略,η 降至 1 以下,朴素夏普比率反而会高估。基于打乱的估计方法会把所有这些情况都纳入考量,而无需你手动挑选一个 q,这是优先使用它的一个充分理由。 ## 5. 门槛 在无技能的零假设下,N次试验中最大夏普比率的期望值,其中γ为欧拉-马歇罗尼常数。 这条曲线比人们预期的更为平坦,而这正是问题所在。从200次试验增加到100,000次,门槛仅从0.80提升至1.27。 努力增加了500倍,换来的夏普比率不过提升了0.47。你无法靠穷举搜索突破这一瓶颈,而且每多一次试验,下一个发现就愈发难以令人信服。 第二个函数才是我在交流中实际使用的。朴素的200规格扫描所得到的最佳净夏普比率为0.89,而trials_to_beat给出的结果是745。告诉别人"我们的0.89,正是在这段历史数据上随机跑745次试验所能产生的结果",这句话比任何p值都更能终结争论。注意,这是一句关于你的流程的陈述,而非关于策略本身的陈述。 ## 6. 有效试验次数——因为四十次微调并不等于四十个想法 简单计数有着截然相反的失误模式。对同一个想法进行四十次参数微调,本质上是将同一个假设重复检验了四十次,若将其记为四十次试验,设定的门槛会高到没有任何策略能够达到。 应将候选策略按相关性距离进行聚类。 顶部面板用一行图示概括了本文的全部要点。门槛从第一晚的0.72攀升至第十四晚的0.85。 其间市场没有任何变化。历史数据是固定的,在第一个规格诞生之前便已存在。唯一改变的,是这座"工厂"审视数据的次数。 底部面板揭示了为何两种计数都不可或缺。原始试验次数直线攀升至1,400次,而有效试验次数仅达328次,差距从第三晚起逐渐拉开——这恰好是精细化调整开始介入的时间节点。 聚类方法的双向约束是合理的。一个工厂若反复在同一想法的邻域中刷新策略,将获得较低的有效试验计数和较低的门槛,同时其过度拟合概率(PBO)也会接近0.5——因为它已停止探索,转而开始打磨。 ## 7. 置换检验 关于任何单一策略的最后一个问题:仓位的时序安排究竟携带了信息,还是任何具有相同敞口的调仓计划都能取得同样的效果? 打乱仓位,保持收益序列不变。打乱收益序列会破坏令你的回测看起来亮眼的波动率聚集性和自相关性,从而给你一个轻而易举就能击败的零假设。分子中的+1同样不可忽略——若缺少它,你可能报告出p = 0,而任何有限的实验都无法支持这一论断。 经过筛选后,幸存策略的p值回到0.0017,这是600次置换的下限。 ## 8. 剔除重复项,再追问幸存者是否会同步崩溃 若不进行去重,工厂共筛选出241个规格。这241个规格全都是同一个均值回归想法在略微不同参数下的变体。这实际上是以241倍预期规模持有同一头寸,却在风险报告中被描述为241个独立仓位。没人会注意到——直到那个关键时刻到来。 仅对代表性策略运行高成本的筛选关卡,既在方法论上正确,速度上也会快上约十倍。 随后是组合层面的问题。我的五个不同幸存策略在日收益上的相关性为+0.305,听起来尚可接受。然而相关性不过是整体分布上的平均,而真正可能伤害你的部分,藏在分布的某一个角落里。拟合的Student t Copula给出ν=5,下尾相关系数为 ## 9. 将一个真实的与一个虚假的并排比较 绿色曲线交易的是植入了真实效应的资产。红色曲线是搜索过程在一个完全不含任何效应的资产上找到的最佳候选策略,其净夏普比率为0.85。两条曲线看起来都无懈可击,而如果你从未见过绿色那条,面对红色的你将毫无理由去质疑它。 在净值曲线的形态上,两者毫无差异。差异完全体现在测试中。红色策略在0.85的门槛处落败,即便回到朴素的200策略扫描阶段,当时的门槛仅为0.80,它也会在片刻之后死于缩水夏普比率的关卡。 ## 10. 容量——回测永远不会告诉你的事 以上所有内容都是关于优势是否存在的问题。容量则是关于这一优势在你的资金规模下是否依然存在。一个每天换手自身仓位16.5%的策略,会比人们预期更早触碰这堵墙。 市场冲击的平方根法则,其中Y是一个经验常数,通常估算在0.5到1之间。 当Δ=μtrade时,冲击会吃掉你每笔交易的全部alpha,由此可得盈亏平衡参与率。 ## 11. Astra的基准测试能预测什么,不能预测什么 查阅时请留意供应商表格中的脚注。Claude Fable 5和5.1因拒绝回答其中大多数问题,被排除在生命科学的三行之外。ScreenSpot-Pro和ExploitGym上的部分Fable分数来自Mythos,而非Fable本身。此外,运营FrontierMath的Epoch AI已披露,OpenAI资助了其开发,并对其中部分内容享有独家访问权限。 以下说明为何这一切都无法预测你的策略存活率。 Astra在上面达到饱和的每一项基准测试,在评估时都有一个可验证的答案就摆在那里。FrontierMath的题目有解。ARC游戏有胜负条件。漏洞利用要么成功要么失败。终端任务要么完成要么不完成。正是这一点使这些基准测试可供训练,也正因如此,在它们上面取得进展的速度才如此之快。 策略提案在提出时并没有可验证的答案。验证就是第8节所述的557天最短业绩跟踪期,任何程度的推理努力都无法将其缩短哪怕一天。模型无法在这里自我检验,因为检验本身就是那需要两年才能完成的部分。 真正能预测存活率的指标,是你必须在自己的工作负载上亲自度量的东西。 本次运行的结果是328个提案中5个存活,即1.5%。按提案者和模型分别追踪这一数字,当它发生变动时切换模型,而不是等排行榜更新了再换。 与之配套的数字是你的策略工厂的统计功效。给定一个真实优势大小为SRtrue,它通过门槛的概率大约为 在我此处测量的门槛和离散度下, 真实夏普比率 通过门槛的概率 0.4 6.2% 0.6 19.8% 0.8 43.8% 1.0 70.4% 1.2 89.0% 1.5 98.8% 同样是1.0的真实夏普比率,在四种不同的试验数量下, 试验数 门槛 检出概率 100 0.72 83% 1,400 0.85 70% 100,000 1.27 18% 8.6M 1.54 3% ## 12. Astra的定位 鉴于上述一切,其实际分工比市场宣传所暗示的要窄得多。 该模型在策略提案的分布生成上确实表现出色。 阅读对某个市场的描述,结合已经失败的历史,建议哪些策略族系和时间跨度值得在哪些资产上测试,这胜过随机搜索。 这也是唯一一个能提升存活率而非仅仅增加试验数量的杠杆。 它在事后的筛查中也很有用。把一个存活下来的策略连同其诊断信息交给它,询问这一策略成立的前提条件是什么,哪种微观结构效应可能产生它,哪种数据伪像可以解释它。成本低廉,且能捕捉到遗漏之处。 它不涉及统计数据。它不计算柱状图,不决定什么通过,也永远不会在评判某个策略之前看到其权益曲线。这条流水线中的任何环节都不会询问模型某个策略是否优秀。 ## 来源与方法 API相关事实已于2026年9月13日对照OpenAI模型页面进行核实。价格、速率限制和索引版本均会变动,因此在以此为基础制定预算之前,请务必重新核查。 - GPT-6 Astra模型页面、定价与速率限制。 https://developers.openai.com/api/docs/models/gpt-6-astra - 结构化输出。 https://developers.openai.com/api/docs/guides/structured-outputs - 提示词缓存。 https://developers.openai.com/api/docs/guides/prompt-caching - 批处理。 https://developers.openai.com/api/docs/guides/batch - 推理效率等级。 https://developers.openai.com/api/docs/guides/reasoning - ARC Prize对两项ARC-AGI-3测试框架结果的验证。 https://arcprize.org/blog/astra - OpenAI公告表格,已交叉核对。 https://www.vellum.ai/blog/gpt-6-astra-benchmarks-explained - 独立索引比较。 https://www.mindstudio.ai/blog/gpt-6-astra-benchmarks-analysis - Artificial Analysis Intelligence Index方法论。 https://artificialanalysis.ai/evaluations/artificial-analysis-intelligence-index - 索引v4.2中期修订版,2026年9月4日。 https://www.explainx.ai/blog/artificial-analysis-intelligence-index-v4-2-september-2026