How to compose registered signals into a factor
Combining signals can strengthen an investment idea—or count the same evidence several times. A valuation measure and a profitability measure may contribute different information; three near-identical momentum measures may only make one crowded view look more convincing.
A composite factor makes that combination explicit. It joins registered signals under a stated rule and gives the result its own identity, timing, normalization, and version so the combined idea can be tested rather than treated as an informal blend.
StrategyNet treats the graph, the materialized score, the historical evaluation, and the eventual strategy test as separate records. Signal Designer can retain a graph that describes several inputs and their lineage; the current saved execution contract emits one expression score, with an optional gate and fallback. A visual composite therefore becomes executable only when its calculation is represented by the supported expression contract or by a backend capability that has returned a result.
Mathematical definition
Suppose \(K\) registered signals have been aligned to the same security \(i\) and observation time \(t\). After applying the declared point-in-time normalization to each input, a linear composite is
\[c_{i,t}=\sum_{k=1}^{K}\alpha_k z_{i,t}^{(k)},\]
where \(z_{i,t}^{(k)}\) is the normalized value of input \(k\) and \(\alpha_k\) is its recorded weight. If a larger value of one input represents an adverse condition, its orientation can be reversed before composition or expressed through a negative weight. The choice must remain part of the versioned definition.
The output may then be normalized again across the eligible universe. For example, a percentile-ranked output is
\[p_{i,t} = \frac{\operatorname{rank}_{j\in U_t}(c_{j,t})-1} {|U_t|-1},\]
with an explicit tie method when several securities have the same composite value.
A small numerical example
Consider three hypothetical inputs: earnings-revision breadth, residual momentum, and short-interest pressure. The values below have already been standardized within one eligible cross-section. We assign weights of \(0.45\), \(0.35\), and \(-0.20\) respectively.
Illustrative composite calculation
| Security | Revisions | Momentum | Short pressure | Composite | Rank |
|---|---|---|---|---|---|
| A | +1.20 | +0.40 | −0.30 | +0.740 | 1 |
| B | +0.40 | +1.10 | +0.50 | +0.465 | 2 |
| C | −0.20 | +0.30 | −0.60 | +0.135 | 3 |
| D | −0.80 | −0.50 | +0.20 | −0.575 | 4 |
For security A, the calculation is
\[0.45(1.20)+0.35(0.40)-0.20(-0.30)=0.740.\]
The negative short-pressure observation helps A because the definition assigns an adverse orientation to that input. B receives strong support from momentum, but its positive short-pressure value reduces the combined score.
Python calculation
import pandas as pd
inputs = pd.DataFrame(
{
"revision_breadth": [1.20, 0.40, -0.20, -0.80],
"residual_momentum": [0.40, 1.10, 0.30, -0.50],
"short_pressure": [-0.30, 0.50, -0.60, 0.20],
},
index=["A", "B", "C", "D"],
)
weights = pd.Series(
{
"revision_breadth": 0.45,
"residual_momentum": 0.35,
"short_pressure": -0.20,
}
)
eligible = inputs.notna().all(axis=1)
composite = inputs.loc[eligible].mul(weights).sum(axis=1)
percentile_rank = composite.rank(method="average", pct=True)
result = pd.DataFrame(
{"composite": composite, "percentile_rank": percentile_rank}
).sort_values("composite", ascending=False)
This short example uses a complete-case rule. A production definition should state whether an absent input makes the security ineligible, permits a renormalized partial score, or invokes a recorded fallback.
Interpreting positive, zero, and negative scores
When the inputs are cross-sectionally centered, a positive composite indicates that the weighted evidence lies above the cross-sectional centre in the declared direction. A negative value indicates the reverse. A value near zero places the security near the balance of the included inputs.
These signs are relative scores rather than promised returns. Their meaning depends on the orientation of every input, the selected universe, the normalization, and the observation time. A zero can also arise because strong positive and negative components offset one another, which is different from having little data or little exposure to every component.
A weight-sensitivity check
The short-pressure penalty below is varied while the other inputs remain fixed. This is a deliberately small perturbation exercise, but it reveals a useful fact: the ordering of B and C eventually changes because their exposure to short pressure is very different.
Composite scores as the short-pressure penalty changes
| Short-pressure weight | A | B | C | D | Middle ordering |
|---|---|---|---|---|---|
| −0.05 | +0.695 | +0.540 | +0.045 | −0.545 | B above C |
| −0.20 | +0.740 | +0.465 | +0.135 | −0.575 | B above C |
| −0.60 | +0.860 | +0.265 | +0.375 | −0.655 | C above B |
A serious evaluation repeats this exercise across dates, universes, regimes, and modest changes to every important parameter. A result that depends on one narrow weight choice deserves more scrutiny than one whose ordering and portfolio behaviour remain stable over a reasonable neighbourhood.
What Signal Designer records
The registered definition should identify each input by its exact catalog ID and version, while its name and description explain the economic idea. The ID alone does not establish the signal's meaning. The record also needs the input aliases, graph edges, transformation parameters, required-input rules, normalization, availability time, publication lag, forecast horizon, eligible universe, author, and output identifier.
Signal Designer can draw source-feature lineage, stored input weights, warm-up and coverage gates, normalization, and output nodes. Some of these nodes currently preserve research intent as graph metadata. The saved executable contract supports one selected expression score and can apply an optional gate threshold and fallback value. The interface states this boundary so that a designed graph is not mistaken for a completed materialization.
Common implementation mistakes
Combining inputs before aligning their timestamps
Each component must be eligible at the composite's stated decision time. Joining on a calendar date while ignoring release and availability times can introduce information that the live decision would not have possessed.
Letting scale determine the weights
Raw fields measured in dollars, percentages, and counts cannot be combined meaningfully merely because they occupy adjacent columns. The definition must state how every input is oriented, winsorized, normalized, and treated when coverage is incomplete.
Inferring meaning from a registry identifier
Identifiers are stable references. The registered description, inputs, timing, and horizon define the content, so downstream analysis should retrieve those fields rather than decode a narrative from the ID.
Choosing weights from the complete test history
Weights estimated with future observations make the historical result optimistic. Fixed weights should be declared before the test; adaptive weights need a walk-forward schedule that records the data cutoff and the coefficient set used at every rebalance.
Treating graph metadata as an executed result
A saved design proves that the research contract exists. Materialized rows, evaluation statistics, candidate backtests, and portfolio holdings each require their corresponding backend result.
Ignoring correlated inputs
Two individually plausible signals can carry nearly the same information. A simple sum may then give that shared idea more influence than the recorded weights suggest. Pairwise dependence, marginal contribution, and stability after removing each input belong in the review.
Relationship to adjacent terms
A composite factor is a new signal definition built from other registered signals or source features. Cross-sectional rankingCross-sectional rankingOrdering securities against one another at the same observation time using a signal or characteristic.Open glossary entry → determines relative order when rank-based normalization is used. Information coefficientInformation coefficient (IC)The cross-sectional correlation between a signal score and a subsequent return. Rank IC uses ranked values and measures whether the signal orders securities correctly.Open glossary entry → evaluates the completed composite against its stated forward-return label, while rolling ICIR summarizes the stability of that relationship through time.
Factor exposureFactor exposureThe sensitivity of a security or portfolio to a specified factor, estimated from holdings, characteristics, or a return model.Open glossary entry → measures how strongly a security or portfolio responds to a factor. It does not describe the internal weight assigned to an input inside the composite. Portfolio optimization later uses evaluated candidates, risk estimates, constraints, and costs to determine an allocation.
How the composite enters evaluation
After materialization, the composite receives the same point-in-time controls as any other registered signal. Date-level IC, rolling ICIR, hit rate, spread, coverage, and stability are calculated under a fixed universe, horizon, lag, and missing-value rule. Comparisons with the component signals should use the same eligible observations so that the test measures the effect of composition rather than a difference in coverage.
A candidate-strategy test can then apply a stated construction method, execution convention, rebalance schedule, costs, and risk controls. Portfolio holdings appear only after a separate optimizer run has returned them. This sequence preserves the difference between a useful composite score, a tradable construction rule, and a constrained allocation.
Frequently asked questions
Must the weights sum to one?
No universal rule requires it. A normalization such as \(\sum_k|\alpha_k|=1\) makes versions easier to compare, but the subsequent cross-sectional normalization can remove a common scale factor. Orientation, relative influence, and recorded constraints matter more than a cosmetic sum.
Can ICIR determine the input weights?
ICIR can inform a declared weighting method, provided that its estimation window ends before the composite observation being tested. Correlation among the inputs, turnover, coverage, and estimation noise still require attention.
Can daily and intraday signals be combined?
They can share a definition only when the timing contract specifies which observation from each input is eligible at the decision time. Their refresh rates remain different, and a missing or stale intraday value needs an explicit rule.
Does saving the graph calculate its history?
Saving records the definition. Materialization and evaluation are separate backend operations, and the interface reports their status independently.
What role does the AI Workbench play?
It can retrieve catalog context and propose definitions or tool calls using registered IDs and available capabilities. The analyst reviews mutations, and the application should claim a materialization, backtest, or optimizer result only after the relevant API has returned one.
Next reading
This walkthrough is for research and educational purposes. It illustrates how strategynet.ai organizes signal evidence into factors and scenarios. It provides no recommendation, investment advice, or instruction to trade any security.
Back to Insights