Coupon Discovery

Documentation snapshot 18 October 2026. Deployment · Audit Status
On this page

The coupon is fixed at strike from the two sides’ deposits. Matching also limits how much notional the available stock and usable coupon prefund can support.

Principle

Nobody quotes the coupon. During Subscription both sides deposit; at strike, finalizeStrike reads the two totals and sets a single couponBps for the life of the series. More protection demand (SHIELD) than note demand (COUPON) pushes the coupon up toward the cap; more note demand pushes it down toward the floor. The coupon is a clearing rate, in the same spirit as a perpetual funding rate.

Inputs

fact Inputs
SymbolMeaning
DTotal COUPON USDG deposited
STotal SHIELD notional deposited, Stock Tokens valued at s0 (not at the provisional deposit-time price)
notionalCapMaximum matched notional for the series
refBpsPer-series reference coupon set at creation (illustrative 45 bps per observation in the mNVDA example)
couponFloorBps, couponCapBpsBounds; the cap (hard maximum 400); illustrative 140 bps in the mNVDA example also sizes the SHIELD prefund

Formulas

fact

fact Discovery and Matching

prefundCapacity = floor(usablePrefund × 10,000 / prefundRateBps) N = min(D_effective, S, notionalCap, prefundCapacity) couponBps = clamp(couponFloorBps, couponCapBps, refBps × S / D_effective) when D_effective > 0 cancel if either side is empty or N == 0

D_effective is the COUPON book after any reserved-deposit exclusion. usablePrefund is the pooled prefund limited by the least-funded SHIELD stock position, scaled to the total stock. Discovery uses WAD arithmetic with explicit rounding down. The oversubscribed side is filled pro rata; unmatched deposits become refundable.

A reserved deposit (the Desk’s fill, posted with a coupon hurdle h = minCouponBps) enters D only as far as the book still discovers a coupon at or above h: before the clamp above, D is reduced to at most refBps × S / h by excluding part of the reserve account’s deposit, never anyone else’s. The excluded quote is refunded to the Desk at strike (ReserveExcluded). A hurdle at or below couponFloorBps excludes nothing.

Examples

illustrative refBps = 45, couponFloorBps = 15, couponCapBps = 140, notionalCap = 1,000,000 (display USDG amounts, no reserved-deposit exclusion and sufficient usable prefund). Other series differ; see Templates.

illustrative Examples Reference
D (USDG)S at Strike (USDG)N Matched (USDG)refBps × S / DcouponBpsFill
100 000100 000100 0004545 (0.45%)Both sides 100%
100 000150 000100 0006767 (0.67%)SHIELD filled 66.7%
150 000100 000100 0003030 (0.30%)COUPON filled 66.7%
100 000400 000100 000180140 (1.40%, cap)SHIELD filled 25%
100 00025 00025 0001115 (0.15%, floor)COUPON filled 25%
2 000 0002 000 0001 000 0004545Both filled 50% (notionalCap binds)

SHIELD Prefund and Refund

SHIELD must prefund the maximum coupon liability at the cap because the coupon is unknown until strike:

fact SHIELD Prefund and Refund Calculation

couponCapacity = N_s × couponCapBps × (observations.length − 1) / 10,000 requiredPrefund = ceil(N_s × (couponCapBps × (observations.length − 1) + notionalFeeBps) / 10,000)

illustrative For a 100,000 USDG SHIELD position on a 13-timestamp mNVDA series: 100,000 × 140 × 12 / 10,000 = 16,800 USDG of coupon capacity, plus the 0.75% notional fee (750 USDG) which the implementation also draws from the prefund at strike, for a required prefund of 17,550 USDG (INoteCoreViews.requiredPrefund). Matching is additionally capped by prefund capacity: N = min(D_effective, S, notionalCap, floor(usablePrefund × 1e4 / prefundRateBps)). Once couponBps is discovered, the difference between the cap and the discovered coupon is not immediately refunded; it is released as part of settlement, along with coupons avoided by early autocall. Unmatched stock and unmatched prefund are refundable immediately after strike. See SHIELD.

Properties

  • Deterministic. Anyone can recompute couponBps from the two on-chain totals.
  • Bounded. The floor is the minimum discovered coupon; the cap bounds SHIELD’s prefund.
  • Manipulation surface. A large late deposit on one side moves the coupon. Mitigations: notionalCap, minTicket, a Subscription window with a fixed subscriptionEnd, and the Desk’s ability to fill only the COUPON side when S > D. Deposits are not withdrawable during Subscription (refund is available only for unmatched amounts after strike), so pushing the coupon costs capital. See Market risk.

Where the Desk Enters

The Desk may subscribe to the COUPON side during Subscription only when S > D, under per-series, per-underlying and total caps. This absorbs unmatched SHIELD supply and moderates the coupon toward refBps. The Desk cannot subscribe to SHIELD and cannot act after Subscription closes.

Fills are permissionless and rule based. DeskPolicy publishes one rule per underlying (barrier range, coupon floor, observation count, tenor and the lowest coupon the Desk accepts, minCouponBps).

Inside the fill window (the last fillLead seconds of Subscription, 24 hours by default) anyone may call DeskPolicy.fill(seriesId); the policy sizes the fill so the discovered coupon stays at or above the hurdle and never beyond the SHIELD gap or the Desk’s caps, then pays the caller a fixed USDG bounty.

The Desk is therefore a price-sensitive counterparty: SHIELD demand that would push the coupon below the hurdle stays unmatched, and because the fill is posted as a reserved deposit the matched part of a fill keeps the hurdle even if the SHIELD side changes after the fill. Desk.fillCoupon accepts calls from the policy only; the binding changes only through the protocol governance with the published delay. See Desk and Automation.

A little more clarity?

Keep exploring, or revisit this topic from the navigation.