Portfolio Optimization
Structure of Optimizer
- Risk Model
- Shrinkage estimator of the covariance matrix of stock returns
- Transaction Cost Model
- \(1 \text{bp} + \frac12 \text{bid-ask spread}\)
- Alpha
- Weighted blend of various standardized, winsorized alphas
Input
- position as of close of business on day \(t-1\)
- alphas using data observed up to day \(t-1\)
- transaction costs using data observed up to day \(t-1\)
- risk model using data observed up to day \(t-1\)
- constraints using data observed up to day \(t-1\)
Objectives & Constraints
- Minimize risk: \(x’ \Sigma x\)
- Maximize exposure to alpha: \(\alpha’ x\)
- Neutralize exposure to beta: \(\beta’ x = 0\)
- Minimize transaction costs: \(\tau’ \lvert x-w \rvert\)
- Other constraints:
- maximum trade size
- maximum position size
- maximum industry and country exposure
- Notations
Variable | Dimension | Definition |
---|---|---|
\(\mathbf{x}\) | \(n \times 1\) | desired portfolio weights |
\(\mathbf{w}\) | \(n \times 1\) | initial portfolio weights |
\(\boldsymbol{\Sigma}\) | \(n \times n\) | covariance matrix of stock returns |
\(\boldsymbol{\alpha}\) | \(n \times 1\) | aggregate alphas |
\(\boldsymbol{\beta}\) | \(n \times 1\) | historical betas |
\(\boldsymbol{\tau}\) | \(n \times 1\) | transaction costs |
The parametric problems formed as:
subject to:
- beta neutrality: \(\boldsymbol{\beta}’ \mathbf{x} = 0\)
- max trade and position: \(\boldsymbol{\gamma} \leq \mathbf{x} \leq \boldsymbol{\delta}\)
- Max trade size for \(i^{th}\) stock: \(\theta_i\)
- \(\Rightarrow w_i - \theta_i \leq x_i \leq w_i + \theta_i\)
- Max position size for \(i^{th}\) stock: \pi_i
- \(\Rightarrow -\pi_i \leq x_i \leq \pi_i\)
- Max trade size for \(i^{th}\) stock: \(\theta_i\)
- industry constraint: \(-r^* \cdot \mathbf{1} \leq \mathbf{R}’ \mathbf{x} \leq r^* \cdot \mathbf{1}\)
- Sectors are a factor of risk
- Difficult to time sector performance
- Constrain industry exposure
- But not to zero (will incur transaction cost)
- \(r^* = $ 300,000 \text{ limit for }$ 50 \times 50M \text{ book size}\)
- Industry Dummy
- \(\rho\) industries
- Boolean matrix \(\mathbf{R}\) of dimension \(n \times \rho\)
- \(R(i, j) = 1\) if \(i^{th}\) stock belongs to \(j^{th}\) industry else 0
- Every row of matrix \(\mathbf{R}\) has exactly one entry equal to 1; all other entries are equal to 0
- country constraint: \(-f^* \cdot \mathbf{1} \leq \mathbf{F}’ \mathbf{x} \leq f^* \cdot \mathbf{1}\)
- Countries are a factor of risk
- Difficult to time country performance
- Constrain country exposure
- But not to zero (will incur too much transaction cost)
- \(f^* = $ 100,000 \text{ limit for } $ 50 \times 50M \text{ book size}\)
- Industry Dummy
- \(\varphi \) industries
- Boolean matrix \(\mathbf{F}\) of dimension \(n \times \varphi\)
- \(F(i, j) = 1\) if \(i^{th}\) stock belongs to \(j^{th}\) industry else 0
- Every row of matrix \(\mathbf{F}\) has exactly one entry equal to 1; all other entries are equal to 0
Output
trade to be executed on day \(t\)
Backtest Process
- Load all necessary data into memory
- Create the alphas
- Start from portfolio with zero dollar invested
- Loop over all days in backtest period
- Every day: call optimizer to find optimal rebalancing trade given initial position
- End-of-day position becomes initial position of next day
- Compute P&L