The State Bank of Pakistan's policy rate sets the price of money in Pakistan. PakDataHub records every change, and the SBP reverse-repo rate that preceded it back to 1956.
The last cycle, in numbers
From rates.policy_target:
| Period | Move |
|---|---|
| May 2015 | 6.50%, then down to 5.75% (May 2016) |
| 2018-2019 | Hikes from 6.00% to 13.25% (July 2019) |
| Mar-Jun 2020 | COVID cuts to 7.00% |
| Sep 2021 - Jun 2023 | Tightening to a record 22.00% (27 June 2023) |
| Jun 2024 - Dec 2025 | Cuts: 20.5 → 19.5 → 17.5 → 15 → 13 → 12 → 11 → 10.50% |
| 28 Apr 2026 | Raised to 11.50% |
The current corridor has an overnight repo floor of 10.50% (rates.policy.floor) and a reverse-repo ceiling of 12.50% (rates.policy.ceiling).
Get it
# Every decision (the series only changes on decision dates)
curl -H "X-API-Key: pk_live_xxx" \
"https://api.pakdatahub.com/v1/series/rates.policy_target?sort=asc"
# The long view: SBP reverse repo since 1956
curl -H "X-API-Key: pk_live_xxx" \
"https://api.pakdatahub.com/v1/series/rates.reverse_repo?sort=asc"
Compare it with inflation
The real policy rate (policy rate minus inflation) is what the SBP actually steers:
import pandas as pd
k = "pk_live_xxx"
u = lambda s: f"https://api.pakdatahub.com/v1/series/{s}?format=csv&sort=asc&limit=10000&api_key={k}"
rate = pd.read_csv(u("rates.policy_target"), parse_dates=["date"]).set_index("date")["value"]
cpi = pd.read_csv(u("inflation.cpi.national.yoy"), parse_dates=["date"]).set_index("date")["value"]
real = (rate.resample("ME").ffill() - cpi).dropna()
print(real.tail(12).round(2))
Market rates track the policy rate closely. See KIBOR since 2005 and T-Bill auction yields.