Worked example
All values on this page are illustrative unless labelled otherwise. The formulas are fact from the protocol specification.
Series terms
Section titled “Series terms”observations.length = 27: index 0 is the strike, indices 1 to 26 are coupon observations, index 26 is maturity. Tenor is 52 weeks. The implementation caps series at maxObservations = 64 timestamps and couponCapBps at 400 (NoteCore defaults).
Schedule
Section titled “Schedule”| Index | Date (Friday) | Close (UTC) | Note |
|---|---|---|---|
| 0 | 18 Sep 2026 | 20:00 | Strike. s0 fixed. finalizeStrike |
| 1 | 2 Oct 2026 | 20:00 | First coupon observation |
| 2 | 16 Oct 2026 | 20:00 | |
| 3 | 30 Oct 2026 | 20:00 | Last fortnight of DST |
| 4 | 13 Nov 2026 | 21:00 | Standard time from 1 Nov 2026 |
| 5 | 27 Nov 2026 | 18:00 | Day after Thanksgiving: registered early close |
| 6 | 11 Dec 2026 | 21:00 | |
| 7 | 24 Dec 2026 (Thu) | 18:00 | 25 Dec is a holiday; creator shifts to the Christmas Eve early close |
| 8–12 | 8 Jan – 5 Mar 2027 | 21:00 | |
| 13–25 | 19 Mar – 3 Sep 2027 | 20:00 | DST from 14 Mar 2027 |
| 26 | 17 Sep 2027 | 20:00 | Maturity |
createSeries reverts if any timestamp fails MarketCalendar.isOfficialClose, so a schedule that lands on 25 December cannot be created; the shifted date is a creator choice, not a protocol rule.
Per-observation cash flows
Section titled “Per-observation cash flows”fact The notional fee is debited from the SHIELD prefund at strike: the protection buyer pays the structuring fee. The required prefund therefore covers the coupon cap for every coupon observation plus the notional fee (NoteCore._strike, reconciled against the implementation in contracts/src/core/NoteCore.sol).
Escrow at strike
Section titled “Escrow at strike”| Bucket | USDG | Stock Tokens |
|---|---|---|
N_c (COUPON principal) | 100,000.00 | |
prefundRemaining (SHIELD), 104,250 − 250 | 104,000.00 | |
accruedFees (notional fee, before keeper payment) | 250.00 | |
stockMatched (rounded up) | 555.555555555555555556 | |
| Total escrow | 204,250.00 | 555.5556 |
stockMatched = ceil(N × 1e12 × 1e8 / s0) = ceil(1e11 × 1e12 × 1e8 / 1.8e10) = 555,555,555,555,555,555,556 wei (_quoteToStockUp; redemptions round down, so at most 1 wei of dust stays in escrow). See Physical settlement.
Scenario A: autocall at observation 3
Section titled “Scenario A: autocall at observation 3”| Index | Date | Observed price | Test | Outcome |
|---|---|---|---|---|
| 1 | 2 Oct 2026 | 172.40 | 117 ≤ P < 180 | Coupon paid |
| 2 | 16 Oct 2026 | 176.10 | 117 ≤ P < 180 | Coupon paid |
| 3 | 30 Oct 2026 | 183.25 | P ≥ 180 | Coupon paid, Autocalled |
COUPON holder (100,000 units)
| Item | USDG |
|---|---|
| Net coupons, 3 × 1,275 | 3,825.00 |
| Principal redeemed | 100,000.00 |
| Total received | 103,825.00 |
| Return over 42 days | 3.825% |
| Simple annualised | 33.2% |
SHIELD holder (100,000 units)
| Item | Value |
|---|---|
| Stock returned | 555.5556 NVDA (101,806 USDG at 183.25) |
| Gross coupons paid, 3 × 1,500 | −4,500.00 USDG |
| Notional fee | −250.00 USDG |
| Prefund refunded, 104,250 − 250 − 4,500 | 99,500.00 USDG |
| Net cost of 6 weeks of protection | 4,750.00 USDG (4.75% of notional) |
Protocol: coupon fees 675 + notional fee 250 = 925 USDG accrued; 8 USDG paid to keepers (strike plus three observations); 917 USDG swept to the RevenueRouter (825.30 to buyback, 91.70 to Treasury at the 90/10 default).
Escrow check after redemption and refund: quoteEscrow = 0 + 0 + 0 + 0 + 0 and stockEscrow = 0. The invariant held at every step; see Escrow invariant.
Scenario B: barrier holds to maturity, no autocall
Section titled “Scenario B: barrier holds to maturity, no autocall”Every observation 1 to 25 prints in [117.00, 180.00); observation 26 prints at 151.00.
COUPON holder
| Item | USDG |
|---|---|
| Net coupons, 26 × 1,275 | 33,150.00 |
| Principal redeemed at maturity | 100,000.00 |
| Total received | 133,150.00 |
| Return over 364 days | 33.15% |
SHIELD holder
| Item | Value |
|---|---|
| Stock returned | 555.5556 NVDA (83,889 USDG at 151.00) |
| Gross coupons paid, 26 × 1,500 | −39,000.00 USDG |
| Notional fee | −250.00 USDG |
| Prefund refunded, 104,250 − 250 − 39,000 | 65,000.00 USDG |
| Net cost of protection | 39,250.00 USDG (39.25% of notional) |
This is the worst case for SHIELD: it paid for a full year of protection and the put never paid. The stock fell 16% and SHIELD would have been better off unhedged. A 1.5% fortnightly coupon (39% p.a.) is high by traditional standards, which is exactly what coupon discovery is meant to correct: at this level, SHIELD demand should fall and COUPON demand rise until the rate clears lower.
Protocol: 26 × 225 + 250 = 6,100 USDG accrued, 54 USDG to keepers (27 cranks), 6,046 USDG to the RevenueRouter.
Scenario C: barrier breached at maturity, physical settlement
Section titled “Scenario C: barrier breached at maturity, physical settlement”Observations 1 to 20 hold. Observations 21 to 25 print below 117.00 (no coupons). Observation 26 prints at 99.00.
COUPON holder
| Item | Value |
|---|---|
| Net coupons, 20 × 1,275 | 25,500.00 USDG |
| Coupons for observations 21–26 | 0 (barrier not held) |
Stock received: 100,000 × 1e12 × 1e8 / 1.8e10 | 555.555555555555555555 NVDA |
| Market value at 99.00 | 55,000.00 USDG |
| Total value received | 80,500.00 USDG |
| Return on 100,000 | −19.5% |
| Same capital in NVDA at 180 | −45.0% |
SHIELD holder
| Item | Value |
|---|---|
| Stock delivered to COUPON holders | 555.5556 NVDA (55,000 USDG at 99.00) |
| USDG received from COUPON escrow | 100,000.00 USDG |
| Gross coupons paid, 20 × 1,500 | −30,000.00 USDG |
| Notional fee | −250.00 USDG |
| Prefund refunded, 104,250 − 250 − 30,000 | 74,000.00 USDG |
| Net position vs. holding stock | +14,750.00 USDG |
SHIELD effectively sold its stock at 180.00 for a cost of 30,250 USDG in coupons and fees, while the stock is at 99.00. The economic identity is a down-and-in put struck at 180 that paid 81 per token intrinsic (45,000 total) against 30,250 of premium.
Protocol: 20 × 225 + 250 = 4,750 USDG accrued, 54 USDG to keepers, 4,696 USDG to the RevenueRouter. Stock is matched with rounding up at strike (_quoteToStockUp), so no dust is owed to COUPON holders.
Side by side
Section titled “Side by side”| A: autocall at 3 | B: holds to maturity | C: knock-in at maturity | |
|---|---|---|---|
| COUPON total received | 103,825 USDG | 133,150 USDG | 25,500 USDG + 555.56 NVDA (80,500 total) |
| COUPON return | +3.83% (42 d) | +33.15% (364 d) | −19.5% (364 d) |
| SHIELD net protection cost | 4,750 USDG | 39,250 USDG | 30,250 USDG, offset by 45,000 put payoff |
| SHIELD ends holding | 555.56 NVDA + 99,500 USDG | 555.56 NVDA + 65,000 USDG | 174,000 USDG, no stock |
| Protocol fees (net of keeper) | 917 USDG | 6,046 USDG | 4,696 USDG |
| Series status | Autocalled | Matured (cash) | Matured (physical) |
What this example does not show
Section titled “What this example does not show”- A cancelled series (
D == 0orS == 0), where every deposit is refundable. - Oversubscription and pro-rata fill, covered in Coupon discovery.
- A Deferred observation and governance
forceObserve, covered in Oracle and MarketCalendar. - Transfers of legs mid-life; accrued coupons are settled to the sender on every transfer, see COUPON.