Skip to content
SGYieldHub

SSB rate projection — methodology

This page explains exactly how our next-issue rate projection is computed, what it gets right, and what it doesn't.

Not financial advice.

We reproduce MAS's published SSB rate-setting formula on public SGS yield data to estimate the next issue's rate before MAS officially announces it. Our numbers can differ from MAS's final published rate — always verify against the official MAS announcement before acting.

The MAS formula, step by step

The full specification is in MAS's own SSB Technical Specifications (PDF) . We implement it verbatim:

  1. Reference yields. Take the simple average of daily closing SGS benchmark yields for the 1-year, 2-year, 5-year, and 10-year tenors across the calendar month preceding the issue announcement. Our pipeline scrapes MAS's daily benchmark CSV from their public ASP.NET page (same data MAS publishes on /bonds-and-bills ).
  2. Yield-curve interpolation (MAS Para 4.2). MAS interpolates the missing 3y/4y/6y/7y/8y/9y yields using a shape- preserving cubic Hermite spline. We use a Hermite variant fitted to MAS's historical output by regression — reproducing their interpolation exactly 81% of the time to the 2-decimal-place precision MAS publishes; the remaining ~19% miss by 1bp at the affected tenor due to the unknown internal interpolation rule (see Limitations).
  3. Par-bond bootstrap (MAS Para 4.3a). Convert the 10 annual par yields into 10 zero-coupon discount factors using the standard par-bond identity: at each tenor 100 = Yn × Σ DFk + 100 × DFn .
  4. Coupon derivation (MAS Para 4.3b). The step-up coupon schedule is chosen so that, at every tenor, the compounded average return equals the input par yield. This is the core MAS design principle: a 10-year-holder always earns the 10-year yield.
  5. Monotonicity adjustment (MAS Para 4.5). On an inverted yield curve the raw coupons would step down, which MAS does not allow. We solve a quadratic programme (SLSQP) that finds the minimum-adjustment monotone schedule while preserving the 10-year average return exactly.
  6. Rounding (MAS Para 4.6). Coupons rounded to 2dp; returns computed from the rounded coupons, also to 2dp.

The full implementation is in ingest/projection.py. It re-runs every 4 hours alongside the main MAS data ingest.

Backtest results

We ran the same projection code on every historical MAS SSB issue we could reconstruct — 128 issues from 2015-09 to 2026-04, split into 98 normal-curve and 30 inverted-curve regimes — and compared against the coupons MAS actually published.

Metric Mean abs error Max error ≤ 3bp ≤ 5bp
All coupons (1280) 0.47bp 6bp 99.2% 99.8%
Normal-curve coupons 0.38bp 6bp 99.2% 99.8%
Inverted-curve coupons 0.77bp 4bp 99.3% 100.0%
Year-1 coupon 0.09bp 1bp 100.0% 100.0%
10-year avg return 0.16bp 1bp 100.0% 100.0%

1 basis point (bp) = 0.01 percentage points. MAS rounds coupons and returns to 2 decimal places (Para 4.6 of the Technical Specs ), implying a residual precision floor of a few basis points even from a perfectly-implemented version of the formula.

Worst-case historical issues

For transparency, here are the 5 issues where our projection drifted furthest from the MAS-published coupons. Errors are at the individual coupon level; the 10-year average return remained within a few basis points across all of them — the same precision floor implied by MAS's 2dp rounding rule (Para 4.6).

Issue Application open Curve regime Max coupon error
GX16040V 2016-03-01 normal 6bp
GX15110T 2015-10-01 normal 6bp
GX16030T 2016-02-01 normal 5bp
GX16050Z 2016-04-01 normal 5bp
GX16020F 2016-01-04 normal 5bp

Known limitations

Why we don't use AI, and why only 1 month ahead

The SSB rate isn't a prediction problem — it's a calculation problem. MAS publishes the exact formula they use. Running that formula on the same public yield data MAS uses gives you the answer to within ±3bp, with no training data, no model, and nothing to tune.

An AI/ML approach would face three structural problems here:

  • There isn't enough data to learn from. Only ~128 SSB issues have ever been published. After feature-engineering that collapses to far fewer independent observations. That is a handful of data points, not a training set — any model fitted to it would be overfitting by construction.
  • It replaces certainty with noise. The formula is deterministic. Asking a neural network or LLM to estimate what deterministic math will output is strictly worse than just running the math: models of that kind output plausible-looking estimates with no calculable error bound, while running the formula yields a result whose deviation from MAS we can measure (see backtest above).
  • It can't be audited. Every step of this pipeline is textbook fixed-income math: par-bond bootstrap, quadratic programming, cubic Hermite interpolation. You can read the code. You can't read the weights of a model and explain why it said 1.48% instead of 1.46%.

The same reasoning is why we stop at 1 month out. The formula needs the previous month's complete SGS yield average. For the next issue, we have (or are close to having) that data. For the issue after that, the reference month hasn't started — so projecting it requires forecasting the Singapore yield curve itself, which depends on the Fed, MAS policy, and global rate expectations. Short-horizon yield-curve forecasting is a well-known hard problem in the fixed-income literature, and we don't claim to have solved it.

One month, deterministic, auditable. That's what we can do honestly.

Not financial advice. Rates on /ssb/next are estimates derived from public SGS yield data and MAS's own published methodology. Always verify against MAS's official announcement before acting. Past accuracy is not a guarantee of future accuracy.