fix backtesting bug, undo move of label stat calc, fix example strat exit logic
This commit is contained in:
parent
08d3ac7ef8
commit
f22b140782
@ -635,20 +635,20 @@ class FreqaiDataKitchen:
|
|||||||
Append backtest prediction from current backtest period to all previous periods
|
Append backtest prediction from current backtest period to all previous periods
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.append_df = DataFrame()
|
append_df = DataFrame()
|
||||||
for label in self.label_list:
|
for label in self.label_list:
|
||||||
self.append_df[label] = predictions[label]
|
append_df[label] = predictions[label]
|
||||||
self.append_df[f"{label}_mean"] = self.data["labels_mean"][label]
|
append_df[f"{label}_mean"] = self.data["labels_mean"][label]
|
||||||
self.append_df[f"{label}_std"] = self.data["labels_std"][label]
|
append_df[f"{label}_std"] = self.data["labels_std"][label]
|
||||||
|
|
||||||
self.append_df["do_predict"] = do_predict
|
append_df["do_predict"] = do_predict
|
||||||
if self.freqai_config["feature_parameters"].get("DI_threshold", 0) > 0:
|
if self.freqai_config["feature_parameters"].get("DI_threshold", 0) > 0:
|
||||||
self.append_df["DI_values"] = self.DI_values
|
append_df["DI_values"] = self.DI_values
|
||||||
|
|
||||||
if self.full_df.empty:
|
if self.full_df.empty:
|
||||||
self.full_df = self.append_df
|
self.full_df = append_df
|
||||||
else:
|
else:
|
||||||
self.full_df = pd.concat([self.full_df, self.append_df], axis=0)
|
self.full_df = pd.concat([self.full_df, append_df], axis=0)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -668,7 +668,7 @@ class FreqaiDataKitchen:
|
|||||||
to_keep = [col for col in dataframe.columns if not col.startswith("&")]
|
to_keep = [col for col in dataframe.columns if not col.startswith("&")]
|
||||||
self.return_dataframe = pd.concat([dataframe[to_keep], self.full_df], axis=1)
|
self.return_dataframe = pd.concat([dataframe[to_keep], self.full_df], axis=1)
|
||||||
|
|
||||||
self.append_df = DataFrame()
|
# self.append_df = DataFrame()
|
||||||
self.full_df = DataFrame()
|
self.full_df = DataFrame()
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
# import contextlib
|
# import contextlib
|
||||||
import copy
|
import copy
|
||||||
import datetime
|
import datetime
|
||||||
import gc
|
|
||||||
import logging
|
import logging
|
||||||
import shutil
|
import shutil
|
||||||
import threading
|
import threading
|
||||||
@ -183,8 +182,6 @@ class IFreqaiModel(ABC):
|
|||||||
(_, _, _) = self.dd.get_pair_dict_info(metadata["pair"])
|
(_, _, _) = self.dd.get_pair_dict_info(metadata["pair"])
|
||||||
train_it += 1
|
train_it += 1
|
||||||
total_trains = len(dk.backtesting_timeranges)
|
total_trains = len(dk.backtesting_timeranges)
|
||||||
gc.collect()
|
|
||||||
dk.data = {} # clean the pair specific data between training window sliding
|
|
||||||
self.training_timerange = tr_train
|
self.training_timerange = tr_train
|
||||||
dataframe_train = dk.slice_dataframe(tr_train, dataframe)
|
dataframe_train = dk.slice_dataframe(tr_train, dataframe)
|
||||||
dataframe_backtest = dk.slice_dataframe(tr_backtest, dataframe)
|
dataframe_backtest = dk.slice_dataframe(tr_backtest, dataframe)
|
||||||
|
@ -56,6 +56,8 @@ class BaseRegressionModel(IFreqaiModel):
|
|||||||
f"{end_date}--------------------")
|
f"{end_date}--------------------")
|
||||||
# split data into train/test data.
|
# split data into train/test data.
|
||||||
data_dictionary = dk.make_train_test_datasets(features_filtered, labels_filtered)
|
data_dictionary = dk.make_train_test_datasets(features_filtered, labels_filtered)
|
||||||
|
if not self.freqai_info.get('fit_live_predictions', 0) or not self.live:
|
||||||
|
dk.fit_labels()
|
||||||
# normalize all data based on train_dataset only
|
# normalize all data based on train_dataset only
|
||||||
data_dictionary = dk.normalize_data(data_dictionary)
|
data_dictionary = dk.normalize_data(data_dictionary)
|
||||||
|
|
||||||
@ -75,8 +77,6 @@ class BaseRegressionModel(IFreqaiModel):
|
|||||||
|
|
||||||
if self.freqai_info.get('fit_live_predictions_candles', 0) and self.live:
|
if self.freqai_info.get('fit_live_predictions_candles', 0) and self.live:
|
||||||
self.fit_live_predictions(dk)
|
self.fit_live_predictions(dk)
|
||||||
else:
|
|
||||||
dk.fit_labels()
|
|
||||||
|
|
||||||
self.dd.save_historic_predictions_to_disk()
|
self.dd.save_historic_predictions_to_disk()
|
||||||
|
|
||||||
|
@ -235,7 +235,7 @@ class FreqaiExampleStrategy(IStrategy):
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
"prediction" + entry_tag not in pair_dict[pair]
|
"prediction" + entry_tag not in pair_dict[pair]
|
||||||
or pair_dict[pair]["prediction" + entry_tag] > 0
|
or pair_dict[pair]["prediction" + entry_tag] == 0
|
||||||
):
|
):
|
||||||
with self.freqai.lock:
|
with self.freqai.lock:
|
||||||
pair_dict[pair]["prediction" + entry_tag] = abs(trade_candle["&-s_close"])
|
pair_dict[pair]["prediction" + entry_tag] = abs(trade_candle["&-s_close"])
|
||||||
|
Loading…
Reference in New Issue
Block a user