Stage 1 — From signals to a pure FMP
The first animation begins with observations, not portfolios. Prices, fundamentals, estimates, news, derivatives, and other feeds arrive with a time at which they became known. StrategyNet admits only records available at the calculation time, turns them into comparable cross-sectional features, and then constructs a portfolio that represents one chosen signal as cleanly as the risk model permits.
What the animation shows
Read the three panels from left to right.
- Point-in-time features. Timestamped observations pass an availability check and assemble into a matrix with securities in rows and features in columns. Values with different units are ranked across the current universe and placed on a common scale.
- AI-assisted composite. Registered inputs can be combined into a proposed factor recipe. The signs, transformations, weights, universe, and forecast horizon remain visible and editable. The proposal becomes a versioned research object only after review.
- Active risk model and FMP solve. The approved signal enters beside the market, sector, style, and covariance estimates. The optimizer removes the unwanted risk exposures while retaining exposure to the signal. The output is a long/short vector of security weights: the pure FMP.
AI belongs in the middle panel. It can find registered inputs, suggest a composition, and explain overlap with existing factors. It does not see future returns, approve its own proposal, or replace the validation stages that follow.
From raw values to one factor score
Let \(\mathcal{D}_t\) contain the records known by time \(t\). A feature for security \(i\) is constructed only from that information set:
\[x_{i,m,t}=g_m(\mathcal{D}_t,i).\]
Cross-sectional ranking makes unlike measurements comparable. If \(z_{i,m,t}\) is the normalized value of feature \(m\), a composite candidate \(j\) can be written as
\[s_{i,j,t}=\sum_{m=1}^{M_j} b_{m,j,t}z_{i,m,t}.\]
StrategyNet ranks the blend again to obtain the final signal exposure,
\[X_{A,t}[:,j]=\operatorname{rank\_zscore}(s_{:,j,t}).\]
That last rank matters. The recipe is no longer a collection of incompatible input units; it is one forecast whose positive and negative values describe relative standing within the eligible universe.
Purifying the signal with the risk model
Let \(X_{R,t}\) contain common risk exposures and let the asset covariance model be
\[Q_t=X_{R,t}\Sigma_{R,t}X_{R,t}^{\mathsf T}+D_t.\]
For signal \(j\), the pure FMP \(h_{j,t}\) is the minimum-risk portfolio that is neutral to the declared common risks and has unit exposure to the chosen signal:
\[\begin{aligned} \underset{h}{\operatorname{minimize}}\quad & h^{\mathsf T}Q_t h \\ \text{subject to}\quad & X_{R,t}^{\mathsf T}h=0, \\ & X_{A,t}^{\mathsf T}h=e_j. \end{aligned}\]
The first constraint removes the exposures we do not want to confuse with the idea. The second preserves the selected signal and suppresses the other alpha signals in the construction set. In matrix form, the covariance-aware solution is
\[H_t=Q_t^{-1}C_t \left(C_t^{\mathsf T}Q_t^{-1}C_t\right)^{+}G,\]
where the columns of \(H_t\) are the pure FMP security weights.
What leaves this stage
The output is not a score card or a smooth historical curve. It is a dated, versioned set of holdings built from a dated signal and a dated risk model. When the next period's asset returns become observable, those frozen holdings produce the realized FMP return
\[f_{t+1}=H_t^{\mathsf T}r_{t+1}.\]
Repeating that construction through time creates the FMP sleeve history used in walk-forward validation. Before that history exists, the factor remains a research hypothesis expressed as a controlled portfolio.
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