robertmartin8 / PyPortfolioOpt

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

FutureWarning Setting an item of incompatible dtype is deprecated #602

Open bsdice opened 2 months ago

bsdice commented 2 months ago

Yo,

I like to use -X dev and I get this warning on Python 3.11.9 with Pandas 2.2.1:

pypfopt/hierarchical_portfolio.py:135: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas. Value '[0.22193172 0.22193172]' has dtype incompatible with int64, please explicitly cast to a compatible dtype first. w[first_cluster] *= alpha # weight 1

Which I think can be fixed in https://github.com/robertmartin8/PyPortfolioOpt/blob/master/pypfopt/hierarchical_portfolio.py#L120

by writing

w = pd.Series(1.0, index=ordered_tickers)

Thanks, and great library. For the 50 people on the planet knowing how to wield its power. ;-)

BeachGuy007 commented 2 months ago

I am seeing the same warning.

\pypfopt\hierarchical_portfolio.py:138: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas. Value '[0.41629061 0.41629061 0.41629061 0.41629061 0.41629061 0.41629061]' has dtype incompatible with int64, please explicitly cast to a compatible dtype first. w[first_cluster] *= alpha # weight 1