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 stay numeraire-free; the *_view helpers (load_gw_view) add an optional numeraire bridge and a data_vintage provenance 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), a DataLock from which a numeraire result’s data_vintage is derived, and a zones.view bridge (to_cross_section_view) that lifts a clean panel into a numeraire CrossSectionView. The clean builders are pure transforms and run without credentials; only zones.wrds performs 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.json query-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.