detect variable sized dataframes coming from strat, adjust our stored/returned data accordingly

This commit is contained in:
robcaulk 2022-05-30 13:55:46 +02:00
parent e229902381
commit 5b4c649d43
2 changed files with 37 additions and 14 deletions

View File

@ -95,18 +95,40 @@ class FreqaiDataDrawer:
self.model_return_values[pair]['target_std'] = dh.full_target_std self.model_return_values[pair]['target_std'] = dh.full_target_std
def append_model_predictions(self, pair: str, predictions, do_preds, def append_model_predictions(self, pair: str, predictions, do_preds,
target_mean, target_std, dh) -> None: target_mean, target_std, dh, len_df) -> None:
pred_store = self.model_return_values[pair]['predictions'] # strat seems to feed us variable sized dataframes - and since we are trying to build our
do_pred_store = self.model_return_values[pair]['do_preds'] # own return array in the same shape, we need to figure out how the size has changed
tm_store = self.model_return_values[pair]['target_mean'] # and adapt our stored/returned info accordingly.
ts_store = self.model_return_values[pair]['target_std'] length_difference = len(self.model_return_values[pair]['predictions']) - len_df
pred_store = np.append(pred_store[1:], predictions[-1]) i = 0
do_pred_store = np.append(do_pred_store[1:], do_preds[-1])
tm_store = np.append(tm_store[1:], target_mean)
ts_store = np.append(ts_store[1:], target_std)
dh.full_predictions = copy.deepcopy(pred_store) if length_difference == 0:
dh.full_do_predict = copy.deepcopy(do_pred_store) i = 1
dh.full_target_mean = copy.deepcopy(tm_store) elif length_difference > 0:
dh.full_target_std = copy.deepcopy(ts_store) i = length_difference + 1
self.model_return_values[pair]['predictions'] = np.append(
self.model_return_values[pair]['predictions'][i:], predictions[-1])
self.model_return_values[pair]['do_preds'] = np.append(
self.model_return_values[pair]['do_preds'][i:], do_preds[-1])
self.model_return_values[pair]['target_mean'] = np.append(
self.model_return_values[pair]['target_mean'][i:], target_mean)
self.model_return_values[pair]['target_std'] = np.append(
self.model_return_values[pair]['target_std'][i:], target_std)
if length_difference < 0:
prepend = np.zeros(abs(length_difference) - 1)
self.model_return_values[pair]['predictions'] = np.insert(
self.model_return_values[pair]['predictions'], 0, prepend)
self.model_return_values[pair]['do_preds'] = np.insert(
self.model_return_values[pair]['do_preds'], 0, prepend)
self.model_return_values[pair]['target_mean'] = np.insert(
self.model_return_values[pair]['target_mean'], 0, prepend)
self.model_return_values[pair]['target_std'] = np.insert(
self.model_return_values[pair]['target_std'], 0, prepend)
dh.full_predictions = copy.deepcopy(self.model_return_values[pair]['predictions'])
dh.full_do_predict = copy.deepcopy(self.model_return_values[pair]['do_preds'])
dh.full_target_mean = copy.deepcopy(self.model_return_values[pair]['target_mean'])
dh.full_target_std = copy.deepcopy(self.model_return_values[pair]['target_std'])

View File

@ -228,7 +228,8 @@ class IFreqaiModel(ABC):
preds, do_preds = self.predict(dataframe.iloc[-2:], dh) preds, do_preds = self.predict(dataframe.iloc[-2:], dh)
self.data_drawer.append_model_predictions(metadata['pair'], preds, do_preds, self.data_drawer.append_model_predictions(metadata['pair'], preds, do_preds,
dh.data["target_mean"], dh.data["target_mean"],
dh.data["target_std"], dh) dh.data["target_std"], dh,
len(dataframe))
return dh return dh