feat(Events): added EventFilter, EventLabeller (#186)

This commit is contained in:
Mark Aron Szulyovszky
2022-01-26 23:22:43 +01:00
committed by GitHub
parent 1042c82333
commit 42a1bc59cb
65 changed files with 759 additions and 276571 deletions
+4 -4
View File
@@ -5,14 +5,14 @@ import pandas as pd
from models.base import Model
from reporting.types import Reporting
from typing import Union, Optional
from config.config import Config
from config.types import Config
def train_meta_labeling_model(
target_asset: str,
X: pd.DataFrame,
input_predictions: pd.Series,
y: pd.Series,
target_returns: pd.Series,
forward_returns: pd.Series,
models: list[tuple[str, Model]],
config: Config,
model_suffix: str,
@@ -30,7 +30,7 @@ def train_meta_labeling_model(
ticker_to_predict = "prediction_correct",
X = meta_X,
y = meta_y,
target_returns = target_returns,
forward_returns = forward_returns,
models = models,
expanding_window = config.expanding_window_meta_labeling,
sliding_window_size = config.sliding_window_size_meta_labeling,
@@ -52,7 +52,7 @@ def train_meta_labeling_model(
meta_result = evaluate_predictions(
model_name = "Meta",
target_returns = target_returns,
forward_returns = forward_returns,
y_pred = avg_predictions_with_sizing,
y_true = y,
no_of_classes = 'two',
+4 -5
View File
@@ -3,8 +3,7 @@ from typing import Literal, Optional, Union
from training.walk_forward import walk_forward_train, walk_forward_inference
from utils.evaluate import evaluate_predictions
from models.base import Model
from utils.scaler import get_scaler
from utils.types import ScalerTypes
from transformations.scaler import get_scaler, ScalerTypes
from reporting.types import Reporting
from transformations.rfe import RFETransformation
from transformations.pca import PCATransformation
@@ -13,7 +12,7 @@ def train_primary_model(
ticker_to_predict: str,
X: pd.DataFrame,
y: pd.Series,
target_returns: pd.Series,
forward_returns: pd.Series,
models: list[tuple[str, Model]],
expanding_window: bool,
sliding_window_size: int,
@@ -46,7 +45,7 @@ def train_primary_model(
model = model,
X = X,
y = y,
target_returns = target_returns,
forward_returns = forward_returns,
expanding_window = expanding_window,
window_size = sliding_window_size,
retrain_every = retrain_every,
@@ -76,7 +75,7 @@ def train_primary_model(
assert len(preds) == len(y)
result = evaluate_predictions(
model_name = model_name,
target_returns = target_returns,
forward_returns = forward_returns,
y_pred = preds,
y_true = y,
no_of_classes=no_of_classes,
+7 -7
View File
@@ -7,13 +7,13 @@ from training.meta_labeling import train_meta_labeling_model
from reporting.types import Reporting
from typing import Union, Optional
from config.config import Config
from config.types import Config
def primary_step(
X: pd.DataFrame,
y: pd.Series,
target_returns: pd.Series,
forward_returns: pd.Series,
config: Config,
reporting: Reporting,
from_index: Optional[pd.Timestamp],
@@ -26,7 +26,7 @@ def primary_step(
ticker_to_predict = config.target_asset[1],
X = X,
y = y,
target_returns = target_returns,
forward_returns = forward_returns,
models = config.primary_models,
expanding_window = config.expanding_window_base,
sliding_window_size = config.sliding_window_size_base,
@@ -50,7 +50,7 @@ def primary_step(
X = X,
input_predictions= primary_model_predictions,
y = y,
target_returns = target_returns,
forward_returns = forward_returns,
model_suffix = 'meta',
models = config.meta_labeling_models,
config = config,
@@ -75,7 +75,7 @@ def secondary_step(
X:pd.DataFrame,
y:pd.Series,
current_predictions:pd.DataFrame,
target_returns:pd.Series,
forward_returns:pd.Series,
config: Config,
reporting: Reporting,
from_index: Optional[pd.Timestamp],
@@ -89,7 +89,7 @@ def secondary_step(
ticker_to_predict = config.target_asset[1],
X = current_predictions,
y = y,
target_returns = target_returns,
forward_returns = forward_returns,
models = [config.ensemble_model],
expanding_window = False,
sliding_window_size = 1,
@@ -117,7 +117,7 @@ def secondary_step(
X = X,
input_predictions= ensemble_predictions,
y = y,
target_returns = target_returns,
forward_returns = forward_returns,
models = config.meta_labeling_models,
config = config,
model_suffix = 'ensemble',
+2 -2
View File
@@ -11,7 +11,7 @@ def walk_forward_train(
model: Model,
X: pd.DataFrame,
y: pd.Series,
target_returns: pd.Series,
forward_returns: pd.Series,
expanding_window: bool,
window_size: int,
retrain_every: int,
@@ -23,7 +23,7 @@ def walk_forward_train(
models_over_time = pd.Series(index=y.index).rename(model_name)
transformations_over_time = [pd.Series(index=y.index).rename(t.get_name()) for t in transformations]
first_nonzero_return = max(get_first_valid_return_index(target_returns), get_first_valid_return_index(X.iloc[:,0]), get_first_valid_return_index(y))
first_nonzero_return = max(get_first_valid_return_index(forward_returns), get_first_valid_return_index(X.iloc[:,0]), get_first_valid_return_index(y))
train_from = first_nonzero_return + window_size + 1 if from_index is None else X.index.to_list().index(from_index)
train_till = len(y)
iterations_before_retrain = 0