Drive pyportfolioopt closer to scikit-learn, based on scikit-base. This would enable more natural and direct API integration with time series AI frameworks such as sktime, optimization frameworks like hyperactive.
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`.