Implement simulation-based portfolio optimizer in Python
Company: DRW
Role: Machine Learning Engineer
Category: Data Manipulation (SQL/Python)
Difficulty: Medium
Interview Round: Take-home Project
Given a pandas DataFrame 'returns' of daily asset returns (index: dates; columns: tickers) and an annualized risk‑free rate r_f, implement a simulation‑based portfolio optimizer in Python:
- Generate N random long‑only portfolios (weights ≥ 0, sum to
1), with an optional max‑weight constraint per asset and a random seed for reproducibility.
- For each portfolio, compute annualized expected return, annualized volatility, and Sharpe ratio; handle missing values and differing asset histories robustly.
- Identify the portfolio with the highest Sharpe and return: best weights, expected return, volatility, Sharpe; also return a DataFrame of all simulations sorted by Sharpe.
- Use NumPy/Pandas vectorization (avoid Python loops where possible) and include clear function signatures, docstrings, and brief time/space complexity notes.
Quick Answer: This question evaluates skills in simulation-based portfolio optimization, numerical and statistical computation with NumPy/Pandas, robust time-series data handling, constrained random weight generation, and reproducible experiments.