I think it would be best if pyportfolioopt drove closer to scikit-learn, based on scikit-base. This would also enable more natural and direct API integration with time series AI frameworks such as sktime, optimization frameworks like hyperactive, and, vice versa, use of time series covariance estimator components from pyportfolioopt or similar in sktime etc.
Key assumptions about these frameworks are dataclass-like __init__, and strategy pattern applied throughout; while data input does not happen in __init__. Currently, some of these assumptions are violated in different parts of the code base, arising most likely from ML de Prado's very erratic software design, in his famous book (good for methods but not good for API design...).
One topic to consider is also downwards compatibility - we do not want to break user code while moving closer to scikit-base.
I think it would be best if
pyportfoliooptdrove closer toscikit-learn, based onscikit-base. This would also enable more natural and direct API integration with time series AI frameworks such assktime, optimization frameworks likehyperactive, and, vice versa, use of time series covariance estimator components frompyportfoliooptor similar insktimeetc.Key assumptions about these frameworks are dataclass-like
__init__, and strategy pattern applied throughout; while data input does not happen in__init__. Currently, some of these assumptions are violated in different parts of the code base, arising most likely from ML de Prado's very erratic software design, in his famous book (good for methods but not good for API design...).One topic to consider is also downwards compatibility - we do not want to break user code while moving closer to
scikit-base.