Page cover

T-Bill Yield Perpetuals (US3M)

This perpetual contract tracks the annualized 3-Month U.S. Treasury Bill yield, allowing traders to speculate on or hedge against short-term interest rates.

Characteristic

Description

What it Tracks

The annualized 3-Month U.S. Treasury Bill yield.

Index Definition

A cumulative coupon index It = ∫(rs / Dhr)ds where rt is the live T-Bill yield.

Oracle Type

A Session-Selected Oracle with distinct on-hours, off-hours, and weekend policies.

Market Type

Rate Perpetual.

Use Cases

Long or short the T-Bill yields.

Users

• Stablecoin Treasuries & DAOs

• Money Market Funds & Carry Desks

• Macro Speculators

• Sophisticated Retail Traders

Vol-stat (σ)

Very low: approximately 45 bp/yr. This is one of the lowest volatility products offered.

Margin Numbers

Derived from the Max Leverage tiers. For the initial 3x leverage tier, the Initial Margin (IM) is ~33.3% of the notional position value.

OraclePx

Canonical Output

  • Meaning: 13-week bill investment (bond-equivalent) yield, annualized on ACT/365 (or 366) add-on basis

  • Units: percent (e.g., 5.24810)

Inputs that arrive as discount yields (bank-discount, 360-day basis) are converted to investment basis using the usual formula:

P=100(1dD360),yinv=100PPYD100P = 100\left(1 - d\frac{D}{360}\right),\quad y_{\text{inv}} = \frac{100 - P}{P}\cdot\frac{Y}{D}\cdot 100

where d is discount yield (in decimal), D days to maturity, Y∈(365,366).

Blended rate

We maintain two conceptual pieces:

  • Session signal: ysession(t)

  • Reference anchor: yref(t), the last official close / composite taken during Weekday On-Hours (see anchors below)

The oracle publishes a session-weighted blend:

yt=Ws(t)ysession(t)+(1Ws(t))yref(t),Ws(t)[0,1].y_t = W_s(t)\cdot y_{\text{session}}(t) + \big(1-W_s(t)\big)\cdot y_{\text{ref}}(t^\star), \quad W_s(t)\in[0,1].

Times: Off- & On-Hours

The TBY-PERP operates 24/7, but its oracle methodology adapts based on the underlying U.S. Treasury market hours (US/Eastern Time). During weekday on-hours, the oracle uses a composite of live, multi-vendor cash T-Bill quotes, providing a direct market price.

Weekday Off-Hours, Weekend, & Holiday Logic

Off-market drift bound: On any off-market interval [a,b] where Ws(t)=ε (e.g., 0.05), the composite satisfies:

supu,v[a,b]yuyvεsupu,v[a,b]ysession(u)ysession(v)\displaystyle \sup_{u,v\in[a,b]} |y_u - y_v| \le \varepsilon \cdot \sup_{u,v\in[a,b]} |y_{\text{session}}(u)-y_{\text{session}}(v)|

So even if on-chain or derivatives prices move aggressively, weekend drift in the published rate is proportionally shrunken.

Weekend and holidays are just another Off-Market session in the session-aware oracle framework:

  • The oracle and mark continue to update at HIP-style cadence (~3 s, ≥ 2.5 s spacing, 1% per-update clamp).

Weekends: From Fri 17:00 ET to Mon 08:00 ET:

  • Session: WEEKEND_OFF_MARKET

  • Weight:

    • Ws = 0.05 (weekend session nowcast)

  • Session signal:

    • While Globex derivatives trade (e.g., Sunday evening onwards), use the same SR3/ZQ-based nowcast as any other off-hours.

    • During maintenance gaps or if all drivers are stale, hold the nowcast flat; the blend still yields a stable oracle via the 95% anchor.

Holidays:

US holidays follow the same logic as weekends:

  • The holiday closure is mapped to to WEEKEND_OFF_MARKET.

  • The weight is kept as Ws=0.05 until the next Weekday On-Hours open.

MarkPx

Cumulative index

The CFI and PerpPx continue to run using the blended yt. At each hourly boundary (even on weekends), we finalize the hour using the realized weekend rate (which is just the blended yt on that hour) and update It exactly. Large discrete jumps at Monday open (e.g., after macro news) are smoothed by the 1% per-update clamp and rapid 3 s cadence.

Let yt be the blended investment-basis US3M rate. Define a cumulative coupon index

It=0tys8760,dsI_t = \int_0^t \frac{y_s}{8760},ds

(8760 = 365×24 hours/year). Operationally, this is integrated with the same hourly finalization logic as HIP-3: intra-hour projection + exact hour-end true-up.

MarkPx variants:

  1. MarkPx0 = PerpPxt (pure oracle mark)

  2. MarkPx1 = PerpPxt + EMA150s(PerpPxt - midPxt)

  3. MarkPx2 = Venue local mark

Final MarkPx:

median(MarkPx0, MarkPx1, MarkPx2) with the same clamp and precision rules as the oracle.

All of this runs continuously (including weekends). The index It and mark are updated every ~3 s; the hourly true-up occurs at each UTC hour boundary even if it falls on a weekend.

ExternalPerpPx

PerpPx:

PerpPxt=Bt+S,(ItAt)\text{PerpPx}_t = B_t + S, (I_t - A_t)

Here, S is a fixed scale, Bt is a positive baseline, and At is a piecewise-constant anchor chosen so the mark stays in a wide positive band (e.g. 15–25k). Re-anchoring is atomic to keep price continuous.

  • On-Hours: externalPerpPx = current PerpPx from the oracle.

  • Off-Hours / Weekend: externalPerpPx = EMA of PerpPx over 5–15 min (slow anchor), mirroring the HIP-3 suggestion for external anchors.

Auctions & Daily Anchors

  • Reference anchor yref is set from the first fresh On-Hours composite each business day; during weekends it remains the Friday anchor until Monday 08:00 ET.

  • Daily bill close is captured and logged to support reconciliation, but does not overwrite existing on-chain values; it only updates yref.

  • Auction days:

    • Enter auction mode Δ T minutes before results.

    • Widen outlier filters; optionally slow cadence.

    • When results print, apply a bounded true-up (still respecting 1% per-update clamp).

Worked Example

This example demonstrates the hourly cashflow for a position in the interest-rate perpetual.

With S = $106 and a long position q = 20 (Notional N = $20mm), suppose the realized hourly T-bill yield yh is 5.25%.

The change in the cumulative coupon index over this hour is:

ΔI = yh / Dhr ≈ 0.0525 / 8760 ≈ 6.005 × 10⁻⁶

The corresponding change in the perpetual's price is:

ΔP = S * ΔI ≈ $1,000,000 * (6.005 × 10⁻⁶) ≈ $6.005

The resulting PnL for the position over this hour is:

ΔPnL = q * ΔP ≈ 20 * $6.005 ≈ $120.10

Last updated

Was this helpful?