progress
This commit is contained in:
@@ -12,8 +12,8 @@ from cvttpy_tools.config import Config
|
||||
|
||||
@dataclass
|
||||
class DataWindowParams:
|
||||
training_size: int
|
||||
training_start_index: int
|
||||
training_size_: int
|
||||
training_start_index_: int
|
||||
|
||||
|
||||
class ModelDataPolicy(ABC):
|
||||
@@ -24,16 +24,9 @@ class ModelDataPolicy(ABC):
|
||||
|
||||
def __init__(self, config: Config, *args: Any, **kwargs: Any):
|
||||
self.config_ = config
|
||||
training_size = config.get_value("training_size", 120)
|
||||
training_start_index = 0
|
||||
if kwargs.get("is_real_time", False):
|
||||
training_size = 120
|
||||
training_start_index = 0
|
||||
else:
|
||||
training_size = config.get_value("training_size", 120)
|
||||
self.current_data_params_ = DataWindowParams(
|
||||
training_size=config.get_value("training_size", 120),
|
||||
training_start_index=0,
|
||||
training_size_=config.get_value("training_size", 120),
|
||||
training_start_index_=0,
|
||||
)
|
||||
self.count_ = 0
|
||||
self.is_real_time_ = kwargs.get("is_real_time", False)
|
||||
@@ -66,9 +59,9 @@ class RollingWindowDataPolicy(ModelDataPolicy):
|
||||
def advance(self, mkt_data_df: Optional[pd.DataFrame] = None) -> DataWindowParams:
|
||||
super().advance(mkt_data_df)
|
||||
if self.is_real_time_:
|
||||
self.current_data_params_.training_start_index = -self.current_data_params_.training_size
|
||||
self.current_data_params_.training_start_index_ = -self.current_data_params_.training_size_
|
||||
else:
|
||||
self.current_data_params_.training_start_index += 1
|
||||
self.current_data_params_.training_start_index_ += 1
|
||||
return self.current_data_params_
|
||||
|
||||
|
||||
@@ -111,12 +104,12 @@ class OptimizedWndDataPolicy(ModelDataPolicy, ABC):
|
||||
if self.is_real_time_:
|
||||
self.end_index_ = len(self.mkt_data_df_) - 1
|
||||
else:
|
||||
self.end_index_ = self.current_data_params_.training_start_index + self.max_training_size_
|
||||
self.end_index_ = self.current_data_params_.training_start_index_ + self.max_training_size_
|
||||
if self.end_index_ > len(self.mkt_data_df_) - 1:
|
||||
self.end_index_ = len(self.mkt_data_df_) - 1
|
||||
self.current_data_params_.training_start_index = self.end_index_ - self.max_training_size_
|
||||
if self.current_data_params_.training_start_index < 0:
|
||||
self.current_data_params_.training_start_index = 0
|
||||
self.current_data_params_.training_start_index_ = self.end_index_ - self.max_training_size_
|
||||
if self.current_data_params_.training_start_index_ < 0:
|
||||
self.current_data_params_.training_start_index_ = 0
|
||||
|
||||
col_a, col_b = self.pair_.colnames()
|
||||
self.prices_a_ = np.array(self.mkt_data_df_[col_a])
|
||||
@@ -153,8 +146,8 @@ class EGOptimizedWndDataPolicy(OptimizedWndDataPolicy):
|
||||
eg_pvalue = float(coint(series_a, series_b)[1])
|
||||
if eg_pvalue < last_pvalue:
|
||||
last_pvalue = eg_pvalue
|
||||
result.training_size = trn_size
|
||||
result.training_start_index = start_index
|
||||
result.training_size_ = trn_size
|
||||
result.training_start_index_ = start_index
|
||||
|
||||
# print(
|
||||
# f"*** DEBUG *** end_index={self.end_index_}, best_trn_size={self.current_data_params_.training_size}, {last_pvalue=}"
|
||||
@@ -197,8 +190,8 @@ class ADFOptimizedWndDataPolicy(OptimizedWndDataPolicy):
|
||||
|
||||
if adf_pvalue < last_pvalue:
|
||||
last_pvalue = adf_pvalue
|
||||
result.training_size = trn_size
|
||||
result.training_start_index = start_index
|
||||
result.training_size_ = trn_size
|
||||
result.training_start_index_ = start_index
|
||||
|
||||
# print(
|
||||
# f"*** DEBUG *** end_index={self.end_index_},"
|
||||
@@ -247,8 +240,8 @@ class JohansenOptdWndDataPolicy(OptimizedWndDataPolicy):
|
||||
continue
|
||||
|
||||
if best_trn_size > 0:
|
||||
result.training_size = best_trn_size
|
||||
result.training_start_index = best_start_index
|
||||
result.training_size_ = best_trn_size
|
||||
result.training_start_index_ = best_start_index
|
||||
else:
|
||||
print("*** WARNING: No valid cointegration window found.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user