Home / Blog / Real cash rate, real wages, real return: signals the agencies don't publish
2026-05-20 · Harry Vass
Real cash rate, real wages, real return: signals the agencies don't publish
The RBA publishes the nominal cash rate. The ABS publishes inflation. Nobody publishes the cross-product. Here's why ausdata.io's signals exist.
Every monetary-policy commentary in Australia rests on the real cash rate, the nominal RBA cash rate minus trimmed-mean CPI. It's the number that tells you whether policy is actually restrictive, accommodative, or neutral.
Nobody publishes it.
The RBA publishes the nominal cash rate in F1.1. The ABS publishes trimmed-mean CPI in 6401.0. The arithmetic between them is left as an exercise for the analyst.
This post is about why we built signals, what's in the catalogue, and where they fall short.
<!-- IMG: real-cash-rate-chart-2020-2026.png -->
What a signal is
A signal is a derived metric that joins two or more source agencies. The agencies don't publish the join because their mandates are vertical, RBA publishes monetary policy data, ABS publishes statistical aggregates, neither publishes the relationship between them.
The ones live in ausdata.io today:
| Signal | Inputs | Endpoint |
|--|--|--|
| Real cash rate | RBA F1.1 + ABS 6401.0 (trimmed mean) | /v1/real-rate-regime |
| Real wages | ABS 6345.0 (WPI) + ABS 6401.0 (CPI, all-groups YoY) | /v1/real-wages |
| Cost of living | ABS 6467.0 Selected Living Cost Indexes, joined to household type | /v1/cost-of-living |
| Housing affordability | ABS 6416.0 + ABS 6302.0 + RBA F5 | /v1/housing-affordability |
| Gender pay context | WGEA + ABS 6302.0 (AWE) | /v1/gender-pay-context |
| Economic dashboard | RBA + ABS + AEMO snapshot | /v1/economic-dashboard |
The cash rate example, end to end
from ausdata import Ausdata
api = Ausdata()
print(api.get("/v1/real-rate-regime"))
{
"data": {
"nominal_cash_rate_pct": 4.35,
"trimmed_mean_cpi_yoy_pct": 4.0,
"real_cash_rate_pct": "<latest>",
"period": "2026-03",
"interpretation": "marginally restrictive"
},
"meta": {
"sources": [
{"name": "RBA", "url": "https://www.rba.gov.au/statistics/cash-rate/", "attribution": "© Reserve Bank of Australia, CC-BY 4.0"},
{"name": "ABS", "url": "https://www.abs.gov.au/statistics/economy/price-indexes-and-inflation/consumer-price-index-australia", "attribution": "© Commonwealth of Australia (Australian Bureau of Statistics), CC-BY 4.0"}
],
"retrieved_at": "<iso-timestamp>"
}
}
You get the inputs, the output, the period both are aligned to, the citation for each source, and a one-word interpretation that's deliberately conservative.
The "interpretation" is the part that needs a footnote. We classify above +1pp as "restrictive", below -1pp as "accommodative", in between as "neutral" or "marginally" qualified. It's a simplification, the RBA itself doesn't publish a neutral rate estimate, and the literature puts it anywhere from 0.5% to 1.5% real. The string is there for journalists writing for general audiences. If you're modelling, ignore it and use the numbers.
Real wages, the one nobody wants to talk about
import pandas as pd
df = pd.DataFrame(api.real_wages(limit=20)["data"])
df["period"] = pd.to_datetime(df["period"])
df.set_index("period")[["wpi_yoy_pct", "cpi_yoy_pct", "real_wage_growth_pct"]].plot()
This is the chart every wage-negotiation news cycle wants and almost never includes. WPI YoY (the nominal wage rise), CPI YoY (the price level), and the difference. For a long stretch through 2022-2024, that difference was negative, real wages fell. Signals make that one line of pandas.
The ABS does publish the underlying series. They don't compute the difference for you because 6345.0 and 6401.0 are different releases with different schedules. We do the period-alignment internally and surface the joined series.
Why this lives in the paid API, not the free MCPs
The free sister MCPs (rba-mcp, abs-mcp, etc.) return raw data, agency-by-agency. They're MIT-licensed, on PyPI, and they will never join across sources, that's an intentional architectural rule.
Signals live in the paid ausdata-api because:
- They're stateful. Joining ABS quarterly CPI to RBA monthly cash rate requires period normalisation, gap-filling rules, and a cache that survives ABS release-day traffic spikes.
- They need a maintenance contract. When the ABS reformats 6401.0, they did in late 2025, the signal breaks. The free sisters survive because they're raw. The signal needs a human watching.
- They're where the value is. Anyone can re-implement
/v1/real-rate-regimein twenty lines of pandas. Many people would rather not.
Honesty pass, what signals won't give you
Real cash rate is a single national number. It won't tell you:
- The real mortgage rate facing a specific borrower (use RBA F6 and your lender's standard variable rate).
- Inflation expectations forward-looking (use RBA Statement on Monetary Policy or TIPS-equivalent inflation swaps).
- Regional price differences. CPI is national; the Selected Living Cost Indexes split by household type, not by city.
- Live mortgage origination data (that's APRA monthly, lagged 6 weeks).
If you need any of those, the free sister MCPs will get you the underlying data, you do the maths.
Pricing
- Free: 500 calls/month, every signal endpoint included.
- Analyst: $29/mo, 10k calls, for journalists and researchers who hit signals daily.
- Pro: $99/mo, 100k calls, webhooks on release-day, for newsroom data desks and policy shops.
Every tier gets every signal. We don't gate /v1/real-rate-regime behind Pro. The tiering is purely about volume and per-minute rate.
Grab a free key at ausdata.io.