fix(factor): challenger close 恒空根修——load_universe_bars symbols 须裸代码(截面盘列名带.SZSE 后缀直传=symbol 全格式查不中,真跑实证三路全空 days=0);传裸码 loader 回拼 vt_symbol 还原全格式天然对齐 [vps]
CI/CD / test (push) Failing after 5s
CI/CD / nas-deploy (push) Has been skipped
CI/CD / nas-verify (push) Has been skipped

This commit is contained in:
2026-10-10 19:20:48 +08:00
parent ef207b032c
commit fe1b27fa73
2 changed files with 6 additions and 2 deletions
+5 -1
View File
@@ -148,7 +148,11 @@ def _load_close_wide(vnpy_db: str, columns_ref: pd.Index, start: str, end: str)
from sanguo_data.config import find_config_path, load_config
db = load_config(find_config_path()).data_paths["vnpy_db"]
purge_cache(db, start, end)
bars = load_universe_bars(db, start, end, symbols=list(columns_ref))
# symbols 期望裸代码(universe 内部 guess_exchange 拼 exchange 查库;截面盘
# 列名带 .SZSE 后缀直传=symbol 全格式查不中→恒空,2026-10-10 真跑实证);
# loader 回拼 vt_symbol=f"{sym}.{ex}" 还原全格式,与截面盘列名天然对齐
bare = [str(c).split(".")[0] for c in columns_ref]
bars = load_universe_bars(db, start, end, symbols=bare)
_ = bars.select(["datetime", "vt_symbol", "close"]).to_pandas()
wide = _.pivot(index="datetime", columns="vt_symbol", values="close").sort_index()
wide.index = pd.to_datetime(wide.index)
+1 -1
View File
@@ -284,7 +284,7 @@ def test_load_close_wide_real_path(monkeypatch):
"2025-01-01", "2025-01-31")
assert calls["db"] == "fake.db"
assert calls["start"] == "2025-01-01" and calls["end"] == "2025-01-31"
assert calls["symbols"] == ["a.SSE", "b.SSE"]
assert calls["symbols"] == ["a", "b"] # 裸码传入(universe 内部拼 exchange;全格式查不中=恒空,10-10 真跑实证)
assert isinstance(wide.index, pd.DatetimeIndex)
assert list(wide.columns) == ["a.SSE", "b.SSE"]
assert wide.loc[pd.Timestamp("2025-01-03"), "a.SSE"] == pytest.approx(11.0)