2025 證券下單前風控:我反對用 LLM 放行下單(Opinion)

前提

- 對外服務:客戶/外部系統會依你輸出行動(不是內部 demo)。 - Human‑in‑the‑loop:任何 AI 輸出最終必須人類審核。 - 內控稽核:你必須能事後重放、交代快照/版本/批准人。 - 定位:你在做「交易輔助的下單前檢核流水線」,不是自動交易代理。

排除

- 你要做自動下單/自動交易決策:那是另一套安全與責任模型;這篇不提供合理化。 - 你做不到版本與快照留存:沒有證據鏈,你不該上 LLM。 - 你沒有 kill switch / 降級路徑:系統出事時你停不下來,那你更不該把裁決交給模型。
證券下單前風控與合規審核示意圖
圖 1:下單前風控與合規審核示意圖。來源:Nataliya Vaitkevich from Pexels

我先把立場講死:在「對外服務 + 必須人審 + 內控稽核」的下單前風控檢核裡,我反對用 LLM 當「放行裁決器」。
LLM 可以幫你整理證據、寫出可讀的審核摘要、把缺口點出來;但它不該決定「放行/阻擋」。不是因為 LLM 不夠聰明,而是因為你承擔不起責任鏈變成黑箱

你可能會想反駁我:「我們有人審啊。」
我也看過很多團隊這樣講——然後上線後反而更容易出事,因為人審被迫背下一個它根本無法回放的決策


Premise(本文前提)

  • 對外服務:客戶/外部系統會依你輸出行動(不是內部 demo)。
  • Human‑in‑the‑loop:任何 AI 輸出最終必須人類審核。
  • 內控稽核:你必須能事後重放、交代快照/版本/批准人。
  • 定位:你在做「交易輔助的下單前檢核流水線」,不是自動交易代理。

Exclusions(本文排除)

  • 你要做自動下單/自動交易決策:那是另一套安全與責任模型;這篇不提供合理化。
  • 你做不到版本與快照留存:沒有證據鏈,你不該上 LLM。
  • 你沒有 kill switch / 降級路徑:系統出事時你停不下來,那你更不該把裁決交給模型。

理由 1:你存了對話,不等於你存得起「當時的世界」

我最怕的一句話是:「我們都有 log。」
因為很多人講的 log,是聊天記錄、prompt、以及模型回覆。這些東西在稽核語境下常常不夠,原因很簡單:稽核要的不是當時的說法,而是當時的世界

你要能回答的問題長這樣:

  • 當時用的是哪個倉位快照?來源是什麼?時間戳是多少?
  • 當時套用的是哪一版限制表?哪一版規則?誰批准那次變更?
  • 當時的例外/豁免是否存在?有效期限?批准人?

如果你把「放行」交給 LLM,就算最後有人審,你也會遇到這個尷尬:
人審按下批准的那一刻,並不等於人審理解了「當時的世界」。
它很可能只是理解了模型寫的一段摘要。

我的判斷標準很粗暴:
同一份 evidence bundle(快照 + 版本 + 規則結果 + 批准紀錄),能不能在乾淨環境重跑出同結果?
不能,就不要談「模型裁決」。


理由 2:人審不是護身符;沒有 kill switch 的人審只是在背鍋

你以為「有人審」就安全,現實常常相反:
當模型、依賴服務、或資料源開始不穩,人審會變成背鍋點——因為系統故障會被包裝成「人也同意了」。

我想像的真實場景是這樣的:

  • 上午一切正常,LLM 的摘要很順、很像人講話
  • 下午遇到尖峰時段,延遲變長、快照偶爾取不到
  • 團隊為了 SLA,把一些檢核關掉、把 LLM 當成「最終裁決」加速通過
  • 最後事故發生時,紀錄長得像:「人審批准 + 模型說合理」

你很難用「我們有人審」保護自己,因為你沒有把系統的停損條款寫進流程

所以我反對 LLM 當裁決器的另一個原因是:
只要你接受「裁決 = 可以被降級、可以被停止」,你就會自然把裁決留在 deterministic checks,而不是留在 LLM。


理由 3:你會低估 prompt 注入/繞路心智,然後把例外流程玩爛

下單前檢核一定會遇到例外:臨時額度、特殊客戶、臨時風控參數調整。
最容易被玩壞的地方,是你把例外流程變成「寫一段看起來合理的理由」。

一旦 LLM 被賦予裁決權,你等於提供一個新的攻擊面:
不是「規則對不對」,而是「誰比較會寫理由」。

我寧可讓 LLM 做一件事:把例外需要的證據列出來、把缺口指出來,讓人審去決定是否批准;
我不希望 LLM 去做另一件事:替例外做裁決


我願意承擔的 trade-off(我不是裝全能)

如果你接受「LLM 不當裁決器」,你會失去一些看起來很誘人的東西:

  • 你沒辦法做到極致自動化:因為最後那一步你要留給 deterministic checks + 人審。
  • 你要多做工程:你得做 evidence bundle、版本策略、事件留存、降級路徑。
  • 你要接受結果更「乾」:規則引擎的輸出不像人講話,但它可追責、可重放。

我願意承擔這些 trade-off,因為在金融內控裡,這些不是成本,是保命錢。


行動建議:如果你現在就要上線「下單前檢核」

我會照這個順序做(先把底線打滿):

1) 先定義 evidence bundle:每一次檢核要封存什麼(快照/版本/原因碼/批准紀錄)。
2) 裁決層 deterministic:規則引擎說 pass/fail;LLM 不得覆蓋。
3) LLM 只做說明:摘要、對照、缺口提示;把人審的注意力導向「缺什麼證據」。
4) 寫死 kill switch:缺快照/版本不明/超時 → 自動降級到規則直出 + 人工處理。

如果你要「框架怎麼選」的清單結論(LangGraph / Semantic Kernel / AutoGen),我已經寫成 Set:
2025 證券下單前風控檢核:LangGraph vs Semantic Kernel vs AutoGen 低後悔選擇(Set)

如果你要看「為什麼這樣做才能被稽核時活下來」,我也寫了 Analysis:
2025 證券下單前風控檢核:為什麼要把 AI 代理鎖在「證據鏈」而不是「裁決」(Analysis)


一段帶假設的算例:你把裁決交給 LLM,事故成本會用「工程師時間」加倍付回來

這不是統計報告,是我用來做 sizing 的保守估算(你可以把數字換成你的現實)。

  • 假設:一年 2 次需要對外交代的爭議/稽核抽查(含客訴、內控抽樣、或交易爭議)
  • 假設:每次要還原「當時的世界」需要 2 位工程師 + 1 位風控/產品,各投入 2 個工作天
  • 假設:工程師日成本抓 NT$8,000(很保守),風控/產品日成本抓 NT$6,000

那麼單次成本約是:

  • 2 位工程師 × 2 天 × 8,000 = 32,000
  • 1 位風控/產品 × 2 天 × 6,000 = 12,000
  • 合計 ≈ 44,000/次(還沒算會議、跨部門溝通、以及「最後仍可能拼不出來」的代價)

一年 2 次就是 ≈ 88,000/年。更糟的是:這種成本通常不會寫進你的預算表,但會直接吃掉交付節奏、拖垮信任。

我反對 LLM 當裁決器,核心不是「怕模型答錯」;而是你把裁決交給它後,會把本來可以在設計階段解掉的問題,變成事後用人力硬補的問題。


邊界條件:什麼情況我允許「看起來像放行」的 LLM 決策?

我不是說 LLM 永遠不能做任何決策,我說的是:不要在對外下單前檢核裡,把它放到裁決位置。

如果你符合下面這幾條,我可以接受你做「看起來像放行」的自動化(但仍然不是 LLM 最終裁決):

  • 只在沙盒/紙上交易(paper trading):結果不會直接影響真實下單
  • deterministic checks 仍是最終 gate:LLM 只能做建議,無法覆蓋規則結果
  • evidence bundle 做得出來:你能重放當時快照/版本/原因碼
  • 有明確 kill switch:出事能立刻降級到純規則 + 人工

一旦你不符合這幾條,我就會回到原本立場:不要讓 LLM 放行。


FAQ

LLM 在下單前檢核裡,最適合做什麼?

最適合做三件事:整理證據、對照歷史、指出缺口。它越像「審核助理」,越安全;越像「裁決官」,越危險。

如果我真的很想把放行自動化,最安全的做法是什麼?

把「放行」留在 deterministic checks,讓 LLM 只做「建議與說明」。你可以自動化很多事,但不要自動化責任鏈。

只要有人審,為什麼還不夠?

因為人審不等於可回放。稽核會問「當時的世界」,不是問「當時人看了什麼摘要」。你如果沒封存快照/版本/原因碼,人審最後只會變成背鍋點。