timeprice 0.3.0 → 0.4.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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -0
  3. data/DATA_LICENSES.md +2 -1
  4. data/README.md +2 -2
  5. data/data/cpi/eu.json +23 -1
  6. data/data/cpi/jp.json +18 -2
  7. data/data/cpi/uk.json +23 -1
  8. data/data/cpi/us.json +29 -1
  9. data/data/cpi/vn.json +362 -34
  10. data/data/fx/usd/1983.json +7 -8
  11. data/data/fx/usd/1986.json +7 -8
  12. data/data/fx/usd/1987.json +7 -8
  13. data/data/fx/usd/1988.json +7 -8
  14. data/data/fx/usd/1989.json +7 -8
  15. data/data/fx/usd/1990.json +7 -8
  16. data/data/fx/usd/1991.json +7 -8
  17. data/data/fx/usd/1992.json +7 -8
  18. data/data/fx/usd/1993.json +7 -8
  19. data/data/fx/usd/1994.json +7 -8
  20. data/data/fx/usd/1995.json +7 -8
  21. data/data/fx/usd/1996.json +7 -8
  22. data/data/fx/usd/1997.json +7 -8
  23. data/data/fx/usd/1998.json +7 -8
  24. data/data/fx/usd/1999.json +266 -525
  25. data/data/fx/usd/2000.json +262 -517
  26. data/data/fx/usd/2001.json +261 -512
  27. data/data/fx/usd/2002.json +262 -514
  28. data/data/fx/usd/2003.json +262 -514
  29. data/data/fx/usd/2004.json +266 -522
  30. data/data/fx/usd/2005.json +264 -521
  31. data/data/fx/usd/2006.json +262 -514
  32. data/data/fx/usd/2007.json +262 -514
  33. data/data/fx/usd/2008.json +263 -516
  34. data/data/fx/usd/2009.json +263 -516
  35. data/data/fx/usd/2010.json +265 -523
  36. data/data/fx/usd/2011.json +264 -521
  37. data/data/fx/usd/2012.json +263 -516
  38. data/data/fx/usd/2013.json +262 -514
  39. data/data/fx/usd/2014.json +262 -514
  40. data/data/fx/usd/2015.json +263 -516
  41. data/data/fx/usd/2016.json +264 -521
  42. data/data/fx/usd/2017.json +262 -514
  43. data/data/fx/usd/2018.json +262 -514
  44. data/data/fx/usd/2019.json +262 -514
  45. data/data/fx/usd/2020.json +264 -518
  46. data/data/fx/usd/2021.json +265 -523
  47. data/data/fx/usd/2022.json +264 -521
  48. data/data/fx/usd/2023.json +262 -514
  49. data/data/fx/usd/2024.json +263 -516
  50. data/data/fx/usd/2025.json +5 -5
  51. data/data/fx/usd/2026.json +5 -5
  52. data/lib/timeprice/cli/presenters/compare.rb +3 -1
  53. data/lib/timeprice/cli/presenters/inflation.rb +2 -1
  54. data/lib/timeprice/compare.rb +2 -1
  55. data/lib/timeprice/cpi_lookup.rb +7 -5
  56. data/lib/timeprice/data_loader.rb +1 -1
  57. data/lib/timeprice/exchange.rb +32 -15
  58. data/lib/timeprice/granularity.rb +46 -0
  59. data/lib/timeprice/inflation.rb +4 -17
  60. data/lib/timeprice/sources.rb +5 -5
  61. data/lib/timeprice/version.rb +1 -1
  62. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b400f9dc1652d4476d884f59a2721e4f07338e76c5cc7afab50896267e1123c
4
- data.tar.gz: 1a894e2464aa1f1495ddaa24c284b819a8afc07309cd3080f7c8c70744959ef2
3
+ metadata.gz: a91644504f73e6324d522d189233539a5515ca51cf0be58b1a34da90ff78220d
4
+ data.tar.gz: f6120dc38bb433e1dc8ac56e523b3c547d9323b578f34a27bddee3e43b48c9a2
5
5
  SHA512:
6
- metadata.gz: 1f2c0b9ae5a4f8de71bdfdfb28f911b676773d406f86149b0c12ad5fbeb002ad51e42d43ed9f21d41c6ddd1a5b2760c2df58796759f66e7b78ac0dc784cee971
7
- data.tar.gz: 8dc9e2ff73ddf7d0126538794bb4612a8709881628b713a1e878fe8fba7eddd510597f5a4f0a07e8c9d3b63cc751880df9150db208616f7fc52306ae2474bd10
6
+ metadata.gz: b8b0f99a9962bad944a02499761a586e860d50a3707e70de4d1549c6bf624ea5bf1a9d1d2beae488abdfc6646d825320259a196bfac177e64c25edab90e721e5
7
+ data.tar.gz: 54bb2545e7c9f9bbdb202994f3d5f53bb020a36bde0a2d8627c734a1c0e4312fcbe0237ce2b23409af9253ddc809ae74129dec43b17b94c559bcefa8917142cf
data/CHANGELOG.md CHANGED
@@ -5,6 +5,39 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.4.0] - 2026-05-11
9
+
10
+ ### Changed
11
+ - **Schema v1 → v2.** Two structural data-layer changes, bundled under a
12
+ single bump:
13
+ - FX year files gain an optional top-level `annual` block. World Bank's
14
+ annual VND/USD average is stored there exactly once per year instead of
15
+ being broadcast across every daily date key. `Exchange.lookup_usd_base`
16
+ falls back from daily to annual when no daily entry exists within ±7
17
+ days and tags the result with `Granularity::ANNUAL`. `Compare` merges
18
+ FX granularity with CPI granularity (worst-precision wins).
19
+ - CPI provenance moves from a per-period map (`{"2025-01": "bls", ...}`)
20
+ to a compact range list (`[{series, from, to, provider}, ...]`). Single
21
+ -provider files (US/UK/EU/JP) collapse to 1–2 ranges; VN keeps the
22
+ WB→IMF transition explicit. ~42 kb saved across the 5 CPI files; one
23
+ real US data gap at 2025-10 is now visible instead of buried.
24
+ - `country_file.rb` rebase label now preserves the original base reference
25
+ alongside the rebase date (e.g. `"2010=100 (rebased 2026-05-11)"`).
26
+
27
+ ### Added
28
+ - Multi-source CPI chain for Vietnam: IMF Data Portal CPI dataflow
29
+ (`api.imf.org`, SDMX 2.1) is the monthly primary; World Bank `FP.CPI.TOTL`
30
+ remains as the annual fallback. The on-disk `data/cpi/vn.json` gains two
31
+ additive fields — `provenance` (per-period source id) and `providers`
32
+ (per-source status array) — so consumers can see which upstream supplied
33
+ each datapoint. Schema version is unchanged; old readers ignore the new
34
+ fields. Other country files (US, UK, EU, JP) gain the same fields on the
35
+ next refresh.
36
+ - Internal: `Sources::Provider` / `Sources::CountryFile` / `Sources::MergePolicy`
37
+ seam for layering multiple providers into a single country file with
38
+ per-period provenance. Designed so future fresher sources (e.g. JP via
39
+ e-Stat) can be added as one more entry without further plumbing.
40
+
8
41
  ## [0.3.0] - 2026-05-11
9
42
 
10
43
  ### Added
data/DATA_LICENSES.md CHANGED
@@ -12,7 +12,8 @@ string.
12
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
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
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 |
15
+ | World Bank | `FP.CPI.TOTL` (VN CPI, annual 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 |
16
+ | International Monetary Fund | CPI dataflow `VNM.CPI._T.IX.M` via IMF Data Portal (VN CPI, monthly primary) | Free reuse with attribution per IMF terms | https://www.imf.org/external/terms.htm | Source: IMF Data Portal CPI dataflow |
16
17
  | 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
18
  | 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
 
data/README.md CHANGED
@@ -98,7 +98,7 @@ Coverage is derived from the bundled `data/` files. Re-check with `timeprice sou
98
98
  | United Kingdom | GBP | ONS CPI all-items (`D7BT`) | Monthly + annual | 1988-01 → present |
99
99
  | Eurozone (EA) | EUR | Eurostat HICP (`prc_hicp_midx`) | Monthly + annual | 1996-01 → present |
100
100
  | Japan | JPY | World Bank `FP.CPI.TOTL` (fallback) | Annual | 1960 → 2024 |
101
- | Vietnam | VND | World Bank `FP.CPI.TOTL` | Annual | 1995 → 2024 |
101
+ | Vietnam | VND | IMF Data Portal CPI dataflow (monthly primary) + World Bank `FP.CPI.TOTL` (annual fallback) | Monthly + annual | 1995 → present |
102
102
 
103
103
  **FX (USD base):** ECB reference rates via Frankfurter for **EUR / GBP / JPY**, daily
104
104
  1999 → present. **VND** uses the World Bank annual average (`PA.NUS.FCRF`) broadcast to
@@ -258,7 +258,7 @@ license — see `DATA_LICENSES.md` and `NOTICE` for the full table and license U
258
258
  - **UK CPI:** Contains public sector information licensed under the Open Government Licence v3.0.
259
259
  - **Eurozone HICP:** Source: Eurostat (reuse permitted with attribution).
260
260
  - **Japan CPI (fallback):** Source: World Bank, FP.CPI.TOTL (CC BY 4.0).
261
- - **Vietnam CPI:** Source: World Bank, FP.CPI.TOTL (CC BY 4.0).
261
+ - **Vietnam CPI:** Sources: IMF Data Portal CPI dataflow (monthly primary); World Bank, FP.CPI.TOTL (annual fallback, CC BY 4.0).
262
262
  - **FX rates:** European Central Bank reference rates via Frankfurter.
263
263
  - **VND FX (annual broadcast):** World Bank, PA.NUS.FCRF (CC BY 4.0).
264
264
 
data/data/cpi/eu.json CHANGED
@@ -395,7 +395,29 @@
395
395
  "2025-11": 129.33,
396
396
  "2025-12": 129.56
397
397
  },
398
- "schema_version": 1,
398
+ "provenance": [
399
+ {
400
+ "series": "monthly",
401
+ "from": "1996-01",
402
+ "to": "2025-12",
403
+ "provider": "eurostat"
404
+ },
405
+ {
406
+ "series": "annual",
407
+ "from": "1996",
408
+ "to": "2025",
409
+ "provider": "eurostat"
410
+ }
411
+ ],
412
+ "providers": [
413
+ {
414
+ "fetched_at": "2026-05-11",
415
+ "id": "eurostat",
416
+ "label": "Eurostat prc_hicp_midx (HICP, EA all current members, CP00, 2015=100)",
417
+ "status": "ok"
418
+ }
419
+ ],
420
+ "schema_version": 2,
399
421
  "source": "Eurostat prc_hicp_midx (HICP, EA all current members, CP00, 2015=100)",
400
422
  "updated_at": "2026-05-11"
401
423
  }
data/data/cpi/jp.json CHANGED
@@ -69,7 +69,23 @@
69
69
  "base_year": "2010=100",
70
70
  "country": "JP",
71
71
  "monthly": {},
72
- "schema_version": 1,
73
- "source": "World Bank FP.CPI.TOTL (annual)",
72
+ "provenance": [
73
+ {
74
+ "series": "annual",
75
+ "from": "1960",
76
+ "to": "2024",
77
+ "provider": "world_bank"
78
+ }
79
+ ],
80
+ "providers": [
81
+ {
82
+ "fetched_at": "2026-05-11",
83
+ "id": "world_bank",
84
+ "label": "World Bank FP.CPI.TOTL (annual, JP fallback)",
85
+ "status": "ok"
86
+ }
87
+ ],
88
+ "schema_version": 2,
89
+ "source": "World Bank FP.CPI.TOTL (annual, JP fallback)",
74
90
  "updated_at": "2026-05-11"
75
91
  }
data/data/cpi/uk.json CHANGED
@@ -502,7 +502,29 @@
502
502
  "2026-02": 140.1,
503
503
  "2026-03": 141.0
504
504
  },
505
- "schema_version": 1,
505
+ "provenance": [
506
+ {
507
+ "series": "monthly",
508
+ "from": "1988-01",
509
+ "to": "2026-03",
510
+ "provider": "ons"
511
+ },
512
+ {
513
+ "series": "annual",
514
+ "from": "1988",
515
+ "to": "2025",
516
+ "provider": "ons"
517
+ }
518
+ ],
519
+ "providers": [
520
+ {
521
+ "fetched_at": "2026-05-11",
522
+ "id": "ons",
523
+ "label": "ONS D7BT — UK CPI all-items index (2015=100)",
524
+ "status": "ok"
525
+ }
526
+ ],
527
+ "schema_version": 2,
506
528
  "source": "ONS D7BT — UK CPI all-items index (2015=100)",
507
529
  "updated_at": "2026-05-11"
508
530
  }
data/data/cpi/us.json CHANGED
@@ -474,7 +474,35 @@
474
474
  "2026-02": 326.785,
475
475
  "2026-03": 330.213
476
476
  },
477
- "schema_version": 1,
477
+ "provenance": [
478
+ {
479
+ "series": "monthly",
480
+ "from": "1990-01",
481
+ "to": "2025-09",
482
+ "provider": "bls"
483
+ },
484
+ {
485
+ "series": "monthly",
486
+ "from": "2025-11",
487
+ "to": "2026-03",
488
+ "provider": "bls"
489
+ },
490
+ {
491
+ "series": "annual",
492
+ "from": "1990",
493
+ "to": "2024",
494
+ "provider": "bls"
495
+ }
496
+ ],
497
+ "providers": [
498
+ {
499
+ "fetched_at": "2026-05-11",
500
+ "id": "bls",
501
+ "label": "BLS CUUR0000SA0 (CPI-U, U.S. city average, all items)",
502
+ "status": "ok"
503
+ }
504
+ ],
505
+ "schema_version": 2,
478
506
  "source": "BLS CUUR0000SA0 (CPI-U, U.S. city average, all items)",
479
507
  "updated_at": "2026-05-11"
480
508
  }
data/data/cpi/vn.json CHANGED
@@ -1,40 +1,368 @@
1
1
  {
2
2
  "annual": {
3
- "1995": 40.1657203822899,
4
- "1996": 42.4451250139849,
5
- "1997": 43.8074123636177,
6
- "1998": 46.9905457039141,
7
- "1999": 48.9251945689942,
8
- "2000": 48.0884087276966,
9
- "2001": 47.8808858390548,
10
- "2002": 49.7151204031794,
11
- "2003": 51.3232296369754,
12
- "2004": 55.3033191440045,
13
- "2005": 59.8849626753953,
14
- "2006": 64.3272394775767,
15
- "2007": 69.6949931031089,
16
- "2008": 85.8053032346153,
17
- "2009": 91.5688306084694,
18
- "2010": 100.0,
19
- "2011": 118.677732277071,
20
- "2012": 129.471120024261,
21
- "2013": 138.006729874285,
22
- "2014": 143.643689923265,
23
- "2015": 144.550370194288,
24
- "2016": 148.407332801278,
25
- "2017": 153.631652156685,
26
- "2018": 159.069641224583,
27
- "2019": 163.516947912918,
28
- "2020": 168.783721483338,
29
- "2021": 171.880422664063,
30
- "2022": 177.305841095852,
31
- "2023": 183.073410082137,
32
- "2024": 189.702668041402
3
+ "1995": 21.083683,
4
+ "1996": 22.280182,
5
+ "1997": 22.995271,
6
+ "1998": 24.666152,
7
+ "1999": 25.681683,
8
+ "2000": 25.24244,
9
+ "2001": 25.133507,
10
+ "2002": 26.096,
11
+ "2003": 26.94,
12
+ "2004": 29.03,
13
+ "2005": 31.435,
14
+ "2006": 33.766,
15
+ "2007": 36.584,
16
+ "2008": 45.041,
17
+ "2009": 48.066,
18
+ "2010": 52.492,
19
+ "2011": 62.296,
20
+ "2012": 67.961,
21
+ "2013": 72.442,
22
+ "2014": 75.401,
23
+ "2015": 75.877,
24
+ "2016": 77.901,
25
+ "2017": 80.644,
26
+ "2018": 83.498,
27
+ "2019": 85.833,
28
+ "2020": 88.597,
29
+ "2021": 90.223,
30
+ "2022": 93.071,
31
+ "2023": 96.098,
32
+ "2024": 99.578,
33
+ "2025": 102.874
33
34
  },
34
- "base_year": "2010=100",
35
+ "base_year": "2010=100 (rebased 2026-05-11)",
35
36
  "country": "VN",
36
- "monthly": {},
37
- "schema_version": 1,
38
- "source": "World Bank FP.CPI.TOTL (annual)",
37
+ "monthly": {
38
+ "2001-12": 25.36739008790192,
39
+ "2002-01": 25.6322671259501,
40
+ "2002-02": 26.19617700272103,
41
+ "2002-03": 25.98660758669925,
42
+ "2002-04": 25.98660758669925,
43
+ "2002-05": 26.06456740945937,
44
+ "2002-06": 26.09063197686882,
45
+ "2002-07": 26.06454134489196,
46
+ "2002-08": 26.09060588623681,
47
+ "2002-09": 26.14278709800931,
48
+ "2002-10": 26.22121545930331,
49
+ "2002-11": 26.29987910568129,
50
+ "2002-12": 26.37877874299829,
51
+ "2003-01": 26.61618775168532,
52
+ "2003-02": 27.20174388222234,
53
+ "2003-03": 27.03853341892901,
54
+ "2003-04": 27.03853341892901,
55
+ "2003-05": 27.01149488551009,
56
+ "2003-06": 26.93046040085359,
57
+ "2003-07": 26.84966901965102,
58
+ "2003-08": 26.82281935063134,
59
+ "2003-09": 26.84964216998203,
60
+ "2003-10": 26.79594288564206,
61
+ "2003-11": 26.95671854295585,
62
+ "2003-12": 27.17237229129956,
63
+ "2004-01": 27.47126838650379,
64
+ "2004-02": 28.29540643809896,
65
+ "2004-03": 28.52176968960372,
66
+ "2004-04": 28.66437853805172,
67
+ "2004-05": 28.92235794489419,
68
+ "2004-06": 29.15373680845335,
69
+ "2004-07": 29.2995054924956,
70
+ "2004-08": 29.47530252545062,
71
+ "2004-09": 29.56372843302695,
72
+ "2004-10": 29.56372843302695,
73
+ "2004-11": 29.62285588989299,
74
+ "2004-12": 29.80059302523241,
75
+ "2005-01": 30.12839954850992,
76
+ "2005-02": 30.88160953722271,
77
+ "2005-03": 30.91249114675989,
78
+ "2005-04": 31.09796609364044,
79
+ "2005-05": 31.25345592410867,
80
+ "2005-06": 31.3784697478051,
81
+ "2005-07": 31.50398362679629,
82
+ "2005-08": 31.62999956130347,
83
+ "2005-09": 31.88303955779397,
84
+ "2005-10": 32.01057171602509,
85
+ "2005-11": 32.13861400288924,
86
+ "2005-12": 32.39572291491234,
87
+ "2006-01": 32.7844715898913,
88
+ "2006-02": 33.47294549327901,
89
+ "2006-03": 33.30558076581261,
90
+ "2006-04": 33.3721919273442,
91
+ "2006-05": 33.58296366583273,
92
+ "2006-06": 33.71393722412947,
93
+ "2006-07": 33.84542157930353,
94
+ "2006-08": 33.97403418130488,
95
+ "2006-09": 34.07595628384884,
96
+ "2006-10": 34.1577385789301,
97
+ "2006-11": 34.36610078426154,
98
+ "2006-12": 34.54480450833974,
99
+ "2007-01": 34.90752495567728,
100
+ "2007-02": 35.66501824721547,
101
+ "2007-03": 35.58655520707158,
102
+ "2007-04": 35.76092932758621,
103
+ "2007-05": 36.03628848340863,
104
+ "2007-06": 36.34259693551766,
105
+ "2007-07": 36.68421734671151,
106
+ "2007-08": 36.88598054211842,
107
+ "2007-09": 37.0740990428832,
108
+ "2007-10": 37.34844737580054,
109
+ "2007-11": 37.80783327852289,
110
+ "2007-12": 38.90804122692791,
111
+ "2008-01": 39.83405260812879,
112
+ "2008-02": 41.25214488097813,
113
+ "2008-03": 42.48558401291938,
114
+ "2008-04": 43.42026686120363,
115
+ "2008-05": 45.11799929547667,
116
+ "2008-06": 46.08352448039987,
117
+ "2008-07": 46.60426830702839,
118
+ "2008-08": 47.33129489261806,
119
+ "2008-09": 47.41649122342474,
120
+ "2008-10": 47.32639989010025,
121
+ "2008-11": 46.9667192509355,
122
+ "2008-12": 46.64734556002912,
123
+ "2009-01": 46.79661706582125,
124
+ "2009-02": 47.34413748549132,
125
+ "2009-03": 47.263652451766,
126
+ "2009-04": 47.42907523534718,
127
+ "2009-05": 47.63776316638273,
128
+ "2009-06": 47.89977086379782,
129
+ "2009-07": 48.14884967228953,
130
+ "2009-08": 48.26440691150305,
131
+ "2009-09": 48.56364623435439,
132
+ "2009-10": 48.74333172542149,
133
+ "2009-11": 49.01142004991128,
134
+ "2009-12": 49.68777764660009,
135
+ "2010-01": 50.36353142259381,
136
+ "2010-02": 51.3506566384767,
137
+ "2010-03": 51.73578656326526,
138
+ "2010-04": 51.80821666445386,
139
+ "2010-05": 51.94809884944788,
140
+ "2010-06": 52.06238466691662,
141
+ "2010-07": 52.0936220977168,
142
+ "2010-08": 52.21343742854153,
143
+ "2010-09": 52.89743345885546,
144
+ "2010-10": 53.45285651017339,
145
+ "2010-11": 54.44707964126261,
146
+ "2010-12": 55.52513181815963,
147
+ "2011-01": 56.49126911179558,
148
+ "2011-02": 57.67193663623217,
149
+ "2011-03": 58.92341766123841,
150
+ "2011-04": 60.87967512759147,
151
+ "2011-05": 62.22511594791128,
152
+ "2011-06": 62.90336971174353,
153
+ "2011-07": 63.63933913737092,
154
+ "2011-08": 64.23118499134844,
155
+ "2011-09": 64.75788070827751,
156
+ "2011-10": 64.99100907882735,
157
+ "2011-11": 65.24447401423478,
158
+ "2011-12": 65.59026972651019,
159
+ "2012-01": 66.2461724237753,
160
+ "2012-02": 67.15374498598106,
161
+ "2012-03": 67.2611909779586,
162
+ "2012-04": 67.29482157344756,
163
+ "2012-05": 67.4159522522798,
164
+ "2012-06": 67.24067077642384,
165
+ "2012-07": 67.04567283117221,
166
+ "2012-08": 67.46806057000863,
167
+ "2012-09": 68.95235790254878,
168
+ "2012-10": 69.53845294472042,
169
+ "2012-11": 69.86528367356061,
170
+ "2012-12": 70.05391993947929,
171
+ "2013-01": 70.92959393872272,
172
+ "2013-02": 71.86586457871388,
173
+ "2013-03": 71.72931943601428,
174
+ "2013-04": 71.74366529990154,
175
+ "2013-05": 71.70061910072155,
176
+ "2013-06": 71.73646941027194,
177
+ "2013-07": 71.93015787767966,
178
+ "2013-08": 72.5271781880644,
179
+ "2013-09": 73.29596627685785,
180
+ "2013-10": 73.65511651161448,
181
+ "2013-11": 73.905543907754,
182
+ "2013-12": 74.28246218168351,
183
+ "2014-01": 74.79501117073714,
184
+ "2014-02": 75.2063837321762,
185
+ "2014-03": 74.87547564375458,
186
+ "2014-04": 74.93537602426964,
187
+ "2014-05": 75.08524677631816,
188
+ "2014-06": 75.31050251664709,
189
+ "2014-07": 75.48371667243535,
190
+ "2014-08": 75.64978084911479,
191
+ "2014-09": 75.95237997251125,
192
+ "2014-10": 76.0359275904809,
193
+ "2014-11": 75.83063058598673,
194
+ "2014-12": 75.64863707258034,
195
+ "2015-01": 75.49733979843514,
196
+ "2015-02": 75.45959112853596,
197
+ "2015-03": 75.57278051522873,
198
+ "2015-04": 75.67858240795007,
199
+ "2015-05": 75.7996681398028,
200
+ "2015-06": 76.06496697829202,
201
+ "2015-07": 76.16385143536395,
202
+ "2015-08": 76.11053673935893,
203
+ "2015-09": 75.9507046122065,
204
+ "2015-10": 76.03425038727993,
205
+ "2015-11": 76.08762643105179,
206
+ "2015-12": 76.10033306466573,
207
+ "2016-01": 76.09896325867051,
208
+ "2016-02": 76.41797011265116,
209
+ "2016-03": 76.8531704524429,
210
+ "2016-04": 77.11047486711699,
211
+ "2016-05": 77.52748831519887,
212
+ "2016-06": 77.88760349842286,
213
+ "2016-07": 77.98729963090072,
214
+ "2016-08": 78.06715862572312,
215
+ "2016-09": 78.49114136421927,
216
+ "2016-10": 79.1440306780866,
217
+ "2016-11": 79.52447603355643,
218
+ "2016-12": 79.70539421653243,
219
+ "2017-01": 80.06916963573691,
220
+ "2017-02": 80.25637135434519,
221
+ "2017-03": 80.42330460676249,
222
+ "2017-04": 80.42587815250957,
223
+ "2017-05": 80.00167749824163,
224
+ "2017-06": 79.8647946280418,
225
+ "2017-07": 79.95240630774892,
226
+ "2017-08": 80.68572977840341,
227
+ "2017-09": 81.16346998442135,
228
+ "2017-10": 81.49916209627693,
229
+ "2017-11": 81.60633349443398,
230
+ "2017-12": 81.77476896676635,
231
+ "2018-01": 82.19026656788647,
232
+ "2018-02": 82.78795418636781,
233
+ "2018-03": 82.565171801653,
234
+ "2018-04": 82.63403115493541,
235
+ "2018-05": 83.08727881582027,
236
+ "2018-06": 83.59286490741486,
237
+ "2018-07": 83.51712977180858,
238
+ "2018-08": 83.89471071550687,
239
+ "2018-09": 84.39262582360362,
240
+ "2018-10": 84.67247177083406,
241
+ "2018-11": 84.42827636224732,
242
+ "2018-12": 84.2140818251166,
243
+ "2019-01": 84.29678005346895,
244
+ "2019-02": 84.97250304237694,
245
+ "2019-03": 84.79440067600062,
246
+ "2019-04": 85.05700893489386,
247
+ "2019-05": 85.47633998894268,
248
+ "2019-06": 85.39753080347333,
249
+ "2019-07": 85.55261271941242,
250
+ "2019-08": 85.79224558763903,
251
+ "2019-09": 86.06274853797704,
252
+ "2019-10": 86.56630167967305,
253
+ "2019-11": 87.39958889964116,
254
+ "2019-12": 88.62230914834711,
255
+ "2020-01": 89.71484497552845,
256
+ "2020-02": 89.5650211844189,
257
+ "2020-03": 88.92266085248433,
258
+ "2020-04": 87.55067311819099,
259
+ "2020-05": 87.52423281490988,
260
+ "2020-06": 88.10049236376315,
261
+ "2020-07": 88.45227762977117,
262
+ "2020-08": 88.51799767205,
263
+ "2020-09": 88.6282025791517,
264
+ "2020-10": 88.70433420516683,
265
+ "2020-11": 88.69688304109376,
266
+ "2020-12": 88.7880634368604,
267
+ "2021-01": 88.8434671884452,
268
+ "2021-02": 90.19219986383278,
269
+ "2021-03": 89.95075534479714,
270
+ "2021-04": 89.9163042055001,
271
+ "2021-05": 90.0587316313616,
272
+ "2021-06": 90.22750169443844,
273
+ "2021-07": 90.78907766498517,
274
+ "2021-08": 91.01414378851628,
275
+ "2021-09": 90.45395173349824,
276
+ "2021-10": 90.27023975752753,
277
+ "2021-11": 90.55991695690955,
278
+ "2021-12": 90.39546014771545,
279
+ "2022-01": 90.56865784935815,
280
+ "2022-02": 91.47651807564073,
281
+ "2022-03": 92.118408802977,
282
+ "2022-04": 92.28827514880957,
283
+ "2022-05": 92.63703254059693,
284
+ "2022-06": 93.27196676163082,
285
+ "2022-07": 93.64067084623942,
286
+ "2022-08": 93.6453528797819,
287
+ "2022-09": 94.01815502959602,
288
+ "2022-10": 94.15466939069903,
289
+ "2022-11": 94.51923627057985,
290
+ "2022-12": 94.507421366046,
291
+ "2023-01": 94.99441810834519,
292
+ "2023-02": 95.4208480512336,
293
+ "2023-03": 95.20529235548587,
294
+ "2023-04": 94.87921422916828,
295
+ "2023-05": 94.88633017023547,
296
+ "2023-06": 95.1400562171107,
297
+ "2023-07": 95.57275319278612,
298
+ "2023-08": 96.41484472116771,
299
+ "2023-09": 97.45602862931165,
300
+ "2023-10": 97.536137484845,
301
+ "2023-11": 97.77851478649475,
302
+ "2023-12": 97.8917423066175,
303
+ "2024-01": 98.19657814598979,
304
+ "2024-02": 99.21517125109811,
305
+ "2024-03": 98.98439676276803,
306
+ "2024-04": 99.0567543568016,
307
+ "2024-05": 99.10321197459496,
308
+ "2024-06": 99.26702958398901,
309
+ "2024-07": 99.73884577560173,
310
+ "2024-08": 99.73814760368128,
311
+ "2024-09": 100.0224013243518,
312
+ "2024-10": 100.3556759655645,
313
+ "2024-11": 100.4836294524206,
314
+ "2024-12": 100.7719169853196,
315
+ "2025-01": 101.7606910347796,
316
+ "2025-02": 102.1054562560054,
317
+ "2025-03": 102.0824159102041,
318
+ "2025-04": 102.151239382923,
319
+ "2025-05": 102.3146951306302,
320
+ "2025-06": 102.8050623737519,
321
+ "2025-07": 102.91690051692,
322
+ "2025-08": 102.9685181214591,
323
+ "2025-09": 103.4072677600416,
324
+ "2025-10": 103.6137381781981,
325
+ "2025-11": 104.08,
326
+ "2025-12": 104.28,
327
+ "2026-01": 104.33,
328
+ "2026-02": 105.52,
329
+ "2026-03": 106.83
330
+ },
331
+ "provenance": [
332
+ {
333
+ "series": "monthly",
334
+ "from": "2001-12",
335
+ "to": "2026-03",
336
+ "provider": "imf"
337
+ },
338
+ {
339
+ "series": "annual",
340
+ "from": "1995",
341
+ "to": "2001",
342
+ "provider": "world_bank"
343
+ },
344
+ {
345
+ "series": "annual",
346
+ "from": "2002",
347
+ "to": "2025",
348
+ "provider": "imf"
349
+ }
350
+ ],
351
+ "providers": [
352
+ {
353
+ "fetched_at": "2026-05-11",
354
+ "id": "world_bank",
355
+ "label": "World Bank FP.CPI.TOTL (annual)",
356
+ "status": "ok"
357
+ },
358
+ {
359
+ "fetched_at": "2026-05-11",
360
+ "id": "imf",
361
+ "label": "IMF Data Portal CPI dataflow (monthly) + World Bank FP.CPI.TOTL (annual)",
362
+ "status": "ok"
363
+ }
364
+ ],
365
+ "schema_version": 2,
366
+ "source": "IMF Data Portal CPI dataflow (monthly) + World Bank FP.CPI.TOTL (annual)",
39
367
  "updated_at": "2026-05-11"
40
368
  }
@@ -1,12 +1,11 @@
1
1
  {
2
+ "schema_version": 2,
2
3
  "base": "USD",
3
- "rates": {
4
- "1983-01-02": {
5
- "VND": 1.0
6
- }
7
- },
8
- "schema_version": 1,
9
- "source": "Frankfurter (ECB) for EUR/GBP/JPY; World Bank PA.NUS.FCRF for VND (annual avg, broadcast to every day in year)",
4
+ "year": 1983,
5
+ "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
10
6
  "updated_at": "2026-05-11",
11
- "year": 1983
7
+ "rates": {},
8
+ "annual": {
9
+ "VND": 1.0
10
+ }
12
11
  }
@@ -1,12 +1,11 @@
1
1
  {
2
+ "schema_version": 2,
2
3
  "base": "USD",
3
- "rates": {
4
- "1986-01-02": {
5
- "VND": 22.94
6
- }
7
- },
8
- "schema_version": 1,
9
- "source": "Frankfurter (ECB) for EUR/GBP/JPY; World Bank PA.NUS.FCRF for VND (annual avg, broadcast to every day in year)",
4
+ "year": 1986,
5
+ "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
10
6
  "updated_at": "2026-05-11",
11
- "year": 1986
7
+ "rates": {},
8
+ "annual": {
9
+ "VND": 22.94
10
+ }
12
11
  }