VerifiQuant
Governance-by-Execution for Financial LLM Workflows
1國立臺灣大學與中央研究院 資料科學學位學程
2國立臺灣大學 資訊工程學系
試算表不變,讓 LLM 來填格子。
問題
算得出數字,不代表有答案
LLM 放進金融工作流程之後,最麻煩的失誤是給出一個格式漂亮、語氣篤定、但錯的數字,而且它看起來和對的數字一模一樣。讓模型寫程式來算(PAL)可以把算術做對,卻管不到這個數字該不該出現。只要程式跑得起來,就算輸入根本算不出合理答案,它還是會交出一個乾淨的數字。
論文評估用的陷阱題 E-test-1080(原題為英文)
這檔股票本週的價格變動率(Price ROC)是多少?請以百分比表示,取到小數點後兩位。
週初股價是每股 $150$2.5,到了週末變成每股 $165。
我們只改了一個數值,讓這題沒有合理答案。這個公式對應的合約裡,本來就宣告了一條檢查:abs(current − previous) / previous > 2.0。
price_coherence_extreme_change,三次執行都停下來。
摘要
核心問題是可治理性
嵌在金融工作流程裡的大型語言模型,最危險的失敗方式是給出篤定、格式完整但錯誤的數字,而且沒有任何訊號能把它和正確的數字區分開來。我們認為部署時的核心問題是可治理性:系統必須判斷一個問題什麼時候撐得起一個數字,什麼時候該改成澄清、攔下或拒答。我們提出 VerifiQuant,一個以執行來治理的框架。它把金融邏輯包成推論合約,每個查詢在確定性計算之前,都要先走過一個可以執行的診斷漏斗。這樣分工之後,計算、澄清和拒答都有固定的結構,可以稽核,金融算術也留在語言模型之外。和檢索、執行條件都相同的基線相比,在宣告的合約庫範圍內,主要的好處出現在輸入撐不起一個數字的時候,那時它比較安全;定義清楚的問題,它並沒有答得更準。找不到適用的合約時,它會直接說找不到,不會用猜的。合約庫規模的掃描和失敗分析替這條界線標上了價格:安全的代價落在覆蓋率上,不在準確率上,剩下的失敗也都能追到特定的執行環節。
有名字的出口
一個問題撐不起數字,有五種情況
每個回應只會是三種結果之一:正確的數字、沒被標記的錯數字,或是一個寫明為什麼不給數字的出口。部署時真正要回答的是:什麼時候給出數字才算正當?
超出範圍
庫裡沒有合約涵蓋這個問題。VerifiQuant 會拒答,並說明原因。
檢索分數 選擇器意圖不明
題目可能指好幾個不同的量。它會問你要的是哪一個。
選擇器少了輸入
缺一個必要的數值。它會直接講出缺的是哪個欄位。
輸入檢查數值越界
某個輸入超出合約宣告的範圍。警示會寫出是哪一條檢查、哪一個數值。
邊界檢查慣例沒講清楚
百分比還是小數?期初還是期末付款?會改變結果的(HARD)先停下來問,只影響解讀的(SOFT)照樣給數字,但附上警告。
歧義檢查計算
每一關都通過,由合約自己的 Python 程式算出數字。
鎖定的程式碼機制
先由可執行的漏斗決定,之後才計算
分析師不會每接一個客戶就重新推一次貸款公式。他會打開一張驗證過的試算表,把數字填進去,表格本身的驗證規則會擋掉不可能的值。 VerifiQuant 把每個公式家族都做成這樣一張表,我們叫它金融推論合約(FIC):有型別的輸入欄位、邊界檢查、事先宣告的慣例和選項,以及鎖定的程式碼。
LLM 只做三件事
從檢索到的四張合約裡選一張,或一張都不選。把題目裡的數值填進合約的輸入欄位。指出合約宣告過、但題目沒講清楚的慣例。它不負責計算,也不改公式。
每條路徑都會寫下一份 DiagnosticReport:用了哪張合約和哪個版本、候選合約和分數、填進去的數值、通過了哪些檢查,以及停在哪裡、為什麼停。確定性的步驟可以照儲存下來的綁定原樣重跑。250 張合約都是離線產生的,每個公式家族呼叫三次 LLM,再經過 lint 和冒煙測試。沒有一張經過人工調整,執行時也固定不變。
| 誰負責什麼 | 選公式 | 算術 | 決定數字能不能給 |
|---|---|---|---|
| CoT | LLM | LLM | LLM |
| PAL、R-PAL | LLM 寫程式 | 直譯器 | 沒有人檢查 |
| R-PAL+ | LLM 寫程式 | 直譯器 | LLM,提示裡寫了檢查規則 |
| VerifiQuant | LLM 選合約 | 合約的程式碼 | 可執行的關卡 |
結果
程式跑得動,不等於有治理
所有系統都用 Gemini 2.5 Flash,看到同樣的前 4 名合約,用確定性的方式執行,由同一套計分程式評分。 R-PAL+ 和 VerifiQuant 在陷阱題上的數字是三次執行的平均。
陷阱題的誤收率(越低越安全)
80 題刻意做成沒有合理答案,F、E、I、N 各 20 題。誤收率(FNAR)是其中仍然被回答了一個數字的比例。
比 R-PAL+ 低 17.1 個百分點,以基礎題分群計算的 95% 信賴區間是 [6.8, 27.0]。把檢查寫進提示,和真的去執行檢查,結果並不一樣。
| 各類陷阱題的誤收率 | R-PAL | R-PAL+ | VerifiQuant |
|---|---|---|---|
| E · 數值越界 | 90% | 30% | 8.3% |
| I · 慣例不清 | 95% | 80% | 21.7% |
| F · 少了輸入 | 10% | 0% | 10% |
| N · 超出範圍 | 0% | 0% | 1.7% |
差距集中在 E 和 I。缺欄位或明顯超出範圍的題目夠顯眼,光靠提示也擋得下來。
代價:少答一些題,答出來的差不多一樣準
250 題定義清楚的乾淨題。條件相同的執行基線在這裡本來就表現不錯,加上治理並沒有讓準確率變高。
| 乾淨題(n = 250) | 準確率 | SWR | 覆蓋率 |
|---|---|---|---|
| CoT,單次 | 77.6 | 18.0 | 95.6 |
| PAL,不檢索 | 91.2 | 7.2 | 98.4 |
| R-PAL,前 4 名合約 | 96.8 | 2.4 | 99.2 |
| R-PAL+,提示裡寫檢查 | 92.0 | 0.9 | 92.9 |
| VerifiQuant,K = 1 | 81.2 | 2.8 | 84.0 |
| VerifiQuant,K = 3 † | 93.6 | 3.2 | 96.8 |
SWR 是給出錯誤數字的比例。K = 1 完全自主運作。† K = 3 是有意圖 oracle 的上限:oracle 看得到題目要算什麼,看不到答案。
另一組分階段讀同一份合約文字的對照組,在陷阱題上和 VerifiQuant 差不多(8.8%),但乾淨題答得比較少(74.8% 對 84.0%),主要原因是它自己寫的程式跑不起來。 VerifiQuant 作答的題目裡有 96.7% 答對,R-PAL 是 97.6%。完整的漏斗每題約 12.2 秒,R-PAL 是 10.5 秒,大約是 1.2 倍的時間。
庫外題:多了範圍訊號,答題數沒有變多
庫內題的拒答率是 19.6%。這是一組固定的切分:199 題的公式家族不在一個 50 個家族的合約庫裡,題目來自同一個基準資料集。 R-PAL 只拒答 0.5%,靠模型本身的知識答對 95.0%,答錯時也沒有任何訊號。VerifiQuant 在庫外並沒有比較準,只答對 7.0%,錯答率也沒有比較低(4.0% 對 4.5%)。論文把這一點列為最限制主張的結果。
另外有一組 80 題的資料,由五位有金融背景的標註者在看不到任何系統輸出的情況下標記(Fleiss κ = 0.84)。其中 46 題不該給數字,VerifiQuant 給了數字的比例是 8.7%,R-PAL+ 是 13.0%,CoT 是 21.7%,R-PAL 是 56.5%。只有和 R-PAL 的差距達到統計顯著。VerifiQuant 的拒答大多是範圍拒答,可以回答的題目它只答了 20.6%。
經過驗證的修改,不重新生成
非預設的慣例會改變計算。這時套用的是建庫時就寫在合約上的修改,而且執行前要先通過驗證:AST 大小有上限、只能用白名單裡的名稱、在取樣的輸入上要符合宣告的代數關係。 179 份轉換規格配上 6 類修補錯誤,共產生 906 個變異,其中 27 個在算術上等價,不列入計算。最後有 20 個被誤放(2.3%),結構性攻擊則全部被擋下。
這是有範圍的數值驗證,並不是形式上的等價證明。那 20 個誤放都出現在有條件分支的轉換裡,五組取樣輸入都沒走到那個分支。試試貸款的轉換 →
界線
這些主張在哪裡成立,在哪裡不成立
成立的範圍
答案是單一數字、以公式為基礎的問題,公式家族在合約庫裡,而且合約本身是對的。
失效的地方
剩下的沒標記錯答,都能追到三個 LLM 步驟:選合約、填數值、想起合約宣告過的慣例。關卡檢查的是格式和範圍,不檢查一個數值是從哪裡來的。
接下來
擴大合約庫並連同選擇步驟一起評估,讓模型在合約宣告的條件內自己組合計算,以及改進檢索。
Demo 的重播裡兩種失敗都看得到:一題陷阱題被放了過去,還有一題乾淨題,R-PAL 答對了,VerifiQuant 卻拒答。去看看 →
引用
BibTeX
@inproceedings{ko2026verifiquant,
title = {VerifiQuant: Governance-by-Execution for Financial LLM Workflows},
author = {Ko, Yu-Chi and Yeh, Mi-Yen and Lin, Shou-De},
booktitle = {Proceedings of the 7th ACM International Conference on AI in Finance (ICAIF '26)},
year = {2026},
address = {Milan, Italy},
publisher = {ACM},
doi = {10.1145/3858063.3858688}
}
論文以 CC BY 4.0 授權發表。DOI 要等 ICAIF '26 論文集上線後才會生效。