Seðlabanki Íslands (Central Bank of Iceland)

SkillDev tools

Central Bank of Iceland — SDMX balance sheets + new credit, key interest rates via gagnabanki, and FX intervention (kaup/sala, turnover, reserves, ISK/EUR).

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Seðlabanki Íslands (Central Bank of Iceland) skill

What this skill tells your AI

The instructions your AI receives, as published by jokull/icelandic-data in .agents/skills/sedlabanki/SKILL.md and read by ahel’s review.

Monetary and financial statistics: interest rates, balance sheets, and new credit.

Important: Both sedlabanki.is and gagnabanki.is are JavaScript SPAs (Blazor / Angular). Simple HTTP fetches return empty HTML shells. Use Playwright for data extraction.

Data Scope

Three core datasets covering Iceland's monetary system:

0. Key Interest Rates (Meginvextir Seðlabankans)

Type: Daily observations Period: Jan 2007 - present (18+ years) Frequency: Daily (business days)

Central Bank policy rates:

  • Meginvextir / Key rate (7-day term deposit rate) — the main policy rate since 2014
  • Vextir á daglánum / Overnight lending rate
  • Vextir á viðskiptareikningum / Current account rate
  • Also: 7-day collateralised lending, 28-day CBI CDs, REIBOR rates

Source: gagnabanki.is Power BI embed (report key: interests)

Data Portal: gagnabanki.is

The Central Bank's data portal at gagnabanki.is is an Angular SPA wrapping Power BI reports.

Architecture:

  • Config API: GET https://gagnabanki.is/api/config — returns all report IDs, time series keys, filters
  • Embed token: GET https://gagnabanki.is/api/embed/{groupId}/{reportId}
  • Group ID: 05060786-7f48-4442-8981-314b262d68a7
  • Data flows through Power BI's WABI backend (*.pbidedicated.windows.net)

Interest Rate Report:

  • Config key: interests
  • Report ID (live): 2b28c90f-7da7-4fd0-bd9b-f87ffeddbb07
  • Dataset: e75e5a3b-6118-4899-a266-62550d1b32e4
  • Default series: keys 24, 28, 17923
  • All series keys: [17923, 28, 75, 55, 24, 3459, 17922, 4125, 289, 3460, 3461, 3458]

Extraction method: Playwright intercepts Power BI querydata responses from *.pbidedicated.windows.net. Data arrives in DSR (DataShapeResult) format with compressed values.

# Fetch interest rates to CSV
uv run python scripts/sedlabanki_rates.py

# Output as JSON
uv run python scripts/sedlabanki_rates.py --json

Output: data/processed/sedlabanki_rates.csv with columns: date, series, value

1. Balance Sheets (Efnahagur innlánsstofnana) — via SDMX

Type: Stock (end-of-month positions) Period: Sept 1993 - present (387+ months, 32 years) Frequency: Monthly

Full balance sheet of deposit-taking institutions:

  • Assets (Eignir)
    • Domestic: Loans (indexed/non-indexed), deposits, securities, derivatives
    • Foreign: Same breakdown for foreign-held assets
  • Liabilities (Skuldir)
    • Deposits (demand/term), debt securities, borrowing, equity

2. New Credit (Ný útlán) — via Library Download

Type: Flow (net new lending minus prepayments) Period: Jan 2013 - present (155+ months, 13 years) Frequency: Monthly

New lending by sector and index type:

  • Sectors: Non-financial corps (by industry), Financial corps, Government, Households
  • Household detail: Mortgages (fixed/floating rate), car loans
  • Index types: Indexed (verðtryggð), Non-indexed, Foreign currency

3. FX Intervention (Gjaldeyriskaup/-sala) — via XML Time Series

Type: Flow (daily CBI FX purchases/sales, market turnover) + stock (reserves) Period: Daily series since Jan 2009; reserves monthly since Jan 1994 Frequency: Daily (business days), aggregated monthly downstream

CBI foreign-exchange intervention — the answer to "did the CBI defend the króna?" questions (e.g. the COVID 2020-21 period and the 2025 carry-trade era):

  • TS 285 Gjaldeyrissala SÍ í ISK — CBI sales of foreign currency, M.kr. (positive = CBI sells FX)
  • TS 287 Gjaldeyriskaup SÍ í ISK — CBI purchases of foreign currency, M.kr.
  • TS 284 Heildarvelta á innlendum gjaldeyrismarkaði — total interbank FX market turnover, M.kr.
  • TS 282 Same turnover, M.eur
  • TS 4064 Evra, skráð miðgengi — official EUR mid rate (ISK per EUR), daily
  • FX reserves (Gjaldeyrisforði) — from the CBI's own balance sheet workbook ("Sedlabanki" sheet, row "Liðir til skýringar: Gjaldeyrisforði"), monthly M.kr.

Source: https://sedlabanki.is/xmltimeseries/Default.aspx — plain HTTP, directly fetchable (no Playwright, no gagnabanki proxy) for the daily series. The reserves workbook is a sedlabanki.is/library item fetched through the gagnabanki proxy (see Download URLs).

Fetch: uv run python scripts/sedlabanki_fx.py fetch Output: data/processed/sedlabanki_fx_intervention.csv — monthly rows with date, net_purchases_mkr, turnover_mkr, reserves_mkr, isk_per_eur, item_en. net_purchases_mkr = kaup − sala (negative = CBI net seller, defending the króna; positive = accumulating reserves). Reserves and ISK/EUR are month-end; the daily flow series are summed per month.

Known COVID-era pattern (verified against this data): the CBI was a heavy net SELLER of FX from March 2020 through spring 2021 (net −132.7 bn kr in 2020, −22.7 bn kr in 2021; monthly peaks Oct 2020 −38.3 bn kr), selling reserves to support the króna as ISK/EUR rose from ~135 (Dec 2019) to a trough ~164 (Oct 2020), then recovered to ~146-150 through 2021. It flipped to a net BUYER from 2025 (67.9 bn kr bought in 2025, matching the 67.9 ma.kr. stated in Peningamál 2026/1).

API

Portal: https://gagnabanki.is/report/monetary Download Proxy: https://gagnabanki.is/api/download (POST)

⚠️ fr.sedlabanki.is is not fetchable directly — the proxy is mandatory

The SDMX host resolves (217.151.180.10, a Vodafone Iceland xDSL pool address) but black-holes on both 80 and 443 from the public internet: connections hang until timeout rather than being refused. It has never been publicly reachable — archive.org has zero captures of it, ever.

The server itself is alive and serving current data. Seðlabanki's own backend reaches it, so every SDMX fetch must go through POST https://gagnabanki.is/api/download, which performs the GET from inside their network. This is a hard requirement, not a convenience wrapper.

The SDMX URL below is therefore a proxy payload, not a URL you can curl. If you curl it directly you will get a ConnectTimeout and conclude the service is dead. It isn't.

The block mechanism (geo-restriction, source-IP allowlist, or a public A record fronting a firewalled host) is unverified — only the effect is established.

Download URLs

DatasetURL TypeDirect?URL
Balance SheetsSDMXproxy onlyhttps://fr.sedlabanki.is/sdmx/v2/table/IS2_EXT/INN_BALANCE_SHEETS_TOTAL/1.0?format=xlsx
New CreditLibrary✅ directhttps://sedlabanki.is/library?itemid=b73e42d6-ba32-4eb3-b39e-1c70d2e45aec
FX market (daily)XML time seriesdirecthttps://sedlabanki.is/xmltimeseries/Default.aspx?DagsFra=2009-01-01&GroupID=8&Type=csv
EUR mid rate (daily)XML time seriesdirecthttps://sedlabanki.is/xmltimeseries/Default.aspx?DagsFra=2009-01-01&TimeSeriesID=4064&Type=csv
CBI balance sheet (reserves)Libraryproxy onlyhttps://sedlabanki.is/library?itemid=c0126d81-fd88-42bd-aee3-449e09b9089f

XML Time Series endpoint (xmltimeseries)

Separate from the SDMX service: a simple public GET at sedlabanki.is (NOT www. — that host 301s), returning Type=csv as a headerless semicolon CSV: group;group_name;series_id;;series_name;description;date;value. Dates are M/D/YYYY h:mm:ss AM — parse with %m/%d/%Y %I:%M:%S %p. Parameters: DagsFra/DagsTil (YYYY-MM-DD, or LATEST/TODAY), GroupID or TimeSeriesID, Type=xml|csv. See the full catalog at https://sedlabanki.is/gagnatorg/xml-gogn/ (GroupID 8 = "Velta á gjaldeyrismarkaði", the FX market group; the official mid rates are GroupID 9).

Fetching Data

# Balance Sheets (32 years of monthly stock data)
curl 'https://gagnabanki.is/api/download' \
  -X POST -H 'Content-Type: application/json' \
  --data-raw '{"url":"https://fr.sedlabanki.is/sdmx/v2/table/IS2_EXT/INN_BALANCE_SHEETS_TOTAL/1.0?format=xlsx"}' \
  -o data/raw/sedlabanki/balance_sheets.xlsx

# New Credit (13 years of monthly flow data)
curl 'https://gagnabanki.is/api/download' \
  -X POST -H 'Content-Type: application/json' \
  --data-raw '{"url":"https://sedlabanki.is/library?itemid=b73e42d6-ba32-4eb3-b39e-1c70d2e45aec"}' \
  -o data/raw/sedlabanki/newcredit.xlsx

Data Structure

Balance Sheets Excel Layout

  • Sheet: INN_BALANCE_SHEETS_TOTAL
  • Row 3: Date headers (1993-09, 1993-10, ...)
  • Row 4+: Balance sheet line items with hierarchy (indented)
  • Column B: Row labels (Icelandic / English)
  • Column C+: Monthly values in M.kr.

Key line items:

Eignir samtals / Assets, total
  Innlendar eignir / Domestic assets
    Lán / Loans
      Útlán / Loans outstanding
      Niðurfærslur / Provisions (negative)
  Erlendar eignir / Foreign assets
Skuldir samtals / Liabilities, total
  Innlán / Deposits
  Markaðsskuldabréf / Debt securities issued
  Eigið fé / Equity

New Credit Excel Layout

  • Sheet: I
  • Row 10: Header with "M.kr." and dates
  • Row 11+: Sector rows
  • Repeating blocks for: Total, Non-indexed, Indexed, Foreign currency

Sector hierarchy:

Ný útlán / New credit (total)
├── Atvinnufyrirtæki / Non-financial corporations
│   ├── Landbúnaður / Agriculture
│   ├── Fiskveiðar / Fisheries
│   ├── Iðnaður / Manufacturing
│   └── ...
├── Fjármálageiri / Financial corporations
├── Hið opinbera / Government
├── Heimili / Households
│   ├── Lán með veði í íbúð / Mortgage loans
│   │   ├── Breytilegir vextir / Floating rate
│   │   └── Fastir vextir / Fixed rate
│   └── Bílalán / Car loans
└── Erlendur aðili / Non-residents

FX Intervention CSV Layout

data/processed/sedlabanki_fx_intervention.csv — one row per month:

ColumnTypeMeaning
datedate (YYYY-MM-01)month (flows are monthly sums; stocks are month-end)
net_purchases_mkrfloatCBI kaup − sala, M.kr. negative = CBI net seller of FX
turnover_mkrfloatinterbank FX market total turnover, M.kr.
reserves_mkrfloatmonth-end FX reserves (Gjaldeyrisforði), M.kr.
isk_per_eurfloatmonth-end official EUR mid rate
item_enstrdescriptive label of the row

CBI Balance Sheet Excel Layout (for reserves)

  • Sheets: FAME Persistence2, Sedlabanki
  • Sedlabanki sheet: row 9 = date headers (1994-01-31 00:00:00, …), row 60 = Liðir til skýringar: Gjaldeyrisforði (erlendar eignir, a-f) — the FX reserves memo line, M.kr.

Processing Pipeline

# Process balance sheets + new credit to tidy CSVs
uv run python scripts/sedlabanki.py

# Fetch FX intervention data (raw + processed monthly CSV)
uv run python scripts/sedlabanki_fx.py fetch

# List the daily FX series available upstream
uv run python scripts/sedlabanki_fx.py list

Outputs:

  • data/processed/sedlabanki_newcredit.csv - New credit by sector
  • data/processed/sedlabanki_balance_sheets.csv - Balance sheet items
  • data/processed/sedlabanki_fx_intervention.csv - FX intervention (monthly)

Icelandic Terms

IcelandicEnglish
InnlánsstofnanirDeposit institutions (banks)
EfnahagurBalance sheet
EignirAssets
SkuldirLiabilities
ÚtlánLoans (outstanding)
Ný útlánNew credit (flow)
InnlánDeposits
VerðtryggðIndexed (to inflation)
ÓverðtryggðNon-indexed
HeimiliHouseholds
AtvinnufyrirtækiNon-financial corporations
GjaldeyriskaupFX purchases (CBI buys foreign currency)
GjaldeyrissalaFX sales (CBI sells foreign currency)
GjaldeyrisforðiFX reserves
Velta á gjaldeyrismarkaðiFX market turnover
Skráð miðgengiOfficial mid rate

Data Notes

  1. Stock vs Flow: Balance sheets are end-of-month stocks; New credit is monthly flow (new loans minus prepayments)

  2. Indexation: Icelandic loans are either indexed to CPI (verðtryggð) or non-indexed. This distinction is critical for analyzing credit conditions.

  3. Provisional data: Latest months are provisional, revised when annual accounts published

  4. Units: All values in M.kr. (million ISK)

  5. Source: Data collection per Act 92/2019 on the Central Bank of Iceland

  6. Encoding. Icelandic chars (þ, ð, æ, ö) appear in sector names (Heimili, Atvinnufyrirtæki, verðtryggð) across both SDMX exports and the gagnabanki Power BI payload. Read CSV with encoding="utf-8" (the Excel-derived files are utf-8-sig); write JSON with ensure_ascii=False.

  7. FX sign convention. In sedlabanki_fx_intervention.csv, net_purchases_mkr = kaup − sala, so a negative value means the CBI sold FX that month (net) — the direction that defends/dampens the króna. Series 285 (sala) and 287 (kaup) are both reported as positive numbers upstream; the sign appears only in the net column.

  8. FX provisional data. The daily FX market numbers are provisional ("nýjustu tölur eru bráðabirgðatölur") and revised; the daily series update each business day at 16:00 with a two-day lag.

  9. Reserves workbook layout is positional. The Sedlabanki sheet reserves row (60) and date row (9) are assumed by row number in scripts/sedlabanki_fx.py. If the CBI reorders the workbook, the reserves column breaks — the health test only catches reachability, not the row numbers.

  10. XML endpoint quirks. Use sedlabanki.is (the www. host 301s). The CSV is headerless and semicolon-delimited with an empty 4th field, and dates are US-format M/D/YYYY h:mm:ss AM. The LATEST keyword returns only the most recent observation — use explicit DagsFra/DagsTil for ranges.

Evidence Integration

-- Example: Household mortgage trends
SELECT date, sector_en, value_mkr
FROM read_csv('../data/processed/sedlabanki_newcredit.csv')
WHERE sector_en LIKE 'Housholds%mortgage%'
ORDER BY date

-- Example: Total bank assets over time
SELECT date, value_mkr as assets_mkr
FROM read_csv('../data/processed/sedlabanki_balance_sheets.csv')
WHERE item_en = 'Assets, total'
ORDER BY date

-- Example: CBI FX intervention through COVID (net seller = negative)
SELECT date, net_purchases_mkr, turnover_mkr, reserves_mkr, isk_per_eur
FROM read_csv('../data/processed/sedlabanki_fx_intervention.csv')
WHERE date BETWEEN DATE '2020-01-01' AND DATE '2021-12-31'
ORDER BY date

Direct policy rate and household lending CLI

scripts/sedlabanki_household.py rates|mortgages --out /path/result.json. Policy rate can be fetched without Power BI: XML timeseries TimeSeriesID=17923, Type=csv, explicit DagsFra. Verified September 2026. Mortgages preserves bank/pension lender coverage and indexation; bank residential mortgages and pension household lending are distinct scopes. Raw downloads archived by hash; bank workbook labels and pension totals are checked.

FX adapter corrections and reserve liquidity (September 2026)

sedlabanki_fx.py fetch now retains gross purchases_mkr and sales_mkr alongside net purchases. It preserves missing values, archives raw downloads by hash, and reads reserve dates and values from the same workbook column. The old reader erroneously paired a date with the next month's reserve value; regenerate cached reserve outputs. FX trades are not all discretionary intervention: regular reserve accumulation is included.

uv run python scripts/sedlabanki_fx.py liquidity exports sedlabanki_reserve_liquidity.csv: date, reserve_assets_mkr, net_drains_12m_mkr. Source: https://cb.is/library/?itemid=6be01de6-0741-4ef9-9b56-9986e5b46ae7 (linked from https://cb.is/statistics/international-reserves/). Sheet I column B is gross reserves; sheet II columns B+V+AE are scheduled loans/deposits/securities, forwards/futures and other net flows. Flip source sign so positive net drains mean expected outflows. Do not add maturity subcategories again. Units M.kr., month-end; contingent drains are excluded. Latest figures preliminary. This is a history workbook; if latest observation exceeds 75 days, the CLI fails and the download link must be rediscovered. Gross reserves less scheduled drains is not an official reserve-adequacy measure.

Signals

GitHub stars
53
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
sedlabanki
Source
github.com/jokull/icelandic-data