timeprice 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +18 -0
  3. data/DATA_LICENSES.md +31 -0
  4. data/LICENSE.txt +21 -0
  5. data/NOTICE +12 -0
  6. data/README.md +187 -0
  7. data/data/cpi/eu.json +401 -0
  8. data/data/cpi/jp.json +75 -0
  9. data/data/cpi/uk.json +508 -0
  10. data/data/cpi/us.json +480 -0
  11. data/data/cpi/vn.json +40 -0
  12. data/data/fx/usd/1983.json +12 -0
  13. data/data/fx/usd/1986.json +12 -0
  14. data/data/fx/usd/1987.json +12 -0
  15. data/data/fx/usd/1988.json +12 -0
  16. data/data/fx/usd/1989.json +12 -0
  17. data/data/fx/usd/1990.json +12 -0
  18. data/data/fx/usd/1991.json +12 -0
  19. data/data/fx/usd/1992.json +12 -0
  20. data/data/fx/usd/1993.json +12 -0
  21. data/data/fx/usd/1994.json +12 -0
  22. data/data/fx/usd/1995.json +12 -0
  23. data/data/fx/usd/1996.json +12 -0
  24. data/data/fx/usd/1997.json +12 -0
  25. data/data/fx/usd/1998.json +12 -0
  26. data/data/fx/usd/1999.json +1566 -0
  27. data/data/fx/usd/2000.json +1542 -0
  28. data/data/fx/usd/2001.json +1533 -0
  29. data/data/fx/usd/2002.json +1539 -0
  30. data/data/fx/usd/2003.json +1539 -0
  31. data/data/fx/usd/2004.json +1563 -0
  32. data/data/fx/usd/2005.json +1554 -0
  33. data/data/fx/usd/2006.json +1539 -0
  34. data/data/fx/usd/2007.json +1539 -0
  35. data/data/fx/usd/2008.json +1545 -0
  36. data/data/fx/usd/2009.json +1545 -0
  37. data/data/fx/usd/2010.json +1560 -0
  38. data/data/fx/usd/2011.json +1554 -0
  39. data/data/fx/usd/2012.json +1545 -0
  40. data/data/fx/usd/2013.json +1539 -0
  41. data/data/fx/usd/2014.json +1539 -0
  42. data/data/fx/usd/2015.json +1545 -0
  43. data/data/fx/usd/2016.json +1554 -0
  44. data/data/fx/usd/2017.json +1539 -0
  45. data/data/fx/usd/2018.json +1539 -0
  46. data/data/fx/usd/2019.json +1539 -0
  47. data/data/fx/usd/2020.json +1551 -0
  48. data/data/fx/usd/2021.json +1560 -0
  49. data/data/fx/usd/2022.json +1554 -0
  50. data/data/fx/usd/2023.json +1539 -0
  51. data/data/fx/usd/2024.json +1545 -0
  52. data/data/fx/usd/2025.json +1284 -0
  53. data/data/fx/usd/2026.json +449 -0
  54. data/exe/timeprice +7 -0
  55. data/lib/timeprice/cli.rb +179 -0
  56. data/lib/timeprice/compare.rb +99 -0
  57. data/lib/timeprice/data_loader.rb +59 -0
  58. data/lib/timeprice/errors.rb +49 -0
  59. data/lib/timeprice/exchange.rb +98 -0
  60. data/lib/timeprice/inflation.rb +89 -0
  61. data/lib/timeprice/sources.rb +128 -0
  62. data/lib/timeprice/version.rb +5 -0
  63. data/lib/timeprice.rb +25 -0
  64. metadata +150 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 8b1b427948a0943958a53ce1820f72eb27b7dc41de61c9e216194aae9c03183d
4
+ data.tar.gz: 5daac2f9428564420379cc33db7893a8b9dbf0f0344355c1439636e8abf647a7
5
+ SHA512:
6
+ metadata.gz: 14ec61a1a5cc71b33fb0de18bbbfc19ec152697d4f8ddcd2f14cf2d739e80571512ccb067d939f60207c0b2abc2971a03f32272cd2468d273782a1022d9d0dbb
7
+ data.tar.gz: 5d7fae9eb6583d38f2245830aa66a0ce61fec10aa02cdec600005aea185635d0312c80a7d3bec62f0067a42651839a2af4de4d3c67335b1eb2a649dfe35b2419
data/CHANGELOG.md ADDED
@@ -0,0 +1,18 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
+
6
+ ## [Unreleased]
7
+
8
+ ## [0.1.0] - 2026-05-11
9
+
10
+ ### Added
11
+ - Initial gem release.
12
+ - Library API: `Timeprice.inflation`, `Timeprice.exchange`, `Timeprice.compare`, returning `Data.define` value objects.
13
+ - CLI (`timeprice`): `inflation`, `fx`, `compare`, `sources`, `version`, all with `--json`.
14
+ - Bundled offline data for US, UK, Eurozone, Japan, Vietnam CPI and USD-base FX (EUR/GBP/JPY/VND).
15
+ - ECB reference rates via Frankfurter; VND via World Bank annual broadcast.
16
+ - Monthly GitHub Actions workflow that refreshes bundled data and opens a PR.
17
+ - Golden snapshot tests against real bundled data; property-style round-trip tests for inflation and FX.
18
+ - Attribution surfaces: `DATA_LICENSES.md`, `NOTICE`, `timeprice sources` CLI command.
data/DATA_LICENSES.md ADDED
@@ -0,0 +1,31 @@
1
+ # Data Licenses & Attribution
2
+
3
+ `timeprice` redistributes data from several public statistical agencies. The
4
+ gem's own **code** is MIT-licensed (see `LICENSE.txt`); the **data** under
5
+ `data/` is governed by the licenses below. If you redistribute results derived
6
+ from this gem in a product or publication, reproduce the relevant attribution
7
+ string.
8
+
9
+ | Source | Series | License / Terms | License URL | Attribution string |
10
+ |--------|--------|----------------|-------------|--------------------|
11
+ | U.S. Bureau of Labor Statistics | CPI-U `CUUR0000SA0` (US CPI) | U.S. Government work — public domain. BLS asks (does not require) that BLS be cited as the source. | https://www.bls.gov/bls/linksite.htm | Data: U.S. Bureau of Labor Statistics |
12
+ | UK Office for National Statistics | `D7BT` (UK CPI all-items) | Open Government Licence v3.0 | https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/ | Contains public sector information licensed under the Open Government Licence v3.0 |
13
+ | Eurostat | `prc_hicp_midx` (Euro area HICP) | Eurostat reuse policy — free reuse with source attribution | https://ec.europa.eu/eurostat/about-us/policies/copyright | Source: Eurostat |
14
+ | World Bank | `FP.CPI.TOTL` (JP CPI fallback) | Creative Commons Attribution 4.0 International (CC BY 4.0) | https://datacatalog.worldbank.org/public-licenses#cc-by | Source: World Bank, FP.CPI.TOTL |
15
+ | World Bank | `FP.CPI.TOTL` (VN CPI) | Creative Commons Attribution 4.0 International (CC BY 4.0) | https://datacatalog.worldbank.org/public-licenses#cc-by | Source: World Bank, FP.CPI.TOTL |
16
+ | European Central Bank (via Frankfurter) | Daily reference rates, USD base, EUR/GBP/JPY | ECB reference rates — free reuse; Frankfurter is a non-commercial republisher with no separate license | https://www.ecb.europa.eu/services/disclaimer/html/index.en.html | FX data: European Central Bank reference rates via Frankfurter |
17
+ | World Bank | `PA.NUS.FCRF` (VND annual average FX, broadcast daily) | Creative Commons Attribution 4.0 International (CC BY 4.0) | https://datacatalog.worldbank.org/public-licenses#cc-by | VND FX: World Bank, PA.NUS.FCRF |
18
+
19
+ ## Notes
20
+
21
+ - License URLs were last reviewed against published text at the time of v0.1.0.
22
+ Terms drift; if you have a stricter compliance requirement, re-check directly
23
+ with the publisher.
24
+ - The Vietnam VND FX series is the **annual average** broadcast to every day in
25
+ the year — it is intentionally not a daily market rate. Do not use it for
26
+ intraday or trade-execution purposes.
27
+ - Eurostat HICP is harmonized across the Eurozone and is **not** the same as
28
+ any national CPI. We use it for the `EU` country code; national CPIs are out
29
+ of scope for v0.1.
30
+ - `timeprice sources` (CLI) prints these attribution strings plus the current
31
+ bundled coverage at runtime — useful for downstream-product compliance.
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 patrick204nqh
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/NOTICE ADDED
@@ -0,0 +1,12 @@
1
+ timeprice
2
+ Copyright (c) 2026 patrick204nqh
3
+
4
+ This product redistributes public statistical data from the following sources.
5
+ Each source retains its own license; see DATA_LICENSES.md for details and URLs.
6
+
7
+ Data: U.S. Bureau of Labor Statistics
8
+ Contains public sector information licensed under the Open Government Licence v3.0
9
+ Source: Eurostat
10
+ Source: World Bank, FP.CPI.TOTL
11
+ FX data: European Central Bank reference rates via Frankfurter
12
+ VND FX: World Bank, PA.NUS.FCRF
data/README.md ADDED
@@ -0,0 +1,187 @@
1
+ # timeprice
2
+
3
+ Offline historical inflation & FX for Ruby — bundled data, no API keys, monthly auto-refresh.
4
+
5
+ [![CI](https://github.com/patrick204nqh/timeprice/actions/workflows/ci.yml/badge.svg)](https://github.com/patrick204nqh/timeprice/actions/workflows/ci.yml)
6
+ [![Gem Version](https://img.shields.io/gem/v/timeprice.svg)](https://rubygems.org/gems/timeprice)
7
+ [![Ruby](https://img.shields.io/badge/ruby-%3E%3D%203.2-ruby.svg)](https://www.ruby-lang.org/)
8
+
9
+ ## Why this exists
10
+
11
+ Every other "historical inflation / FX" library wants you to wire up an API key, eat a rate
12
+ limit, and trust that someone else's server stays up forever. `timeprice` ships the data
13
+ in the gem. Once you `gem install timeprice`, you can answer "what was 100 USD in 1990
14
+ worth in 2024?" with zero network calls, deterministic results, and no surprise outages.
15
+ A monthly GitHub Action keeps the bundled data fresh; users just pin a gem version.
16
+
17
+ ## Install
18
+
19
+ ```bash
20
+ gem install timeprice
21
+ ```
22
+
23
+ Or in a `Gemfile`:
24
+
25
+ ```ruby
26
+ gem "timeprice", "~> 0.1"
27
+ ```
28
+
29
+ Requires Ruby >= 3.2.
30
+
31
+ ## CLI examples
32
+
33
+ ```bash
34
+ $ timeprice inflation 100 --from 1990-01 --to 2024-01 --country US
35
+ 100.00 USD in 1990-01 is 242.09 USD in 2024-01 (US, granularity: monthly)
36
+
37
+ $ timeprice fx 100 USD JPY --date 2010-06-15
38
+ 100.00 USD on 2010-06-15 = 9118.00 JPY (rate: 91.1800)
39
+
40
+ $ timeprice compare 100 --from "2010 USD" --to "2024 VND"
41
+ 100.00 USD in 2010 -> 3530920.58 VND in 2024
42
+ steps: convert at 2010 (fx rate 18612.920000) -> 1861292.0000 VND, then inflate in VN (cpi ratio 1.897027, granularity: annual)
43
+ ```
44
+
45
+ Every command supports `--json` for machine-readable output:
46
+
47
+ ```bash
48
+ $ timeprice inflation 100 --from 1990-01 --to 2024-01 --country US --json
49
+ {"amount":242.08555729984302,"original_amount":100.0,"from":"1990-01","to":"2024-01","country":"US","from_index":127.4,"to_index":308.417,"granularity":"monthly"}
50
+ ```
51
+
52
+ `timeprice sources` lists every bundled data source with its license, attribution string,
53
+ and current coverage range — derived dynamically from the bundled files.
54
+
55
+ ## Library examples
56
+
57
+ ```ruby
58
+ require "timeprice"
59
+
60
+ # Inflation adjustment
61
+ r = Timeprice.inflation(amount: 100, from: "1990-01", to: "2024-01", country: "US")
62
+ r.amount # => 242.0855572998...
63
+ r.granularity # => :monthly
64
+ r.to_h # => { amount: ..., original_amount: ..., from: ..., country: ..., ... }
65
+
66
+ # Historical FX
67
+ r = Timeprice.exchange(amount: 100, from: "USD", to: "JPY", date: "2010-06-15")
68
+ r.amount # => 9118.0
69
+ r.rate # => 91.18
70
+ r.effective_date # => "2010-06-15" (or the nearest prior trading day on weekends/holidays)
71
+
72
+ # Combined: convert at source date, then inflate in destination currency
73
+ r = Timeprice.compare(amount: 100, from: ["USD", "2010"], to: ["VND", "2024"])
74
+ r.amount # => 3530920.5840411717
75
+ r.fx_rate # => 18612.92
76
+ r.cpi_ratio # => 1.897026680414...
77
+ ```
78
+
79
+ All result objects are `Data.define` value objects — they support `.to_h`, `==`, and
80
+ pattern matching, so you can hand them to JSON, RSpec, or `case/in` without ceremony.
81
+
82
+ ## Supported countries, currencies, and data ranges
83
+
84
+ Coverage is derived from the bundled `data/` files. Re-check with `timeprice sources`.
85
+
86
+ | Country / Region | Currency | CPI source | Granularity | Coverage |
87
+ |------------------|----------|------------|-------------|----------|
88
+ | United States | USD | BLS CPI-U (`CUUR0000SA0`) | Monthly + annual | 1990-01 → present |
89
+ | United Kingdom | GBP | ONS CPI all-items (`D7BT`) | Monthly + annual | 1988-01 → present |
90
+ | Eurozone (EA) | EUR | Eurostat HICP (`prc_hicp_midx`) | Monthly + annual | 1996-01 → present |
91
+ | Japan | JPY | World Bank `FP.CPI.TOTL` (fallback) | Annual | 1960 → 2024 |
92
+ | Vietnam | VND | World Bank `FP.CPI.TOTL` | Annual | 1995 → 2024 |
93
+
94
+ **FX (USD base):** ECB reference rates via Frankfurter for **EUR / GBP / JPY**, daily
95
+ 1999 → present. **VND** uses the World Bank annual average (`PA.NUS.FCRF`) broadcast to
96
+ every day in the year, from 1983 → present.
97
+
98
+ Triangulated cross-rates (e.g. GBP → JPY) go through USD on the same effective date.
99
+ Weekend/holiday dates fall back up to 7 days to the nearest prior trading day.
100
+
101
+ ## Compare semantics — important
102
+
103
+ This is the most important conceptual piece of the library, so it's worth reading.
104
+
105
+ `Timeprice.compare(amount:, from:, to:)` follows one specific convention:
106
+
107
+ > **Convert at the source date first, then inflate in the destination currency.**
108
+
109
+ Concretely, for `compare(amount: 100, from: ["USD", "2010"], to: ["VND", "2024"])`:
110
+
111
+ 1. Convert 100 USD → VND at the **2010** FX rate (18,612.92), giving 1,861,292 VND.
112
+ 2. Inflate that VND amount from 2010 → 2024 using **Vietnam's** CPI ratio
113
+ (189.70 / 100.0 ≈ 1.897), giving **3,530,920.58 VND**.
114
+
115
+ ### Why not the other direction?
116
+
117
+ The naive alternative ("inflate the 100 USD in US CPI to 2024, then convert at the 2024
118
+ FX rate") looks reasonable but is **wrong for any high-inflation pair**. Here's why:
119
+
120
+ Nominal FX rates already absorb relative inflation between the two currencies. If
121
+ Vietnam's CPI rises 90% over a period while US CPI rises 40%, the VND will tend to
122
+ weaken against the USD by roughly the inflation differential — that's already priced
123
+ into the 2024 USD→VND rate. So if you inflate the USD amount in US CPI **and then**
124
+ convert at a depreciated future VND rate, you double-count US inflation and produce a
125
+ number that overstates the equivalent purchasing power in Vietnam.
126
+
127
+ The convention used here — convert first, then inflate in the destination currency —
128
+ preserves **purchasing-power equivalence in the destination economy**. "100 USD in 2010
129
+ buys what 3,530,920 VND buys in 2024 in Vietnam."
130
+
131
+ ### Worked example with numbers
132
+
133
+ Bundled data:
134
+ - USD→VND on 2010-06-30: `18612.92`
135
+ - VN CPI: 2010 = `100.0`, 2024 ≈ `189.70`
136
+ - US CPI: 2010-06 ≈ `217.97`, 2024 ≈ `308.42` (US ratio ≈ 1.415)
137
+ - USD→VND on 2024-06-30 (approx, broadcast annual): `~25,000`
138
+
139
+ | Approach | Calculation | Result |
140
+ |----------|-------------|--------|
141
+ | **timeprice (convert → inflate)** | 100 × 18,612.92 × 1.897 | **3,530,921 VND** |
142
+ | Naive (inflate → convert) | 100 × 1.415 × ~25,000 | ~3,537,500 VND |
143
+
144
+ These happen to land near each other for the USD/VND pair, but only because the FX
145
+ movement and inflation differential are roughly consistent here. For pairs where the
146
+ nominal rate has moved **out of step** with inflation (currency crises, pegs, controls),
147
+ the two approaches diverge by tens of percent. The "convert then inflate" answer is the
148
+ one that meaningfully tracks purchasing power.
149
+
150
+ If you specifically want the mechanical "inflate then convert" answer for some reason,
151
+ do it yourself — it's two library calls:
152
+
153
+ ```ruby
154
+ inflated = Timeprice.inflation(amount: 100, from: "2010", to: "2024", country: "US").amount
155
+ converted = Timeprice.exchange(amount: inflated, from: "USD", to: "VND", date: "2024-06-30").amount
156
+ ```
157
+
158
+ ## Data sources & attribution
159
+
160
+ `timeprice` redistributes data from several public sources. Each is governed by its own
161
+ license — see `DATA_LICENSES.md` and `NOTICE` for the full table and license URLs.
162
+
163
+ - **U.S. CPI:** Data: U.S. Bureau of Labor Statistics (public domain).
164
+ - **UK CPI:** Contains public sector information licensed under the Open Government Licence v3.0.
165
+ - **Eurozone HICP:** Source: Eurostat (reuse permitted with attribution).
166
+ - **Japan CPI (fallback):** Source: World Bank, FP.CPI.TOTL (CC BY 4.0).
167
+ - **Vietnam CPI:** Source: World Bank, FP.CPI.TOTL (CC BY 4.0).
168
+ - **FX rates:** European Central Bank reference rates via Frankfurter.
169
+ - **VND FX (annual broadcast):** World Bank, PA.NUS.FCRF (CC BY 4.0).
170
+
171
+ If you redistribute results derived from this gem, reproduce the relevant attribution
172
+ strings. `timeprice sources` prints them in plain text and as JSON.
173
+
174
+ ## Author
175
+
176
+ Built by [Patrick](https://github.com/patrick204nqh).
177
+
178
+ ---
179
+
180
+ This is a maintained-on-best-effort open source project. Bug reports and
181
+ data-correctness issues are welcome; new-country requests will be evaluated
182
+ case-by-case based on source availability and maintainer bandwidth. No SLA.
183
+
184
+ ## License
185
+
186
+ Code: MIT (see `LICENSE.txt`). Data: see `DATA_LICENSES.md` — each upstream source
187
+ retains its own license.
data/data/cpi/eu.json ADDED
@@ -0,0 +1,401 @@
1
+ {
2
+ "annual": {
3
+ "1996": 71.742,
4
+ "1997": 72.867,
5
+ "1998": 73.671,
6
+ "1999": 74.482,
7
+ "2000": 76.048,
8
+ "2001": 77.829,
9
+ "2002": 79.581,
10
+ "2003": 81.237,
11
+ "2004": 82.979,
12
+ "2005": 84.788,
13
+ "2006": 86.638,
14
+ "2007": 88.488,
15
+ "2008": 91.383,
16
+ "2009": 91.649,
17
+ "2010": 93.135,
18
+ "2011": 95.663,
19
+ "2012": 98.053,
20
+ "2013": 99.378,
21
+ "2014": 99.807,
22
+ "2015": 99.999,
23
+ "2016": 100.234,
24
+ "2017": 101.776,
25
+ "2018": 103.562,
26
+ "2019": 104.8,
27
+ "2020": 105.064,
28
+ "2021": 107.783,
29
+ "2022": 116.82,
30
+ "2023": 123.154,
31
+ "2024": 126.066,
32
+ "2025": 128.752
33
+ },
34
+ "base_year": "2015=100",
35
+ "country": "EU",
36
+ "monthly": {
37
+ "1996-01": 70.97,
38
+ "1996-02": 71.29,
39
+ "1996-03": 71.54,
40
+ "1996-04": 71.66,
41
+ "1996-05": 71.83,
42
+ "1996-06": 71.84,
43
+ "1996-07": 71.84,
44
+ "1996-08": 71.8,
45
+ "1996-09": 71.93,
46
+ "1996-10": 72.0,
47
+ "1996-11": 72.01,
48
+ "1996-12": 72.19,
49
+ "1997-01": 72.42,
50
+ "1997-02": 72.59,
51
+ "1997-03": 72.65,
52
+ "1997-04": 72.6,
53
+ "1997-05": 72.8,
54
+ "1997-06": 72.83,
55
+ "1997-07": 72.9,
56
+ "1997-08": 73.02,
57
+ "1997-09": 73.07,
58
+ "1997-10": 73.09,
59
+ "1997-11": 73.18,
60
+ "1997-12": 73.26,
61
+ "1998-01": 73.2,
62
+ "1998-02": 73.4,
63
+ "1998-03": 73.46,
64
+ "1998-04": 73.61,
65
+ "1998-05": 73.76,
66
+ "1998-06": 73.8,
67
+ "1998-07": 73.83,
68
+ "1998-08": 73.85,
69
+ "1998-09": 73.79,
70
+ "1998-10": 73.77,
71
+ "1998-11": 73.77,
72
+ "1998-12": 73.81,
73
+ "1999-01": 73.76,
74
+ "1999-02": 73.94,
75
+ "1999-03": 74.15,
76
+ "1999-04": 74.4,
77
+ "1999-05": 74.45,
78
+ "1999-06": 74.45,
79
+ "1999-07": 74.58,
80
+ "1999-08": 74.67,
81
+ "1999-09": 74.71,
82
+ "1999-10": 74.74,
83
+ "1999-11": 74.84,
84
+ "1999-12": 75.09,
85
+ "2000-01": 75.13,
86
+ "2000-02": 75.37,
87
+ "2000-03": 75.6,
88
+ "2000-04": 75.67,
89
+ "2000-05": 75.76,
90
+ "2000-06": 76.04,
91
+ "2000-07": 76.14,
92
+ "2000-08": 76.2,
93
+ "2000-09": 76.5,
94
+ "2000-10": 76.52,
95
+ "2000-11": 76.68,
96
+ "2000-12": 76.96,
97
+ "2001-01": 76.63,
98
+ "2001-02": 76.86,
99
+ "2001-03": 77.27,
100
+ "2001-04": 77.73,
101
+ "2001-05": 78.1,
102
+ "2001-06": 78.21,
103
+ "2001-07": 78.03,
104
+ "2001-08": 77.97,
105
+ "2001-09": 78.18,
106
+ "2001-10": 78.24,
107
+ "2001-11": 78.19,
108
+ "2001-12": 78.54,
109
+ "2002-01": 78.63,
110
+ "2002-02": 78.76,
111
+ "2002-03": 79.21,
112
+ "2002-04": 79.56,
113
+ "2002-05": 79.71,
114
+ "2002-06": 79.67,
115
+ "2002-07": 79.59,
116
+ "2002-08": 79.64,
117
+ "2002-09": 79.84,
118
+ "2002-10": 80.03,
119
+ "2002-11": 79.97,
120
+ "2002-12": 80.36,
121
+ "2003-01": 80.3,
122
+ "2003-02": 80.62,
123
+ "2003-03": 81.08,
124
+ "2003-04": 81.21,
125
+ "2003-05": 81.15,
126
+ "2003-06": 81.25,
127
+ "2003-07": 81.13,
128
+ "2003-08": 81.25,
129
+ "2003-09": 81.54,
130
+ "2003-10": 81.66,
131
+ "2003-11": 81.7,
132
+ "2003-12": 81.95,
133
+ "2004-01": 81.75,
134
+ "2004-02": 81.94,
135
+ "2004-03": 82.46,
136
+ "2004-04": 82.88,
137
+ "2004-05": 83.14,
138
+ "2004-06": 83.18,
139
+ "2004-07": 83.0,
140
+ "2004-08": 83.17,
141
+ "2004-09": 83.26,
142
+ "2004-10": 83.59,
143
+ "2004-11": 83.53,
144
+ "2004-12": 83.85,
145
+ "2005-01": 83.32,
146
+ "2005-02": 83.62,
147
+ "2005-03": 84.25,
148
+ "2005-04": 84.6,
149
+ "2005-05": 84.78,
150
+ "2005-06": 84.87,
151
+ "2005-07": 84.78,
152
+ "2005-08": 84.98,
153
+ "2005-09": 85.42,
154
+ "2005-10": 85.64,
155
+ "2005-11": 85.45,
156
+ "2005-12": 85.74,
157
+ "2006-01": 85.35,
158
+ "2006-02": 85.59,
159
+ "2006-03": 86.09,
160
+ "2006-04": 86.66,
161
+ "2006-05": 86.89,
162
+ "2006-06": 86.96,
163
+ "2006-07": 86.85,
164
+ "2006-08": 86.93,
165
+ "2006-09": 86.93,
166
+ "2006-10": 87.0,
167
+ "2006-11": 87.03,
168
+ "2006-12": 87.37,
169
+ "2007-01": 86.92,
170
+ "2007-02": 87.17,
171
+ "2007-03": 87.75,
172
+ "2007-04": 88.31,
173
+ "2007-05": 88.52,
174
+ "2007-06": 88.61,
175
+ "2007-07": 88.39,
176
+ "2007-08": 88.45,
177
+ "2007-09": 88.78,
178
+ "2007-10": 89.21,
179
+ "2007-11": 89.69,
180
+ "2007-12": 90.05,
181
+ "2008-01": 89.7,
182
+ "2008-02": 90.02,
183
+ "2008-03": 90.9,
184
+ "2008-04": 91.19,
185
+ "2008-05": 91.76,
186
+ "2008-06": 92.11,
187
+ "2008-07": 91.97,
188
+ "2008-08": 91.84,
189
+ "2008-09": 92.01,
190
+ "2008-10": 92.04,
191
+ "2008-11": 91.59,
192
+ "2008-12": 91.47,
193
+ "2009-01": 90.71,
194
+ "2009-02": 91.08,
195
+ "2009-03": 91.42,
196
+ "2009-04": 91.75,
197
+ "2009-05": 91.8,
198
+ "2009-06": 91.98,
199
+ "2009-07": 91.38,
200
+ "2009-08": 91.69,
201
+ "2009-09": 91.71,
202
+ "2009-10": 91.92,
203
+ "2009-11": 92.03,
204
+ "2009-12": 92.32,
205
+ "2010-01": 91.57,
206
+ "2010-02": 91.85,
207
+ "2010-03": 92.87,
208
+ "2010-04": 93.25,
209
+ "2010-05": 93.35,
210
+ "2010-06": 93.35,
211
+ "2010-07": 92.95,
212
+ "2010-08": 93.14,
213
+ "2010-09": 93.43,
214
+ "2010-10": 93.71,
215
+ "2010-11": 93.79,
216
+ "2010-12": 94.36,
217
+ "2011-01": 93.68,
218
+ "2011-02": 94.08,
219
+ "2011-03": 95.35,
220
+ "2011-04": 95.88,
221
+ "2011-05": 95.89,
222
+ "2011-06": 95.88,
223
+ "2011-07": 95.33,
224
+ "2011-08": 95.51,
225
+ "2011-09": 96.21,
226
+ "2011-10": 96.55,
227
+ "2011-11": 96.63,
228
+ "2011-12": 96.96,
229
+ "2012-01": 96.17,
230
+ "2012-02": 96.65,
231
+ "2012-03": 97.9,
232
+ "2012-04": 98.36,
233
+ "2012-05": 98.22,
234
+ "2012-06": 98.15,
235
+ "2012-07": 97.63,
236
+ "2012-08": 98.01,
237
+ "2012-09": 98.72,
238
+ "2012-10": 98.95,
239
+ "2012-11": 98.76,
240
+ "2012-12": 99.11,
241
+ "2013-01": 98.08,
242
+ "2013-02": 98.44,
243
+ "2013-03": 99.6,
244
+ "2013-04": 99.51,
245
+ "2013-05": 99.62,
246
+ "2013-06": 99.73,
247
+ "2013-07": 99.2,
248
+ "2013-08": 99.32,
249
+ "2013-09": 99.8,
250
+ "2013-10": 99.68,
251
+ "2013-11": 99.6,
252
+ "2013-12": 99.95,
253
+ "2014-01": 98.83,
254
+ "2014-02": 99.14,
255
+ "2014-03": 100.07,
256
+ "2014-04": 100.22,
257
+ "2014-05": 100.11,
258
+ "2014-06": 100.22,
259
+ "2014-07": 99.57,
260
+ "2014-08": 99.68,
261
+ "2014-09": 100.12,
262
+ "2014-10": 100.06,
263
+ "2014-11": 99.88,
264
+ "2014-12": 99.78,
265
+ "2015-01": 98.24,
266
+ "2015-02": 98.85,
267
+ "2015-03": 100.0,
268
+ "2015-04": 100.43,
269
+ "2015-05": 100.71,
270
+ "2015-06": 100.72,
271
+ "2015-07": 100.11,
272
+ "2015-08": 100.12,
273
+ "2015-09": 100.32,
274
+ "2015-10": 100.45,
275
+ "2015-11": 100.01,
276
+ "2015-12": 100.03,
277
+ "2016-01": 98.56,
278
+ "2016-02": 98.73,
279
+ "2016-03": 99.96,
280
+ "2016-04": 100.17,
281
+ "2016-05": 100.59,
282
+ "2016-06": 100.77,
283
+ "2016-07": 100.28,
284
+ "2016-08": 100.34,
285
+ "2016-09": 100.72,
286
+ "2016-10": 100.96,
287
+ "2016-11": 100.6,
288
+ "2016-12": 101.13,
289
+ "2017-01": 100.26,
290
+ "2017-02": 100.66,
291
+ "2017-03": 101.49,
292
+ "2017-04": 102.07,
293
+ "2017-05": 101.98,
294
+ "2017-06": 102.08,
295
+ "2017-07": 101.62,
296
+ "2017-08": 101.89,
297
+ "2017-09": 102.29,
298
+ "2017-10": 102.34,
299
+ "2017-11": 102.14,
300
+ "2017-12": 102.49,
301
+ "2018-01": 101.56,
302
+ "2018-02": 101.78,
303
+ "2018-03": 102.91,
304
+ "2018-04": 103.32,
305
+ "2018-05": 103.97,
306
+ "2018-06": 104.09,
307
+ "2018-07": 103.85,
308
+ "2018-08": 104.01,
309
+ "2018-09": 104.42,
310
+ "2018-10": 104.68,
311
+ "2018-11": 104.1,
312
+ "2018-12": 104.05,
313
+ "2019-01": 102.97,
314
+ "2019-02": 103.3,
315
+ "2019-03": 104.35,
316
+ "2019-04": 105.1,
317
+ "2019-05": 105.24,
318
+ "2019-06": 105.41,
319
+ "2019-07": 104.91,
320
+ "2019-08": 105.06,
321
+ "2019-09": 105.29,
322
+ "2019-10": 105.44,
323
+ "2019-11": 105.1,
324
+ "2019-12": 105.43,
325
+ "2020-01": 104.37,
326
+ "2020-02": 104.56,
327
+ "2020-03": 105.13,
328
+ "2020-04": 105.43,
329
+ "2020-05": 105.33,
330
+ "2020-06": 105.69,
331
+ "2020-07": 105.32,
332
+ "2020-08": 104.88,
333
+ "2020-09": 104.96,
334
+ "2020-10": 105.15,
335
+ "2020-11": 104.8,
336
+ "2020-12": 105.15,
337
+ "2021-01": 105.32,
338
+ "2021-02": 105.54,
339
+ "2021-03": 106.53,
340
+ "2021-04": 107.14,
341
+ "2021-05": 107.42,
342
+ "2021-06": 107.7,
343
+ "2021-07": 107.6,
344
+ "2021-08": 107.98,
345
+ "2021-09": 108.49,
346
+ "2021-10": 109.41,
347
+ "2021-11": 109.9,
348
+ "2021-12": 110.37,
349
+ "2022-01": 110.7,
350
+ "2022-02": 111.74,
351
+ "2022-03": 114.46,
352
+ "2022-04": 115.11,
353
+ "2022-05": 116.07,
354
+ "2022-06": 117.01,
355
+ "2022-07": 117.14,
356
+ "2022-08": 117.85,
357
+ "2022-09": 119.26,
358
+ "2022-10": 121.03,
359
+ "2022-11": 120.95,
360
+ "2022-12": 120.52,
361
+ "2023-01": 120.27,
362
+ "2023-02": 121.24,
363
+ "2023-03": 122.34,
364
+ "2023-04": 123.12,
365
+ "2023-05": 123.15,
366
+ "2023-06": 123.47,
367
+ "2023-07": 123.36,
368
+ "2023-08": 124.03,
369
+ "2023-09": 124.43,
370
+ "2023-10": 124.54,
371
+ "2023-11": 123.85,
372
+ "2023-12": 124.05,
373
+ "2024-01": 123.6,
374
+ "2024-02": 124.37,
375
+ "2024-03": 125.31,
376
+ "2024-04": 126.04,
377
+ "2024-05": 126.31,
378
+ "2024-06": 126.58,
379
+ "2024-07": 126.54,
380
+ "2024-08": 126.72,
381
+ "2024-09": 126.6,
382
+ "2024-10": 127.03,
383
+ "2024-11": 126.62,
384
+ "2024-12": 127.07,
385
+ "2025-01": 126.72,
386
+ "2025-02": 127.26,
387
+ "2025-03": 128.04,
388
+ "2025-04": 128.77,
389
+ "2025-05": 128.7,
390
+ "2025-06": 129.09,
391
+ "2025-07": 129.12,
392
+ "2025-08": 129.31,
393
+ "2025-09": 129.42,
394
+ "2025-10": 129.7,
395
+ "2025-11": 129.33,
396
+ "2025-12": 129.56
397
+ },
398
+ "schema_version": 1,
399
+ "source": "Eurostat prc_hicp_midx (HICP, EA all current members, CP00, 2015=100)",
400
+ "updated_at": "2026-05-11"
401
+ }