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_data module 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_1 in Technology and ind_mom in Consumer.
05

Factor signals

The pipeline evaluates cross-sectional asset returns through two signal families.

  1. Tucker factors. Macro-level dimensional drivers mapping structural stock behaviour.
  2. 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.

SectorCore driverOptimal λ
TechnologyMomentum trends; sensitive to single-stock anomalies such as NVDA and AVGO.λ < 3
HealthcareUnderlying risk and quality measures, including ABBV and GILD.2 < λ < 3
ConsumerStructural size and value components.2 < λ < 6
FinanceSeasonality effects; exposures rarely exceed ±1.4 < λ < 8
EnergyMean-reversion characteristics.2.5 < λ < 7.5

Continue exploring

Other projects.

All projects