Deposit & Redemption Prices
sUSDest has two share prices, which stops depositors from sniping coupons.
- Redemption share price: the price per sUSDest used when a redemption request is serviced at epoch close.
- Deposit share price: the price per sUSDest paid when you stake USDest.
The problem
Bond coupons are lumpy. A bond paying 8% a year semi-annually pays 4% of its face value in a single transaction. If the vault used one price for deposits and redemptions, anyone could deposit just before a known coupon date, capture the NAV step-up when the coupon lands, and redeem soon after. Deposits are permissionless and coupon dates are public, so that would be a timing arbitrage against long-term holders.
Using the settled redemption price for everything would not fully fix it either. Redemption windows are global and not tracked per depositor, so someone could still time a deposit around a coupon date and the next epoch close.
The solution
The deposit share price accrues every performing bond's coupon continuously from its last coupon date, under the bond's own day-count convention. New depositors therefore pay for coupon that has already been earned but not yet received.
The redemption share price counts only settled cash: coupons and base yield that have actually reached the vault. Holders who leave do not take value the vault has not received yet.
Neither price involves any discretion. The difference between them is the accrued-but-unpaid coupon across all performing positions, plus base yield not yet harvested.
The gap between the two lines is exactly the accrued-but-unpaid coupon. It collapses to zero the moment the coupon is received, then reopens as the next coupon begins to accrue.
Formulas
Let the vault hold reserve USDest R_t and bond positions i = 1 \dots n, each with carrying value P_i, face value F_i, annual coupon rate c_i and last coupon date t_i^{last}.
\mathrm{NAV}^{redeem}_t = R_t + \sum_{i=1}^{n} P_{i,t}\mathrm{NAV}^{deposit}_t = \mathrm{NAV}^{redeem}_t + \sum_{i=1}^{n} \mathbf{1}_{i \text{ live at } t} \, F_i \, c_i \, \mathrm{DCF}\!\left(t_i^{last}, t\right) + Y_twhere \mathrm{DCF} is the bond's day-count fraction (for example 30/360 or ACT/365), \mathbf{1}_{i \text{ live at } t} is 0 once a credit event is recorded for position i, and Y_t is T-bill yield accrued on the USDest reserve but not yet harvested.
\text{Deposit share price} = \frac{\mathrm{NAV}^{deposit}_t}{\text{sUSDest supply}}\text{Redemption share price} = \frac{\mathrm{NAV}^{redeem}_t}{\text{sUSDest supply}}The deposit price is always greater than or equal to the redemption price. The two are equal only when no bond has unpaid accrued coupon and all base yield has been harvested.
In ERC-4626 terms, the deposit path — deposit and mint, previewed by previewDeposit and previewMint — uses the deposit share price. ERC-7540 redemptions settle at the redemption share price at the moment the request is serviced. The direction-agnostic convertToShares and convertToAssets functions are not the deposit-path preview: they report the conservative redemption share price, so integrators that value sUSDest as collateral get the cash-settled figure. See
Worked example
The vault holds 30,000,000 USDest in reserve and 70,000,000 face value of a bond paying 8% a year, semi-annually, carried at par. Supply is 100,000,000 sUSDest. Five months have passed since the last coupon.
One month later the 2,800,000 coupon is received. Redemption NAV rises to 102,800,000 and the redemption share price becomes 1.0280. Accrual restarts from zero, so the deposit share price also becomes 1.0280.
What would happen without this mechanism?
- Bob holds sUSDest for the full six months while the bond earns its coupon.
- Alice deposits one minute before the coupon arrives at the old price of 1.0000. She captures a +2.8% step-up with almost no time at risk.
- Alice then requests redemption and takes yield that Bob and other long-term holders earned.
With two prices, Alice pays 1.0280 on the way in and captures nothing.
Late coupons and defaults
- Coupon late but within grace: accrual continues in the deposit price. The redemption price is unaffected until cash arrives.
- Credit event recorded: that position's accrual stops (\mathbf{1}_{i \text{ live}} = 0). Accrued-but-unpaid coupon drops out of the deposit price, and the redemption price is unaffected.
- Impairment: the position's carrying value P_i is reduced to its impairment value, which lowers both prices. See Technical Protocol Overview.
Guidance for integrators
Money markets and other protocols that value sUSDest as collateral should use the redemption share price, with a cap on how fast the rate can grow. It is the conservative, cash-settled value.
Some systems use a fixed redemption fee instead. sUSDest uses dynamic forward pricing because it tracks each bond's actual accrued coupon more precisely.