Pricing.
The basket is valued from its actual bills, each at amortized cost: a bill rises from what it cost to $100 at maturity. Once a day the same bills are priced at market from Treasury's own rates, and a gap above 0.5% raises an alert.
Why the real bills, not a rate
An early model assumed one flat rate for the whole basket. Worked examples show why that fails: trading fees, short maturities and idle cash change the real return.
| Example bill | Price per 100 | Days | Yield before fees | After a 0.0545% all-in fee |
|---|---|---|---|---|
| A short bill | 99.729 | 25 | 3.96% | 3.17% |
| A 15-week bill | 98.912 | 104 | 3.84% | 3.65% |
A fee that is small on a long bill is large on a short one. Once a bill matures, its cash earns nothing until it is reinvested, so a basket valued at one assumed rate overstates its gain, here by close to three times over a hundred days. The design therefore values each lot from its own cost and maturity, and keeps a ladder so cash is reinvested.
Amortized cost, per lot
value(lot, t) = cost + (face − cost) × (t − start) / (maturity − start) for start ≤ t < maturity
= face for t ≥ maturity
basket(t) = cash + Σ value(lot, t)
multiplier(t) = basket(t) × 1e18 / LUSG.totalSupply()
Straight-line accretion is the simple amortized-cost method; it never falls, so the per-minute clock can schedule the next value exactly. The current ladder holds three real bills (912797VZ7, 912797WS2, 912797WX1) maturing in about 4, 13 and 26 weeks.
Amortized cost against market value
Both methods end at par. Market value moves with rates along the way; amortized cost ignores them. The gap only matters for a holder who leaves early.
| Amortized cost | Mark-to-market | |
|---|---|---|
| Per-minute clock | Works: needs only the lots | Needs live bill prices; Treasury publishes once a day |
| Direction | Only rises | Can fall |
| Fair to early exits | Off by up to ~0.2% for bills | Exact |
| Who uses it | Government money funds holding $1 (BENJI, BUIDL) | Floating-price funds |
This works because bills are short. A 2-year note would open a gap of about 2% for the same move, and mark-to-market would be the safer choice.
How Treasury prices a bill
price per 100 = 100 × (1 − d × days / 360) d = bank-discount rate for the bill's days to maturity
d(days) = linear between the two nearest tenors: 28, 42, 56, 91, 119, 182, 364 days
(flat at the 4-week rate below 28 days and the 52-week rate beyond 364)
| Days left | Rate, 2 Nov 2026 | Price per $100 |
|---|---|---|
| 20 | 3.900% | 99.7833 |
| 45 | 3.921% | 99.5098 |
| 100 | 4.046% | 98.8761 |
| 170 | 4.129% | 98.0504 |
The daily market check
- Fetch Treasury's Daily Treasury Bill Rates CSV (bank discount for 4, 6, 8, 13, 17, 26 and 52 weeks) and post the seven rates to BillOracle.
- Call
LusgClock.check(): it prices each lot withpriceOf(cusip), sums market value plus cash, and compares with amortized value. - A gap above 0.5% sets
alerting(Vibenet). On Base Sepolia it will pause mint and redeem, and only the Safe can unpause.
Verified on Vibenet: 0 bps at Treasury's rates (0xfb327134…a007 →), −86 bps and an alert after a forced 3-point jump (0x95fdf437…59d6 →), cleared on return (0xe7ad2531…ad37 →).