工作坊 Session 2: Coding & Web Agents

Market Model:量化決策 agent 缺的那塊地基 / 量化決策 agent 的架構實作

Uri Yerushalmi; Hadar Sharvit — Uri Yerushalmi — Chief AI Officer, Fetcherr;Hadar Sharvit — Director of Deep Learning, Fetcherr

8 月 1 日(六) · Nexus Stage · 00:54:04–01:54:05 · 下午場直播

語言模型不該負責算術——決策系統的架構必須反映決策所在環境的結構,所以 Fetcherr 用直接在市場動態上訓練的 market model 取代 LLM 承擔預測與最佳化,LLM 只負責編排;實測中同一題目、同一份資料,配備 market model 的 agent 建議降價(估計 +6% 營收),而純 LLM agent 建議漲價(估計 −8%)。

這是一場「keynote + workshop」的組合場:Uri Yerushalmi 先建立論證(為什麼 LLM 不足以做量化決策、market model 是什麼),Hadar Sharvit 接著把它拆成數學、程式碼與一場對照實驗。

TL;DR

  • 核心論證(生物學類比):人腦演化出視覺皮質、前額葉等分區,重點不是位置,而是「決策系統的架構必須反映決策所在環境的複雜度與結構」。自然世界的一級公民是影像、聲音、動作;商業世界的一級公民是價格、供給、需求——但在 language-centric 的 agentic workflow 裡,這些概念不是一級公民。
  • Market model 是什麼:與 LLM 用同樣的深度學習技術,但訓練資料不同——LLM 訓練於文本、視覺模型訓練於影像、large world model 訓練於物理環境資料,market model 訓練於市場環境的動態資料。它的基本單位不是 token 也不是像素,而是機率 voxel:在(交易時間 × 交割時間 × 產品屬性 × 客群屬性 × …)的高維格點上,某事件(成交、取消、競品調價)發生的機率。
  • 可解釋性不是額外功能:market model 有 attention layer,可以「看進它的腦袋」。案例:年中有新競爭者入場(黃色),模型依各競爭者屬性重新分配注意力權重。
  • 輸出是一張需求地形圖:切片後以自身價格為 x 軸、競品價格為 y 軸,可讀出期望需求、equilibrium line(買方無感的無差異線)、以及不同市場的競爭強度差異(有的市場競爭幾乎無影響,有的「每一分錢都有差」)。
  • 決策 = 在會變動的 reward landscape 上爬山:每個山丘是一個 decision regime;現實改變時,系統要知道何時該從 regime A 換到更高的 regime B。A/B 測試顯示平均約 7% 的營收提升(統計顯著)。
  • 實作結論(Hadar):把 forecasting 與 constrained optimization 包成 tool,以 Claude Agent SDK 建立「revenue manager + 三個 sub-agent(市場動態、定價政策、QA)」的階層,並用 PostToolUse hook 記錄 grounding(agent 是否真的用了這些工具)。
  • 對照實驗最關鍵的發現不是誰算得準,而是誰知道自己不知道:配備工具的 agent 的 QA analyst 用 evaluate_forecast 標記出某產品預測不確定性過高,回報 revenue manager 後重新派工——六個產品最後只 ship 五個價格,第六個留給人。純 LLM agent 全部照 ship,因為它根本沒有評估不確定性的機制。

討論主題與雙方立場

主題一:為什麼 language-centric 架構不足以做商業決策(Uri,約 00:54–01:04)

Uri 的背景先立信:三十多年做量化決策系統,曾任演算法交易公司的 AI 部門負責人,學術背景是計算神經科學博士。他說今天 NASDAQ 等資本市場已有極高比例的成交量來自演算法,而當年那些決策靠的正是「預測未來市場動態」的模型。但資本市場逐漸變成拚速度的遊戲,而他一直更想要的是「靠聰明而不是靠快做對決定」——所以轉向了非資本市場。

他的論證從生物學出發:人腦花了數億年演化出處理不同自然資料的專門區域——視覺皮質處理視覺、前額葉負責規劃,還有處理聲音、味覺、觸覺的區域。「重點不是每個區域的精確位置」,而是這件事顯示:決策系統的架構,必須反映決策所在環境的複雜度與結構。

對照今天商業場域的 agentic workflow:中心是一個語言模型,外面包著 harnessing 層,或許加上一些視覺模型。LLM 極其強大,但它主要是被訓練來生成與處理文本的。自然世界與腦結構之間有對應關係——影像、聲音、動作是自然世界的一級公民,也就被投射進腦的結構裡。但商業世界看不到這種對應:商業世界的核心概念是價格、供給、需求,而它們在這套決策系統裡不是一級公民

因此 Fetcherr 的立場是:語言模型不足以做量化決策。一個真正的量化決策系統需要能「感知市場」(market sensation)、預測未來市場動態、模擬多種情境、在情境中選擇並最佳化決策並執行,還要能量化評估每個決策的 reward。LLM 與 harness 層依然必要,但最優決策仰賴的是直接在商業環境動態上訓練出來的工具

主題二:market model 的內部結構(Uri,約 01:04–01:10)

  • 與其他深度模型的關係:技術與層別相同,差別在訓練資料。LLM ← 文本;視覺模型 ← 影像/影片;large world model ← 物理環境的真實或模擬資料;market model ← 市場環境的資料
  • 基本單位的類比:LLM 的基本概念是進出模型的 token;視覺模型是高 × 寬 × 色深的三維張量,每格是代表光強度的像素。market model 則是維度高得多的結構——維度包含交易時間、交割時間、產品屬性、客群屬性等等;每個組合上的 voxel 不是視覺的而是機率性的,代表某事件發生的機率:一筆成交、一次取消、一次競品調價。
  • 完整 pipeline:從多來源整合資料 → 餵給 market model → 訓練後預測未來市場動態 → 用預測模擬多種未來情境 → 選定其中一個情境 → 把決策注入企業系統
  • 資料層:企業自有的專有資料(如歷史交易),再用外部世界加值——事件、資本市場資料、天氣,任何有預測力的資訊都能整合進來餵給模型。
  • 可解釋性:market model 也是深度學習系統、含 attention layer,所以可以像看 LLM 一樣「看進它的腦袋」。案例:某客戶的資料中已知年中有新競爭者進入市場(圖上以黃色表示),他們想知道模型對這件事投注多少注意力——結果模型很聰明地依據新舊競爭者各自的屬性,按重要性重新分配了注意力

主題三:怎麼讀 market model 的輸出(Uri,約 01:10–01:18)

輸出是多維的,而工程師是人類,一次只看得懂兩三、四個維度,所以得切片:固定住某個特定產品、某類客戶、某個交易時間與交割時間,只留下少數維度來玩。

典型切片是:x 軸 = 我們自己的定價,y 軸 = 競品的定價,顏色 = 期望需求。這張圖由模型自動產生——它從歷史資料就知道怎麼量化期望需求。讀法很直覺:

  • 藍色區=期望需求低,對應我們價格高於或遠高於競品的區域。
  • 紅色區=期望需求高,對應相反情況。
  • 兩者之間是 equilibrium line:買方對這個價差不在意的無差異線。

在不同位置切片,就能看出模型眼中不同市場的差異:某個市場競爭影響極低;另一個市場的 equilibrium line 右移了 50 個價格單位,意思是我們的產品在該市場的感知價值較高;還有的市場對比度很高,代表競爭激烈到「每一分錢都有差」。

需求曲面也會隨時間變。他們拉了一個航空定價的案例,把需求曲面的變化對照燃油價格——今年四月燃油價格上漲時,模型預測的需求也隨之受到影響。

從預測到決策:有了預測就能用商業場域的 digital twin 模擬每個定價政策的期望 reward。簡化案例把決策政策視為兩個參數,每個組合對應一個期望 reward(例如營收)。關鍵在於這些預測是持續進行的,會反映不斷流入的新資料——而資料流入會改變 reward landscape,因為現實一直在變。企業想要的是永遠站在山頂;這張地形圖底下藏著好幾座山丘,每座山丘就是一個 decision regime,當現實改變、regime B 的山比 regime A 高時,系統要知道該搬過去。

驗證:每次部署都做 A/B——在部分市場上線作為 target group,對照一組相關的 control group。結果反覆顯示統計顯著的營收提升:營收分布明顯右移,平均約 7%

他把整套工具的意義定位為:把決策產業從「靠通用 harness 工程」的做法,推向真正企業級、真正可靠的 agent operations。

主題四:數學基礎——forecaster + optimizer(Hadar,約 01:19–01:27)

Hadar 承接的方式是:先把「為什麼 LLM 會在高風險量化決策上失手」講到數學層級。

任何有意義的商業決策都要配對兩種能力:

  1. Forecaster / predictor:告訴你市場或商業目標會怎麼變。數學上是 point forecast——從時間 t 往未來的 horizon 預測你在乎的訊號(這裡是需求)。輸入包含:已知的過去(過去需求與其分布)、covariates / exogenous variables(產品當時的表徵、對應價格)、static features(產品 ID 等不隨時間變的屬性),以及已知的未來(預期假期、近期高信心天氣、星期幾等時間特徵)。 - 換掉 output head,point forecast 就變成分布預測:因為企業想知道不確定性、想用信心區間思考。可以是參數化的神經分布,也可以用 quantile 描述不確定性。
  2. Optimization process:拿預訓練好的機率 forecaster,在給定 reward u、context s(過去資訊、價格訊號、靜態資訊)與可行動作集合(怎麼定價、配多少庫存)之下,找出最大化目標的動作。例如動作 = 價格、目標 = 營收 = 需求 × 價格:把反事實價格連同完整 context 餵進去,看對應需求如何,再最佳化。 - 永遠有 hard/soft constraints:價格不得超出上下界;連續幾期的定價不能有太高變異;還有順序約束——經濟艙的票價絕不可以高於商務艙。

為什麼 naive agent 會失敗,理由和這些工具存在的理由是同一個:它可能沒有能在 out-of-distribution 情境下泛化的 forecaster,或者根本沒有任何堪用的 forecaster(「如果我丟給 Claude Code 一句『預測價格會怎麼走』,我會說它大概會覺得有點困難」);而且它也沒有一個能穩定套用約束、最大化商業目標的最佳化流程。

主題五:把能力接進 harness(Hadar,約 01:30–01:42)

他直接展示可執行的程式碼路徑:

  • Market model 預訓練設定:Ray 超參搜尋設定、input size、內部隱藏層大小、learning rate;以及特徵集合(已知過去 / 已知未來 / 靜態)。航空客戶的例子裡,static features 是艙等、航線方向等。損失用 distribution-based loss,自訂深度網路吃一段 look-back window、預測分布到 horizon。他順帶提到這套與 Andrej Karpathy 的 auto research 完全相容——但他們刻意不放手讓它自動搜,因為預訓練模型要的是一致性與保證。術語則沿用開源時序框架 Nixtla(他強調雙方沒有合作關係,純粹推薦其最佳實務)。
  • 推論輸出:載入 checkpoint 與特徵選擇/編碼,forward pass 產出 quantile forecast(第 10、50、90 分位)。重點觀念:談需求時要看的不是單一需求值,而是需求在不同價格點的變化——也就是 econometrics 101 的 demand curve。再從中做聚合:整個 horizon 的平均、營收(價格 × 需求)、不確定性衡量;而對需求取高階導數就得到 elasticity(彈性)以及營收極大值的位置。
  • 約束下的最佳化:一個裝著價格約束的 data class(需求上下界、max step 讓連續期的定價變動不超過門檻),一個在最佳化過程中套用約束的私有函式;呼叫 market model 的 forward pass 取得 horizon 上的需求分布,用 scipy.optimize.minimize_scalar,再用 helper 模擬 horizon 上的營收。他用一張圖示意:營收地形上有一條硬約束底線,原本的全域極大在 A,加上約束後只能落在局部極大 B——並提醒現實的營收地形「很少這麼漂亮,也很少可微」。
  • 包成 tool:用 Claude Agent SDK(他強調「我們並不是跟 Claude 合作」,只是這套的功能對熟悉 Claude Code 的人最好懂)。predict_market_dynamics 這個 tool 以 Pydantic 風格結構描述設定,輸入先被驗證,才去呼叫真正的預測(抽象在 capabilities.py),回傳結構化輸出——quantile、elasticity 等。每個能力都照這樣包一個專屬 tool。
  • MCP 與工具分群:Claude SDK 對 MCP server 提供抽象。一組是 data capabilities(GCP bucket,讓 agent 去撈真實歷史市場資料),另一組是 fetcherr capabilities MCP——把前述工具薄薄包一層 server。最後分成三群:data tools、large market model tools(市場動態預測 + 最佳化)、evaluation tools。
  • Sub-agent 階層:一個 analyst factory 加一個 analyst initializer,定義三個 sub-agent + 一個 orchestrator。Orchestrator 是 revenue manager,有自己的 system prompt;三個分析師分別負責市場動態定價政策,以及一個 QA analyst——負責確認預測與政策是否合理。他強調這些是完全可執行的程式碼
  • Hook 與 grounding:用 PostToolUse hook matcher 攔截工具呼叫後的時點,做自訂行為,記錄他們稱為 grounding 的東西——agent 在推理過程中,到底有沒有真的用上這些工具。最後全部塞進 ClaudeAgentOptions:revenue manager 的 system prompt、allowed tools、MCP server、sub-agents、hooks,再加一個簡單的 query loop 做輸出記錄。

主題六:對照實驗「Is the price right?」(Hadar,約 01:43–01:52)

設定:兩個 agent 問同一個問題。

  • A:純 Claude Code harness——有推理、有網路存取、能自己寫程式跑程式,「想幹嘛就幹嘛」。
  • B:Fetcherr 的 market model agent——多了上述能力工具,其餘幾乎相同。

題目(客戶真實資料,已匿名化):年對年,某市場某產品的需求下降 22%,同期價格上漲超過 60%。這合理嗎?答案並不顯然——你可以說是漲價導致需求下降,但需求下降也可能是別的原因造成的。

過程觀察:兩者都產出了含思考過程的 markdown 與一份建議 CSV(漲/降價、幅度多少)。

  • 純 Claude agent 一路 bash:寫 Python script、跑統計、用它最愛的 pandas,產出關於歷史資料、模式、相關性的 CSV。做了相當多事。
  • Market model agent 則是大量使用工具,並把工具結果再聚合:解析結果、建產品清單、彙整最佳化結果。純以工具呼叫次數看,它用得多得多。

最有價值的發現——把工具呼叫按分析師分群後,他們看到:配備工具的 agent 在預測某個產品的需求時,識別出該預測的不確定性偏高(可能是歷史資料不夠)。這是 QA analyst 的功勞:他用 evaluate_forecast 工具把這件事標記出來,上報給老闆 revenue manager,revenue manager 再把 price analyst 重新派到那個市場的子集上——這就是圖上那個工具呼叫的尖峰。

結果:在一個有六個產品的市場,Fetcherr 這組分析師建議 ship 五個價格,第六個(不確定性高的那個)標記出來留給 revenue manager 處理,並寫進 rationale 與建議書。而沒有工具的 agent 全部照 ship——它根本沒有評估不確定性的機制。

放大看單一產品(當時定價 $1,100):

  • 純 LLM agent:建議漲價 $200
  • Fetcherr agent:建議降價約 $250

同一份資料、不同推理、方向與幅度都完全相反的結論。

Fetcherr agent 的推理鏈:呼叫 market model,發現在該價位彈性絕對值大於 1,因此建議降價;在無約束設定下,最佳點會落到彈性最大的 $828。(彈性 = 價格變動百分之一會造成需求變動百分之幾。)它自己寫下的 rationale:「這條航線的需求是有彈性的,每降價 1% 帶來約 1.4% 更多訂位,在營收上足以抵過票價的下降。」接著 revenue manager 呼叫價格最佳化工具,因為有約束、而且要看整組出發日期,無法真的坐在極大值上,最後落在 $863;過程中它還識別出該出發日有假期,指出在假期需求可能更高的情況下,把需求跨價格平均可能會低估、應該定得更高。最終 revenue manager 把 $828 與 $863 收斂、四捨五入,ship 出 $850——估計為該產品帶來超過 6% 的營收提升

純 LLM agent 的失敗模式:它「真的很努力了」,但把相關當成了因果。它在彼此未必相關的市場之間做相關性分析,從未固定單一產品、以反事實方式改變價格。它的原話:「需求彈性在這個日期區間可以忽略,相關性接近零,所以把價格下限拉高幾乎沒有需求毀損的風險。」它據此錯誤地判定漲價不會傷需求。但彈性是真實存在的——在無偏的營收估計下,這個決定的結果是約 −8% 的營收

主題七:整體架構的收斂觀點(Hadar,約 01:52–01:54)

他把整條 pipeline 收成幾條原則:

  • 一個 manager 跑迴圈、審視、彙整。
  • 有專長的 sub-agent 分工;各自有各自的工具;不共享 context,才不會被相似的工具搞混。
  • 一個無偏的 QA 機制,能檢查同儕 sub-agent 產出的成果。
  • 關鍵是:它們全都使用量化能力——數學在那裡、公式在那裡實作。revenue manager 知道自己不是這方面的專家,所以把事情委派出去,才能給出可靠的答案。
  • 再加上 grounding,你才看得見過程中到底發生了什麼。

最終立場:LLM 負責 orchestration 與 agentic harness 的開發,是很強的;但真正的力量來自知道何時、以及如何把工作委派給值得信任的能力。LLM 編排,capabilities 承擔保證(guarantees)。

金句

"The architecture of such a decision-making system needs to reflect the complexity and the structure of the environment in which the decisions are made."(約 01:01,Uri)

從腦科學導出的整場核心原則。

"The main concepts in the business world are concepts like price, like supply, like demand. And these concepts are not the first class citizens in this decision-making system."(約 01:03,Uri)

為什麼 language-centric 架構在商業決策上先天不足。

"While the large language model orchestrates, the capabilities … those are the ones that carry the guarantees."(約 01:53,Hadar)

整場 workshop 的一句話總結。

提到的專案與資源 / Projects & Resources

名稱 Name 說明 Description 備註 Notes
Market Model / Large Market Model (LMM) Fetcherr 訓練於市場動態(而非文本)的深度模型,量化決策的核心 Fetcherr's deep model trained on market dynamics rather than text; the core of their quantitative decisions 已部署於航空等產業客戶
機率 voxel / probabilistic voxel market model 的基本單位:高維格點上某事件發生的機率 The market model's atom: probability of an event on a high-dimensional grid 對照 LLM 的 token 與視覺模型的 pixel
Digital twin 用來模擬各定價政策期望 reward 的商業場域孿生體 Twin of the business arena used to simulate each pricing policy's expected reward
Decision regime reward landscape 上的一座山丘;現實改變時系統需切換 regime A hill on the reward landscape; the system switches regimes as reality shifts
Nixtla 開源時序預測框架,Hadar 沿用其術語並推薦 Open-source time-series framework whose terminology he follows and recommends 他明確表示雙方無合作關係
Claude Agent SDK 用來建構 tool / sub-agent / hook 的 harness The harness used for tools, sub-agents, and hooks 他明確表示「we're not working with Claude」
MCP servers data capabilities(GCP bucket)+ fetcherr capabilities(能力工具的薄包裝) data capabilities (GCP buckets) + fetcherr capabilities (thin wrapper over the tools)
evaluate_forecast QA analyst 用來標記預測不確定性的工具 The tool the QA analyst used to flag forecast uncertainty 實驗中最關鍵的差異點
scipy.optimize.minimize_scalar 約束下最佳化的實作 Used for the constrained optimization
Andrej Karpathy's auto research Hadar 說其 pre-training 設定與之相容,但刻意不採用 Their pre-training config is compatible with it, but they deliberately don't use it 需要一致性與保證,故不放手自動搜

逐字稿勘誤 / Transcript Corrections

字幕原文 Heard as 應為 Should be
Fetcher / Fcher Fetcherr
Urieli / Uri Eli Uri Yerushalmi
Hadar Sharvit(尚可)/ "former director" Hadar Sharvit(議程職稱 Director of Deep Learning)
Nyxla Nixtla
cloud / clot / cloud code / cloud agent SDK / cloud SDK Claude / Claude Code / Claude Agent SDK
pyantic Pydantic
scypi minimize scaler scipy.optimize.minimize_scalar
coariantss covariates
Andre Karpathy Andrej Karpathy
"verified by the Asian P4 invoking" "validated by the agent before invoking"
market modal market model
unaded agent unaided agent
MC MCP MCP
threedimensional tensors three-dimensional tensors
econometric 101 econometrics 101

待確認 / To Verify

  • Hadar Sharvit 的職稱:官網議程寫 Director of Deep Learning(frontmatter 以此為準);但 Uri 介紹他為 "VP of large market model and machine learning",Hadar 本人自述「former director of deep learning,now entering VP of the market model」——三者不一致,可能是演講當下正在轉任。/ Title discrepancy: the agenda says Director of Deep Learning (used in frontmatter), Uri introduced him as "VP of large market model and machine learning," and Hadar described himself as a former director of deep learning now moving into the VP role. Likely a transition in progress.
  • NASDAQ 演算法成交量比例:字幕為 "almost 20% 90%",明顯是自動字幕吃掉數字(推測原句約為 80–90%),需看影片確認。/ The algorithmic-volume share of NASDAQ — captions garble it as "almost 20% 90%"; likely 80–90%, needs verification from the video.
  • A/B 測試的約 7% 營收提升:講者說是「反覆出現的統計顯著結果」,但未說明樣本範圍(單一客戶 vs 全部部署)。/ The ~7% average revenue uplift is described as repeatedly statistically significant, but the sample scope (one client vs all deployments) wasn't stated.
  • Andrej Karpathy 的 "auto research":指涉的專案/工具名稱與連結待查證。/ Exact project or tool referred to as Karpathy's "auto research."
  • 實驗中兩個 agent 的底層模型與版本未說明(只說是 Claude Code harness)。/ The underlying model and version used for both agents in the experiment was not stated beyond "Claude Code harness."
  • $828 / $863 / $850 與 6%、−8% 的營收估計皆為 Fetcherr 內部估算,無公開出處。/ The $828 / $863 / $850 prices and the +6% / −8% revenue estimates are Fetcherr's own internal estimates with no public source.

GitHub 上的 Markdown 原始檔 ↗