Ecbjure — Pure Clojure ECB client: FX rates, EURIBOR, inflation, and SDMX

I’ve just released ecbjure, a pure Clojure library for accessing European Central Bank data.

Design goals:

  • Only dependency: data.csv. All HTTP, ZIP, XML, and date handling uses the JDK directly.

  • The converter is a plain immutable map — no mutable state, no opaque objects. Inspect it in the REPL, pass it through pipelines, compose it freely.

  • Throws on missing dates (weekends/holidays) unless you explicitly opt in to a fallback strategy (:nearest, :before, :after). No silent interpolation or forward-fill — if gap-filling happens, it happens visibly in code you wrote.

  • SDMX client gives access to the full ECB statistical catalogue (~100 dataflows), with predefined constants for common series and convenience builders for custom queries.

FX conversion:

(require '[clojure-finance.ecbjure.fx :as fx])
(import '[java.time LocalDate])

(def c (fx/make-converter))
(fx/convert c 100 "USD" "JPY")                          ;; => 15791.89
(fx/convert c 100 "USD" "EUR" (LocalDate/of 2013 3 21)) ;; => 77.46
(fx/get-rate c "USD" (LocalDate/of 2014 3 28))          ;; => 1.3759
(fx/cross-rate c "USD" "GBP" (LocalDate/of 2014 3 28))  ;; => 0.5999

SDMX — interest rates, inflation, and more:

(require '[clojure-finance.ecbjure.sdmx :as sdmx])

(sdmx/get-series sdmx/euribor-3m {:last-n 3})
(sdmx/get-series sdmx/hicp-euro-area {:start-period "2020-01"})
(sdmx/get-series (sdmx/exr-series-key {:currency #{"USD" "JPY"}}) {:last-n 5})

Optional tech.ml.dataset integration for wide/long format output (gated behind an alias — never pulled into your project unless you need it).

com.github.clojure-finance/ecbjure {:mvn/version "0.1.4"}

GitHub: https://github.com/clojure-finance/ecbjure

cljdoc: https://cljdoc.org/d/com.github.clojure-finance/ecbjure/0.1.4

Feedback, issues, and PRs welcome.