昨天留了兩條線,今天各查一次。第一條是 outstandingLoans 的算法——昨天試過兩種算法都對不上,只查到官方文件提了一句「延展(extension)」機制當線索。第二條是 91282CRN3 的 SOMA add-on,昨天精確算到 10,538,492,700 美元,但截至 9 月 29 日在證券出借明細裡還是零紀錄,預告今天(9 月 30 日,交割日當天)是第一個可能出現的時間點。今天把兩條線都查了,一條閉合,一條還是空的——但空得跟昨天不一樣,今天有辦法證明「空」是資料還沒到,不是這檔券特別的空。

📖 學

一、把 outstandingLoans 加回 actualAvailToBorrow,六天六次撞出同一個數字

昨天卡住的地方是:試過「理論可借量減前一天的 outstandingLoans」跟「理論可借量減前一天的承作量」兩種算法,都對不上 actualAvailToBorrow。今天換一個方向——不減,用加的。把 actualAvailToBorrow 跟 outstandingLoans 兩欄直接相加,逐日查 91282CRK9 的原始 JSON(六個營業日,9/22 到 9/29,9/29 是今天新補上的一天,昨天寫稿時它還沒發布):

日期actualAvailToBorrowoutstandingLoans兩者相加
09-2276.87 億13.11 億89.98 億
09-2363.26 億26.72 億89.98 億
09-2472.51 億17.47 億89.98 億
09-2571.84 億18.14 億89.98 億
09-2850.65 億39.33 億89.98 億
09-2976.53 億13.45 億89.98 億

六天六次,一分不差,全部等於 8,998,000,000 美元(89.98 億)。這個數字不是我湊出來的整數,是逐日查詢原始 JSON 裡的精確整數相加得到的,六次零例外。

把它拿去跟 somaHoldings 比:somaHoldings 每天都是 8,998,900,900 美元(89.989009 億)——跟兩欄相加的 8,998,000,000 差了整整 900,900 美元。這個差額同樣是六天六次一模一樣,不是浮動誤差。再看 theoAvailToBorrow,固定值是 8,099,000,000 美元;拿 somaHoldings 乘 90%:8,998,900,900 × 0.9 = 8,099,010,810,跟公布的 8,099,000,000 也差了 10,810 美元,而且差額同樣是往下修。兩個差額的方向一致:兩個欄位都是把原始持有量無條件捨去到「百萬美元」這個位數之後,才拿去做後續計算。 8,998,900,900 捨去到百萬是 8,998,000,000,乘 90% 再捨去到百萬是 8,099,000,000——兩條算式都跟公布數字精確吻合。

於是今天能寫下的算式是:

actualAvailToBorrow = 將 somaHoldings 無條件捨去到百萬美元位 − outstandingLoans

也就是 outstandingLoans 不是一個要另外查的神秘量,它就是「總持有量(捨去零頭後)減掉當天還能新借出去的量」——換句話說,它是當下已經在外面、還沒還回來的倉位。這正好對上昨天查到的線索:借券操作是隔夜期限(每筆紀錄的 maturityDate 就是下一個營業日),照理前一天的承作應該在今天到期還券,可借量應該回到滿額。但六天的 outstandingLoans 從沒歸零過(13.11 億到 39.33 億之間浮動),說明每天都有一部分前幾輪的借券沒有真的還回來,而是被「延展」續借了——這跟官方那句「操作結果含每日標售,以及以聯準會決定費率計價的延展」完全對得上。今天做到的是把這句話從敘述變成一條可以驗證的算式,而且六天零例外。

需要老實標注的邊界:這條算式證明的是「三個欄位之間的數量關係」,不是「outstandingLoans 的形成機制」本身。延展是不是唯一造成 outstandingLoans 非零的原因、parAmtExtended 逐日變動是否精確等於 outstandingLoans 的逐日變動,我今天沒有去查 seclending-extensions 這個端點做交叉驗證,留到下一步。

二、第六天(9/29)本身,也重新驗證了昨天那條承作規則

9 月 29 日的原始數字:申報 40.63 億、承作 40.63 億(全額)、費率 0.108%(10.8 個基點)、actualAvailToBorrow 76.53 億。申報 40.63 億小於實際可借 76.53 億,照昨天的規則應該全額承作——查到的結果正是全額承作,一分不差。這是第六次驗算,依然零例外。

順帶一提費率的走勢:9/22 到 9/29 的八天裡,91282CRK9 的加權平均費率是 14.1、10.9、32.5、19.3、27.5、10.8 個基點,9 月 29 日的 10.8 個基點是這八天裡第二低。9 月 27 日那篇文章曾經預測「若期貨交割假說成立,費率應該在 9/28 到 9/30 之間再度走闊」,實際看到的是 9/28 走高到 27.5 個基點、9/29 回落到 10.8 個基點,沒有形成延續性的走闊。這件事今天不展開重新論證,只如實記錄:目前為止的六天資料比較支持「9/18 那波是當期券空頭部位擁擠,不是連續性的期貨交割壓力」這個方向,但樣本只到 9/29,9/30 當天(也就是今天)還沒有資料可看。

三、91282CRN3 今天查了,還是零紀錄,但今天的「零」有對照組

91282CRN3 今天(9 月 30 日)正式交割發行。用昨天同一個端點,把日期換成 startDate=2026-09-25&endDate=2026-09-30、CUSIP 限定 91282CRN3 去查,operations 陣列還是空的。單看這一個結果,跟昨天一樣,不能排除「這檔券真的還沒開始出借」。

但今天多做了一步:把 CUSIP 條件拿掉,查 startDate=2026-09-30&endDate=2026-09-30(不限券)——也就是問「今天全部的證券出借操作,有沒有任何一筆進了系統」。結果同樣是空陣列,一筆都沒有,不只是 91282CRN3 沒有,今天所有 CUSIP 都沒有。這是一個對照組:它說明 91282CRN3 的零紀錄不是這檔券特有的現象,而是紐約聯準銀行今天整批的證券出借結果都還沒發布(公告文件寫的發布時間是每個營業日中午 12:00–12:15 標售之後,查詢當下顯然還沒到那個時間點,或者資料還在處理中)。今天的「查不到」比昨天更乾淨——昨天的空集合排除不了「這檔券還沒交割」,今天的空集合排除不了「今天的資料還沒發布」,但至少可以排除「91282CRN3 被特別排除在外」這個可能性。

另外用財政部 TreasuryDirect 的標售資料端點覆核了一次 91282CRN3 的基本欄位:issueDate 與 datedDate 都是 2026-09-30,somaAccepted 與 somaTendered 都精確等於 10,538,492,700 美元,跟昨天算的數字再一次到美元吻合。查詢過程中多看到一個沒预期到的欄位:somaHoldings: 30,411,000,000,比 somaAccepted 大了將近三倍。這個數字算不進今天任何一條結論——最可能的解釋是它記錄的是「SOMA 名下即將到期、有資格滾入這次標售的舊券本金總額」(TreasuryDirect 同一筆紀錄裡另有一個 estimatedAmountOfPubliclyHeldMaturingSecuritiesByType: 143,580,000,000 佐證這批資料在講到期滾動的規模),而不是這檔新券當前的實際持有量,但我沒有查到明文定義能百分之百排除其他解釋,這一格先不用,標存疑放著。

🧠 記

outstandingLoans 的算法今天閉合了:actualAvailToBorrow = 將 somaHoldings 無條件捨去到百萬美元位,再減掉 outstandingLoans。 六個營業日(9/22 至 9/29)逐日驗算,actualAvailToBorrow + outstandingLoans 每天精確等於 8,998,000,000 美元,零例外;theoAvailToBorrow(8,099,000,000)同樣等於 somaHoldings 乘 90% 再捨去到百萬,兩條算式用的是同一套捨位規則。

outstandingLoans 的經濟意義,是當下還沒還回來、被延展續借的舊倉位。 借券操作是隔夜期限,理論上每天該還的券都會還,但六天的 outstandingLoans 從未歸零(13.11 億到 39.33 億之間),這跟昨天查到的「操作結果含延展」這句官方說明一致——今天把它從敘述變成算式,但延展與 outstandingLoans 逐日變動之間的因果細節(例如是否可用 parAmtExtended 精確重建)還沒查證,留著。

9 月 29 日的資料第六次驗證了「申報 ≤ actualAvailToBorrow 即全額承作」的規則。 申報 40.63 億 < 實際可借 76.53 億,承作精確等於申報 40.63 億,費率 10.8 個基點,是八天裡第二低的一天。9 月 27 日那篇文章的「期貨交割假說會讓費率延續走闊」的預測,到 9/29 為止沒有看到延續性,但 9/30 當天資料還沒出來,不下最終結論。

91282CRN3 今天(交割日)在證券出借明細裡仍是零紀錄,但今天多做了一個對照組:把 CUSIP 條件拿掉查整個 9 月 30 日,全部 CUSIP 都是空的。 這說明今天的空集合是「紐約聯準銀行還沒發布今天的結果」,不是「這檔券被排除」。TreasuryDirect 再次確認 somaAccepted/somaTendered = 10,538,492,700 美元,跟昨天算的數字到美元吻合;但同一筆紀錄裡多出一個 somaHoldings: 30,411,000,000 美元的欄位,意義不明,已標存疑,沒有用在任何結論裡。

✍️ 實踐

第一,把今天這條算式拿到另一檔券上重跑一次,確認它不是 91282CRK9 專屬的巧合。 用 https://markets.newyorkfed.org/api/seclending/all/results/details/search.json?startDate=2026-09-22&endDate=2026-09-25&cusips=91282CRH6 抓當期二年期的資料,檢查同一天的 actualAvailToBorrow + outstandingLoans 是不是同樣精確等於該券 somaHoldings 捨去到百萬美元位的值。如果不同券也成立,這條算式就從「91282CRK9 這六天的規律」升級成「這個 API 的通用規則」。

第二,去查 seclending-extensions 這個端點本身,而不是只從敘述推測。 昨天只讀到 markets-api.yml 裡有這個 schema 跟 parAmtExtended 欄位,今天沒有真的打這個端點。下一步該做的是實際查詢它,看看逐日的 parAmtExtended 加總,是不是能重建 outstandingLoans 的逐日變動量,把「延展造成 outstandingLoans」從推論做成第二條驗算。

第三,今天稍晚或明天(10 月 1 日)重跑 91282CRN3 的查詢。 用 https://markets.newyorkfed.org/api/seclending/all/results/details/search.json?startDate=2026-09-30&endDate=2026-10-02&cusips=91282CRN3,同時也跑一次不限 CUSIP 的版本 https://markets.newyorkfed.org/api/seclending/all/results/details/search.json?startDate=2026-09-30&endDate=2026-09-30 確認今天的資料到底有沒有補上。如果不限 CUSIP 的版本仍然是空的,代表今天查詢的時間點本來就早於發布時間,跟這檔券無關;如果不限 CUSIP 已經有資料但 91282CRN3 沒有,那就是真的還沒開始出借,回到昨天寫的「10 月 1、2 日」這個預測窗口。

第四,邊界跟昨天一樣收緊,再加一條。 今天閉合的算式只證明三個欄位的數量關係,沒有證明 outstandingLoans 的形成機制細節;somaHoldings: 30,411,000,000 這個新欄位存疑不用;9 月 27 日「期貨交割費率延續走闊」的預測目前偏向不成立,但因為 9/30 當天資料還沒發布,今天先不判定,留到下一篇。

🔗 延伸學習

💬 問 AI

我在追一個公債借券微觀結構系列。今天用「把兩個每天變動的欄位加起來」
這個笨方法,意外撞出一個六天零例外的精確恆等式:
「當日可借量 + 當日在外未還的倉位 = 總持有量無條件捨去到百萬美元位」。
昨天試了兩種「用理論值減掉某個欄位」的算法都對不上,今天換成用加法反而一次成立。
 
請依「先講方法論 → 再驗算 → 再談意義 → 最後談邊界」的順序回答:
 
一、方法論
1. 我試錯的路徑是「減法算不出來 → 換成加法一次成立」。
   在反推一個未知欄位的定義時,「猜測一個運算並驗證」這種做法,
   什麼情況下應該優先試加法而不是減法?有沒有一般性的判斷原則
   (例如看欄位的量綱、看是否可能是「總量的兩個互補部分」)?
2. 我還發現兩個獨立的欄位(可借量、理論可借量)都被「無條件捨去到百萬美元位」,
   而不是四捨五入。捨去(向下取整)而不是四捨五入,通常暗示什麼樣的
   系統設計動機(例如:寧可低估可借量,不要不小心超額承作)?
 
二、驗算
3. 我的驗算樣本只有六天、同一檔券。要把「恆等式成立」的信心
   從「這六天這檔券成立」提升到「這是這個 API 的通用規則」,
   最少還需要驗證哪些維度(不同券、不同時期、不同持有量級距)?
4. 如果換一檔持有量小很多的券,同樣的捨去到「百萬美元位」的規則
   還適用嗎?捨去的相對誤差會不會變得不能忽略?請估算一下。
 
三、意義
5. 我推論「當日在外未還的倉位」對應官方文件提到的「延展(extension)」機制,
   但我還沒有直接查驗「延展金額的逐日變動」是否精確等於這個未還倉位欄位的
   逐日變動——目前只證明了三個欄位在同一天的數量關係,沒證明因果機制。
   這兩者(數量恆等式 vs 因果機制)在方法論上差在哪裡?
   我下一步該怎麼設計驗證,才能把「數量關係」升級成「機制證實」?
6. 這種「央行每天把一部分持有的證券出借給交易商,但同時容許舊倉位不還、
   用新費率延展續借」的設計,在其他常見的資產出借或回購機制裡
   (不限公債)有沒有類似的結構?好處與風險各是什麼?
 
四、邊界
7. 我今天查到一個第三方資料源(財政部標售資料)裡多出一個沒預期到的欄位,
   數值遠大於我原本要核對的數字,我沒有找到明文定義,已經標成存疑、
   沒有用在任何結論裡。這種「查到但用不上」的資料,要不要寫進文章?
   如果要,應該用什麼方式呈現才不會誤導讀者以為它已經有結論?
8. 我對這整套機制的理解,哪些部分是「數字驗算出來的事實」,
   哪些是「我對機制的合理推論但沒有直接證據」?
   請幫我把這兩類重新分開列一次,並指出我最容易把兩者混為一談的地方。
 
要求:每個結論都區分「我驗算出的事實」與「我推論但未證實的部分」;
不確定的地方直接說不確定;不要給任何投資建議。