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:
- 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.
- 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.
- Crowding caps. The vol-scaled weight is capped by the dynamic crowding cap (see Crowding Caps below). Heavily crowded names are trimmed hardest.
- 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.
- Cash constraints. Targets are scaled to respect available settled cash; trades that would overdraw settled cash are blocked.
- Margin constraints. The resulting gross is checked against margin utilization limits and gated if leverage would breach the cap.
- 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)