📊 今日·结论 首屏只留四块:一句话结论 → 关键数(演练账户口径,逐项标注)→ 待办 → 决策卡(持仓 / 今日委托单 / 成本风控 / 可投规模);成本真相 / 容量匹配 / 告警 / 明细表 / 建议台账 / 运行明细 都在下方折叠区
📚 成本真相 · 容量匹配 · 告警 · 明细表(展开查看,不占首屏)
🧰 运行与数据明细(展开查看)
🩹 待修复工单
来源与告警同源(data/alert_ledger.jsonl 未闭环项 + 三层护栏产物);
动作只从 core/self_heal.ACTIONS 白名单里挑,白名单之外只告警不动手
📜 已声明的动作(白名单 · 单一真源 core/self_heal.ACTIONS)
系统只能执行这里声明过的动作;每条工单只给 1 个对应按钮,
点击先预览「将要执行什么 + 影响什么」,再确认。执行会留痕 data/heal_ledger.jsonl,
并同时发「自愈」前缀通知(成功也发,不做无声修复);同一现象 24h 内自愈 ≥3 次即停手转人工。
刚才那封「自愈」邮件到底发出没有 → 见本页第 2 小节「📧 通知与发信记录」的发信记录(含收件人、SMTP 结果与时间)。
🔑 数据接口凭据 Tushare token(行情/财务取数接口的唯一钥匙)
读取顺序:环境变量 TUSHARE_TOKEN 优先,其次 secrets/tushare_token.txt,
唯一真源在 config.load_tushare_token。本入口只写文件、不改环境变量,且不支持清空(空值会被拒绝),防止误抹已配好的钥匙。
📧 邮件中心 通知设置 · 立即发送 · SMTP 测试 · 模板,四合一
敏感凭据存于 secrets/email.json(不入库、页面永不回显);服务器 / 端口 / 发信邮箱 / 授权码可在下方「🔐 SMTP 凭据」直接修改,本页另管理通知开关与收件人。
🔐 SMTP 凭据(服务器 / 端口 / 发信邮箱 / 授权码)
授权码是 SMTP 的应用专用密码(如 QQ 邮箱在「设置 → 账户 → POP3/SMTP 服务」处生成), 不是邮箱登录密码。四项可只改其中一项:留空表示保持原值不变;授权码框永不回填、也永不回显。
保存后可到「🧪 SMTP 发信测试」发一封测试信验证是否真的可用—— 凭据是否正确,只有真发出去才知道,页面上的「已配置」只代表填了非空值。
📨 立即发送策略信号邮件
收件人 = 上方全局收件人 + 在「🛠 系统维护 · 账号与安全」中订阅了对应策略的用户。邮件内容取各策略 result 目录下最新一期选股结果。
🧪 SMTP 发信测试
📝 邮件模板(HTML,发送时用真实选股数据替换占位符)
📧 逐策略信号邮件(传统方式,可选)
把勾选策略各自的最新一期信号邮件发给全局收件人及订阅用户(默认全选启用策略)。
📝 每日复盘(信号 / 持仓 / 收益 / 归因)
选定策略与交易日,按指标条件筛选,生成合并日报,可先预览,再邮件发送给全局收件人及订阅用户。数据直接读取回测产物,不重算。
添加用户
用户列表(点「编辑」配置通知邮箱与策略订阅)
修改我的密码
登录设备与安全
📌 建议闭环台账 报告级建议唯一真源(data/advice_ledger.jsonl); 两段式闭环:① 采纳(转「待落地」,不要求当场给证据)→ ② 落地闭环(补落地日期 + 验收证据)
🧺 股票池台账
唯一真源 ops/pools.json(core/pools.py)·
池管「谁进候选集」,过滤条件管「候选集里谁不合格」;改口径走这里,别手改文件(手改会绕过
校验 + 原子替换 + 台账三道)
硬约束(后端强制,不是提示):① 仍被任何策略引用的池不能删(删了引用者当日会被排除);
② 被 shadow/live 档引用的池,pit/purpose 锁定不可改;
③ 改动已被引用的池须先看影响面确认(其 ctx 缓存指纹随池定义变化而失效,下次运行必然重跑);
④ 声明的 PIT 池不得用固定快照文件;⑤ 有偏池(pit=false)只能是复刻用途。
🗺 系统速览 策略 / 信号 / 因子一屏掌握(索引由 knowledge-sync 离线生成,只读透传)
🗓 运行 runbook 日常执行编排(阶段3):计划任务时间轴+最近执行状态+异常待办闭环
① 计划任务时间轴
② 异常待办闭环(告警台账)
③ 月度回顾(boss_review)
🛰 轮动整合 轮动载体整合控制台(阶段3):状态/门禁+成员依赖(跨资产警示)+对照闸门+六维体检
⚖ 待授权晋级 老板唯一拍板点:pooled→已授权(promote) / promoted→真钱(live);每次授权落台账(result/ops/lifecycle_ledger.jsonl)
🧬 策略生命周期
唯一真源 core/lifecycle.py ·
阶段是计算值(由名册结论 / 四条线核对 / 台账事件实时推出),不写回 strategies/*.json;
只有人工动作落 result/ops/lifecycle_ledger.jsonl
📜 生命周期事件台账 append-only · 谁在什么时候把哪条策略推到哪一档(可问责)
🧬 系统自我进化
收盘后的定期机制:监控生产策略衰减、按晋升闸门给出升降级建议、回流实盘滑点校准回测假设、装配新变体并评价,争取把更好的研究策略推进为生产策略。
红线:所有机制只产出报告、建议与 shadow 变体,绝不自动修改策略状态或上线参数;晋升/淘汰一律由人工裁决后到「投研工坊 / 轮动总览」执行。
📦 月度机制包(每月 1 日)
依次执行:衰减监控 → 晋升闸门 → 滑点月报 → 自优化装配提案 → 全量策略评价 → 研究评价 Word 报告(可邮件)。全部只读/只提案。
📉 生产策略衰减监控
对 live 策略做近端绩效衰减检测(滚动窗口相对全期/基准),输出预警清单;仅预警,不自动下线。
🚦 晋升闸门(shadow → live 建议)
按闸门指标(样本外夏普、一致性、回撤、审计档等)对 shadow 策略打分,给出「可晋升/继续观察」建议,不自动改状态。
💧 实盘滑点回流月报
汇总近期实盘成交与信号价偏差,校准回测的滑点/冲击成本假设,让评价更贴近真实成交。
🕘 各机制上次运行结论 直接读取各机制 latest 产物,避免"跑了没有、结论是什么"还要翻文件
🚦 晋升材料包(一页聚合,人工裁决用) CV 四项 + 策略评价 + 过拟合审计 + 晋升闸门逐项检查;系统不自动改状态
🧪 自优化装配提案(最近运行) 围绕模板策略批量生成参数变体并跑闸门,通过者仅保留为 shadow 研究对象
| 运行批次 | 模板策略 | 开始时间 | 状态 | 变体数 | 通过数 | 通过者最优样本外夏普 |
|---|
变体的完整评价请到「🔬 研究评价」页查看;通过且人工认可的变体,再由管理员晋升为生产策略。
🩺 数据源总览 唯一真源 core/data_registry.py · 共 — 类;新增数据源只改注册表一处,体检与页面即刻同步覆盖
🧱 运行底座(交易日历前瞻 / 回测加速镜像)
🧬 可转债链路(只读) 读 result/ 下的研究产物与影子账本,只读展示;不改动任何定稿与实盘配置(CB 数据源已登记进上表总览)
🧭 计划任务(在册态势 · 一键重建) 基线唯一真源 ops/scheduled_tasks/*.xml;自检只告警不自动重建(保留「有人在动系统」信号),重建必须人亲手点「预览 → 重建」两步
🕒 最近一次数据任务
计数直接取 logs/jobs/<id>.log 的收尾统计行原文,不另算一套口径,保证与命令行结果逐字一致。
更新市场数据(Tushare,CSV 分类落盘 · 日增量)
已下载的交易日切片自动跳过(断点续传);失败日期见上方「失败日期」区块,可一键续传。调度器串行执行,互不抢占资源。
🧰 数据维护 全部走同一调度队列串行执行;按钮旁的 CLI 为等价命令,脱离面板也能手工维护
💼 当前持仓 实盘账户口径 · 来自成交推演/券商导入,非回测持仓
② 🩺 生产策略运行态势
(1)运行是否正常 · 健康检查
| 灯 | 策略 | 生命周期 | 最新信号 | 净值至 | 诊断 |
|---|
(2)🧭 调度决策:我们是什么规则 → 当前实际数据 → 所以如何调度
📜 我们的调度规则
📈 当前实际数据
🎯 所以如何调度
决策依据指数日线本地只读现算(秒级),与轮动回测同一套规则口径;组合层定稿名单来自最近一次轮动回测,缺失时回退显示执行策略自身最新信号并明确标注。
(3)与当前市场是否匹配 · 研究评价快照
评价仅作研究参考,系统不会自动修改任何策略状态;晋升/淘汰建议请看「🧬 进化中心 → 晋升闸门」,由人工裁决。
③ 📌 明日操作指引(T 日收盘信号 → T+1 开盘执行)
🗂 历史调度决策回看(每日流水线/发送时自动落盘)
调度队列(点击任务查看日志;任务串行执行)
🧾 实盘对账 委托单 → 实际成交 → 每日对账(半自动手工执行,QMT 接口预留)
🧭 决策溯源 回答:这一单由哪条链路、哪个调度算法、哪些成员策略算出来
怎么查:① 在「🧾 实盘对账」页点「生成委托单」成功后,按钮区会直接给出
「查看决策溯源 →」;② 或从「🛩️ 驾驶舱」决策日历行点「查看」;
③ 也可在此手动选:决策日下拉已标注该日是否已生成委托单(含执行日),
委托单下拉列出该决策日名下的单。
溯源读「决策归档」result/router/<轮动>/decisions/ 与已落盘委托单 data/live/orders/。
注意决策日 ≠ 执行日(T+1):今天生成的单通常挂在上一个决策日上,
请挑决策日下拉里带「已有委托单 → 执行日 …」标记的那天;选错日时下方「对应的委托单」
会列出本机全部已落盘委托单并给出「切到该单决策日」按钮。
当期名单(选出什么)
规则权重 vs 实际权重 左=配置声明,右=最近调仓日真实持仓(差=整手/买不进造成的漂移)
状态切换记录
交易明细(最近 300 笔)
配置参数
规则:中证1000 跌破闸门均线当日立即空仓(风控优先),重新站上需连续确认; 闸门开启时,小盘/大盘风格比值在均线上方带 5% 滞回带切换,需连续确认(长周期降频)。
轮动规则怎么工作?(点开 / 收起)
一句话:rotation 模式 = 一个由信号驱动的状态机。信号每天给市场打一个状态标签 (如 CALM / PANIC),经过「切换确认」去抖后落到某个状态;每个状态里挂着若干「袖筒」 (策略 + 权重),轮动就在这些被调用的策略之间分配资金。
- 轮动信号:决定每天市场处于哪个状态(见上方信号说明:是什么 / 怎么算 / 决策规则 / 注意事项)。
- 切换确认(日):状态读数要连续 N 天保持一致才真正切换,过滤噪声来回跳(去抖)。 N 越大越稳但反应越慢;波动类信号建议 ≥5 日。
- 缺省状态:信号数据不足(warmup)或缺失时的初始状态;CASH 永远合法=空仓。
- 叠加成员自带择时:勾选后,每个袖筒策略还会再叠一层它自己的择时(如转债择时帽),双重风控。
- 状态 → 袖筒映射:每个状态可挂多条袖筒,权重在该状态内归一(加起来=1); 某状态袖筒留空=该状态直接空仓。
改这里只改「怎么轮动」的逻辑;初始资金、成本、整手取整、换手都在轮动层面, 策略只是被调用的选股组件(账户口径业绩只存在于「轮动总览」页)。
📅 最新交易日盘面(—)
| 策略 | 当日收益 | 沪深300 | 当日超额 | 仓位 | 持仓 | 近5日 | 近20日 | 距高点回撤 | 新信号 | 当日成交 |
|---|
按当日收益降序;A股红涨绿跌;点击行进入策略详情。空仓策略当日收益为 0;"新信号"为当日收盘出的下期买入名单条数。
策略对比 阶段 = 策略档位(live/shadow/research)与门禁裁决并列;勾选叠加净值
| 对比 | 策略 | 阶段 | 过闸核查(逐线 ✅/❌) | 来源 | 周期/选股 | 累计收益 | 年化 | 最大回撤 | 卡玛(硬线) | 夏普(研究) | 夏普(可投) | 换手 | 样本天数 | 年化波动 | 日胜率 | 超额夏普 | 累积净值(复刻) | 年化CAGR(复刻) | 区间 |
|---|
勾选多个策略叠加净值曲线;点击行进入策略详情。默认按「live + shadow」筛选、并只勾选这两档(当前真正在跟的标的),研究档/退役档想看把筛选切到「全部阶段」。「阶段」列第一行是策略自己声明的档位,第二行是门禁裁决,两者不一致时给出提示(红色=危险分叉)。
叠加轮动净值(虚线) 勾选后其净值以虚线叠加到下方「净值对比」图;完整轮动横比见「📊 轮动总览」
轮动载体(router)的账户口径指标与完整对比台在「📊 轮动总览 · 轮动台账(横比)」页(同源 result/router/<id>/metrics.json)。本页只保留「同图叠加」入口,避免与轮动总览重复。
净值对比
净值走势(对比沪深300)
回撤
年度收益
月度收益热力(%)
交易/持仓明细
💰 可投候选(三真源母表 · 只读)
把「有什么可投」的三处读数汇到一张表,三块真源各照旧、面板只搬运不重算:
定稿账(result/ops/capital_plan.json,可投口径 10bp/10%)·
研究评价快照(result/lab/eval/strategy/index.json,研究口径 0bp)·
可转债名册(result/cb_l2l3_real_native/shortlist_real.csv,可投口径)。
口径列必须显式,两套口径绝不混算。
门禁六线全貌(/api/live/strategy_status 策略级 + /api/live/admission 载体级 + /api/boss/overview 定稿账第三口径)。
阈值唯一真源=core/live_gate.py::standard_dict()(经 /api/gate/standard 下发,下表每行标注真源;含六线+家族 PBO 闸+窗口前置,红④ 不另起口径)。
分工:实盘对账页已有 spec/gate 双口径不一致实时告警——本卡聚焦六线数值全貌+capital_plan 第三口径纳入+载体准入汇总,不复读告警清单。
🛒 进货看板(候选一屏:装配提案 / 晋升闸门 / 因子评级)
只读既有产物(proposals.json + promotion/latest.json +
factor/index.json),不重算、不落盘、不改策略状态。逐条给出卡在哪条闸门与差多少。
🔬 因子评价(多股票池 × 多中性化 × 参数扫描 × 牛熊分段)
⏱ 择时评价(3 指数挂载体 × 参数扫描 × 牛熊分段 + 死档检测)
🤖 自优化装配(系统自选/装配因子与择时;只提案,采纳才落地)
锁死模板的股票池/调仓周期/持仓只数/过滤条件,搜索因子组合、权重、标准化、中性化与非杠杆择时; 候选须通过 G1-G5 闸门(训练择优/外推/OOS增益/Deflated Sharpe/参数高原)。绝不自动修改现有策略或自动 live。
📊 策略评价(只读回测产物,秒级:收益/回撤/跨年稳定/衰减/超额/执行 + 六维检验封顶)
📄 评价报告(Word 汇编,可下载 / 可邮件发送)
勾选要纳入的因子/择时/策略评价与自优化最新运行,系统汇编为 Word(策略为只读秒级现算并落盘); 重任务走调度队列,完成后在下方下载。
投研工坊
🔗 影响链查询(改构件前先查谁引用它)
新建策略
中性化:industry=行业内 OLS 残差; industry_rank=行业内分组排名→组内 z(免疫极端值、带行业规模修正, 不同行业第一名不会像 OLS 那样打平)。持仓周期填 Y=每年 5 月首个交易日调仓, YM5 同义,YM3=每年 3 月。
pool_id,口径由
ops/pools.json 统一维护,多个策略共用同一份定义)或展开下面的
「高级自定义内联池」(pool 写死在本策略里)。两者同填会被
core/schema.normalize 判为「两份真源」直接报错。池定义要改口径 →
🛠 系统维护 · 🧺 股票池台账(或点下方「此池定义 ▸」)。
🧩 策略配置体检
唯一真源 core/spec_audit.py ·
A 致命 / B 硬=当日排除出回测/门禁/资金账并进告警邮件;
C 提示 / D 信息=只提示不改行为(口径类缺键取默认值)
加载中…
脱离面板也能查(等价命令):
python -X utf8 -m core.spec_audit ·
修复先 dry-run:python -X utf8 -m core.spec_audit --fix,
确认后加 --yes 才写盘(生成 .bak_<时间戳> 备份)