@@ -542,6 +542,11 @@ def _run_strategy_backtest(self):
542542 freq_map = {"周" : "W" , "月" : "M" , "季" : "Q" }
543543 view = self .v_st_view .get ()
544544 policy = STRATEGY_VIEW_POLICY .get (view , _DEFAULT_VIEW_POLICY )
545+ # 本地全市场池含大量退市/已到期/定向债, 静态全量送 Wind 会大面积取数失败。
546+ # 改用动态时点池: 每期先按 list_tradable_cbs(当期) 取存活券再筛选定价,
547+ # 无幸存者偏差且从源头避开死债的 Wind 请求。自选/当前筛选池保持静态。
548+ gui_pool_mode = self .v_st_pool_mode .get () if hasattr (self , "v_st_pool_mode" ) else "本地全市场"
549+ engine_pool_mode = "dynamic" if gui_pool_mode == "本地全市场" else "static"
545550 try :
546551 config = ScoreStrategyConfig (
547552 top_n = max (1 , int (float (self .v_st_top_n .get ()))),
@@ -563,6 +568,7 @@ def _run_strategy_backtest(self):
563568 execution_timing = "next_close" ,
564569 transaction_cost = max (0.0 , self ._optional_float (self .v_st_cost ) or 0.0 ) / 10000.0 ,
565570 compute_benchmark = bool (self .v_st_benchmark .get ()),
571+ pool_mode = engine_pool_mode ,
566572 )
567573 admission_config = AdmissionFilterConfig (
568574 delist_window_days = max (0 , int (float (self .v_st_delist_window .get () or 0 ))),
0 commit comments