diff --git a/common.py b/common.py index b43e06d..743d62d 100644 --- a/common.py +++ b/common.py @@ -125,15 +125,21 @@ def write_factor(table: str, df: pd.DataFrame, mode: str = "daily") -> None: def register(factor_code, display_name, table, category, desc, - author="akg-factor-bridge") -> None: + author="akg-factor-bridge", status: str | None = None) -> None: """注册 factor_metadata。自适应实际存在的列(避免猜死 schema)—— - 列名以线上 factor_metadata 为准,本函数只写它有的列。""" + 列名以线上 factor_metadata 为准,本函数只写它有的列。 + + status 默认取 config.FACTOR_REGISTER_STATUS(2026-09-02 方案 2.5:这个系统只做主观选股, + 六个 akg 因子不参与平台的因子评价与组合成员候选;平台参评列表只取 status='active', + 所以默认注册为 'paused',与平台自己的"暂停"取值一致)。要恢复参评,把旋钮设回 active + 再跑 run.py register。""" values = { "factor_code": factor_code, "display_name": display_name, "target_ds_name": "ds_a", "target_table_name": table, "author": author, "description": desc, "category": json.dumps(category, ensure_ascii=False), - "frequency": "daily", "status": "active", "factor_type": "single", + "frequency": "daily", "status": status or config.FACTOR_REGISTER_STATUS, + "factor_type": "single", } with db.factor_conn() as conn: with conn.cursor() as cur: diff --git a/config.py b/config.py index 32dac24..c082602 100644 --- a/config.py +++ b/config.py @@ -189,6 +189,7 @@ BIONIC_SCAN_KEY = os.environ.get("BIONIC_SCAN_KEY", "") # --- 候选卡(2026-09-02 主观选股改进方案,docs/主观选股改进方案_2026-09-02.md)------ # 桥从"打分排序器"改成"候选卡装配器":分数与档位不动,另出带理由的候选单。规则在 card.py。 # 两个旋钮保持默认、不在历史样本上挑参数,等样本外复盘读数再拍(09-02 拍板)。 +FACTOR_REGISTER_STATUS = os.environ.get("FACTOR_REGISTER_STATUS", "paused") # 平台注册状态:paused=不参评(方案 2.5,平台参评列表只取 active),active=参评 CARD_START_PCT = float(os.environ.get("CARD_START_PCT", "3")) # 门槛二:数据日涨幅达到几个百分点算已启动(与基座热点扫描同口径) CARD_ACCUM_MAX_AGE = int(os.environ.get("CARD_ACCUM_MAX_AGE", "30")) # 确认线:吸筹评分日龄上限(交易日) # 计划快照落点(容器内路径;仓库根挂在 /app,故默认落在仓库 data/plan/)。 diff --git a/docs/复盘决定台账.md b/docs/复盘决定台账.md index 9b800ac..0398d65 100644 --- a/docs/复盘决定台账.md +++ b/docs/复盘决定台账.md @@ -50,6 +50,20 @@ - 预期:PMS 新建仓改由人工裁决,自动止血;模拟盘只在 155。 - 复核日期:候选来源切换拍板时(001 复核之后)。 +## 008 · 2026-09-02 · 池深不变式:PMS 计划深度改回 50 + +- 改动:PMS 运行参数 PMS_PLAN_TOP_N 从 100 改为 50(155,参数表 pms_runtime_param,updated_by 标 claude),与桥入池的 POOL_TOP=50 对齐。用户拍板选项二。回退是同样方式设回 100。 +- 依据:方案 1.11,主榜第 51 到 100 名的强传导票 PMS 能买、却不在决策系统夜间分析池里。用户认为 100 与 50 差别不重要,先对齐。 +- 预期:PMS 探针的合格候选数不变(改前基线 41 只,因为强传导档本身不足 50 只);池深不变式恢复成立。 +- 复核日期:候选来源切换时一并看。 + +## 009 · 2026-09-02 · 候选卡与快照上线(155 生产) + +- 改动:生产桥仓库拉到 62dbe57(候选卡、快照、环境标签、复盘脚本、风险名单只读一次)。代码是卷挂载,构建、计划、入池脚本即刻用新代码;常驻接口进程要重启桥容器才加载新代码,重启由用户执行(Claude 的重启命令被权限分类器拦下,属红线项不绕过)。入池来源保持档位(POOL_SOURCE=tier)、切片关闭,PMS 行为不变。决策系统接口地址(REGIME_API_URL)待用户写入配置并重建容器后环境标签才有值,之前为"未知"。 +- 依据:方案 2.6 执行顺序;上线前核对——一次性容器计划与入池干跑通过、两套单测通过、决策系统接口从 155 可达。 +- 预期:每交易日 07:10 起落当日快照(data/plan/plan_<数据日>.json)、接口带生成时刻与代码版本;PMS 探针合格数与改前一致。 +- 复核日期:09-11 首份周报核对快照连续性。 + ## 007 · 2026-09-02 · 坏信号集合三处同源 - 改动:坏信号集合 {SELL, AVOID, DROPPED} 在桥内归一到 card.BAD_SIGNALS,pool.py 从它引用;决策系统 pms_advisor.py 与 PMS rule_gate.py 各自写死,三处同改。