diff --git a/config/preprocess.py b/config/preprocess.py index ae4c5a4..9a1ffb7 100644 --- a/config/preprocess.py +++ b/config/preprocess.py @@ -96,7 +96,10 @@ def __preprocess_event_labeller_config(config_dict: dict) -> dict: def __preprocess_transformations_config(config_dict: dict) -> dict: transformations = [ get_scaler(config_dict["scaler"]), - get_pca(config_dict["dimensionality_reduction_ratio"], config_dict["sliding_window_size"]), + get_pca( + config_dict["dimensionality_reduction_ratio"], + config_dict["sliding_window_size"], + ), get_rfe(config_dict["n_features_to_select"]), ] transformations = [x for x in transformations if x is not None] diff --git a/config/presets.py b/config/presets.py index 66bf897..b4ff76a 100644 --- a/config/presets.py +++ b/config/presets.py @@ -1,42 +1,7 @@ from .types import RawConfig, Config -def get_default_ensemble_config() -> RawConfig: - - classification_models = [ - "LogisticRegression_two_class", - "LDA", - "NB", - "RFC", - "XGB_two_class", - "LGBM", - "StaticMom", - ] - meta_models = ["LogisticRegression_two_class", "LGBM"] - - return RawConfig( - dimensionality_reduction_ratio=0.5, - n_features_to_select=30, - sliding_window_size=380, - retrain_every=10, - scaler="minmax", # 'normalize' 'minmax' 'standardize' - assets=["daily_crypto"], - target_asset="BTC_USD", - other_assets=["daily_etf"], - exogenous_data=["daily_glassnode"], - load_non_target_asset=True, - own_features=["level_2", "date_days", "lags_up_to_5"], - other_features=["level_2", "lags_up_to_5"], - exogenous_features=["z_score"], - directional_models=classification_models, - meta_models=meta_models, - event_filter="cusum_vol", - labeling="two_class", - forecasting_horizon=100, - ) - - -def get_lightweight_ensemble_config() -> RawConfig: +def get_default_config() -> RawConfig: classification_models = [ "LogisticRegression_two_class", @@ -58,9 +23,9 @@ def get_lightweight_ensemble_config() -> RawConfig: target_asset="BTC_USD", other_assets=[], exogenous_data=[], - load_non_target_asset=False, - own_features=["level_1"], - other_features=[], + load_non_target_asset=True, + own_features=["level_2"], + other_features=["z_score"], exogenous_features=[], directional_models=classification_models, meta_models=meta_models, diff --git a/data_loader/process.py b/data_loader/process.py index 257c871..d7b7e62 100644 --- a/data_loader/process.py +++ b/data_loader/process.py @@ -18,7 +18,4 @@ def check_data(X: XDataFrame, config: Config) -> bool: def has_enough_samples_to_train(X: XDataFrame, config: Config) -> bool: first_valid_index = get_first_valid_return_index(X.iloc[:, 0]) samples_to_train = len(X) - first_valid_index - return ( - samples_to_train - > (config.sliding_window_size *2) + 100 - ) + return samples_to_train > (config.sliding_window_size * 2) + 100 diff --git a/feature_extractors/feature_extractor_presets.py b/feature_extractors/feature_extractor_presets.py index 1f51189..4a6df2b 100644 --- a/feature_extractors/feature_extractor_presets.py +++ b/feature_extractors/feature_extractor_presets.py @@ -22,8 +22,8 @@ __presets = dict( debug_future_lookahead=[("debug_future", feature_debug_future_lookahead, [1])], single_mom=[("mom", feature_mom, [30])], single_vol=[("vol", feature_vol, [30])], - mom=[("mom", feature_mom, [10, 20, 30, 60, 90])], - vol=[("vol", feature_vol, [10, 20, 30, 60])], + mom=[("mom", feature_mom, [100, 300, 600, 900, 1800])], + vol=[("vol", feature_vol, [100, 300, 600, 1800])], lags_up_to_5=[("lag", feature_lag, [1, 2, 3, 4, 5])], lags_up_to_10=[("lag", feature_lag, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])], date_all=[ @@ -35,13 +35,13 @@ __presets = dict( ("day_of_week", feature_day_of_week, [0]), ("day_of_month", feature_day_of_month, [0]), ], - roc=[("roc", feature_ROC, [10, 30])], - rsi=[("rsi", feature_ROC, [10, 30, 100])], - stod=[("stod", feature_STOD, [10, 30, 200])], - stok=[("stok", feature_STOK, [10, 30, 200])], - fracdiff=[("fracdiff", feature_fractional_differentiation, [10, 30])], - fracdiff_log=[("fracdiff_log", feature_fractional_differentiation_log, [10, 30])], - z_score=[("z_score", feature_expanding_zscore, [10])], + roc=[("roc", feature_ROC, [100, 300])], + rsi=[("rsi", feature_ROC, [100, 300, 1000])], + stod=[("stod", feature_STOD, [100, 300, 2000])], + stok=[("stok", feature_STOK, [100, 300, 2000])], + fracdiff=[("fracdiff", feature_fractional_differentiation, [100, 300])], + fracdiff_log=[("fracdiff_log", feature_fractional_differentiation_log, [100, 300])], + z_score=[("z_score", feature_expanding_zscore, [100])], ) presets = __presets | dict( diff --git a/run_inference.py b/run_inference.py index c3bacec..2e7c1f1 100644 --- a/run_inference.py +++ b/run_inference.py @@ -4,10 +4,7 @@ from reporting.saving import load_models from run_pipeline import run_pipeline from config.types import Config, RawConfig -from config.presets import ( - get_default_ensemble_config, - get_lightweight_ensemble_config, -) +from config.presets import get_default_config from labeling.process import label_data import pandas as pd @@ -84,6 +81,4 @@ def __inference(config: Config, pipeline_outcome: PipelineOutcome): if __name__ == "__main__": - run_inference( - preload_models=True, fallback_raw_config=get_lightweight_ensemble_config() - ) + run_inference(preload_models=True, fallback_raw_config=get_default_config()) diff --git a/run_pipeline.py b/run_pipeline.py index 4fb88a1..60bb5ad 100644 --- a/run_pipeline.py +++ b/run_pipeline.py @@ -2,7 +2,7 @@ from typing import Optional from config.types import Config, RawConfig from config.preprocess import preprocess_config -from config.presets import get_default_ensemble_config, get_lightweight_ensemble_config +from config.presets import get_default_config from data_loader.load import load_data from data_loader.process import check_data @@ -109,5 +109,5 @@ if __name__ == "__main__": project_name="price-prediction", with_wandb=False, sweep=False, - raw_config=get_lightweight_ensemble_config(), + raw_config=get_default_config(), )