Q
Loading portfolio data...

System Mechanics

A plain-English walkthrough of how a raw signal becomes a live position. For the actual configured values, see the Parameters page.

Every name flows through a deterministic pipeline. Each stage can only ever shrink a position relative to the previous stage — caps and constraints never increase exposure. The stages run in this fixed order:

  1. Raw signal → target weights. The composite score (relative-value level & trend, 63-day Sharpe, momentum) is ranked across the universe and converted into a raw target weight proportional to risk-adjusted expected return.
  2. Volatility scaling.Each raw weight is divided by the name's forecast volatility so that every position contributes a comparable amount of risk rather than a comparable amount of capital.
  3. Crowding caps. The vol-scaled weight is capped by the dynamic crowding cap (see Crowding Caps below). Heavily crowded names are trimmed hardest.
  4. Downside-correlation (DC) caps. Names that move together on down days are further trimmed so the book is not implicitly long a single hidden factor.
  5. Cash constraints. Targets are scaled to respect available settled cash; trades that would overdraw settled cash are blocked.
  6. Margin constraints. The resulting gross is checked against margin utilization limits and gated if leverage would breach the cap.
  7. Final targets → MOO orders. The surviving weights become final targets. The drift between current and final weight, if it clears the minimum order size, is published as a market-on-open (MOO) order.
raw_weight      = rank(composite) * risk_adjusted_ev
vol_scaled      = raw_weight / forecast_vol
crowding_capped = min(vol_scaled, dynamic_crowding_cap)
dc_capped       = min(crowding_capped, dc_cap)
cash_capped     = scale_to_settled_cash(dc_capped)
margin_capped   = gate_by_margin(cash_capped)
final_target    = margin_capped
order           = final_target - current   (if |drift| >= min_order_size)