robertmartin8 / PyPortfolioOpt

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

question - who owns or maintains this package? Do you need help with maintenance? #587

Open fkiraly opened 6 months ago

fkiraly commented 6 months ago

I have been trying to contact the maintainers of this package for a while and would appreciate a reply. It seems unclear to me who maintains this, or what the status is, and would also like to offer my help.

What I know so far:

I do find his odd - the matter I originally wanted to discuss is integration with sktime.

Now, I wonder: do you need any help with maintaining this package? It would be a shame if this nice package died!

I'd be happy to help!

(and I'd be happy to discuss how to secure assets or maintain them jointly without "handing them away", in case security/safety of the owned package assets is a concern)

88d52bdba0366127fffca9dfa93895 commented 6 months ago

Hi @fkiraly, it's great to have your help. Since @robertmartin8 is currently busy with market activities, I am now the maintainer of this package, primarily focusing on bug fixes. Many issues with this package revolve around installation, often related to dependencies. While we can provide assistance and guidance, resolving these dependency-related issues may be beyond our control.

If you have any suggestions or contributions to make, please feel free to let me know. Your input and collaboration are highly valued.

robertmartin8 commented 6 months ago

Hi! I have submitted a PR to remove my email from the readme, and apologies for the slow pickup on your emails – unfortunately it is difficult for me to spend any time on the package nowadays.

Fortunately, we have Tuan (@88d52bdba0366127fffca9dfa93895) as the maintainer and as far as I'm concerned he is doing an excellent job. I respect his judgment on decisions for the future of the package, though I am happy to provide input on major changes if that is desired!

Cheers, Robert

fkiraly commented 6 months ago

Many issues with this package revolve around installation, often related to dependencies.

Thanks for the swift reply, @88d52bdba0366127fffca9dfa93895!

Could you perhaps explain what is going on with the dependencies and where you need help? It looks like pyproject.toml already manages these well, there are only a few. E.g., what's going on with installation, how can a contributor help?

If you have any suggestions or contributions to make, please feel free to let me know. Your input and collaboration are highly valued.

Gladly! I was thinking of integration with sktime, and improvements to pyportfolioopt proper, regarding, for instance:

I would be interested personally, and there are other developers from around sktime who would also be interested in some of the above.

fkiraly commented 6 months ago

Hi! I have submitted a PR to remove my email from the readme, and apologies for the slow pickup on your emails – unfortunately it is difficult for me to spend any time on the package nowadays.

If you would like to hear my advice, @robertmartin8, @88d52bdba0366127fffca9dfa93895, it might be good to clarify asset and legal ownership and stewardship going forward. If you remove your email from the readme, @robertmartin8, but remain the (technical and legal) owner of assets, it will be harder to find you if the need arises. I would advise the community to have a clear discussion on ownership and responsibilities, if you would like to retain - or enable - an open governance model.

There's basically two "stable" models here which you can end up with:

As a project, you seem to be currently in a transition situation, and the de-facto decision power on which direction it goes sits with the person(s and/or incorporated entities) owning the key assets - the GitHub repository and the pypi project.

fkiraly commented 6 months ago

I also noticed that you do not seem to have dedicated social channels for your users and developers? Or maybe they are just not advertised, publicly? This would have been my primary guess on how you would get in contact with maintainers of a popular package like pyportfolioopt, but it seems like this does not exist.

Common tools to use here are slack or discord, and/or GitHub discussions. sktime, for instance, has an open discord: https://discord.com/invite/54ACzaFsn7, and a GitHub discussion forum.

Of course, I'd be happy to help out with setup and advice, here.

fkiraly commented 6 months ago

So, what's next, @88d52bdba0366127fffca9dfa93895, @robertmartin8?

You said,

Your input and collaboration are highly valued.

and I'd be happy to do either.

What's the status of this package?

robertmartin8 commented 6 months ago

Hey @fkiraly, I really do appreciate the input; please accept my apologies for the poor response time (both on email and here).

Preamble

I think sktime is a marvellous open source project – I think you (plural) have done a great job on the package, docs, and community. So I am genuinely receptive to your suggestions, subject to the constraints mentioned below (the most unfortunate being my lack of bandwidth).

My philosophy on the package

My philosophy is that PyPortfolioOpt should provide a stable baseline implementation of standard portfolio optimisation in python that is user-friendly and well-documented.

This philosophy arises out of my conversations with institutional users of PyPortfolioOpt, as well as my personal observations having been on both the retail and institutional side. In my view, it is useful to have a simple, well-documented reference implementation of mean-variance optimisation, which has well-understood flaws.

I personally do not think that the package should attempt to incorporate the latest experimental/advanced methods, many of which have are there to keep journal editors busy rather than being practically useful, having pitfalls that are poorly understood.

In other words, if it were possible, I would happily "freeze" the package as is – I want the library to be in a stable phase without much active development. As Tuan points out however, python versioning stuff makes this tricky – like the red queen, we have to run just to stay in the same place.

This is all just my perspective, which I am open to change my mind on, especially if the people who are now maintaining the library (@88d52bdba0366127fffca9dfa93895) think differently – as time goes on, the library is as much theirs as it is "mine" (whatever that means).

Constraints

However, there are some things that I do feel strongly about:

  1. I do not want any form of closed/corporate governance model. This project has been MIT licensed from the start, and I would like it to remain so. PyPortfolioOpt has been through the wringer in terms of open-source "mis-use" (perhaps it's just the standard open source experience...): people wrapping it into consulting services, people bundling it into other software and selling it, plagiarism ranging from petty to "cloning-the-whole-project-and-changing-the-name". But apart from the plagiarism – which is not permitted by the MIT license – I don't actually have any complaint.

  2. Good documentation matters – one worry I have is that people often care more about adding features than adding good documentation. If people want to add more features, I think good documentation really matters.

  3. Time constraint: unfortunately, I have essentially zero bandwidth for PyPortfolioOpt nowadays, apart from chiming in on issues, or responding to emails once in a while (as you know I have not done a very good job even on this). This lack of bandwidth also extends to the immediate next steps – I simply don't see myself overcoming the activation energy to incorporate a non-profit or do anything like that.

Conclusion

It does seem to me that the package is basically working as intended (thanks to the maintenance of @88d52bdba0366127fffca9dfa93895). If suddenly it came to pass that people couldn't install the package, or there was persistent bugs, then I would probably be more inclined to action.

All this said, if there is low-hanging fruit that people feel would move this package to a significantly more stable solution, I will be able to carve out a few hours at some point to oversee the transition.

I will endeavour to be more responsive on this thread over the next couple of weeks.