尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證What is X pesos from year Y worth today? Argentine inflation and peso purchasing power from real INDEC + BCRA data: a spliced CPI (IPC San Luis for the 2007-2015 INDEC-intervention years) plus official vs blue dollar. Reproducible Python pipeline + static TypeScript / Observable Plot app.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗What is X pesos from year Y worth today? This tool answers it from real INDEC and BCRA data — it downloads the official consumer-price and exchange-rate series, splices them into one continuous monthly index, and converts any past peso amount into today's purchasing power, plus its value in dollars at the official and blue (informal) rates. No eyeballed inflation, no single broken series across the years the INDEC was intervened.
▶ Try it live: peso.daddiego.com.ar
Validated to the official figures. The spliced index reproduces INDEC's published Dec–Dec inflation for 2017–2025 to the decimal (24.8 · 47.6 · 53.8 · 36.1 · 50.9 · 94.8 · 211.4 · 117.8 · 31.5 %), the IPC-GBA 2002 collapse (40.9 %), and 1:1 convertibility FX — plus a pinned cumulative regression check that $1.000 of January 2003 ≈ $1.65M of May 2026 (derived once from this same splice, so it catches a chaining error, not an error shared by every build).
It has two parts:
pipeline/ — an offline, reproducible Python pipeline (uv, standard-library only) that fetches the
real source series, splices them, validates against known anchors, and emits one small,
provenance-stamped JSON artifact.web/ — a static Vite + TypeScript site that reads that JSON and renders honest graphics
(purchasing-power decay, the official-vs-blue dollar gap, annual/monthly inflation, the spliced
index itself) plus the USD divergence — all lookups, no client-side statistics.make setup # uv sync (python deps) + npm install (web deps)
make data # fetch → splice (build JSON) → validate (vs INDEC/BCRA)
make test # python + web unit tests, each gated at 100% coverage
make lint # ruff + mypy + tsc
make up # vite dev server → http://localhost:5180
make build # static bundle in web/dist/
make deploy # publish web/dist/ to Cloudflare Pages (needs wrangler auth)
make (or make help) lists every target. make data fetches the INDEC IPC series (GBA, San
Luis, Nacional), the BCRA reference dollar and the Bluelytics history, writes
data/series.v1.json and web/public/series.v1.json, and asserts the reproduction of the official
numbers. The steps can also be run one at a time with uv run python -m pipeline.{fetch,build,validate}.
datos.gob.ar (INDEC IPC ×3, BCRA dólar) + Bluelytics (blue)
└─ pipeline/ fetch → splice (chain MoM, rebase to 100) → validate → emit
└─ web/public/series.v1.json (versioned, provenance-stamped)
└─ web/ Vite + TS + Observable Plot (lookups + honest charts only)
The equivalent today of X pesos of month m is simply X × 100 / CPI[m], where the spliced
index is rebased so the latest month = 100. USD endpoints divide by that month's official or blue
rate.
docs/metodologia.md, and the "Metodología" section in the app.pipeline/ config (pinned series + anchors) · fetch · load · splice · build · validate · artifact_check · watch
tests/ pytest suite for pipeline/ — offline, synthetic fixtures, 100% statement+branch coverage
data/ series.v1.json (raw/ is gitignored)
web/ index.html · src/{main,charts,inflation,format,usd,types}.ts · styles.css · test/ (vitest, 100%)
docs/ metodologia.md
Both layers are gated at 100% coverage — statements and branches:
pipeline/ — pytest against tiny synthetic series (no network).web/src/ — vitest + jsdom, every render path exercised against the committed artifact.make test runs both; make lint runs ruff + mypy + tsc. GitHub Actions enforce it,
path-filtered so a web-only change never reaches for the data sources; every action is pinned to
a commit SHA and Dependabot (.github/dependabot.yml) keeps the pins, npm and uv current:
| Workflow | What it does |
|---|---|
deploy.yml | web typecheck + vitest 100% gate + production build, then (only if that passed) the Cloudflare Pages deploy: production on push, preview per PR |
python.yml | ruff + mypy + pytest 100% gate (offline, fast) |
data.yml | the pipeline still reproduces INDEC/BCRA, and the committed artifact matches the rebuild |
data-update.yml | monthly watch — when INDEC publishes a newer month, bumps the vintage and pushes it to master (which deploys); a draft PR instead when the rebuild needs a human (a new year's Dec–Dec anchor) |
cleanup.yml | deletes a PR's preview deployments when the PR closes |
The series are vintage-pinned in pipeline/config.py (DATA_VINTAGE): every month at or
before the vintage is fixed, so a fresh fetch reproduces the committed artifact even as the upstream
APIs append new months. To update to a newer month, bump DATA_VINTAGE, run make data, and commit
the regenerated JSON; the monthly watch (data-update.yml, pipeline/watch.py) does exactly that on
the 20th and pushes the result to master with the ipc-watch deploy key (a bypass actor of the
protect-master ruleset), so the site redeploys on its own. A bump that completes a calendar year
must also add that year's INDEC Dec–Dec figure to INDEC_NACIONAL_ANNUAL, or make data fails:
that bump arrives as a draft PR whose body says which year. Downstream,
argentina-income-percentile polls
the deployed series.v1.json on the 21st. If a source
ever revises a past month, data.yml flags the drift.
Static bundle + one JSON → ideal for Cloudflare Pages. deploy.yml runs the web tests, builds
web/dist/ and, only once the tests passed, uploads it with wrangler on every push to master
(production) and on every pull request (a per-branch preview URL); cleanup.yml removes a PR's
previews once it closes. Both need the
CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID repository secrets — without them the workflow
still builds but skips the upload. make deploy does the same upload by hand (needs wrangler
auth). Headers come from web/public/_headers. The Pages project is valor-peso
(CF_PROJECT in the Makefile), served at valor-peso.pages.dev
behind the custom domain peso.daddiego.com.ar.
The rigorous spine — the spliced CPI and the official FX — is validated to published figures. The
one judgement call is using IPC San Luis for 2007–2015: it's a credible provincial
alternative to the discredited official series, but it's one choice among several (IPC Congreso,
CABA, other provinces) that tell the same story with slightly different numbers. The README and the
app surface this honestly; the alternative is documented and swappable in config.py.
Code: MIT. · Data: see NOTICE.
Elaboración propia en base a series oficiales del INDEC (IPC) y del BCRA (tipo de cambio), vía datos.gob.ar, empalmadas con el IPC de San Luis para el período de intervención del INDEC (2007–2015), y cotización informal histórica de Bluelytics.