SnapshotEncoder. Each instrument is encoded independently from its rolling window of technical features into a state vector of d = 512. The encoder is a positional Transformer with a symbol embedding. Critic and generalizer share one encoder, trained exclusively by the TD signal — representation features carry value information, not the shape of the actor's output.
CriticMixer. Runs two-layer cross-symbol attention over the (B, N, 512) block before the Q-heads. The mixer lives on the critic side only — applying it to the actor path caused progressive attention collapse to uniform outputs in prior versions.
DiverseCritic ensemble. Each DiverseCritic emits (B, N, 4, 32): four n-step horizon heads {4, 8, 12, 16}, each a full 32-quantile return distribution. The quantile and horizon axes are orthogonal — they multiply. Two independent twin networks of different depth (2 and 3 layers) give the conservative min(Q1, Q2) backup used in the TD target.
PortfolioGeneralizer. The sole policy. Input: [feat_critic ∥ q_flat] where q_flat = (B, N, 4×32 = 128) — the full Q-distribution across all horizons and quantiles, per symbol. A two-layer Transformer (d = 512, 8 heads) attends across all N symbols simultaneously and emits portfolio weights a_gen (B, N). The model width matches the encoder dimension — no bottleneck before cross-symbol attention.