fix: 证伪标记数据驱动——strategy_research加deprecated字段,前后端从数据读(替代硬编码),strategy_router排除证伪策略

This commit is contained in:
hmo
2026-08-15 08:21:06 +08:00
parent 70687f4bf1
commit 6ad5c30ab1
3 changed files with 60 additions and 11 deletions
+11 -3
View File
@@ -26,8 +26,6 @@ sys.path.insert(0, "/home/hmo/MoFin")
OUT = Path("/home/hmo/MoFin/data/strategy_weights.json")
DEFAULT_FAMILY = "mr"
# 已证伪策略(2026-08-15 对齐前端 DEPRECATED——证伪的策略绝不激活)
DEPRECATED = {"v_mr", "v_mr_sel", "v_combo"}
FAMILY_MAP = {
"v_weak": "mr", "v_oversold": "mr", "v_mr": "mr", "v_mr2": "mr", "v_mr3": "mr",
@@ -114,10 +112,20 @@ def route(regime, temp, perf):
current_regime = regime.get("regime", "unknown")
band = temp.get("band", "unknown")
weights = {}
# 已证伪策略(从 strategy_research.deprecated 读,数据驱动——证伪绝不激活)
dep = set()
try:
import sqlite3 as _sq
_c = _sq.connect("/home/hmo/MoFin/data/mofin.db", timeout=5)
dep = {r[0] for r in _c.execute(
"SELECT DISTINCT version FROM strategy_research WHERE deprecated IS NOT NULL AND deprecated != ''")}
_c.close()
except Exception:
pass
for name, regs in perf.items():
if not regs:
continue
if name in DEPRECATED: # 已证伪策略绝不激活(2026-08-15)
if name in dep: # 已证伪策略绝不激活(数据驱动,2026-08-15
continue
cur = regs.get(current_regime)
best = max(regs.items(), key=lambda x: x[1].get("win_rate", 0))