Skip to content

A machine-learning-based approach to portfolio optimization.

License

Notifications You must be signed in to change notification settings

nicwjh/Portfolio-Optimization

Repository files navigation

Portfolio Optimization

MIT License


Logo

Portfolio Optimization

A machine-learning-based approach to portfolio optimization.

About

Portfolio optimization refers to the quantitative method that helps investors choose the best mix of assets to achieve their investment goals. In this project, we propose a machine learning based approach to portfolio optimization. We deploy 4 supervised learning methods - Principal Components Regression (PCR), Random Forests (RF), Weighted Moving Average (WMA), and Gated Recurrent Unit (GRU) Neural Networks to predict NASDAQ-100 stock prices before optimizing our constructed portfolio using the Markowitz Mean-Variance framework to determine asset weights. In our analysis, we aim to develop a portfolio that combines cutting-edge machine learning methods with modern portfolio theory to achieve optimal return-to-risk for investors seeking controlled risk with strong returns. Through a sparsified optimization process, we present an optimization strategy that delivers superior risk-adjusted returns as compared to a market-cap weighted NASDAQ-100 benchmark portfolio over the same time horizon.

A portfolio rebalancing strategy for this research work is currently in progress. Details on current findings can be found in the final report.

Built With

The main packages used in our project:

  • pandas
  • numpy
  • sklearn
  • Keras
  • Tensorflow
  • SciPy

Methods

  • Gated Recurrent Unit (GRU) Neural Networks
  • Random Forest
  • Weighted Moving Average
  • Principal Components Regression
  • Mean-Variance Optimization

Technologies

  • Python

Getting Started

Prerequisites

  • pandas (A data manipulation and analysis library providing data structures like DataFrames for Python.)
  • numpy (A library for numerical computing in Python, providing support for large, multi-dimensional arrays and matrices.)
  • scikit-learn (A machine learning library for Python, offering tools for classification, regression, clustering, and dimensionality reduction.)

Author

Name Handle
Nicholas Wong @nicwjh

License

Distributed under the MIT License - LICENSE.

Repository Link: [https://github.com/nicwjh/Portfolio-Optimization)

Acknowledgements

I would like to thank Professor Soroush Saghafian for his mentorship throughout this project. The exceptional learning environment and resources provided by Harvard University has also been instrumental in shaping this work.

About

A machine-learning-based approach to portfolio optimization.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages