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.