Course Syllabus

ELEC/IEDA3180 – Data-Driven Portfolio Optimization

Spring 2019-20, HKUST


Modern portfolio theory started with Harry Markowitz’s 1952 seminal paper “Portfolio Selection,” for which he would later receive the Nobel prize in 1990. He put forth the idea that risk-adverse investors should optimize their portfolio based on a combination of two objectives: expected return and risk. Until today, that idea has remained central in portfolio optimization. However, the vanilla Markowitz portfolio formulation does not seem to behave as expected in practice and most practitioners tend to avoid it.

During the past half century, researchers and practitioners have reconsidered the Markowitz portfolio formulation and have proposed countless of improvements and alternatives such as robust optimization methods, alternative measures of risk, regularization via sparsity, improved estimators of the covariance matrix, robust estimators for heavy tails, factor models, volatility clustering models, risk-parity formulations, index tracking, etc.

This course will explore the Markowitz portfolio optimization in its many variations and extensions, with special emphasis on Python programming. All the course material will be complemented with Python code that will be studied in class. The homework and project will be in Python.


  • Yiyong Feng and Daniel P. Palomar, A Signal Processing Perspective on Financial Engineering. Foundations and Trends® in Signal Processing, Now Publishers, 2016. [pdf]
  • Konstantinos Benidis, Yiyong Feng, and Daniel P. Palomar, Optimization Methods for Financial Index Tracking: From Theory to Practice. Foundations and Trends® in Optimization, Now Publishers, 2018. [pdf]
  • Boyd and L. Vandenberghe, Convex Optimization, Cambridge University Press, 2004. [pdf]
  • G. Cornuejols and R. Tutuncu, Optimization Methods in Finance. Cambridge Univ. Press, 2007.
  • F. J. Fabozzi, P. N. Kolm, D. A. Pachamanova, and S. M. Focardi, Robust Portfolio Optimization and Management. Wiley, 2007.


Good knowledge of linear algebra (MATH2111 or MATH2121 or MATH2131 or MATH2350), probability (IEDA2510 or IEDA2520 or IEDA2540 or ELEC2600), and some programming knowledge in Python or R.


Homework: 35%
Midterm:   15%
Final project: 35%
Final lightening presentation: 15% 

Course Schedule

Date Lect Topic
19-Feb     1 Theory: Introduction to convex optimization
21-Feb     2 Practice: Python for finance primer
26-Feb     3 Theory: Convex optimization problems
28-Feb     4 Practice: Solvers in Python
4-Mar     5 Financial data modeling: i.i.d. case
6-Mar     6       (cont’d)
11-Mar     7       (cont’d)
13-Mar     8 Portfolio optimization
18-Mar     9       (cont’d)
20-Mar   10 Data cleaning: data munging, missing values, and outliers
25-Mar   11       (cont’d)
27-Mar   12 Financial data modeling: time series
1-Apr   13       (cont’d)
3-Apr    - Midterm -
8-Apr   14 Algorithms: Primer
15-Apr   15 Algorithms: Majorization-Minimization (MM)
17-Apr   16 Index tracking of financial markets via MM
22-Apr   17 Algorithms: Successive Convex Approximation (SCA)
24-Apr   18 Risk parity portfolio via Newton, BCD, and SCA
29-Apr   19       (cont’d)
6-May  20 Portfolio optimization with alternative risk measures
8-May  21       (cont’d)
13-May  22 Robust portfolio optimization
15-May  23 Advanced topics: i) Learning trading signals and ii) stock graphs for rpp
20-May  Project presentations by students

Lecture Information

Lecture Time: Wed & Fri, 3pm - 4:20pm

Lecture Venue: Online via Zoom (

Teaching Team

Instructor: Prof. Daniel P. PALOMAR (


Office: 2398 (Lifts 17/18)

Office hours: By email appointment

TAs: Ze Vinicius ( and Xiwen WANG (

Course Summary:

Date Details Due