numeraire 0.2.0
First tagged release. The spine is capability-complete: to_weights, to_forecast, and to_pricing are all crystallized protocols with walk-forward drivers, native evaluators, and a conformance suite.
Highlights
- Pricing capability:
SupportsPricing.expected_returns,walk_forward_pricing/pricing_in_sample, cross-sectional R² and average-|α| evaluators, andnumeraire.comparison.compare— score competing pricing models (factor models, SDFs, risk-premium estimators) on one common set of test assets. Every result row carries an explicitprotocollabel (in_sample/walk_forward), so explanatory numbers are never confusable with out-of-sample ones. - Conformance suite (
numeraire.testing.check_estimator): capabilities, output shapes, determinism, a no-look-ahead property test, and an engine round-trip — the self-certification any extension runs before its numbers are trusted. - Reference registry (
numeraire.reference.ReferenceResult): pinned published results with tolerance bands and data-access tiers (public/credentialed/restricted) — CI stays green on public data while the same case runs verbatim wherever licensed data is present. - Bundled baselines (
numeraire.baselines): equal weight (1/N), minimum variance, mean-variance, historical mean — registered through the same entry-point mechanism as any external method. - Weight-stream simulator:
simulate_weights+RebalanceSchedulewith explicit drift, turnover, and cost conventions. - Inference toolkit (
core.stats): GRS, Clark-West, paired Sharpe (Jobson-Korkie–Memmel), HAC alpha regression, Bonferroni/Holm/BHY adjustments, certainty-equivalent / return-loss / performance-fee. - Cross-sectional data layer:
CrossSectionViewwith zero-copy point-in-time windows, ragged-panel walk-forward engine, parallel fold execution, refit-cadence control, and a validation-split helper. - Interop: polars/arrow ingestion at the view boundary (narwhals-optional, zero new hard dependencies) and a skfolio adapter (
[skfolio]extra) that wraps portfolio optimizers asto_weightsestimators.
Python ≥ 3.11, pandas ≥ 2.2. Version is tag-driven (hatch-vcs).