* feat(HPO): added `run_hpo` script
* fix(Linter): ran
* feat(HPO): removed any reference to sweep (superseeded by optuna)
* fix(HPO): optimize for sharpe
* fix(Config): removed glassnode data, save trials from hpo
* feat(Labelling): added three-balanced method works again
* fix(BetSizing): set the correct class labels
* fix(HPO): powerset should return what's expected, added two new normalization methods
* fix(Linter): ran
* fix(DataLoader): sort the dataframe when fetching data
* fix(Config): only take z-score of other assets
* refactor(Naming): use `primary_models` & `meta_labeling_models`
* refactor(Naming): using primary * meta_labeling across config and in pipeline
* feat(Pipeline): added back Ensemble models
* fix(Pipeline): compiler error
* fix(Config): typo
* chore(Pipeline): removed unused averaging step
* revert the changes in discretizing
* chore(Pipeline): remove sharpe improvement logging
* fix(Pipeline): ensemble predictions should be a pd.Series instead of a DataFrame
* fix(Pipeline): discard unnecessary ensemble_probabilities
* fix(Pipeline): fixes regarding various meta-labeling ensemble bugs
* fix(Reporting): use the new naming convention
* fix(Reporting): use the right variable
* feat(Sweep): new sweep for ensemble models
* fix(Sweep): config reference
* fix(Config): simplified dev config
* fix(Models): use the faster LR model
* fix(Models): use LGBM in the meta-labeling model for speed
* fix(Selection): always use the first model for feature selection, commented out caching from select_features() as it's close to redundant in terms of speed
* feat: Added collection of models into a dictionary.
* feat: Models are now saved in a structured way into a dictionary.
* Rename run_model_test.py to run_model_dev.py
* fix(Pipeline): missing variable statement
Co-authored-by: Mark Aron Szulyovszky <mark.szulyovszky@gmail.com>