昨天把 actualAvailToBorrow 的算法收斂成一條六天零例外的恆等式,但同時留了兩個沒做完的動作:換一檔券驗算同一條公式、以及實際打 seclending-extensions 這個端點驗證延展機制。今天把這兩件事都做了,結果是一條更正、一條補完:公式本身沒有錯,但只對了一半——真正的規則裡多了一個昨天沒看到的 min();延展機制那條線更直接,今天查到的原始資料跟昨天的推論對不上,今天就地更正。另外,91282CRN3 今天(9 月 30 日)真的進帳了,不必等到 10 月。

📖 學

一、換一檔券驗算,昨天的公式三戰三敗——真正的規則是 min()

昨天的公式是「actualAvailToBorrow = 把 somaHoldings 無條件捨去到百萬美元位,再減掉 outstandingLoans」,六天驗算,91282CRK9 零例外。今天換成 91282CRH6(兩年期附息國庫券,T 05.500 08/15/28 不是,查到的是另一檔當期券,securityDescription 為 T 05.500 08/15/28 的鄰近到期券),抓 9/22 到 9/25 四天的原始 JSON:

日期申報=承作費率somaHoldingstheoAvailToBorrowactualAvailToBorrowoutstandingLoans昨天公式算出的和
09-2248.09 億10.4bp88.70345 億(原始)79.83 億76.41 億12.29 億88.70 億(捨去到百萬,吻合)
09-2312.67 億5.2bp同上79.83 億79.83 億0.10 億79.93 億(不吻合)
09-245.90 億5.0bp同上79.83 億79.83 億079.83 億(不吻合)
09-254.63 億5.0bp同上79.83 億79.83 億079.83 億(不吻合)

somaHoldings 原始值是 8,870,345,200 美元,捨去到百萬是 8,870,000,000 美元。9/22 這天,actualAvailToBorrow + outstandingLoans = 76.41 億 + 12.29 億 = 88.70 億,跟昨天的公式完全吻合;但 9/23 到 9/25 三天,同一條公式全部失守——actualAvailToBorrow 卡在 79.83 億不動,不管 outstandingLoans 怎麼變。79.83 億正好是 theoAvailToBorrow(即 somaHoldings 捨去到百�万再乘 90% 再捨去到百萬:8,870,000,000 × 0.9 = 7,983,000,000,已經是整百萬,不必再捨)。

把兩種情況放在一起看,能歸納出一條同時解釋四天的通用規則:

actualAvailToBorrow = min(
  theoAvailToBorrow,
  floor(somaHoldings, 1,000,000) − outstandingLoans
)

9/22 那天 outstandingLoans 較高(12.29 億),把它從總持有量扣掉之後的「庫存剩額」(76.41 億)小於 90% 的固定上限(79.83 億),所以庫存剩額那一項勝出,actualAvailToBorrow 精確等於庫存剩額——這正是昨天六天全部落在的那個情況。9/23 到 9/25,outstandingLoans 降到接近零,庫存剩額回升到 88.60 億甚至 88.70 億,反而超過了 79.83 億的固定上限,這時候是上限勝出,actualAvailToBorrow 被鎖死在 79.83 億,不再跟 outstandingLoans 逐日連動。昨天的「恆等式」不是錯的,而是剛好六天樣本全部落在「庫存剩額 ≤ 固定上限」這個政權(regime)裡,所以看不出來背後其實是個 min()。

二、實際打了 seclending-extensions 端點,對不上昨天的推論——今天更正

昨天只從 markets-api.yml 的 schema 定義推測「outstandingLoans 是被延展續借的舊倉位」,今天把這個端點真的打了一次。端點路徑是 /api/seclending/extensions/results/details/search.json(operation 參數要填 extensions,不是 all),回傳的每筆紀錄除了 parAmtExtended 之外,還有 operationDate、settlementDate、maturityDate 三個日期欄位。抓一筆實際紀錄看欄位:91282CRK9 在 9 月 17 日有一筆延展,parAmtExtended 為 1 億美元,maturityDate 是 9 月 18 日——延展本身也是隔夜的,不是一次性續到未來某個月份,要每天重新延展才能維持。

查整個 9 月(9/1 到 9/30)的延展紀錄,全月只有 35 筆、分布在 13 個操作日,91282CRK9 全月只出現這一筆(9/17,1 億)。拿昨天真正在乎的窗口——9/22 到 9/29,outstandingLoans 持續在 13.11 億到 39.33 億之間非零——去查同一個端點、同一個 CUSIP,operations 是空陣列,一筆都沒有。換 91282CRH6 查同一週(9/22–9/25),同樣是空陣列,即使 9/22 那天 outstandingLoans 有 12.29 億。

這兩個結果合在一起,今天要老實更正昨天的推論:outstandingLoans 逐日非零,不能用「每天都有新的延展紀錄撐著」來解釋——至少在這兩檔券、這兩個窗口裡,延展紀錄的頻率跟金額,都跟 outstandingLoans 的規模對不上量級(一筆 1 億的延展,解釋不了連續多天 13–39 億的未還倉位)。延展機制確實存在、確實是隔夜、確實會被逐日重新計價,但它看起來不是驅動 outstandingLoans 的主要或唯一管道。今天能誠實寫下的只有「官方文件提到延展」跟「延展的實際資料對不上」這兩件事的落差,outstandingLoans 真正的成因今天重新變回未知,留到之後查。

三、91282CRN3 今天正式入帳:申報=承作=6.59 億,費率卡在地板

昨天兩次核對到 somaAccepted/somaTendered = 10,538,492,700 美元,但證券出借明細裡一直是空的。今天(9/30,也就是交割日當天)重新查 https://markets.newyorkfed.org/api/seclending/all/results/details/search.json?startDate=2026-09-30&endDate=2026-10-01&cusips=91282CRN3,終於查到第一筆紀錄:

  • operationDate / settlementDate:2026-09-30,maturityDate:2026-10-01(隔夜)
  • parAmtSubmitted = parAmtAccepted = 659,000,000 美元(申報全額承作)
  • weightedAverageRate = 0.050,即 5.0 個基點——正好卡在 9 月 27 日那篇文章查到的「FAQ 明文最低投標費率 5bp」的地板上
  • somaHoldings = 10,538,492,700 美元——跟昨天用 TreasuryDirect 查到的 somaAccepted/somaTendered 第三次精確吻合,到美元不差
  • theoAvailToBorrow = actualAvailToBorrow = 9,484,000,000 美元,outstandingLoans = 0

驗一下今天新寫的 min() 公式在這個「全新券、第一天」的邊界情況下站不站得住:floor(somaHoldings, 1,000,000) = 10,538,000,000,乘 90% 再捨去到百萬是 9,484,200,000 捨去成 9,484,000,000,跟公布的 theoAvailToBorrow 吻合。因為是第一天,outstandingLoans = 0,floor(somaHoldings) − outstandingLoans = 10,538,000,000,遠大於 theoAvailToBorrow 的 9,484,000,000,所以 min() 挑中固定上限,actualAvailToBorrow 精確等於 9,484,000,000——跟公布值一致。新券上路第一天,遇到的必然是「上限勝出」這個政權,因為還沒有人借過,outstandingLoans 只能是零。

申報 6.59 億遠低於實際可借 94.84 億,照九天以來驗證過的規則全額承作,費率落在地板,也合理——一檔全新、供給寬鬆的券,不會有人搶著付高價去借。

🧠 記

今天最值得記住的,是一條「乾淨到零例外的恆等式,反而該起疑心」的教訓。 昨天六天六次撞出同一個數字,看起來像是找到了公式的本體,但其實只是樣本剛好全部落在同一個政權裡——floor(somaHoldings) − outstandingLoans 剛好六天都小於固定上限 theoAvailToBorrow,所以「庫存剩額」那一項一直贏,公式看起來是簡單的加減法。換一檔需求比較冷的券,樣本立刻跑到另一個政權,公式就跟著現形成 min()。找到一條零例外的規律時,更該問的是「樣本有沒有可能剛好只覆蓋了某一種情境」,而不是急著宣告閉合。

延展機制那條線,今天示範了「文件提到某個機制」跟「這個機制被資料驗證為因果來源」是兩回事。 官方文件的敘述沒有錯——延展確實存在、確實隔夜、確實會被重新計價——但存在不等於是驅動觀察到的現象(outstandingLoans 逐日非零)的那個機制。今天把這條線從「合理推論」打回「查無對應資料」,outstandingLoans 的真正成因暫時又變回空格,但這個空格現在比昨天更乾淨:已經可以排除「就是這裡看到的延展紀錄撐起來的」這個解釋,下一步要另尋別的候選機制,而不是在同一個已經證偽的解釋上繼續加碼。

✍️ 實踐

去查 91282CRN3 接下來兩天的資料,直接驗證今天發現的兩條線能不能接上。用 https://markets.newyorkfed.org/api/seclending/all/results/details/search.json?startDate=2026-10-01&endDate=2026-10-02&cusips=91282CRN3 看今天借出的 6.59 億到了 10 月 1 日(到期日)是被還掉(outstandingLoans 歸零)還是延續非零;同時用 https://markets.newyorkfed.org/api/seclending/extensions/results/details/search.json?startDate=2026-10-01&endDate=2026-10-02&cusips=91282CRN3 看同一天有沒有出現對應的延展紀錄。如果 outstandingLoans 非零但延展紀錄仍然是空的,就是今天「延展解釋不了 outstandingLoans」這個更正的第二次獨立驗證;如果兩者同步出現,則表示至少在這檔券上延展機制是成立的,昨天的推論只是在 CRK9、CRH6 這兩檔券上剛好不適用。

🔗 延伸學習

💬 問 AI

我在追一個公債借券微觀結構系列。昨天撞出一條六天零例外的恆等式
「當日可借量 + 當日在外未還倉位 = 總持有量捨去到百萬美元位」,
今天換一檔需求較冷的券重跑,四天裡有三天這條恆等式失守,
改寫成一條帶 min() 的公式:
「當日可借量 = min(固定上限, 總持有量捨去到百萬美元位 − 當日在外未還倉位)」。
同一天我也直接查了官方「延展」端點的原始資料,發現它的頻率與金額
都對不上「在外未還倉位」逐日非零的規模,於是把昨天「延展機制解釋了
在外未還倉位」的推論更正為「查無對應資料,成因未知」。
 
請依「先講方法論 → 再驗算 → 再談意義 → 最後談邊界」的順序回答:
 
一、方法論
1. 我原本的「六天零例外」被我自己拿新樣本推翻了。在什麼情況下,
   「零例外」的樣本內驗證反而應該提高懷疑而不是提高信心?
   有沒有一般性的判斷原則(例如看樣本是否可能被單一狀態變數
   — 這裡是「庫存剩額是否小於固定上限」— 意外篩選過)?
2. 我用「文件提到某機制存在」跟「資料驗證某機制是因果來源」
   這兩層做了區分,並把後者的缺席寫成更正而不是繼續用前者背書。
   這種區分在方法論上叫什麼?還有哪些常見的推理陷阱屬於同一類
   (文件/敘述證據 被誤用成 因果證據)?
 
二、驗算
3. 我目前驗證 min() 公式只用了兩檔券、共十天資料,其中只有
   91282CRH6 的四天同時覆蓋了「庫存剩額 < 固定上限」與
   「庫存剩額 > 固定上限」兩種情況。要把這條 min() 公式的信心
   從「這兩檔券成立」提升到「這是 API 的通用規則」,
   最少還需要驗證哪些維度?
4. 延展端點我只查了兩檔券、共十天,查到的是「空紀錄」。
   「查無紀錄」作為證偽證據,跟「查到紀錄但金額不符」作為證偽證據,
   兩者的證據力有什麼不同?我該如何量化或至少排序這兩種證偽的強度?
 
三、意義
5. min() 公式裡的兩項——「固定上限」(90% 的持有量捨去到百萬)
   與「庫存剩額」(持有量減在外未還倉位)——分別代表什麼樣的
   政策考量(例如審慎上限 vs 即時存量)?在其他中央銀行的
   證券出借或流動性工具設計裡,有沒有類似的「雙重限制取最小值」
   的結構?
6. 我現在對「在外未還倉位」的成因,從「有一個具體推論(延展)」
   退回「不知道,但排除了一個候選解釋」。這種「退步」在研究方法上
   算不算進展?如果算,怎麼跟讀者說明這不是原地踏步?
 
四、邊界
7. 我把今天的「查無延展紀錄」寫成對昨天推論的更正,但我只查了
   兩檔券、一個月的資料。這個更正本身會不會也需要邊界,
   會不會有第三檔券的資料讓延展機制重新成立?我該怎麼描述
   這個更正的可信度區間,不要講得比證據允許的更肯定?
8. 91282CRN3 第一天的資料(outstandingLoans=0)剛好是 min() 公式
   裡最無聊的邊界情況(必然選中固定上限)。這種「新券第一天」
   的資料,對驗證 min() 公式的兩個分支各有多少信息量?
   我該不該把它算進「驗證樣本」,還是只能算「一致但不具鑑別力」?
 
要求:每個結論都區分「我驗算出的事實」與「我推論但未證實的部分」;
不確定的地方直接說不確定;不要給任何投資建議。