From ML Signals to Live Trades
An ML model outputs discrete trading signals: $-1$ (short), $0$ (neutral), and $+1$ (long).
- Describe how you would convert these signals into actual trade executions -- including position sizing, order type, and execution timing.
- What risk management controls would you layer on top? Discuss at least four distinct risk dimensions.
Hints
- Think about the full pipeline: signal to target position, target to trade delta, delta to execution. Each step has its own considerations.
- Volatility scaling is critical -- a fixed dollar position in a low-vol name vs. a high-vol name gives very different risk profiles. Normalize by realized vol.
- Risk management should be layered: per-position stops, portfolio drawdown limits, concentration checks, and signal staleness monitoring all operate independently.
Worked Solution
How to Think About It: The signal is just the starting point -- the hard part is everything between "the model says buy" and "you actually have a position on." In practice, you need a position management layer that translates discrete signals into target positions, an execution layer that gets you there efficiently, and a risk layer that overrides everything when things go wrong. An interviewer asking this wants to see that you understand the full pipeline, not just the model.
Key Insight: Never conflate the signal with the trade. The signal tells you direction; position sizing, execution, and risk controls determine how much you actually put on and whether you survive to trade tomorrow.
The Method:
Step 1: Signal to Target Position - Map each signal to a target notional: $\text{target} = \text{signal} \times \text{base\_size}$ - The base size can be fixed or scaled by conviction. If the model outputs continuous scores internally (before discretizing to $\{-1, 0, 1\}$), use those raw scores for finer sizing - Volatility-scale the base size: $\text{base\_size} = \text{target\_risk} / \sigma_{\text{realized}}$, where $\sigma_{\text{realized}}$ is the recent realized volatility of the instrument. This keeps your dollar risk roughly constant across regimes
Step 2: Compute the Trade Delta - $\Delta = \text{target\_position} - \text{current\_position}$ - Only trade if $|\Delta|$ exceeds a minimum threshold (to avoid churning on noise)
Step 3: Execution - Use limit orders pegged to the mid or near the touch to minimize market impact - For larger deltas, slice the order across time (e.g., TWAP or VWAP over a window) - Set a maximum participation rate (e.g., no more than 5-10% of volume) - If the signal decays quickly, lean toward aggressive execution; if it is slow-decay, be patient
Step 4: Risk Management Controls
- Position limits: Hard cap on notional per instrument and gross/net portfolio exposure. If any limit is hit, new signals in that direction are ignored until exposure decreases
- Stop losses: Per-position stop (e.g., exit if unrealized loss exceeds 2% of notional) and portfolio-level drawdown stop (e.g., flatten everything if portfolio drops 5% intraday)
- Volatility scaling: Continuously adjust position sizes as realized vol changes. In a vol spike, your existing positions auto-shrink in target terms, prompting partial exits. Formula: $\text{adjusted\_size} = \text{base\_size} \times (\sigma_{\text{target}} / \sigma_{\text{current}})$
- Correlation monitoring: Track rolling pairwise correlations across positions. If correlations spike (e.g., during a risk-off event), your diversification benefit collapses. Trigger position reduction when portfolio concentration (e.g., top eigenvalue of the correlation matrix) exceeds a threshold
- Signal staleness: If the model has not refreshed its signal for an unexpectedly long time (data feed issue, model crash), begin unwinding toward neutral. Never hold a position on a stale signal
- Execution quality monitoring: Track slippage relative to arrival price. If execution costs are eating a large fraction of expected alpha, throttle trading or widen the minimum trade threshold
Practical Considerations: - Transaction costs are the silent killer. A signal with $2$ bps of alpha per trade is worthless if you pay $3$ bps in spread and fees. Always model net-of-cost PnL - The risk controls should be hierarchical: position-level stops first, then portfolio-level, then firm-level. Each layer acts independently - In live trading, latency matters: the risk system must be able to kill positions faster than the alpha system can open them
Answer: Convert signals to target positions using volatility-scaled sizing, execute via limit orders with participation constraints, and layer on position limits, stop losses, vol scaling, correlation monitoring, signal staleness checks, and execution quality tracking. The risk framework should be hierarchical and able to override the alpha signal at every level.
Intuition
The gap between a trading signal and a live trade is where most of the real engineering lives. A model that says "buy" gives you almost no actionable information by itself -- you need to decide how much to buy, how to buy it without moving the market, and what to do when things go wrong. The best quant trading systems treat the signal as just one input to a much larger decision engine that incorporates risk budgets, execution constraints, and regime awareness.
The most common mistake junior quants make is optimizing the signal in isolation and treating everything downstream as plumbing. In reality, a mediocre signal with excellent execution and risk management will outperform a brilliant signal with poor infrastructure. Interviewers ask this question to see if you understand that production trading is a systems problem, not a modeling problem.