timeprice 0.7.0 → 0.8.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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +53 -0
  3. data/README.md +41 -1
  4. data/data/cpi/au.json +2 -2
  5. data/data/cpi/br.json +529 -0
  6. data/data/cpi/ca.json +3 -3
  7. data/data/cpi/ch.json +549 -0
  8. data/data/cpi/cn.json +10 -10
  9. data/data/cpi/cz.json +500 -0
  10. data/data/cpi/eu.json +1 -1
  11. data/data/cpi/hk.json +351 -0
  12. data/data/cpi/hu.json +537 -0
  13. data/data/cpi/id.json +550 -0
  14. data/data/cpi/il.json +549 -0
  15. data/data/cpi/in.json +549 -0
  16. data/data/cpi/jp.json +2 -2
  17. data/data/cpi/kr.json +36 -35
  18. data/data/cpi/mx.json +550 -0
  19. data/data/cpi/my.json +429 -0
  20. data/data/cpi/no.json +549 -0
  21. data/data/cpi/nz.json +94 -0
  22. data/data/cpi/ph.json +309 -0
  23. data/data/cpi/pl.json +539 -0
  24. data/data/cpi/ru.json +2 -2
  25. data/data/cpi/se.json +549 -0
  26. data/data/cpi/sg.json +369 -0
  27. data/data/cpi/th.json +309 -0
  28. data/data/cpi/tr.json +549 -0
  29. data/data/cpi/uk.json +1 -1
  30. data/data/cpi/us.json +1007 -5
  31. data/data/cpi/vn.json +10 -10
  32. data/data/cpi/za.json +549 -0
  33. data/data/fx/usd/1999.json +5201 -261
  34. data/data/fx/usd/2000.json +5982 -257
  35. data/data/fx/usd/2001.json +6121 -256
  36. data/data/fx/usd/2002.json +6145 -257
  37. data/data/fx/usd/2003.json +6145 -257
  38. data/data/fx/usd/2004.json +6241 -261
  39. data/data/fx/usd/2005.json +6193 -259
  40. data/data/fx/usd/2006.json +6145 -257
  41. data/data/fx/usd/2007.json +6144 -257
  42. data/data/fx/usd/2008.json +6155 -258
  43. data/data/fx/usd/2009.json +5912 -258
  44. data/data/fx/usd/2010.json +5958 -260
  45. data/data/fx/usd/2011.json +5935 -259
  46. data/data/fx/usd/2012.json +5912 -258
  47. data/data/fx/usd/2013.json +5889 -257
  48. data/data/fx/usd/2014.json +5889 -257
  49. data/data/fx/usd/2015.json +5912 -258
  50. data/data/fx/usd/2016.json +5935 -259
  51. data/data/fx/usd/2017.json +5889 -257
  52. data/data/fx/usd/2018.json +6123 -257
  53. data/data/fx/usd/2019.json +6145 -257
  54. data/data/fx/usd/2020.json +6193 -259
  55. data/data/fx/usd/2021.json +6217 -260
  56. data/data/fx/usd/2022.json +6193 -259
  57. data/data/fx/usd/2023.json +6145 -257
  58. data/data/fx/usd/2024.json +6169 -258
  59. data/data/fx/usd/2025.json +6145 -257
  60. data/data/fx/usd/2026.json +2196 -92
  61. data/data/fx/usd/_annual.json +2 -2
  62. data/data/manifest.json +488 -73
  63. data/lib/timeprice/cli/presenters/compare.rb +44 -8
  64. data/lib/timeprice/cli.rb +21 -4
  65. data/lib/timeprice/compare/series.rb +120 -0
  66. data/lib/timeprice/compare.rb +77 -17
  67. data/lib/timeprice/cpi_lookup.rb +11 -5
  68. data/lib/timeprice/forecast/cagr.rb +96 -0
  69. data/lib/timeprice/forecast/cpi_forecaster.rb +90 -0
  70. data/lib/timeprice/forecast/fx_forecaster.rb +173 -0
  71. data/lib/timeprice/forecast.rb +21 -0
  72. data/lib/timeprice/sources.rb +1 -1
  73. data/lib/timeprice/supported.rb +16 -0
  74. data/lib/timeprice/version.rb +1 -1
  75. data/lib/timeprice.rb +34 -2
  76. metadata +26 -2
data/data/manifest.json CHANGED
@@ -3,203 +3,620 @@
3
3
  {
4
4
  "code": "AU",
5
5
  "cpi_file": "cpi/au.json",
6
+ "cpi_ranges": {
7
+ "annual": {
8
+ "max": "2024",
9
+ "min": "1960"
10
+ },
11
+ "quarterly": {
12
+ "max": "2026-Q1",
13
+ "min": "1948-Q3"
14
+ }
15
+ },
6
16
  "currency": "AUD",
7
17
  "granularities": [
8
18
  "quarterly",
9
19
  "annual"
10
- ],
20
+ ]
21
+ },
22
+ {
23
+ "code": "BR",
24
+ "cpi_file": "cpi/br.json",
11
25
  "cpi_ranges": {
12
26
  "annual": {
13
- "min": "1960",
14
- "max": "2024"
27
+ "max": "2025",
28
+ "min": "1980"
15
29
  },
16
- "quarterly": {
17
- "min": "1948-Q3",
18
- "max": "2026-Q1"
30
+ "monthly": {
31
+ "max": "2026-03",
32
+ "min": "1990-01"
19
33
  }
20
- }
34
+ },
35
+ "currency": "BRL",
36
+ "granularities": [
37
+ "monthly",
38
+ "annual"
39
+ ]
21
40
  },
22
41
  {
23
42
  "code": "CA",
24
43
  "cpi_file": "cpi/ca.json",
44
+ "cpi_ranges": {
45
+ "annual": {
46
+ "max": "2025",
47
+ "min": "1914"
48
+ },
49
+ "monthly": {
50
+ "max": "2026-03",
51
+ "min": "1914-01"
52
+ }
53
+ },
25
54
  "currency": "CAD",
26
55
  "granularities": [
27
56
  "monthly",
28
57
  "annual"
29
- ],
58
+ ]
59
+ },
60
+ {
61
+ "code": "CH",
62
+ "cpi_file": "cpi/ch.json",
30
63
  "cpi_ranges": {
31
64
  "annual": {
32
- "min": "1914",
33
- "max": "2025"
65
+ "max": "2025",
66
+ "min": "1960"
34
67
  },
35
68
  "monthly": {
36
- "min": "1914-01",
37
- "max": "2026-03"
69
+ "max": "2026-03",
70
+ "min": "1990-01"
38
71
  }
39
- }
72
+ },
73
+ "currency": "CHF",
74
+ "granularities": [
75
+ "monthly",
76
+ "annual"
77
+ ]
40
78
  },
41
79
  {
42
80
  "code": "CN",
43
81
  "cpi_file": "cpi/cn.json",
82
+ "cpi_ranges": {
83
+ "annual": {
84
+ "max": "2025",
85
+ "min": "1986"
86
+ },
87
+ "monthly": {
88
+ "max": "2026-03",
89
+ "min": "1993-01"
90
+ }
91
+ },
44
92
  "currency": "CNY",
45
93
  "granularities": [
46
94
  "monthly",
47
95
  "annual"
48
- ],
96
+ ]
97
+ },
98
+ {
99
+ "code": "CZ",
100
+ "cpi_file": "cpi/cz.json",
49
101
  "cpi_ranges": {
50
102
  "annual": {
51
- "min": "1986",
52
- "max": "2025"
103
+ "max": "2025",
104
+ "min": "1991"
53
105
  },
54
106
  "monthly": {
55
- "min": "1993-01",
56
- "max": "2026-03"
107
+ "max": "2026-03",
108
+ "min": "1991-01"
57
109
  }
58
- }
110
+ },
111
+ "currency": "CZK",
112
+ "granularities": [
113
+ "monthly",
114
+ "annual"
115
+ ]
59
116
  },
60
117
  {
61
118
  "code": "EU",
62
119
  "cpi_file": "cpi/eu.json",
120
+ "cpi_ranges": {
121
+ "annual": {
122
+ "max": "2025",
123
+ "min": "1996"
124
+ },
125
+ "monthly": {
126
+ "max": "2025-12",
127
+ "min": "1996-01"
128
+ }
129
+ },
63
130
  "currency": "EUR",
64
131
  "granularities": [
65
132
  "monthly",
66
133
  "annual"
67
- ],
134
+ ]
135
+ },
136
+ {
137
+ "code": "HK",
138
+ "cpi_file": "cpi/hk.json",
68
139
  "cpi_ranges": {
69
140
  "annual": {
70
- "min": "1996",
71
- "max": "2025"
141
+ "max": "2025",
142
+ "min": "1981"
72
143
  },
73
144
  "monthly": {
74
- "min": "1996-01",
75
- "max": "2025-12"
145
+ "max": "2026-03",
146
+ "min": "2004-10"
76
147
  }
77
- }
148
+ },
149
+ "currency": "HKD",
150
+ "granularities": [
151
+ "monthly",
152
+ "annual"
153
+ ]
78
154
  },
79
155
  {
80
- "code": "JP",
81
- "cpi_file": "cpi/jp.json",
82
- "currency": "JPY",
156
+ "code": "HU",
157
+ "cpi_file": "cpi/hu.json",
158
+ "cpi_ranges": {
159
+ "annual": {
160
+ "max": "2025",
161
+ "min": "1972"
162
+ },
163
+ "monthly": {
164
+ "max": "2026-03",
165
+ "min": "1990-01"
166
+ }
167
+ },
168
+ "currency": "HUF",
83
169
  "granularities": [
170
+ "monthly",
84
171
  "annual"
85
- ],
172
+ ]
173
+ },
174
+ {
175
+ "code": "ID",
176
+ "cpi_file": "cpi/id.json",
86
177
  "cpi_ranges": {
87
178
  "annual": {
88
- "min": "1960",
89
- "max": "2024"
179
+ "max": "2025",
180
+ "min": "1960"
181
+ },
182
+ "monthly": {
183
+ "max": "2026-04",
184
+ "min": "1990-01"
90
185
  }
91
- }
186
+ },
187
+ "currency": "IDR",
188
+ "granularities": [
189
+ "monthly",
190
+ "annual"
191
+ ]
192
+ },
193
+ {
194
+ "code": "IL",
195
+ "cpi_file": "cpi/il.json",
196
+ "cpi_ranges": {
197
+ "annual": {
198
+ "max": "2025",
199
+ "min": "1960"
200
+ },
201
+ "monthly": {
202
+ "max": "2026-03",
203
+ "min": "1990-01"
204
+ }
205
+ },
206
+ "currency": "ILS",
207
+ "granularities": [
208
+ "monthly",
209
+ "annual"
210
+ ]
211
+ },
212
+ {
213
+ "code": "IN",
214
+ "cpi_file": "cpi/in.json",
215
+ "cpi_ranges": {
216
+ "annual": {
217
+ "max": "2025",
218
+ "min": "1960"
219
+ },
220
+ "monthly": {
221
+ "max": "2026-03",
222
+ "min": "1990-01"
223
+ }
224
+ },
225
+ "currency": "INR",
226
+ "granularities": [
227
+ "monthly",
228
+ "annual"
229
+ ]
230
+ },
231
+ {
232
+ "code": "JP",
233
+ "cpi_file": "cpi/jp.json",
234
+ "cpi_ranges": {
235
+ "annual": {
236
+ "max": "2024",
237
+ "min": "1960"
238
+ }
239
+ },
240
+ "currency": "JPY",
241
+ "granularities": [
242
+ "annual"
243
+ ]
92
244
  },
93
245
  {
94
246
  "code": "KR",
95
247
  "cpi_file": "cpi/kr.json",
248
+ "cpi_ranges": {
249
+ "annual": {
250
+ "max": "2025",
251
+ "min": "1960"
252
+ },
253
+ "monthly": {
254
+ "max": "2026-04",
255
+ "min": "1990-01"
256
+ }
257
+ },
96
258
  "currency": "KRW",
97
259
  "granularities": [
98
260
  "monthly",
99
261
  "annual"
100
- ],
262
+ ]
263
+ },
264
+ {
265
+ "code": "MX",
266
+ "cpi_file": "cpi/mx.json",
267
+ "cpi_ranges": {
268
+ "annual": {
269
+ "max": "2025",
270
+ "min": "1960"
271
+ },
272
+ "monthly": {
273
+ "max": "2026-04",
274
+ "min": "1990-01"
275
+ }
276
+ },
277
+ "currency": "MXN",
278
+ "granularities": [
279
+ "monthly",
280
+ "annual"
281
+ ]
282
+ },
283
+ {
284
+ "code": "MY",
285
+ "cpi_file": "cpi/my.json",
286
+ "cpi_ranges": {
287
+ "annual": {
288
+ "max": "2025",
289
+ "min": "1960"
290
+ },
291
+ "monthly": {
292
+ "max": "2026-03",
293
+ "min": "2000-01"
294
+ }
295
+ },
296
+ "currency": "MYR",
297
+ "granularities": [
298
+ "monthly",
299
+ "annual"
300
+ ]
301
+ },
302
+ {
303
+ "code": "NO",
304
+ "cpi_file": "cpi/no.json",
305
+ "cpi_ranges": {
306
+ "annual": {
307
+ "max": "2025",
308
+ "min": "1960"
309
+ },
310
+ "monthly": {
311
+ "max": "2026-03",
312
+ "min": "1990-01"
313
+ }
314
+ },
315
+ "currency": "NOK",
316
+ "granularities": [
317
+ "monthly",
318
+ "annual"
319
+ ]
320
+ },
321
+ {
322
+ "code": "NZ",
323
+ "cpi_file": "cpi/nz.json",
324
+ "cpi_ranges": {
325
+ "annual": {
326
+ "max": "2024",
327
+ "min": "1960"
328
+ }
329
+ },
330
+ "currency": "NZD",
331
+ "granularities": [
332
+ "annual"
333
+ ]
334
+ },
335
+ {
336
+ "code": "PH",
337
+ "cpi_file": "cpi/ph.json",
338
+ "cpi_ranges": {
339
+ "annual": {
340
+ "max": "2025",
341
+ "min": "1960"
342
+ },
343
+ "monthly": {
344
+ "max": "2026-03",
345
+ "min": "2010-01"
346
+ }
347
+ },
348
+ "currency": "PHP",
349
+ "granularities": [
350
+ "monthly",
351
+ "annual"
352
+ ]
353
+ },
354
+ {
355
+ "code": "PL",
356
+ "cpi_file": "cpi/pl.json",
101
357
  "cpi_ranges": {
102
358
  "annual": {
103
- "min": "1960",
104
- "max": "2025"
359
+ "max": "2025",
360
+ "min": "1970"
105
361
  },
106
362
  "monthly": {
107
- "min": "1990-01",
108
- "max": "2026-03"
363
+ "max": "2026-03",
364
+ "min": "1990-01"
109
365
  }
110
- }
366
+ },
367
+ "currency": "PLN",
368
+ "granularities": [
369
+ "monthly",
370
+ "annual"
371
+ ]
111
372
  },
112
373
  {
113
374
  "code": "RU",
114
375
  "cpi_file": "cpi/ru.json",
376
+ "cpi_ranges": {
377
+ "annual": {
378
+ "max": "2025",
379
+ "min": "1992"
380
+ },
381
+ "monthly": {
382
+ "max": "2026-03",
383
+ "min": "1992-01"
384
+ }
385
+ },
115
386
  "currency": "RUB",
116
387
  "granularities": [
117
388
  "monthly",
118
389
  "annual"
119
- ],
390
+ ]
391
+ },
392
+ {
393
+ "code": "SE",
394
+ "cpi_file": "cpi/se.json",
120
395
  "cpi_ranges": {
121
396
  "annual": {
122
- "min": "1992",
123
- "max": "2025"
397
+ "max": "2025",
398
+ "min": "1960"
124
399
  },
125
400
  "monthly": {
126
- "min": "1992-01",
127
- "max": "2026-03"
401
+ "max": "2026-03",
402
+ "min": "1990-01"
128
403
  }
129
- }
404
+ },
405
+ "currency": "SEK",
406
+ "granularities": [
407
+ "monthly",
408
+ "annual"
409
+ ]
130
410
  },
131
411
  {
132
- "code": "UK",
133
- "cpi_file": "cpi/uk.json",
134
- "currency": "GBP",
412
+ "code": "SG",
413
+ "cpi_file": "cpi/sg.json",
414
+ "cpi_ranges": {
415
+ "annual": {
416
+ "max": "2025",
417
+ "min": "1960"
418
+ },
419
+ "monthly": {
420
+ "max": "2026-03",
421
+ "min": "2005-01"
422
+ }
423
+ },
424
+ "currency": "SGD",
135
425
  "granularities": [
136
426
  "monthly",
137
427
  "annual"
138
- ],
428
+ ]
429
+ },
430
+ {
431
+ "code": "TH",
432
+ "cpi_file": "cpi/th.json",
139
433
  "cpi_ranges": {
140
434
  "annual": {
141
- "min": "1988",
142
- "max": "2025"
435
+ "max": "2025",
436
+ "min": "1960"
143
437
  },
144
438
  "monthly": {
145
- "min": "1988-01",
146
- "max": "2026-03"
439
+ "max": "2026-03",
440
+ "min": "2010-01"
147
441
  }
148
- }
442
+ },
443
+ "currency": "THB",
444
+ "granularities": [
445
+ "monthly",
446
+ "annual"
447
+ ]
149
448
  },
150
449
  {
151
- "code": "US",
152
- "cpi_file": "cpi/us.json",
153
- "currency": "USD",
450
+ "code": "TR",
451
+ "cpi_file": "cpi/tr.json",
452
+ "cpi_ranges": {
453
+ "annual": {
454
+ "max": "2025",
455
+ "min": "1960"
456
+ },
457
+ "monthly": {
458
+ "max": "2026-03",
459
+ "min": "1990-01"
460
+ }
461
+ },
462
+ "currency": "TRY",
154
463
  "granularities": [
155
464
  "monthly",
156
465
  "annual"
157
- ],
466
+ ]
467
+ },
468
+ {
469
+ "code": "UK",
470
+ "cpi_file": "cpi/uk.json",
158
471
  "cpi_ranges": {
159
472
  "annual": {
160
- "min": "1990",
161
- "max": "2024"
473
+ "max": "2025",
474
+ "min": "1988"
162
475
  },
163
476
  "monthly": {
164
- "min": "1990-01",
165
- "max": "2026-03"
477
+ "max": "2026-03",
478
+ "min": "1988-01"
166
479
  }
167
- }
480
+ },
481
+ "currency": "GBP",
482
+ "granularities": [
483
+ "monthly",
484
+ "annual"
485
+ ]
486
+ },
487
+ {
488
+ "code": "US",
489
+ "cpi_file": "cpi/us.json",
490
+ "cpi_ranges": {
491
+ "annual": {
492
+ "max": "2024",
493
+ "min": "1913"
494
+ },
495
+ "monthly": {
496
+ "max": "2026-04",
497
+ "min": "1913-01"
498
+ }
499
+ },
500
+ "currency": "USD",
501
+ "granularities": [
502
+ "monthly",
503
+ "annual"
504
+ ]
168
505
  },
169
506
  {
170
507
  "code": "VN",
171
508
  "cpi_file": "cpi/vn.json",
509
+ "cpi_ranges": {
510
+ "annual": {
511
+ "max": "2025",
512
+ "min": "1995"
513
+ },
514
+ "monthly": {
515
+ "max": "2026-03",
516
+ "min": "2001-12"
517
+ }
518
+ },
172
519
  "currency": "VND",
173
520
  "granularities": [
174
521
  "monthly",
175
522
  "annual"
176
- ],
523
+ ]
524
+ },
525
+ {
526
+ "code": "ZA",
527
+ "cpi_file": "cpi/za.json",
177
528
  "cpi_ranges": {
178
529
  "annual": {
179
- "min": "1995",
180
- "max": "2025"
530
+ "max": "2025",
531
+ "min": "1960"
181
532
  },
182
533
  "monthly": {
183
- "min": "2001-12",
184
- "max": "2026-03"
534
+ "max": "2026-03",
535
+ "min": "1990-01"
185
536
  }
186
- }
537
+ },
538
+ "currency": "ZAR",
539
+ "granularities": [
540
+ "monthly",
541
+ "annual"
542
+ ]
187
543
  }
188
544
  ],
189
545
  "fx": {
190
546
  "annual_file": "fx/usd/_annual.json",
547
+ "annual_only_currencies": [
548
+ "RUB",
549
+ "VND"
550
+ ],
191
551
  "base": "USD",
192
552
  "currencies": [
193
553
  "AUD",
554
+ "BGN",
555
+ "BRL",
194
556
  "CAD",
557
+ "CHF",
195
558
  "CNY",
559
+ "CZK",
560
+ "DKK",
196
561
  "EUR",
197
562
  "GBP",
563
+ "HKD",
564
+ "HUF",
565
+ "IDR",
566
+ "ILS",
567
+ "INR",
568
+ "ISK",
198
569
  "JPY",
199
570
  "KRW",
571
+ "MXN",
572
+ "MYR",
573
+ "NOK",
574
+ "NZD",
575
+ "PHP",
576
+ "PLN",
577
+ "RON",
200
578
  "RUB",
201
- "VND"
579
+ "SEK",
580
+ "SGD",
581
+ "THB",
582
+ "TRY",
583
+ "VND",
584
+ "ZAR"
202
585
  ],
586
+ "daily_currencies": [
587
+ "AUD",
588
+ "BGN",
589
+ "BRL",
590
+ "CAD",
591
+ "CHF",
592
+ "CNY",
593
+ "CZK",
594
+ "DKK",
595
+ "EUR",
596
+ "GBP",
597
+ "HKD",
598
+ "HUF",
599
+ "IDR",
600
+ "ILS",
601
+ "INR",
602
+ "ISK",
603
+ "JPY",
604
+ "KRW",
605
+ "MXN",
606
+ "MYR",
607
+ "NOK",
608
+ "NZD",
609
+ "PHP",
610
+ "PLN",
611
+ "RON",
612
+ "SEK",
613
+ "SGD",
614
+ "THB",
615
+ "TRY",
616
+ "ZAR"
617
+ ],
618
+ "daily_max": "2026-05-15",
619
+ "daily_min": "1999-01-04",
203
620
  "daily_years": [
204
621
  1999,
205
622
  2000,
@@ -229,10 +646,8 @@
229
646
  2024,
230
647
  2025,
231
648
  2026
232
- ],
233
- "daily_min": "1999-01-04",
234
- "daily_max": "2026-05-11"
649
+ ]
235
650
  },
236
- "generated_at": "2026-05-12",
651
+ "generated_at": "2026-05-16",
237
652
  "schema_version": 4
238
653
  }