在你的专业领域,大模型目前最难跨越的一道「门坎」是什么?

知乎用户,爱好广泛,喜欢扯淡

在我所在的这个领域,也就是金融、量化金融、量化交易这个方向,我越来越清晰地感受到:大模型在这里仍然存在明显的局限性。

这个问题其实是在一个非常具体的背景下暴露出来的。最近我在测试一个行情数据 API 提供的 MCP(Model Context Protocol)时发现了这些现象。我原本的期望很简单——既然给了模型一个标准化的行情数据 MCP,它就应该能够直接、可靠地调用数据,并计算一些最基本的指标,比如某只股票当天的涨跌幅。换句话说,我期待的是:给它一个结构化接口,它就能严谨地使用它。

但实际测试下来,并不是这样。

而且这种局限,并不只出现在所谓“能力较弱”的模型上。我用过的不管是中国还是美国号称最强的模型,最近都犯过一些相当低级的错误。回头复盘,这些问题的根源往往集中在一点——缺乏这个领域应有的细节把控能力。

举个最基础的例子。在金融和交易领域,什么是最基本的能力?知道一只股票今天涨了多少、跌了多少。这是最基础的数据认知。如果连涨跌幅的计算口径都不严谨,那后面谈模型分析、策略构建,其实都失去了根基。

一个量化老兵,拿到一个行情数据 API,第一件事应该做什么?不是马上计算,而是搞清楚:这个 API 返回的字段分别代表什么?时间戳是什么时区?是否包含盘前盘后?close 是 regular session close,还是 extended hours last?这些都是必须明确的前提。

在 A 股环境里,相对简单一些。因为几乎没有有意义的盘后交易,日涨跌幅的定义空间较小。盘前只有集合竞价,结构比较单一。

但在美股市场,复杂度显著提高。既有盘前交易,又有盘后时段。因此,当你问一个模型:“What is the performance of Apple today?”——如果没有明确口径,这个问题本身就是不充分的。

我观察到的一个典型问题是,模型常常把“today’s performance”理解为:

今日收盘价减去今日开盘价,再除以今日开盘价。

这其实是 intraday return(open-to-close),而不是标准的日涨跌幅。标准的 daily return 通常是用今日 regular close 相对于前一交易日 regular close 的变化率。

更进一步,在美股里,“close”本身就可能存在歧义:

  • 是 16:00 的 regular close?
  • 还是盘后 20:00 的 extended last?
  • API 返回的字段是否已经包含盘后成交?
  • 时间戳是否已经跨入盘后区间?

如果不对这些问题做严格界定,就可以在多个价格之间“自由选择”,而计算结果自然可能出现偏差。

我实际测试过多款主流模型,包括 Claude Opus4.6,MiniMax M2.5,GLM,它们在不同场景下都出现过类似问题。有的公式本身选错口径,有的公式形式是对的,但因为没有核对 API 字段语义,仍然得到错误结果。

问题的本质并不是模型不会算百分比,而是:

第一,对金融语境中的概念边界缺乏精确定义。

第二,对数据字段语义缺乏验证意识,默认字段名等同于经济含义。

第三,不主动进行数据一致性校验,而是基于“常见用法”进行推断。

这种局限在量化领域尤为明显。因为量化交易本质上是一个对定义、口径、时间结构极度敏感的行业。一个百分点的偏差,可能只是口径错误,而不是市场信号。

因此,我想表达的不是模型“算错一次涨跌幅”这么简单,而是:在我所在的这个领域,大模型目前仍然缺乏一种工程级别的严谨性。它们能够给出流畅的解释、看似合理的公式,但在数据定义、字段语义、交易结构这些细节层面,仍然容易出现系统性模糊。

而这也让我得出一个更现实的结论:

仅仅给模型一个行情数据 MCP,并不足以保证它能稳定、严谨地完成金融计算。若希望在量化场景中可靠使用,仍然需要在模型之上增加明确的 skills 或 wrapper——把收益口径、字段映射、时段规则、交易日历等逻辑写死、封装好,让模型调用的是经过约束的能力,而不是自由发挥的理解。

在量化金融里,真正可靠的系统,从来不是“会算”,而是“不会算错”。


以下是我做的测试,全部在美国时间 2026 年 2 月 24 日完成

先说结论,在我做的一共七个测试里,大概只有两个算是勉强过关。几乎是完美犯了我说的 API 调用的错误,哪怕我有预期,还是挺震撼的。

测试 1:Claude Opus 4.6任务 1:计算 M7 今天的表现【失败】

calculate M7's performance today.

答案在此

结果是:昨天收盘价抓到了,今天收盘价抓到了,但是涨跌幅不对……为什么呢?

破案了:Opus4.6 使用了 API 给的数据,只要认为 API 有这个“数据”,他就直接用。这其实就是我说的,把 API 里面返回的数值,强加一个自己的理解,然后使用,不去做任何验证。这个其实就还是幻觉的一种体现。

任务 2:计算 NVDA 今天的表现【失败】

If I asked you to calculate the performance of NVDA today, what would you do, tell me the plan

第一次跑这个任务,是在美东时间 2:50 左右。Opus 一开始说明白了 daily return 和 intraday return 的区别,并且在计算结果时,使用了昨日收盘,今日开盘,当前数据等,最后的结果也是对的。但在这里,由于目前还没有收盘,其实在真的调用数据计算时,它使用当前的 snapshot 我也没什么好说的。

那么我们一会儿收盘后,再来跑一次该任务,看看 Opus 能不能搞清楚,这个可以获取盘后数据的 API,需要注意些什么。

美东时间 2-24 2:50PM 测试

盘后美东时间 4:50 左右,又跑了一次。计划做的不错,开盘收盘也都对。

但是,涨跌幅怎么成了 0.57%?说好的 0.68%的今日涨幅呢?原因和刚才一样估计,因为涉及到了盘后数据。功亏一篑啊。

任务 3:计算 M7 表现汇总【成功,高成本】

what is the 1D,1W,1M,3M,YTD performance of M7 stocks as of yesterday close?

大哥算了四分钟了,还在算……我的 token 在烧,心在滴血。

大哥最后决定,写一个库来计算……好吧,我的心已经流干了。大哥很贴心的给了他定义的几个日期,看起来都还可以。从英伟达昨天 0.91%的涨幅来看,是算对了,看来还是得硬算啊,不能想当然。这题,算是过关了……

然后 token 消耗怎么样呢?

就上面的这几个任务,跑三次基本就可以一下午休息了。just FYI。

测试 2:GLM4.7任务 1:计算 M7 今天的表现【失败,原因:错误理解 API 返回值】

先放一个答案:

直接提问:

calculate M7's performance today.

跟 Opus 一样的问题,直接使用 API 返回值而不假思索,幻觉。英伟达 0.68%的涨幅被说成了 0.71%,特斯拉 2.39%的涨幅被说成了 2.47%。

如期翻车

任务 2:计算英伟达今天的表现【失败,原因:错误理解 API 返回值】

If I asked you to calculate the performance of NVDA today, what would you do, tell me the plan

如果先让他来计划,然后再计算,表现就还可以,跟 Opus4.6 一样,都搞清楚了他们要算什么,且计算今天表现时结果也都正确。下面是我在盘中做的测试,结果和 Opus 一样。

盘后测试结果,也翻车了,原因和 Opus 一样,都是幻觉。

任务 3:查看 M7 昨天的表现【失败,原因:错误理解 API 返回值】

What is the performance of Mag7 stocks yesterday?

还是那个 Opus 也犯了的问题:直接用涉及到了盘后数据的 API 返回值,而不是计算 close -> close 的变化。

任务 4:Mag7 表现汇总【算是成功了吧】

what is the 1D,1W,1M,3M,YTD performance of M7 stocks as of yesterday close?

从他选择的日期来看,

1D 的其实要给他加鸡腿,考虑到了昨天收盘是周一,要看上周五的收盘价,

1W 选择的是 2/13,是上上周五,也是对的。

但 1M 和 3M 的日期选择就比较机械了。1M 被他蒙对了,但是 3M 就出了问题,往下看。

然后,我让他自己做一个述职,告诉我他都干了什么,为什么这么做:

walk me through your calculation process for the last task: what mcp you used, results, what new mcp call you made, result, what's the formula of each result item?

以下是她的回答,我直接粘贴在下面。

从她的回答里,我看到,对于 1M, 3M 以前的日期选取,有些粗糙,是直接减去了 30 和 90 天,以至于都不管是不是交易日,所以出现了 MCP 数据获取时的报错。这其实就是没有提前制定好计划的一个体现吧。

walk me through your calculation process for the last task: what mcp you used, results, what new mcp call you made, result, what's the          
  formula of each result item?                                                                                                                   
                                                                                                                                                  
⏺ Walkthrough: Mag7 Multi-Period Performance Calculation                                                                                          
                                                                                                                                                  
  Step 1: Define Time Periods & Reference Dates                                                                                                   
                 
  ┌────────┬────────────────┬────────────────────────────────────────┐                                                                            
  │ Period │ Reference Date │              Calculation               │                                                                            
  ├────────┼────────────────┼────────────────────────────────────────┤
  │ 1D     │ 2026-02-20     │ (Yesterday - Previous Trading Day)     │
  ├────────┼────────────────┼────────────────────────────────────────┤
  │ 1W     │ 2026-02-13     │ (Yesterday - 1 Week Ago)               │
  ├────────┼────────────────┼────────────────────────────────────────┤
  │ 1M     │ 2026-01-23     │ (Yesterday - 1 Month Ago)              │
  ├────────┼────────────────┼────────────────────────────────────────┤
  │ 3M     │ 2025-11-24     │ (Yesterday - 3 Months Ago)             │
  ├────────┼────────────────┼────────────────────────────────────────┤
  │ YTD    │ 2025-12-31     │ (Yesterday - Last Trading Day of 2025) │
  └────────┴────────────────┴────────────────────────────────────────┘

  Yesterday's close (2026-02-23) was already fetched in the previous task.

  ---
  Step 2: First Round of MCP Calls

  I called get_daily_open_close_agg for all 7 stocks × 5 dates = 35 parallel calls:

  YTD (2025-12-31) - ✅ All 7 succeeded

  get_daily_open_close_agg(ticker="AAPL", date="2025-12-31")
  → close: 271.86

  get_daily_open_close_agg(ticker="MSFT", date="2025-12-31")
  → close: 483.62

  ... (all 7 returned data)

  3M (2025-11-23) - ❌ All 7 failed (NOT_FOUND)

  Error: {"status":"NOT_FOUND", "message":"Data not found."}
  Issue: 2025-11-23 was a Sunday (no trading data)

  1M (2026-01-23) - ✅ All 7 succeeded

  get_daily_open_close_agg(ticker="AAPL", date="2026-01-23")
  → close: 248.04

  get_daily_open_close_agg(ticker="NVDA", date="2026-01-23")
  → close: 187.67

  ... (all 7 returned data)

  1W (2026-02-14) - ❌ All 7 failed (NOT_FOUND)

  Issue: 2026-02-14 was a Saturday

  1D (2026-02-22) - ❌ All 7 failed (NOT_FOUND)

  Issue: 2026-02-22 was a Sunday

  ---
  Step 3: Second Round - Adjusted Dates for Failed Calls

  3M: Changed from 2025-11-23 (Sun) → 2025-11-24 (Mon)

  get_daily_open_close_agg(ticker="AAPL", date="2025-11-24")
  → close: 275.92

  get_daily_open_close_agg(ticker="NVDA", date="2025-11-24")
  → close: 182.55

  ... (all 7 succeeded)

  1W: Changed from 2026-02-14 (Sat) → 2026-02-13 (Fri)

  get_daily_open_close_agg(ticker="AAPL", date="2026-02-13")
  → close: 255.78

  get_daily_open_close_agg(ticker="NVDA", date="2026-02-13")
  → close: 182.81

  ... (all 7 succeeded except META & TSLA)

  1D: Changed from 2026-02-22 (Sun) → 2026-02-21 (Fri)

  get_daily_open_close_agg(ticker="AAPL", date="2026-02-21")
  → Error: NOT_FOUND
  Issue: Feb 21, 2025 appears to be a holiday (Presidents' Day)

  1D: Changed from 2026-02-21 → 2026-02-20 (Thu)

  get_daily_open_close_agg(ticker="AAPL", date="2026-02-20")
  → close: 264.58

  get_daily_open_close_agg(ticker="NVDA", date="2026-02-20")
  → close: 189.82

  ... (all 7 succeeded)

  ---
  Step 4: Formulas Used

  Performance Formula (for all periods)

  % Change = (Current Price - Reference Price) / Reference Price × 100

  Example Calculation: NVDA 1D Performance

  Current (Feb 23)    = 191.55
  Reference (Feb 20)  = 189.82

  % Change = (191.55 - 189.82) / 189.82 × 100
           = 1.73 / 189.82 × 100
           = +0.91%

  Example Calculation: MSFT YTD Performance

  Current (Feb 23)    = 384.47
  Reference (Dec 31)  = 483.62

  % Change = (384.47 - 483.62) / 483.62 × 100
           = -99.15 / 483.62 × 100
           = -20.51%

  ---
  Summary: All MCP Calls Made

  ┌───────┬────────────┬──────────────────┬──────────┐
  │ Round │    Date    │      Status      │  Calls   │
  ├───────┼────────────┼──────────────────┼──────────┤
  │ 1     │ 2025-12-31 │ ✅ 7/7           │ 7        │
  ├───────┼────────────┼──────────────────┼──────────┤
  │ 1     │ 2025-11-23 │ ❌ 0/7 (Sun)     │ 7        │
  ├───────┼────────────┼──────────────────┼──────────┤
  │ 1     │ 2026-01-23 │ ✅ 7/7           │ 7        │
  ├───────┼────────────┼──────────────────┼──────────┤
  │ 1     │ 2026-02-14 │ ❌ 0/7 (Sat)     │ 7        │
  ├───────┼────────────┼──────────────────┼──────────┤
  │ 1     │ 2026-02-22 │ ❌ 0/7 (Sun)     │ 7        │
  ├───────┼────────────┼──────────────────┼──────────┤
  │ 2     │ 2025-11-24 │ ✅ 7/7           │ 7        │
  ├───────┼────────────┼──────────────────┼──────────┤
  │ 2     │ 2026-02-13 │ ✅ 7/7           │ 7        │
  ├───────┼────────────┼──────────────────┼──────────┤
  │ 2     │ 2026-02-21 │ ❌ 0/7 (Holiday) │ 7        │
  ├───────┼────────────┼──────────────────┼──────────┤
  │ 2     │ 2026-02-20 │ ✅ 7/7           │ 7        │
  ├───────┼────────────┼──────────────────┼──────────┤
  │       │            │ Total            │ 60 calls │
  └───────┴────────────┴──────────────────┴──────────┘

  The key learning: When working with financial data, always handle weekends and holidays by trying adjacent business days.

他自己最后还总结了一段,可以可以。加鸡腿,升官!