* feat(Project): use 5 minute data, running training in parallel, sped up cusum filter by 10x with numba
* fix(WalkForward): inference mini-batch parallelization
* fix(WalkForward): don't use the parallel version of any of the functions
* feat(CI): download the data required
* fix(Project): 5min_crypto folder added
* fix(Evaluate): make sure we have numerical stability in returns
* feat(Models): use SKLearn models directly to enable composability
* feat(Inference): batched inference now working, added forecasting_horizon
* fix(Inference): works again
* fix(Inference)
* chore(Models): remove unused Ensemble model
* fix(Labeller): don't just forward shift returns, also take the sum of the data happened until then
* Update test.yml
* feat: Basic scaffolding up for inference process after training.
* feat: Saving and loading models works. Inference works nearly.
* feat: Added inference pipeline.
* feat: Saving model now accoring to date and time; loading models now selects from latest file. Fixed the creation of dictionary of models.
* feat: Added lightweight asset config, but full pipeline.
* feat: Added new naming for dictionary.
* fix: Fixed dictionary naming convention.
* fix: Fixed naming again, now the model structure is good
* fix: Changed the output path and the return values from run_pipeline.
* feat: Added function to make sure folder exists for output models.
Co-authored-by: Daniel Szemerey <szemereydaniel@gmail.com>
* feat(DataLoader): added load_only_returns() method
* feat(Portfolio): load predictions
* feat(Portfolio): normalize weights
* feat(Portfolio): started integrating with portfoliobt
* feat(Portfolio): include fees in the portfolio construction
* feat(Portfolio): demo of pyportfolioopt
* feat(Portfolio): get efficient frontier calculation to work
* feat(Portfolio): add a few strategies to create weights
* chore(Dependencies): remove pyportfolioopt for now
* fix(Dependencies): try to install all dependencies with pip
* fix(Dependencies): indentation
* fix(Dependencies): corrected pytorch module name
* fix(Dependencies): try to have as many modules installed by conda for the sake of sanity?
* fix(Dependencies): put fracdiff into pip modules
* fix(Dependencies): revert to using pip almost exclusively
* feat(Portfolio): added alphalens
* fix(Portfolio): got limited weights working
* feat(Portfolio): trying to get alphalens to work
* feat(Portfolio): alphalens working
* fix(Dependencies): removed vectorbt
* fix(Dependencies): use alphalens-reloaded
* fix(Dependencies): added conda source for alphalens-reloaded
* refactor(Portfolio): removed traces of vectorbt
* feat(Reporting): factor reporting done
* feat(Portfolio): added pyfolio reporting (fails bc alphalens is not working properly lol)
* feature(MetaLabeling): added hacky prototype
* fix(MetaLabeling): drop index until first valid X & y
* fix(MetaLabeling): transform both X & y before feature selection
* fix(MetaLabeling): got feature selection to work
* fix(MetaLabeling): correct values for meta_y
* feat(MetaLabeling): created predictions multiplied by bet sizes
* feat(Pipeline): print out averaged result
* fix(Evaluation): correctly deal with non-discretized data
* fix(Pipeline): use the right column names
* refactor(Pipeline): move out meta-labeling
* refactor(Pipeline): complete refactoring
* feat(CI): post results to PR
* fix(Pipeline): use the correct filename
* chore(Config): removed now redundant feature_selection flag
* feat(Models): added SVC
* fix(Pipeline): accidentally switched two return values
* feat(Sweep): prepared sweep_meta.yaml, moved report_results() into a separate file
* fix(Pipeline): wrong function name
* fix(Sweep): yaml + run_sweep
* fix(Sweep): typo in name
* fix(Reporting): only save averaged results
* feat(MetaLabeling): use optional meta-labeling step for every lvl1 models, before averaging
* feat(Reporting): print out sharpe improvement in meta-labeling step
* fix(Sweep): adjusted config, defaulted to good defaults
* fix(Sweep): adjusted sweep
* feat: Added base functions for Neural Net.
* feat: Added function to handle Neural Nets.
* fix: Fixed fit loop
* feat: Neural Net trains now, need to test it.
* feat: Prediction now works on the neural net.
* fix: Put back config and run_pipeline.py
* fix: Took out import from run_pipeline.
* fix(Models): added get_name(), adjusted pytorch model output size
* fix(Tests): fixed tests
Co-authored-by: Mark Aron Szulyovszky <mark.szulyovszky@gmail.com>
* fix(FeatureExtractor): apply log to transform some series to normality
* feat(DataLoader): add ability of not returning returns when they're not needed (exogenous data), applied log to certain features
* feat(FeatureExtractors): added standard scaling for exogenous data
* feat(FeatureSelection): scale data with the passed in scaler before doing feature-selection
* fix(Config): sweep config
* feat(Models): output probability, store it
* feat(Core): added caching to select_features() and load_data()
* fix(Dependencies): added diskcache
* fix(Training): error when creating results DF
* feat(Models): added xgboost, fixed tests
* refactor(Cache): moved hashing to a separate function, created wrapper functions to separate business logic and caching
* fix(Tests): new syntax
* fix(Model): XGboost can't handle -1 class, so we'll use the deprecated label_encoder fornow
* fix(Model): XGBoost config
* feat(Cache): add run_clear_cache script
* fix(Pipeline) accidentally re-instatiating all_predictions for each asset
* feat: initial wandb configured. Sweep parameters aren't configured yet.
* feat: Wandb logs now results.
* feat: gitignore.
* fix: Took out print()
* feat: Changed default value of wandb to False.
* feat: Added wandb to turn of automatically if there is no environment variable to start it (when we push it). Added environment configuration aswell.
* fix(Dependencies): the package name seems to be python-dotenv
Co-authored-by: Mark Aron Szulyovszky <mark.szulyovszky@gmail.com>
* feat(Tests): added basic unit tests for walk_forward_train_test()
* fix(Tests): inherit from BaseEstimator, fix index problems in walk_forward_train_test
* fix(WalkForward): predictions were mistakenly removed, oops
* fix(WalkForward): mistakenly re-assiging model
* feat: Refractored and created new model. Pipeline not ready yet.
* feat: Implemented and refactored a data pipeline.
* ref: Refractored to make more sense.
* feat: Training works now with models that you can change.
* feat: Added predict function but without working instructions.
* feat: gitignore.