{"slug":"t-bill-maturities-and-yields","qid":"basis","label":"The same bill on both conventions: coupon equivalent versus discount basis","post_title":"T-Bill Maturities and How Yields Are Quoted","post_url":"/blog/t-bill-maturities-and-yields#q-basis","columns":["tenor_point","term","investment_rate_pct","discount_rate_pct","gap_bps"],"rows":[{"tenor_point":"3-month point","term":"91 days","investment_rate_pct":3.83,"discount_rate_pct":3.74,"gap_bps":8.8},{"tenor_point":"1-year point","term":"365 days","investment_rate_pct":3.96,"discount_rate_pct":3.76,"gap_bps":20.3}],"shape":"table","sql":"WITH bill_points AS\n(\n    SELECT\n        tupleElement(pt, 1) AS tenor_point,\n        tupleElement(pt, 2) AS maturity_days,\n        tupleElement(pt, 3) AS investment_rate\n    FROM\n    (\n        SELECT arrayJoin([\n            ('3-month point',  91, toFloat64(yield_3_month)),\n            ('1-year point',  365, toFloat64(yield_1_year))\n        ]) AS pt\n        FROM global_markets.treasury_yields\n        WHERE date >= '2026-04-01'\n          AND date <  '2026-09-26'\n          AND yield_3_month > 0\n          AND yield_1_year  > 0\n    )\n),\nconverted AS\n(\n    SELECT\n        tenor_point,\n        maturity_days,\n        concat(toString(maturity_days), ' days') AS term,\n        investment_rate,\n        36000 / maturity_days\n            * (1 - 1 / (1 + investment_rate / 100 * maturity_days / 365)) AS discount_rate\n    FROM bill_points\n)\nSELECT\n    tenor_point,\n    term,\n    round(avg(investment_rate), 2)                       AS investment_rate_pct,\n    round(avg(discount_rate), 2)                         AS discount_rate_pct,\n    round(avg(investment_rate - discount_rate) * 100, 1) AS gap_bps\nFROM converted\nGROUP BY tenor_point, term, maturity_days\nORDER BY maturity_days","computed_at":"2026-10-07T15:21:17.376311+00:00","elapsed":0.027059509}