LIVE
Updated —
rbond.co.za
South African government bond yields — curated in Pretoria since 2018.
Live curve · Δ1d —
Today · —
Live · —
Prior · —
Edition No. —
The long read · as of —

The shape of South African money.

Every business day we measure the price of borrowing in rand — from the overnight repo rate through the full R-bond curve out to 2053, plus inflation-linked bonds and floating rate notes. The shape tells a story: of inflation expectations, political weather, and the long arc of fiscal discipline.

—Observations
—Instruments
—Since
—
The yield curve —
Yield (%) vs. years to maturity · drag to travel through time
Overlay zero curves:
Rolling changes · R-bonds · bp
Δ 1w Δ 1m Δ 1y
Fixed R-bonds only. Yield change in basis points over the rolling window; positive bar = yield up (price down). T-bills, ILBs and generics update on different cadences and are omitted here for a clean cross-sectional read of the nominal curve's drift.
Today's landscape — bonds · swaps · fras · shape
Nominal
TenorInstrument YieldΔ 1d
Swap curve · NACQ
TenorCode FixingΔ 1d
Forward rates · FRA path
WindowCode RateΔ 1d
10y Nominal
—%
—
10y Real (ILB)
—%
—
10y Breakeven
—%
implied inflation
2s10s Slope
—bps
—
5s30s Slope
—bps
—
Key rates

Money market, Treasury bills, and on-the-run R-bonds

—
Money MarketO/N · 3M
—
T-Bills3M · 6M · 9M · 12M
—

Quote basis: SATB 3M/6M/9M and SATB 12M Eff are annual-effective yields. SATB 12M is NACS (nominal annual compounded semi-annually) — the curve-construction convention — so it reads lower than the effective equivalent. Both 12M quotes are sourced from the same data.

R-BondsShort · Belly · Long
—
Three curves, one story

Nominal, real, and the breakeven between them.

The nominal R-bond curve prices yield in rand. The ILB curve prices yield in purchasing power. The gap — the breakeven curve — is what the market expects inflation to do at each tenor. Play through history to watch the three move together.

— Controlled by the slider above
NominalR-bond · %
— at 10y · range —
RealInflation-linked · %
— at 10y · range —
BreakevenImplied inflation · %
— at 10y · range —
The Weekly Read

what the curve is saying

—
Machine-read weekly digest

—

Loading…

Weekly move · Δ1w, bps by tenor
The Archive

dispatches & deep dives

hand-curated

Loading articles…

—

—

—
—
Fixed Income News

rates, macro, and market structure

—

A hand-curated reading list of recent monetary-policy, rates and macro-finance stories relevant to South African bond investors. Links go to the primary source; summaries are ours.

Loading…

The Rates Board

today's mark-to-market

—

Fixed R-bonds · fixed

On-the-run government issuance across the curve.

BondYrsYieldR/CΔ 1dΔ 1wΔ 1mΔ 1y30d

Inflation-linked · ilb

Real yields indexed to headline CPI.

BondYrsYieldΔ 1dΔ 1wΔ 1mΔ 1y30d

Treasury Bills · tbill

Short-dated paper, 3M–12M. 3/6/9M & SATB 12M Eff are annual-effective; SATB 12M is NACS (semi-annual) — same source, different basis.

BondYrsYieldΔ 1dΔ 1wΔ 1mΔ 1y30d

Generic benchmarks · generic

Synthetic par-yield at standard tenors.

BondYrsYieldΔ 1dΔ 1wΔ 1mΔ 1y30d
→ Bootstrap a perfect-fit discount-factor curve from these rates (Free API tab)
Bond Detail

the instrument up close

—
——
Compare with
Current yield
—%
Maturity—
Yrs to mat—
Δ 1 day—
Δ 1 week—
Δ 1 month—
Δ 1 year—
1y high—
1y low—
1y mean—
1y Δ—
1y vol (ann.)—
Price besa
Clean—
Accrued—
All-in—
Risk metrics besa exact
Mod. duration—
DV01 / R100—
Convexity—
↓ Download CSV
BESA Bond Pricer

Yield to price · all-in / clean / accrued / risk

Act/365 · semi-annual · cum/ex > 10d
Coupon · maturity—
All-in price—
Clean price—
Accrued ——
Cum / Ex—
Consideration—
Clean amount—
Accrued amount—
Mod. duration—
DV01 face—
Convexity—
Key-Rate DV01 for — at —
2Y KRD01—
5Y KRD01—
10Y KRD01—
20Y KRD01—
30Y KRD01—
—
Curve Shape

the three that matter

—

2s10s · 5s30s · 10s30s · bps

Curve-slope time series. 2s10s is belly tension; 5s30s is term premium; 10s30s is the long-end slope. Click a tenor to toggle.
All Key Spreads

current levels

—
Spread Time Series

every pair, over time

—
Daily Change Heatmap

the last thirty days

—
rallysell-off
Money Market

overnight benchmarks, the swap curve, and forwards

—

Swap-vs-sovereign spreads · bps

SA Swap fixings minus the matched-tenor ZARGB benchmark, expressed in basis points. Positive = sovereign yields above swaps (asset-swap discount); negative = swaps richer than govvies. Click a tenor to toggle.

Overnight & 3-month benchmarks

REPO (policy) · ZARONIA (O/N risk-free) · SABOR (legacy) · JIBAR3M (3M interbank). Click a series to toggle.

SA Swap rates — historical

1 / 2 / 3 / 5 / 10-year IRS fixings over time (NACQ, 3M-JIBAR floating leg).

SA Swap curve · SASW

Latest 1/2/3/5/10y IRS fixing. NACQ-quoted, 3M-JIBAR floating leg. Hover for detail.

Forward Rate Agreements · FRA

Market-implied 3M rate at forward-start dates — the rate path. Step shape: each FRA is the rate over a discrete 3-month window.

Latest spread term structure

Most recent SW Spread (1/2/3/5/10y) and TB Spread (3/6/9m) marks.

Swap, FRA and swap-spread quotes reference close-of-day marks; intraday dealers may differ. Forward-start dates are conventional (3×6 denotes a three-month rate starting in three months). Quotes are indicative, not executable.

Retail Savings Bond Rate Prediction

Next month likely 2/3/5-yr Fixed Rate

as of —

RSA Retail Savings Bond Fixed Rates are reset on the first of each month, anchored to ZARGB 2/3/5-year government-bond yields at the end of the prior month and rounded to the nearest 0.25%. Each card below projects next month's reset from the month-to-date move in the underlying benchmark.

Next rate reset
—
—SA business days away

Loading…

Fixed Rate RSB · 2 / 3 / 5-year Monthly series from 2016. Stepwise because rates move in 0.25% quanta.
Fixed RSB vs ZARGB benchmark · spread How much the Fixed RSB gives up (or picks up) vs the market at the same tenor, in percentage points.
Inflation-linked RSB · 3 / 5 / 10-year (real yield) Real coupon paid on top of CPI. Top-Up RSB 3y (nominal, deposit-only) overlaid as a dashed companion line since 2023.

Last 24 months — Fixed RSB vs ZARGB

Current row highlighted. Spread coloured from the saver's perspective: green when the RSB pays above the market yield at the same tenor, red when it's below.

Restart opportunities · Fixed Rate RSBs

Holders can restart their Fixed Rate RSB into a new rate after 12 months of holding. Requests must be lodged on or before the 20th of the month to take effect on the first of the next month. Each vintage below shows the rate you originally locked in versus what today's restart would give you.

Free · public · forever

A free API for anyone who needs the numbers.

No paywalls, no contracts. JSON, CSV, and the complete history of every rate we've tracked since 2018 — fixed R-bonds, inflation-linked, floating rate notes, treasury bills, and generics. Built for analysts, students, quants, and anyone who's ever shouted at a PDF.

GET/api/v1/rates/latest

Today's full snapshot — every instrument with 1d/1w/1m/1y changes. Filter: ?bond_type=ilb.

curl https://rbond.co.za/api/v1/rates/latest
GET/api/v1/rates/{bond}

Daily history for one instrument. Accepts ?from=, ?to=, ?fmt=csv.

curl https://rbond.co.za/api/v1/rates/R2030?from=2024-01-01
GET/api/v1/curve/{date}

The full curve on any date. Use latest for today.

curl https://rbond.co.za/api/v1/curve/latest
GET/api/v1/spreads

Key tenor spreads — 2s10s, 5s30s, and the R-bond belly.

curl https://rbond.co.za/api/v1/spreads
GET/api/v1/bonds

Reference list of every tracked instrument.

curl https://rbond.co.za/api/v1/bonds
GET/api/v1/rsb/prediction

Next month's 2/3/5-yr Retail Savings Bond rate projected from ZARGB month-to-date moves. Accepts ?fmt=csv.

curl https://rbond.co.za/api/v1/rsb/prediction
GET/api/v1/history.csv

Full dataset as CSV. Filter by ?bond_type=fixed.

wget https://rbond.co.za/api/v1/history.csv
GET/api/v1/articles

Hand-curated Commentary articles — manifest only (slug, title, summary, lede).

curl https://rbond.co.za/api/v1/articles
GET/api/v1/articles/{slug}

Full HTML body for one article.

curl https://rbond.co.za/api/v1/articles/rsb-mechanics
GET/api/v1/news

Hand-curated fixed-income news feed — date, source, title, summary, external URL.

curl https://rbond.co.za/api/v1/news

Bootstrapped perfect-fit government bond curve

A true settlement-date bootstrap of the ZAR nominal government curve. Today's R-bond, T-bill and repo yields are pulled live from this site; contractual coupon schedules are embedded. Each accepted bond maturity discount factor is solved by bisection so that Σ CF × DF(settle→CF) = BESA all-in price — a near-perfect repricing. Nodes that would break a monotone discount-factor curve are rejected. Universe: short anchors (repo + 3/6/9/12m T-bills), then the short-dated R188 (10.5%, Dec 2027) as the first bond node, through R2030 → R2048; R2053 excluded. Pick a trade date and settlement date (default T+3 SA business days), run the bootstrap, and export the daily discount factors.

Yields as of
—
—
Bonds fitted
—
accepted nodes
Max abs error
—
AIP − bootstrapped PV
Curve to
—
last valid maturity

Bootstrapped spot zero curve (%)

Bootstrapped discount factors

Bootstrap nodes

PV reconciliation

Selected fixed-rate R-bond — cash-flow profile vs BESA AIP

Select a bond after running the bootstrap.

Discount factors are read off the bootstrapped curve at each cash-flow date (log-linear in DF). For an accepted node, Σ CF × DF reproduces the BESA all-in price the curve was solved against — the residual is pure numerical tolerance.

Set dates and press Run bootstrap.

Rate limit · 60/min anonymous · 600/min with key Get a key · free — email info@rbond.co.za with a short label (company / project) and intended use; I'll mint one and send it back Usage · curl -H 'X-API-Key: rbk_xxx' https://rbond.co.za/api/v1/rates/latest Format · JSON or CSV Attribution · "Data: rbond.co.za" Licence · CC BY 4.0 Disclaimer · E&OE · no warranty · not advice
→ Full interactive OpenAPI docs
Methodology

how the numbers get here

sources · cadence · gotchas

Where the data comes from

IndicatorSourceUpdate cadence
R-bonds, ILBs, FRNs, T-bills, ZARGB genericsJSE YieldX Daily Stats (CSV)Weekdays, ingested 18:00 SAST
Repo / Policy Rate, ZARONIASARB current-market-rates pageDaily (ZARONIA) · on MPC decisions (Repo)
RSA Retail Savings Bond ratesrsaretailbonds.gov.za/rates.aspxMonthly (first business day)
T-Bill auction resultsSARB monetary operations pageWeekly (typically Friday)
RSB vs R-bond monthly spreadsAdmin-maintained data/rsarsb_rates.xlsxMonthly, end-of-month

Ingestion pipeline

Every weekday at 18:00 SAST a systemd timer runs ingest_jse.py, which downloads the day's CSV (with a polite 1-hour buffer past the JSE 17:00 publish deadline), deduplicates rows by keeping the entry with the highest DaysDeal per instrument, classifies each row as fixed | frn | ilb via the instrument name, and upserts into the single rbonddata table using ON CONFLICT(report_date, bond) DO UPDATE. If the day's file isn't available yet the script walks back up to three weekdays. After ingest it rebuilds boot.json for first-paint.

RSB monthly rates and the RSB-vs-Rbond spread history come from two admin-maintained spreadsheets under /data/ and are loaded on demand via ingest_data_xlsx.py. SARB Policy Rate, ZARONIA, Retail Savings Bond rates and Treasury Bill auction results are scraped by the separate sa-rates-scraper subproject and stored in its own SQLite for audit, with HTML snapshots retained per run.

Spread convention

Every spread is long leg − short leg, quoted in basis points. So 2s10s_ZARGB = (ZARGB10 yield − ZARGB2 yield) × 100. A positive number means a normally-sloped curve at that point; a negative number means inversion. Week-on-week and month-on-month deltas compare the spread to the spread observed 5 and 22 weekdays ago respectively.

The time-series panel plots eight pairs: four generic-curve (2s5s, 2s10s, 5s30s, 10s30s), two R-bond (short-belly and belly-long), the repo-to-10y term premium, and the generic 2s30s. These cover the bits of the curve that move most.

RSB prediction rule

RSA Retail Savings Bond rates are reset at the start of each calendar month, anchored to the preceding month's end-of-month government bond yields plus a spread. We project next month's 2/3/5-year Fixed Rate by:

  • Measuring the month-to-date change in ZARGB2, ZARGB3 and ZARGB5 yields (current level vs. last business day of the prior month).
  • Rounding that change to the nearest 0.25% — the smallest quantum RSB uses when adjusting rates.
  • Adding the rounded delta to the current RSB rate for each term.

The prediction is model-free (no regression, no scaling) and deliberately conservative: the quantum rounding absorbs small noise, and the spread column shows how the RSB-over-government-bond cushion is moving day-by-day. Treasury retains full discretion — this is an indicative projection, not a forecast.

Business-day calendar

Every internal "N business days ago" calculation respects South African public holidays (Good Friday, Family Day, Freedom Day, Workers' Day, Youth Day, Women's Day, Heritage Day, Day of Reconciliation, Christmas, Day of Goodwill) in addition to weekends. We use the holidays Python package with the ZA country code — it handles the Sunday-to-Monday observance shift mandated by the SA Public Holidays Act.

Consequences: the JSE backfill script skips known no-data dates; ingest_jse.py walks back through SA business days when the current day's file isn't up yet; and the RSB prediction panel reports "observed / expected SA business days month-to-date" so you can see at a glance whether the data pipeline has caught up.

Dedupe, idempotence, auditability

  • Append-only DB. Every ingest is an upsert — no deletes. Re-running any ingest for the same date is a no-op.
  • HTML snapshots. Every scrape saves its raw HTML to html_archive/ so any parsing regression can be replayed against the original page.
  • Source runs log. source_runs / ingestion_log records every fetch with its HTTP code, row count and status; surfaced via /api/v1/ingest/status.
  • Data caveats. Yields are close-of-day mark-to-market, not live. bond_maturity carries mixed date formats (legacy DD/MM/YYYY vs JSE YYYY-MM-DD) — parse defensively.

Licence

API data under CC BY 4.0 — please attribute "Data: rbond.co.za". Source code under MIT. No paywalls, no contracts, no rate-limit walls unless you're hammering it.

Data accuracy & disclaimer

All rates, spreads and derived metrics published on rbond.co.za are provided on an errors-and-omissions-excepted (E&OE) basis. Data is sourced in good faith from the JSE YieldX Daily Stats file, the South African Reserve Bank, and admin-curated spreadsheets; we make no warranty — express or implied — as to its accuracy, completeness, timeliness or fitness for any particular purpose.

Quotes are close-of-day mark-to-market, not live, and may differ from the prints your dealer gives you. Forward rates, breakevens and synthetic curves (ZARGB, ZARGBIL) are derived from observed instruments via the methods documented above and carry additional model risk.

Nothing published here constitutes investment, tax, accounting or legal advice. This site is a research and education resource. Do not trade, price, hedge, or settle any instrument solely on the basis of numbers displayed here. Use at your own risk; verify against your prime broker, custodian, or the primary source before taking action. Neither rbond.co.za nor its curator accepts liability for any loss, direct or consequential, arising from reliance on this information.

Admin

site usage

—

Enter the admin key (matches RBOND_ADMIN_KEY on the backend). Stored only in this browser via sessionStorage.

Requests per day —
Traffic by hour of day (SAST)
Top endpoints
Top referers
Top user-agents
© 2018–2026 rbond.co.za — curated in Pretoria — Contact · info@rbond.co.za Data: JSE YieldX & SARB E&OE · indicative only · not investment advice ·