fix(factor): challenger close 恒空根修——load_universe_bars symbols 须裸代码(截面盘列名带.SZSE 后缀直传=symbol 全格式查不中,真跑实证三路全空 days=0);传裸码 loader 回拼 vt_symbol 还原全格式天然对齐 [vps]
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user