fix(live): max_pool 全链默认 30→0(0=不限)——08-24巡检定罪MVP限流泄漏生产,选股池=代码序前30只失真 [vps]
CI/CD / test (push) Failing after 12m2s
CI/CD / nas-deploy (push) Has been skipped
CI/CD / nas-verify (push) Has been skipped

根因(策略session 08-24 午休探针实证):runtime/live_strategy.py SANGUO_LIVE_MAX_POOL
默认30经env注入全部实盘+影子+paper实例,_stock_pool截断成份池为「代码序前30只」:
small_cap「全市场最小市值」实际在000001平安银行等30只固定代码里选(平安银行≈3800亿
出现在小市值买入=market_cap开盘NaN排序失效叠bug);momentum每行业RPS只在代码序前
30里排;value 0/30+零委托史同源。注释自曝「MVP验证用」=限流遗留泄漏生产,上线
首日起全部选股失真。

改动(9处默认位一致30→0;语义0=不限,与策略层max_pool>0才截断一致):
- sanguo_portfolio/live_strategy.py 适配器env默认+docstring
- sanguo_live/runner.py _portfolio_env_for(存量DB显式值不篡改,缺列/0→"0")
- sanguo_trader/shadow/supervisor.py 影子env默认
- sanguo_portfolio/runner_live.py live_env默认
- sanguo_trader/portfolio_paper.py + sanguo_api/routes_paper.py paper默认
- sanguo_api/routes_live.py create setdefault
- frontend live/paper New.vue 表单默认

测试:env mapping三态断言(缺列/0→"0",显式30不篡改)+live_env默认"0"
(RED→GREEN);CI范围642绿。存量实例DB仍存显式30,激活需配套DB迁移,必须与数据
session的get_security_info_batch SQL治本(101s→亚秒)同车部署——池放大×慢SQL=更糟。
This commit is contained in:
2026-08-24 13:34:01 +08:00
parent d575029788
commit f214e2f0e4
10 changed files with 18 additions and 11 deletions
+8 -1
View File
@@ -118,6 +118,13 @@ def test_portfolio_env_mapping():
assert env["SANGUO_LIVE_CASH"] == "2000000"
assert env["SANGUO_LIVE_DB"] == "live.db"
assert env["SANGUO_LIVE_ACCOUNT_ID"] == "7"
# 行缺 max_pool / 存 0 → env "0"(0=不限);显式 30 等存量值不篡改
no_pool = {k: v for k, v in acc.items() if k != "max_pool"}
assert live_runner._portfolio_env_for(no_pool, "live.db")["SANGUO_LIVE_MAX_POOL"] == "0"
zero_pool = dict(acc, max_pool=0)
assert live_runner._portfolio_env_for(zero_pool, "live.db")["SANGUO_LIVE_MAX_POOL"] == "0"
kept = dict(acc, max_pool=30)
assert live_runner._portfolio_env_for(kept, "live.db")["SANGUO_LIVE_MAX_POOL"] == "30"
def test_runner_live_env_defaults(monkeypatch):
@@ -129,7 +136,7 @@ def test_runner_live_env_defaults(monkeypatch):
monkeypatch.delenv(k, raising=False)
cfg = runner_live.live_env()
assert cfg["strategy"] == "all_weather"
assert cfg["max_pool"] == "30"
assert cfg["max_pool"] == "0" # 0=不限(2026-08-24 巡检:MVP 默认 30 泄漏生产致选股池失真)
assert cfg["benchmark"] == "000300.XSHG"
assert cfg["account"] == "" # 空 → run_live 拒绝启动(防误下单)