Project 03 / Portfolio optimisation
Benchmark-Neutral Allocations with Factor Tilts
Balancing investor preferences and benchmark tracking.
PythonPortfolio optimisationFactor modelsMarket data
01
Overview
A portfolio-optimisation project that introduces targeted factor or sector tilts while keeping allocations close to a market-capitalisation-weighted benchmark and controlling active risk.
02
Focus areas
- Optimised the balance between tracking error and targeted factor exposures
- Applied factor extraction and multicollinearity checks to market data
- Explored signals across technology, healthcare, consumer, finance, and energy
03
Methodology & framework
The strategy minimises tracking error relative to the benchmark while controlling exposure to targeted risk factors through a factor-tilt penalty.
Objectiveminw Tracking Error + Factor Tilt Penalty
Tracking errorTE = (w - wb)TΣ(w - wb)
Tilt penaltyPenalty = λtilt Σ(BTw - tilt target)2
Operational constraints
- Fully invested portfolio: Σ wi = 1
- Long-short portfolio flexibility: -1 ≤ wi ≤ 1
04
Data & factor construction
- Data sourcing. Stock price and market-capitalisation data are extracted dynamically through a custom
market_datamodule using Yahoo Finance. - Scope. The universe covers the 10 largest companies across Technology, Healthcare, Consumer, Finance, and Energy from January 2020 to February 2025.
- Multicollinearity & dimensionality reduction.
- A Tucker Factor Model uses Singular Value Decomposition (SVD) to extract independent principal components while preserving 86.52% of dataset variance.
- A Variance Inflation Factor (VIF) filter removes factors above 10 to eliminate redundant data.
- Examples include
Tucker_Factor_1in Technology andind_momin Consumer.
05
Factor signals
The pipeline evaluates cross-sectional asset returns through two signal families.
- Tucker factors. Macro-level dimensional drivers mapping structural stock behaviour.
- Short-term trading indicators.
- Industry Relative Reversal (STRi): 21-day cumulative returns relative to industry averages.
- Industry Momentum (IND_MOMi): trailing trends among industry peers.
- Seasonality (SEA_SAMEi): recurring directional calendar-month patterns over a 10-year rolling window.
06
Sector controls
Risk budgets and active factor allocations are governed by the tilt intensity parameter λ. Over-aggressive tuning can increase baseline portfolio volatility.
| Sector | Core driver | Optimal λ |
|---|---|---|
| Technology | Momentum trends; sensitive to single-stock anomalies such as NVDA and AVGO. | λ < 3 |
| Healthcare | Underlying risk and quality measures, including ABBV and GILD. | 2 < λ < 3 |
| Consumer | Structural size and value components. | 2 < λ < 6 |
| Finance | Seasonality effects; exposures rarely exceed ±1. | 4 < λ < 8 |
| Energy | Mean-reversion characteristics. | 2.5 < λ < 7.5 |
Continue exploring