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_scaler(config_dict["scaler"]),
|
||||||
get_pca(
|
get_pca(
|
||||||
config_dict["dimensionality_reduction_ratio"],
|
config_dict["dimensionality_reduction_ratio"],
|
||||||
config_dict["sliding_window_size"],
|
config_dict["initial_window_size"],
|
||||||
),
|
),
|
||||||
get_rfe(config_dict["n_features_to_select"]),
|
get_rfe(config_dict["n_features_to_select"]),
|
||||||
]
|
]
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ def get_default_config() -> RawConfig:
|
|||||||
return RawConfig(
|
return RawConfig(
|
||||||
dimensionality_reduction_ratio=0.5,
|
dimensionality_reduction_ratio=0.5,
|
||||||
n_features_to_select=50,
|
n_features_to_select=50,
|
||||||
sliding_window_size=3800,
|
initial_window_size=3800,
|
||||||
retrain_every=2000,
|
retrain_every=2000,
|
||||||
scaler="minmax", # 'normalize' 'minmax' 'standardize' 'robust'
|
scaler="minmax", # 'normalize' 'minmax' 'standardize' 'robust'
|
||||||
assets=["fivemin_crypto"],
|
assets=["fivemin_crypto"],
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ parameters:
|
|||||||
value: ['daily_etf']
|
value: ['daily_etf']
|
||||||
exogenous_data:
|
exogenous_data:
|
||||||
value: ['daily_glassnode']
|
value: ['daily_glassnode']
|
||||||
sliding_window_size:
|
initial_window_size:
|
||||||
value: 380
|
value: 380
|
||||||
distribution: categorical
|
distribution: categorical
|
||||||
n_features_to_select:
|
n_features_to_select:
|
||||||
|
|||||||
+2
-2
@@ -13,7 +13,7 @@ from transformations.base import Transformation
|
|||||||
class RawConfig(BaseModel):
|
class RawConfig(BaseModel):
|
||||||
dimensionality_reduction_ratio: float
|
dimensionality_reduction_ratio: float
|
||||||
n_features_to_select: int
|
n_features_to_select: int
|
||||||
sliding_window_size: int
|
initial_window_size: int
|
||||||
retrain_every: int
|
retrain_every: int
|
||||||
scaler: Literal["normalize", "minmax", "standardize", "robust"]
|
scaler: Literal["normalize", "minmax", "standardize", "robust"]
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ class RawConfig(BaseModel):
|
|||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Config:
|
class Config:
|
||||||
sliding_window_size: int
|
initial_window_size: int
|
||||||
retrain_every: int
|
retrain_every: int
|
||||||
|
|
||||||
assets: DataCollection
|
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:
|
def has_enough_samples_to_train(X: XDataFrame, config: Config) -> bool:
|
||||||
first_valid_index = get_first_valid_return_index(X.iloc[:, 0])
|
first_valid_index = get_first_valid_return_index(X.iloc[:, 0])
|
||||||
samples_to_train = len(X) - first_valid_index
|
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,
|
X=meta_X,
|
||||||
y=meta_y,
|
y=meta_y,
|
||||||
forward_returns=forward_returns,
|
forward_returns=forward_returns,
|
||||||
window_size=config.sliding_window_size,
|
window_size=config.initial_window_size,
|
||||||
retrain_every=config.retrain_every,
|
retrain_every=config.retrain_every,
|
||||||
from_index=from_index,
|
from_index=from_index,
|
||||||
transformations=transformations,
|
transformations=transformations,
|
||||||
@@ -62,7 +62,7 @@ def bet_sizing_with_meta_model(
|
|||||||
y=meta_y,
|
y=meta_y,
|
||||||
forward_returns=forward_returns,
|
forward_returns=forward_returns,
|
||||||
model=model,
|
model=model,
|
||||||
sliding_window_size=config.sliding_window_size,
|
initial_window_size=config.initial_window_size,
|
||||||
retrain_every=config.retrain_every,
|
retrain_every=config.retrain_every,
|
||||||
from_index=from_index,
|
from_index=from_index,
|
||||||
level="meta",
|
level="meta",
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ def train_directional_model(
|
|||||||
X=X,
|
X=X,
|
||||||
y=y,
|
y=y,
|
||||||
forward_returns=forward_returns,
|
forward_returns=forward_returns,
|
||||||
window_size=config.sliding_window_size,
|
window_size=config.initial_window_size,
|
||||||
retrain_every=config.retrain_every,
|
retrain_every=config.retrain_every,
|
||||||
from_index=from_index,
|
from_index=from_index,
|
||||||
transformations=transformations,
|
transformations=transformations,
|
||||||
@@ -44,7 +44,7 @@ def train_directional_model(
|
|||||||
y=y,
|
y=y,
|
||||||
forward_returns=forward_returns,
|
forward_returns=forward_returns,
|
||||||
model=model,
|
model=model,
|
||||||
sliding_window_size=config.sliding_window_size,
|
initial_window_size=config.initial_window_size,
|
||||||
retrain_every=config.retrain_every,
|
retrain_every=config.retrain_every,
|
||||||
from_index=from_index,
|
from_index=from_index,
|
||||||
level="primary",
|
level="primary",
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ def train_model(
|
|||||||
y: pd.Series,
|
y: pd.Series,
|
||||||
forward_returns: pd.Series,
|
forward_returns: pd.Series,
|
||||||
model: Model,
|
model: Model,
|
||||||
sliding_window_size: int,
|
initial_window_size: int,
|
||||||
retrain_every: int,
|
retrain_every: int,
|
||||||
from_index: Optional[pd.Timestamp],
|
from_index: Optional[pd.Timestamp],
|
||||||
level: str,
|
level: str,
|
||||||
@@ -42,7 +42,7 @@ def train_model(
|
|||||||
y=y,
|
y=y,
|
||||||
forward_returns=forward_returns,
|
forward_returns=forward_returns,
|
||||||
expanding_window=True,
|
expanding_window=True,
|
||||||
window_size=sliding_window_size,
|
window_size=initial_window_size,
|
||||||
retrain_every=retrain_every,
|
retrain_every=retrain_every,
|
||||||
from_index=from_index,
|
from_index=from_index,
|
||||||
transformations_over_time=transformations_over_time,
|
transformations_over_time=transformations_over_time,
|
||||||
@@ -59,7 +59,7 @@ def train_model(
|
|||||||
transformations_over_time=transformations_over_time,
|
transformations_over_time=transformations_over_time,
|
||||||
X=X,
|
X=X,
|
||||||
expanding_window=True,
|
expanding_window=True,
|
||||||
window_size=sliding_window_size,
|
window_size=initial_window_size,
|
||||||
retrain_every=retrain_every,
|
retrain_every=retrain_every,
|
||||||
from_index=from_index,
|
from_index=from_index,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -10,15 +10,15 @@ class PCATransformation(Transformation):
|
|||||||
|
|
||||||
pca: PCA
|
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.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:
|
def fit(self, X: pd.DataFrame, y: Optional[pd.Series] = None) -> None:
|
||||||
self.pca = PCA(
|
self.pca = PCA(
|
||||||
n_components=min(
|
n_components=min(
|
||||||
int(len(X.columns) * self.ratio_components_to_keep),
|
int(len(X.columns) * self.ratio_components_to_keep),
|
||||||
self.sliding_window_size,
|
self.initial_window_size,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.pca.fit(X, y)
|
self.pca.fit(X, y)
|
||||||
|
|||||||
@@ -19,13 +19,13 @@ def get_rfe(n_feature_to_select: int) -> Optional[RFETransformation]:
|
|||||||
|
|
||||||
|
|
||||||
def get_pca(
|
def get_pca(
|
||||||
ratio_components_to_keep: float, sliding_window_size: int
|
ratio_components_to_keep: float, initial_window_size: int
|
||||||
) -> Optional[PCATransformation]:
|
) -> Optional[PCATransformation]:
|
||||||
|
|
||||||
if ratio_components_to_keep > 0:
|
if ratio_components_to_keep > 0:
|
||||||
return PCATransformation(
|
return PCATransformation(
|
||||||
ratio_components_to_keep=ratio_components_to_keep,
|
ratio_components_to_keep=ratio_components_to_keep,
|
||||||
sliding_window_size=sliding_window_size,
|
initial_window_size=initial_window_size,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|||||||
+1
-1
@@ -44,7 +44,7 @@ def evaluate_predictions(
|
|||||||
labels: list[int],
|
labels: list[int],
|
||||||
transaction_costs: float,
|
transaction_costs: float,
|
||||||
) -> Stats:
|
) -> 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(
|
evaluate_from = max(
|
||||||
get_first_valid_return_index(forward_returns),
|
get_first_valid_return_index(forward_returns),
|
||||||
get_first_valid_return_index(y_pred),
|
get_first_valid_return_index(y_pred),
|
||||||
|
|||||||
Reference in New Issue
Block a user