Skip to main content

Dual tags

Every predictor is a registered function carrying two tags:
  • category — the standard financial taxonomy, shown to humans (valuation, profitability, efficiency, leverage, growth, momentum, size, liquidity)
  • group — the ML feature-set alias used by models (value, profitability, investment, momentum, size)
Registration happens at import; the panels, get_metrics, list_metrics, and every REST endpoint pick the new metric up automatically.

The taxonomy

Definitions follow the open-source asset-pricing literature (Chen-Zimmermann): ps = Piotroski F-score, nincr = consecutive earnings-increase quarters, depr = depreciation/PP&E, chcsho = net share issuance, agr = 12-month asset growth, operprof = operating profits over book equity.

Point-in-time rule

A metric value for month-end t may only use data observable at t - asof_lag months:
  • asof_lag=0 — a fiscal year ending 2015-03-31 is usable from 2015-03-31 (the academic standard)
  • asof_lag=3 — approximates the results-announcement delay
MetricContext carries only data that passes the filter — metric functions cannot see the future even if they try.

Panels

build-panel runs the registry over every ticker’s staged monthly prices and writes one CSV per ML group to intermediate_data/panels/:
get_panel(metric) reads the panels back as a wide date × ticker cross-section — the exact shape the ML pipeline consumes.