LeonardoBerti's picture
Upload 51 files
69524d0 verified
from typing import List
from hydra.core.config_store import ConfigStore
from dataclasses import dataclass, field
from constants import Dataset, ModelType
from omegaconf import MISSING, OmegaConf
@dataclass
class Model:
hyperparameters_fixed: dict = MISSING
hyperparameters_sweep: dict = MISSING
type: ModelType = MISSING
@dataclass
class MLPLOB(Model):
hyperparameters_fixed: dict = field(default_factory=lambda: {"num_layers": 3, "hidden_dim": 144, "lr": 0.0003, "seq_size": 384, "all_features": True})
hyperparameters_sweep: dict = field(default_factory=lambda: {"num_layers": [3, 6], "hidden_dim": [128], "lr": [0.0003], "seq_size": [384]})
type: ModelType = ModelType.MLPLOB
@dataclass
class TLOB(Model):
hyperparameters_fixed: dict = field(default_factory=lambda: {"num_layers": 4, "hidden_dim": 144, "num_heads": 1, "is_sin_emb": True, "lr": 0.0001, "seq_size": 128, "all_features": True})
hyperparameters_sweep: dict = field(default_factory=lambda: {"num_layers": [4, 6], "hidden_dim": [128, 256], "num_heads": [1], "is_sin_emb": [True], "lr": [0.0001], "seq_size": [128]})
type: ModelType = ModelType.TLOB
@dataclass
class BiNCTABL(Model):
hyperparameters_fixed: dict = field(default_factory=lambda: {"lr": 0.001, "seq_size": 10, "all_features": False})
hyperparameters_sweep: dict = field(default_factory=lambda: {"lr": [0.001], "seq_size": [10]})
type: ModelType = ModelType.BINCTABL
@dataclass
class DeepLOB(Model):
hyperparameters_fixed: dict = field(default_factory=lambda: {"lr": 0.01, "seq_size": 100, "all_features": False})
hyperparameters_sweep: dict = field(default_factory=lambda: {"lr": [0.01], "seq_size": [100]})
type: ModelType = ModelType.DEEPLOB
@dataclass
class Experiment:
is_data_preprocessed: bool = True
is_wandb: bool = False
is_sweep: bool = False
type: list = field(default_factory=lambda: ["EVALUATION"])
is_debug: bool = False
checkpoint_reference: str = "data/checkpoints/TLOB/val_loss=0.188_epoch=4_FI-2010_seq_size_128_horizon_10_nu_4_hi_144_nu_1_is_True_lr_0.0001_se_128_al_True_ty_TLOB_seed_42.ckpt"
dataset_type: Dataset = Dataset.FI_2010
sampling_type: str = "quantity" #time or quantity
sampling_time: str = "" #seconds
sampling_quantity: int = 500
training_stocks: list = field(default_factory=lambda: ["INTC"])
testing_stocks: list = field(default_factory=lambda: ["INTC"])
seed: int = 22
horizon: int = 5
max_epochs: int = 10
if dataset_type == Dataset.FI_2010:
batch_size: int = 32
else:
batch_size: int = 128
filename_ckpt: str = "model.ckpt"
optimizer: str = "Adam"
defaults = [Model, Experiment]
@dataclass
class Config:
model: Model
experiment: Experiment = field(default_factory=Experiment)
defaults: List = field(default_factory=lambda: [
{"hydra/job_logging": "disabled"},
{"hydra/hydra_logging": "disabled"},
"_self_"
])
cs = ConfigStore.instance()
cs.store(name="config", node=Config)
cs.store(group="model", name="mlplob", node=MLPLOB)
cs.store(group="model", name="tlob", node=TLOB)
cs.store(group="model", name="binctabl", node=BiNCTABL)
cs.store(group="model", name="deeplob", node=DeepLOB)