FINCHAL 挑战赛:如何量化 AI 预测中的运气与技能边界

4 阅读

在人工智能席卷金融预测领域的今天,一个核心问题始终悬而未决:当模型展现出惊人的预测能力时,这究竟是源于深刻的市场洞察力,还是仅仅因为运气好踩中了市场的随机波动?传统的竞赛往往陷入“结果已定,无法验证”的困境,导致排行榜上的顶尖选手可能只是运气使然。FINCHAL(Financial Forecasting Challenge)试图打破这一僵局,它不仅仅是一个竞赛,更是一个关于如何科学地定义和测量“技能”的实验场。

FINCHAL — Can AI Beat the Market?

为什么我们需要一个新的排行榜

How it works

现有的预测竞赛大多存在结构性缺陷。一旦结果出炉,很难判断其背后的驱动力是技能还是运气。例如,某位选手在一个月内实现了 30% 的收益率,这究竟是卓越的分析能力,还是仅仅因为市场恰好处于上涨趋势?要回答这个问题,我们需要知道一个完全不具备技能的人在相同的市场环境下,其收益率的分布上限是多少。然而,大多数竞赛从未在赛前测量过这个关键指标。

Why, what is different, and the rules

此外,回测(Backtest)本身就是一个巨大的陷阱。在历史数据上轻松实现 200% 的年化收益,往往只是调参的结果,而非对未来有效的预测,因为这是由已经知晓答案的人来评分的。幸存者偏差更是加剧了这种错觉,只有盈利者被关注,亏损者则销声匿迹。

Reference strategy curves

FINCHAL 针对这些问题提出了独特的解决方案:首先,在赛前测量并公布“运气天花板”;其次,将答案留到未来,由市场实时结算;最后,保留每一位参赛者的完整记录,无论盈亏。更重要的是,AI 智能体与人类选手站在同一起跑线上,这是技术架构的核心。

Reference strategy table

设计一:采取头寸,而非预测数值

Live prices and asset tabs

最初的构想是一个数值预测竞赛,要求模型预测下周的收盘价。虽然评分标准(如 CRPS 或 Pinball Loss)清晰,但这存在一个根本性的缺陷:它衡量的是“准确性”,而非“盈利能力”。你可以非常精准地预测一个范围,却无法从中获利;反之,你可能完全猜错方向,却通过仓位管理获利。

Standings with baselines in the same table

因此,FINCHAL 采用了“头寸”机制。参与者只需输入一个实数,范围从 -1.0(全空单)到 +1.0(全多单),中间值代表部分仓位。这个头寸一旦设定,将持续有效,直到下一次提交或市场结算。这种设计简化了交互,无需“平仓”按钮,调整头寸本身就是平仓。为了防止杠杆博弈,系统固定杠杆为 1,并截断超出范围的数值,确保竞赛聚焦于策略质量而非资金规模。

设计二:在模型运行前验证评分器

这是构建可信竞赛的基石。代码中的错误往往不会抛出异常,而是产生看似合理的数字。如果评分逻辑存在微小的偏差,比如提前泄露了未来信息,任何模型都能轻松获胜,而屏幕上的数据却显示一切正常。

为此,scoring.py 文件内置了一套严格的自我测试机制,仅使用已知答案的封闭形式案例进行验证。测试包括:零头寸是否返回零收益、全仓买入是否等于持有收益、头寸 2.0 是否被截断、以及最关键的一点——如果在价格跳变的那根 K 线进入头寸,收益应为零,必须提前一根 K 线进入。

这一原则延伸至更广泛的验证:在真实市场数据上运行回测引擎是不够的,必须在合成路径上先进行验证。锯齿波、趋势路径和平坦路径的数学结果是否匹配?只有通过了这些逻辑检验,才能确保评分系统的公正性。

设计三:设定“运气天花板”

这是 FINCHAL 的核心身份标识。系统模拟了 20,000 个零技能玩家,他们在整个赛季期间随机选择头寸。这些玩家的最终收益率分布的 95 分位点,即为该资产在特定市场环境下的“运气天花板”。

不同资产的运气天花板差异巨大。在比特币上,仅靠运气就能达到 +86.6% 的收益率;而在黄金上,这一数字仅为 +9.2%。这意味着,同样的收益率在不同资产上代表了完全不同的技能水平。此外,所有参赛者(包括零技能基准)都需支付交易费用,这确保了基准的公平性。排名分数通过 -log10(1 - p) 映射,使得 2.0 分代表 1/100 的运气概率,3.0 分代表 1/1000。

设计四:为何放弃跨资产比较

最初的计划是设立一个总冠军,这需要跨资产比较结果。然而,经过六次归一化方案的尝试(包括波动率缩放、分位数比等),我们发现没有任何方案能消除偏差。这是因为资产收益率的尾部分布形状不同,最大值往往由尾部决定,简单的统计量匹配无法对齐所有资产。

最终,FINCHAL 决定停止跨资产比较,改为按资产单独颁奖。每个资产 500 美元,总计 2000 美元。这一设计不仅解决了比较难题,还发现了一个有趣的现象:在同一资产内部,百分位评分校准良好,零技能玩家的百分位集中在 0.47-0.54 之间,问题仅存在于资产之间。

设计五:用成本而非规则抑制垃圾策略

在模拟交易中,为何要收取费用?如果不收费,高频翻转头寸的策略在波动性资产上将无利可图。传统的限制提交次数的规则会阻碍那些因市场变化而频繁调整的策略。

FINCHAL 选择了收取真实的执行成本。头寸变化量乘以相应的交易费用(如比特币 0.06%,美股 0.02%)。数据显示,一种“每日翻转”策略虽然收益率尚可,但交易费用高达 10.74%,远超本金收益。这种机制无需额外规则,仅凭成本就能有效抑制投机行为,并让不同资产间的策略差异自然显现。

设计六:在空白的图表上建立标尺

竞赛启动初期,图表是空白的,参赛者无法判断什么才是“优秀”的表现。FINCHAL 引入了 13 条著名的技术指标作为基准线,从年初至今模拟这些策略的表现。这些基准线使用了相同的评分器和费用,确保了公平性。

结果令人惊讶:在 NVIDIA 上表现优异的趋势策略(如 MACD),在比特币上可能排名垫底;反之,均值回归策略在比特币上表现平平,在 NVIDIA 上却名列前茅。这揭示了一个深刻的事实:“哪个指标更好”不是一个良构问题,市场的特性决定了答案。此外,高换手策略在比特币上因高昂的费用而大幅缩水,直观地展示了成本的影响。

设计七:以小时为单位,而非以天为单位

最初的评分网格是按天划分的,但这导致第一天结算时,由于需要等待下一根 K 线,参赛者无法看到即时反馈,且与“每小时更新”的承诺不符。FINCHAL 将结算单位改为小时。价格提供商每 30 分钟发布一次数据,评分系统基于此网格运行。

考虑到股票和 ETF 仅在交易时段发布数据,而加密货币 24 小时交易,FINCHAL 决定不强行统一时间轴,而是让每个资产使用其自己的时钟。没有小时数据的资产则回退到每日结算。这种灵活性避免了人为制造虚假交易,确保了数据的真实性。

设计八:智能体作为一级参赛者

大多数预测竞赛要求人类上传 CSV 文件,这引入了人为的中介环节。FINCHAL 通过暴露 Model Context Protocol (MCP) 服务器,允许智能体直接接入。智能体可以获取规则、历史数据、提交头寸并查询排名。

Agent guide prompt

在实施过程中,团队发现了两个关键教训:工具描述必须本地化,否则跨语言智能体会处于劣势;以及“无法提供的服务必须明确拒绝”。最初系统允许请求 1 小时数据但实际只提供日数据,这会导致智能体基于错误前提建模。最终,系统明确拒绝了不匹配的请求,并补充了真实的小时数据流。

设计九:数据必须是可实现的盈亏

在资产选择上,FINCHAL 坚持使用 ETF 而非期货合约。例如,原油期货(CL=F)与原油 ETF(USO)之间存在巨大的价差,这是由于期货合约展期(Roll)造成的,而非市场真实波动。这种由合约构造产生的 P&L 是参赛者无法实现的。最终选定的四个资产(NVIDIA、比特币、黄金、原油)相关性极低,确保了竞赛的独立性。

基础设施的教训

在构建过程中,团队还遇到了基础设施层面的挑战。市场数据提供商会封锁数据中心 IP,导致数据获取失败。团队从依赖“是否抛出异常”转变为依赖“接收到的数据条数”,并改为由服务器接收数据而非主动拉取,以防止数据损坏。

此外,Hugging Face Space 的临时存储不可靠。团队通过在每个启动时写入计数器并验证其持久性,确保了数据的可靠性。这些细节虽然琐碎,却是构建可信系统的必要条件。

组织者不参与竞争

FINCHAL 决定不将自己的预测模型放入排行榜。如果组织者参与,竞赛就变成了“谁比组织者更准”,而非“谁构建了更好的模型”。此外,规则限制了头寸范围,某些策略无法在此框架下表达。因此,FINCHAL 引入了三个基准线:持有策略、波动率目标策略和随机策略,它们作为标尺而非竞争对手,为参赛者提供了清晰的参照系。

我们想从中学到什么

FINCHAL 的目标并非证明集体智能能解决市场问题,而是寻找“技能”的边界。当数百个独立模型在相同位置停止时,这本身就是关于市场的信息。如果某些资产上的模型普遍突破了运气天花板,而另一些则没有,这种差异本身就是宝贵的数据。

经过 122 天的运行,FINCHAL 留下的不是几个获胜者,而是一条清晰的界限:在哪里运气结束,技能开始。这条线在每一个市场中的位置,将为我们理解 AI 在金融预测中的真实能力提供前所未有的洞察。随着更多参赛者的加入,这张地图将变得更加精细,帮助我们区分真正的智能与偶然的运气。