LUSG docsLIUM FINANCE Vibenet live · Base Sepolia next Open the app →
Contents
Design

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 billPrice per 100DaysYield before feesAfter a 0.0545% all-in fee
A short bill99.729253.96%3.17%
A 15-week bill98.9121043.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.

−$3,000−$2,000−$1,000$0$1,000$2,000$3,000day 0day 30day 60day 90maturity−$2,031 · rates +1%+$2,035 · rates −1%Example: a 104-day bill, $1.01M face bought for $999,556 · market value minus amortized cost, USD
A 1% rate move on day 30 puts this bill at most $2,031 off amortized cost (0.2%); the gap shrinks to $0 at maturity. A 10% holder leaving on day 30 would be overpaid about $203.
Amortized costMark-to-market
Per-minute clockWorks: needs only the lotsNeeds live bill prices; Treasury publishes once a day
DirectionOnly risesCan fall
Fair to early exitsOff by up to ~0.2% for billsExact
Who uses itGovernment 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 leftRate, 2 Nov 2026Price per $100
203.900%99.7833
453.921%99.5098
1004.046%98.8761
1704.129%98.0504

The daily market check

  1. 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.
  2. Call LusgClock.check(): it prices each lot with priceOf(cusip), sums market value plus cash, and compares with amortized value.
  3. 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 →).

┌─ WHY NOT PYTH ─┐Pyth's feed list has overnight rates (SOFR, TGCR, BGCR, EFFR, OBFR), 2- to 30-year Treasury yields and bill ETFs (SGOV, BIL), but no 1- to 12-month bill yields and no per-bill price. It is not deployed on Vibenet, and on Base mainnet the last pushed SOFR was from March 2026. Treasury's own CSV is current, free and authoritative.