robertmartin8 / PyPortfolioOpt

Financial portfolio optimisation in python, including classical efficient frontier, Black-Litterman, Hierarchical Risk Parity
https://pyportfolioopt.readthedocs.io/
MIT License
4.38k stars 942 forks source link

The covariance matrix calculation problem #25

Closed r0bo7 closed 5 years ago

r0bo7 commented 5 years ago

I assume you are very much aware of the famous paper Optimal Versus Naive Diversification: How Inefficient is the 1/N Portfolio Strategy? that pointed out the issues with trying to calculate the covariance matrix for portfolio optimization. The documentation states that:

Includes both classical methods (Markowitz 1952), suggested best practices (e.g covariance shrinkage), along with many recent developments and novel features, like L2 regularisation, shrunk covariance, hierarchical risk parity.

From these recent advances in the field you mentioned, would you consider the problem to be reasonably solved now? Would you kindly point out some papers with those advances in portfolio optimization? Thank you.

robertmartin8 commented 5 years ago

Hi,

Regarding the paper, my main takeaway was slightly different – it is that mean-variance optimisation underperforms 1/N. But actually, if you look at the performance tables, the minimum variance portfolios do not perform too poorly. My philosophy on this subject has been influenced quite heavily by the following paper: In Defense of Optimisation (2010) by Kritzman et al, my summary of which can be found here. I think that it is foolish to presume that we can predict returns, but quite plausible to suggest that covariance can be estimated. I think you might find my blog post on the matter quite interesting.

I would certainly not consider this problem to be solved, though it has been well studied. The documentation site contains references to some of those papers, e.g at the bottom of pages here and here.

This said, I think a much more relevant aspect of portfolio optimisation is factor modelling – constructing portfolios that are exposed to specific risk factors (and ideally nothing else). I unfortunately cannot help you too much with this as I am far from an expert, but it is on the roadmap for PyPortfolioOpt.

Do let me know if you have any more questions, my email can be found on my website.

Best, Robert

r0bo7 commented 5 years ago

Thank you very much for the detailed response, really enjoyed the read. I think you should link to your posts on the readme, because they are very helpful. Could you elaborate a little bit on what you mean by specific risk factors? I just started studying the field and I'm going to study the recent advances and hopefully be able to contribute to your project in the future.

robertmartin8 commented 5 years ago

Specific risk factors such as exposure to small caps, book value, momentum. This link is a good introduction.

Look forward to your contributions!