NuminorBeta

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:

  1. 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.
  2. 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).
  3. Product momentum + residual vol. Trailing 20-trading-day momentum and residual volatility of each product's return.
  4. Project back to the stock. Aggregate product-level features to each focal stock, weighted by the stock's revenue share across its products.
  5. Cross-sectional z-score per datebiz_mom_styled, biz_resvol_styled.
  6. Compositene_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.