SAM PM Construct Data — Methodology (buyer-facing extract)
A buyer-facing summary of how the signal is built and how to measure it on your own factor stack. The full empirical study is the Numinor SAM Product Momentum Whitepaper v2.2; the canonical schema is the data dictionary.
What the signal is
A per-stock, per-day product-momentum signal. It captures momentum where the company actually does business — at the product level (SAM segments) — rather than at the stock level where prices are observed. It is delivered as three z-scored columns:
biz_mom_styled— product momentum,biz_resvol_styled— product residual volatility,ne_composite_styled=0.5 · biz_mom_styled − 0.5 · biz_resvol_styled(the headline).
Higher ne_composite_styled predicts higher 20-day forward return.
Construction R (the v1.0 canonical)
The signal is built from raw constituent returns — no factor residualization
and no industry/mkt-cap neutralization — so it is factor-model-agnostic. You apply
your own neutralization on top. For each trade_date = D:
- Pure-proxy baskets. Each SAM product is represented by the listcos whose
revenue is concentrated in it (a revenue-dominance gate + a minimum basket
size). This is PIT: a filing's revenue mix is usable only at
publish_date + 30 days ≤ D. - Product returns. For each product, a market-cap-weighted return of its pure proxies (with leave-one-out: a focal stock is excluded from its own product's return when building the focal's signal).
- Product momentum + residual vol. Trailing 20-trading-day momentum and residual volatility of each product's return.
- Project back to the stock. Aggregate product-level features to each focal stock, weighted by the stock's revenue share across its products.
- Cross-sectional z-score per date →
biz_mom_styled,biz_resvol_styled. - Composite →
ne_composite_styled.
Why it is a standalone signal (not an amplifier)
SAM Amplifier reshapes your factor through a relationship graph (output = ΔICIR of your factor). SAM PM has nothing to amplify — it is the output. The two are complementary: Amplifier captures who is connected to whom; PM captures which stocks have product-level momentum.
Measuring it on YOUR stack — orthogonal ICIR
The whitepaper headline is orthogonal ICIR: residualize the signal against a base factor panel, then take the information ratio of the residual's per-date IC vs forward returns. Against Numinor's illustrative 22-factor demo base, the multi-offset orthogonal ICIR is +0.3497 full / +0.3523 OOS, 100% positive across 20 rebalance offsets (Construction R). Your realized number depends on what is already in your factors — thinner stacks see more.
Reproduce it on your own base with evaluate.orthogonal_icir(signal, forward_returns, your_base_factors) (see examples/quickstart.py).
PIT discipline
Every row obeys source_rpt_date + 30 calendar days ≤ trade_date (the upstream
gate is on publish_date, of which report_date is a lower bound). Backtests on
this data inherit the discipline automatically; you can audit any row by checking
the gap.
Methodology reference: Numinor SAM Product Momentum Whitepaper v2.2. Reference code MIT-licensed; methodology and construct data product © 2026 Numinor Systems.