STRASMORE/EXPLORE 3,171 QUERIES

The same bill on both conventions: coupon equivalent versus discount basis

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-07, from T-Bill Maturities and How Yields Are Quoted.

as of table 2×5read in context →
The same bill on both conventions: coupon equivalent versus discount basis — 2 rows by 5 columns, computed from US exchange, SIP and OPRA data.
tenor_pointterminvestment_rate_pctdiscount_rate_pctgap_bps
3-month point91 days3.833.748.8
1-year point365 days3.963.7620.3
Rows × columns
2 × 5
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for The same bill on both conventions: coupon equivalent versus discount basis, derived from the stored result.
ColumnTypeRangeNotes
tenor_point text 2 distinct values (1-year point, 3-month point)
term text 2 distinct values (365 days, 91 days)
investment_rate_pct number 3.83 to 3.96 percent
discount_rate_pct number 3.74 to 3.76 percent
gap_bps number 8.8 to 20.3

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

WITH bill_points AS
(
    SELECT
        tupleElement(pt, 1) AS tenor_point,
        tupleElement(pt, 2) AS maturity_days,
        tupleElement(pt, 3) AS investment_rate
    FROM
    (
        SELECT arrayJoin([
            ('3-month point',  91, toFloat64(yield_3_month)),
            ('1-year point',  365, toFloat64(yield_1_year))
        ]) AS pt
        FROM global_markets.treasury_yields
        WHERE date >= '2026-04-01'
          AND date <  '2026-09-26'
          AND yield_3_month > 0
          AND yield_1_year  > 0
    )
),
converted AS
(
    SELECT
        tenor_point,
        maturity_days,
        concat(toString(maturity_days), ' days') AS term,
        investment_rate,
        36000 / maturity_days
            * (1 - 1 / (1 + investment_rate / 100 * maturity_days / 365)) AS discount_rate
    FROM bill_points
)
SELECT
    tenor_point,
    term,
    round(avg(investment_rate), 2)                       AS investment_rate_pct,
    round(avg(discount_rate), 2)                         AS discount_rate_pct,
    round(avg(investment_rate - discount_rate) * 100, 1) AS gap_bps
FROM converted
GROUP BY tenor_point, term, maturity_days
ORDER BY maturity_days
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysisT-Bill Maturities and How Yields Are Quoted
The published short end of the Treasury curve, April to September 2026 table 3×6 → A nine-month estimate, interpolated between the 3-month and 1-year points series 26×5 → Front-end yields by horizon: 13-week bill, 1-year point, 2-year note series 26×6 → 2-year and 10-year constant maturity yields, month by month series 24×5 → Typical one-day move in the 10-year yield, by month series 23×4 → The Treasury constant maturity curve, latest published session ranking 10×3 → See all 3,171 queries →