Changelog#
All notable changes to this project are documented here.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
Versions are tag-driven (hatch-vcs); the first tagged release will be 0.1.0.
[Unreleased]#
Everything below ships in the current tree and is slated for the first tagged release (0.1.0).
Added#
sources— tidyfinance-backed loaders. Thin loaders over tidyfinance for standard public sources (Fama-French factors, Goyal-Welch predictors, and the FRED / JKP / q-factor / OSAP surface it covers). Frame loaders (load_ff_factors,load_goyal_welch) return tidy frames and staynumeraire-free; the*_viewhelpers (load_gw_view) add an optionalnumerairebridge and adata_vintageprovenance stamp. This frame-vs-view split is intentional — see the README note.Raw → clean → view data zones. A step registry with recipe-hash chaining (
register_step/run_step/recipe_hash), deterministic clean builders for the standard WRDS-schema panels (crsp_monthly_clean,compustat_annual_clean,compustat_quarterly_clean,ccm_links_clean), aDataLockfrom which a numeraire result’sdata_vintageis derived, and azones.viewbridge (to_cross_section_view) that lifts a clean panel into a numeraireCrossSectionView. The clean builders are pure transforms and run without credentials; onlyzones.wrdsperforms live, credentialed pulls.builders/fredmd— vintage-aware FRED-MD. Self-built ETL for what tidyfinance does not cover: FRED-MD monthly vintages (reference period x vintage x series) with McCracken-Ng tcodes applied at build time (transform=True), plus vintage archive download/cache helpers.WRDS zone (
zones.wrds), optional[wrds]extra. Live CRSP / Compustat pulls into the raw zone from environment-only credentials (nothing written to disk), each cached as parquet with a_meta.jsonquery-hash sidecar in the outside-repo data home — licensed bytes never enter git. Deselected in CI (network + wrds markers); the module imports fine without the extra.Packaging — BSD-3 license, PEP 561
py.typed, per-version classifiers, and CI (lint, format, basedpyright, pytest, build) plus an inert Trusted-Publishing release workflow.
Notes#
Ships code, not data. No licensed or redistributable data is bundled; build outputs land in a local, git-ignored cache. Public/synthetic fixtures and mocked pulls only in tests.