From 799731164ab848dfd1c823cf38d88155d47b0002 Mon Sep 17 00:00:00 2001
From: abc
Date: Fri, 13 Feb 2026 11:03:50 +0800
Subject: [PATCH 1/2] add update shell script with tags
---
up.sh | 4 ++++
1 file changed, 4 insertions(+)
create mode 100755 up.sh
diff --git a/up.sh b/up.sh
new file mode 100755
index 0000000000..0ff6ee232a
--- /dev/null
+++ b/up.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+git pull upstream main
+git fetch upstream --tags --prune
\ No newline at end of file
From 5117592adaeb24c10c7cb9e0339113424001a958 Mon Sep 17 00:00:00 2001
From: abc
Date: Sat, 14 Feb 2026 20:14:48 +0800
Subject: [PATCH 2/2] optional data handler cache for Rolling.run
---
qlib/contrib/rolling/base.py | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/qlib/contrib/rolling/base.py b/qlib/contrib/rolling/base.py
index 5f17c05623..e21be2c201 100644
--- a/qlib/contrib/rolling/base.py
+++ b/qlib/contrib/rolling/base.py
@@ -191,9 +191,9 @@ def run_basic_task(self):
trainer = TrainerR(experiment_name=self.exp_name)
trainer([task])
- def get_task_list(self) -> List[dict]:
+ def get_task_list(self, enable_data_handler_cache: Optional[bool] = True) -> List[dict]:
"""return a batch of tasks for rolling."""
- task = self.basic_task()
+ task = self.basic_task(enable_data_handler_cache)
task_l = task_generator(
task, RollingGen(step=self.step, trunc_days=self.horizon + 1)
) # the last two days should be truncated to avoid information leakage
@@ -203,8 +203,8 @@ def get_task_list(self) -> List[dict]:
t["record"] = ["qlib.workflow.record_temp.SignalRecord"]
return task_l
- def _train_rolling_tasks(self):
- task_l = self.get_task_list()
+ def _train_rolling_tasks(self, enable_data_handler_cache: Optional[bool] = True):
+ task_l = self.get_task_list(enable_data_handler_cache)
self.logger.info("Deleting previous Rolling results")
try:
# TODO: mlflow does not support permanently delete experiment
@@ -250,10 +250,10 @@ def _update_rolling_rec(self):
r.generate()
print(f"Your evaluation results can be found in the experiment named `{self.exp_name}`.")
- def run(self):
+ def run(self, enable_data_handler_cache: Optional[bool] = True):
# the results will be save in mlruns.
# 1) each rolling task is saved in rolling_models
- self._train_rolling_tasks()
+ self._train_rolling_tasks(enable_data_handler_cache)
# 2) combined rolling tasks and evaluation results are saved in rolling
self._ens_rolling()
self._update_rolling_rec()