mirror of
https://github.com/webclinic017/drift.git
synced 2026-07-27 18:57:55 +00:00
fix(Config): rename sliding_window_size to initial_window_size (#235)
This commit is contained in:
committed by
GitHub
parent
717e0ac979
commit
95b0499430
@@ -131,7 +131,7 @@ def __preprocess_transformations_config(config_dict: dict) -> dict:
|
||||
get_scaler(config_dict["scaler"]),
|
||||
get_pca(
|
||||
config_dict["dimensionality_reduction_ratio"],
|
||||
config_dict["sliding_window_size"],
|
||||
config_dict["initial_window_size"],
|
||||
),
|
||||
get_rfe(config_dict["n_features_to_select"]),
|
||||
]
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ def get_default_config() -> RawConfig:
|
||||
return RawConfig(
|
||||
dimensionality_reduction_ratio=0.5,
|
||||
n_features_to_select=50,
|
||||
sliding_window_size=3800,
|
||||
initial_window_size=3800,
|
||||
retrain_every=2000,
|
||||
scaler="minmax", # 'normalize' 'minmax' 'standardize' 'robust'
|
||||
assets=["fivemin_crypto"],
|
||||
|
||||
@@ -12,7 +12,7 @@ parameters:
|
||||
value: ['daily_etf']
|
||||
exogenous_data:
|
||||
value: ['daily_glassnode']
|
||||
sliding_window_size:
|
||||
initial_window_size:
|
||||
value: 380
|
||||
distribution: categorical
|
||||
n_features_to_select:
|
||||
|
||||
+2
-2
@@ -13,7 +13,7 @@ from transformations.base import Transformation
|
||||
class RawConfig(BaseModel):
|
||||
dimensionality_reduction_ratio: float
|
||||
n_features_to_select: int
|
||||
sliding_window_size: int
|
||||
initial_window_size: int
|
||||
retrain_every: int
|
||||
scaler: Literal["normalize", "minmax", "standardize", "robust"]
|
||||
|
||||
@@ -39,7 +39,7 @@ class RawConfig(BaseModel):
|
||||
|
||||
@dataclass
|
||||
class Config:
|
||||
sliding_window_size: int
|
||||
initial_window_size: int
|
||||
retrain_every: int
|
||||
|
||||
assets: DataCollection
|
||||
|
||||
@@ -18,4 +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.initial_window_size * 2) + 100
|
||||
|
||||
@@ -50,7 +50,7 @@ def bet_sizing_with_meta_model(
|
||||
X=meta_X,
|
||||
y=meta_y,
|
||||
forward_returns=forward_returns,
|
||||
window_size=config.sliding_window_size,
|
||||
window_size=config.initial_window_size,
|
||||
retrain_every=config.retrain_every,
|
||||
from_index=from_index,
|
||||
transformations=transformations,
|
||||
@@ -62,7 +62,7 @@ def bet_sizing_with_meta_model(
|
||||
y=meta_y,
|
||||
forward_returns=forward_returns,
|
||||
model=model,
|
||||
sliding_window_size=config.sliding_window_size,
|
||||
initial_window_size=config.initial_window_size,
|
||||
retrain_every=config.retrain_every,
|
||||
from_index=from_index,
|
||||
level="meta",
|
||||
|
||||
@@ -30,7 +30,7 @@ def train_directional_model(
|
||||
X=X,
|
||||
y=y,
|
||||
forward_returns=forward_returns,
|
||||
window_size=config.sliding_window_size,
|
||||
window_size=config.initial_window_size,
|
||||
retrain_every=config.retrain_every,
|
||||
from_index=from_index,
|
||||
transformations=transformations,
|
||||
@@ -44,7 +44,7 @@ def train_directional_model(
|
||||
y=y,
|
||||
forward_returns=forward_returns,
|
||||
model=model,
|
||||
sliding_window_size=config.sliding_window_size,
|
||||
initial_window_size=config.initial_window_size,
|
||||
retrain_every=config.retrain_every,
|
||||
from_index=from_index,
|
||||
level="primary",
|
||||
|
||||
@@ -19,7 +19,7 @@ def train_model(
|
||||
y: pd.Series,
|
||||
forward_returns: pd.Series,
|
||||
model: Model,
|
||||
sliding_window_size: int,
|
||||
initial_window_size: int,
|
||||
retrain_every: int,
|
||||
from_index: Optional[pd.Timestamp],
|
||||
level: str,
|
||||
@@ -42,7 +42,7 @@ def train_model(
|
||||
y=y,
|
||||
forward_returns=forward_returns,
|
||||
expanding_window=True,
|
||||
window_size=sliding_window_size,
|
||||
window_size=initial_window_size,
|
||||
retrain_every=retrain_every,
|
||||
from_index=from_index,
|
||||
transformations_over_time=transformations_over_time,
|
||||
@@ -59,7 +59,7 @@ def train_model(
|
||||
transformations_over_time=transformations_over_time,
|
||||
X=X,
|
||||
expanding_window=True,
|
||||
window_size=sliding_window_size,
|
||||
window_size=initial_window_size,
|
||||
retrain_every=retrain_every,
|
||||
from_index=from_index,
|
||||
)
|
||||
|
||||
@@ -10,15 +10,15 @@ class PCATransformation(Transformation):
|
||||
|
||||
pca: PCA
|
||||
|
||||
def __init__(self, ratio_components_to_keep: float, sliding_window_size: int):
|
||||
def __init__(self, ratio_components_to_keep: float, initial_window_size: int):
|
||||
self.ratio_components_to_keep = ratio_components_to_keep
|
||||
self.sliding_window_size = sliding_window_size
|
||||
self.initial_window_size = initial_window_size
|
||||
|
||||
def fit(self, X: pd.DataFrame, y: Optional[pd.Series] = None) -> None:
|
||||
self.pca = PCA(
|
||||
n_components=min(
|
||||
int(len(X.columns) * self.ratio_components_to_keep),
|
||||
self.sliding_window_size,
|
||||
self.initial_window_size,
|
||||
)
|
||||
)
|
||||
self.pca.fit(X, y)
|
||||
|
||||
@@ -19,13 +19,13 @@ def get_rfe(n_feature_to_select: int) -> Optional[RFETransformation]:
|
||||
|
||||
|
||||
def get_pca(
|
||||
ratio_components_to_keep: float, sliding_window_size: int
|
||||
ratio_components_to_keep: float, initial_window_size: int
|
||||
) -> Optional[PCATransformation]:
|
||||
|
||||
if ratio_components_to_keep > 0:
|
||||
return PCATransformation(
|
||||
ratio_components_to_keep=ratio_components_to_keep,
|
||||
sliding_window_size=sliding_window_size,
|
||||
initial_window_size=initial_window_size,
|
||||
)
|
||||
else:
|
||||
return None
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ def evaluate_predictions(
|
||||
labels: list[int],
|
||||
transaction_costs: float,
|
||||
) -> Stats:
|
||||
# ignore the predictions until we see a non-zero returns (and definitely skip the first sliding_window_size)
|
||||
# ignore the predictions until we see a non-zero returns (and definitely skip the first initial_window_size)
|
||||
evaluate_from = max(
|
||||
get_first_valid_return_index(forward_returns),
|
||||
get_first_valid_return_index(y_pred),
|
||||
|
||||
Reference in New Issue
Block a user