tradingSystem/docs/盘中改判与信号聚合方案_2026-09-09.md

145 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 盘中改判与信号聚合2026-09-09 落地记录)
> 方案已实施完毕,本文改成落地记录:做了什么、实测读数是多少、怎么验证、怎么回退。
> 台账见两个仓库各自的 `docs/复盘决定台账.md`(持仓管理系统 001 到 005择时决策系统 001 到 004
---
## 一、两件事各解决什么
**第一件。** 信号栏一行等于上游流里的一条原始消息,一只活跃票一天十来条散在好几个分组里。
现在点一下票名,抽屉里按时间倒序摊开它今天的全部信号。
**第二件。** 新建仓被研判驳回后,那只票当天就不再被评估。现在盘中输入确实变了就解除一次,
重新问一遍;同时择时决策系统新增一条主动通道,遍历候选池找今天转强的票。
---
## 二、实测读数09-09 收盘,全部只读、未落任何表)
**按代码回扫。** 四方股份 16 条、0.36 秒五路全部读到、没有触到回扫上限。第二次点同一只票走缓存0.001 秒。
**量比口径。** 三只票交叉验证:
| 股票 | 较昨收 | 时段折算量比 | 与当天研判说法对不对得上 |
|---|---|---|---|
| 四方股份 | +7.58% | 1.128 | 对得上。10:12 驳回理由正是"今日突破量能未确认" |
| 长源电力 | +2.22% | 1.553 | 量比够但涨幅不够 |
| 洛阳钼业 | -0.82% | 0.806 | 都不够 |
**解锁试算。** 11 只被驳回的票按 11:30 那一刻算,**一只都不解锁**
- 9 只较驳回价没走够 2%,其中 5 只在跌
- 四方股份的转多留痕在 10:05早于 10:12 的驳回,按第一条解锁条件不算新信息
- 唯一接近的是 600875.SH涨 4.73%、量比 2.408,只因为当天的驳回行是旧格式、没有基线快照,判不了"是不是相对驳回那一刻变强"
这说明阈值不松。部署之后新的驳回行都带基线快照,这类票会被正常解锁。
**跨系统闭环。** 持仓管理系统写候选池键,择时决策系统立刻读到,两侧算出的读数完全一致
(四方股份量比都是 1.128,长源电力都是 1.554)。这是"三处同源"那条纪律的运行时证据。
---
## 三、必须知道的三件事
**一、改完之后不会立刻追高买入。** 两只票的现价都高于择时买入区间上沿:
| 股票 | 买入区间 | 现价 |
|---|---|---|
| 四方股份 | 39.60 到 40.60 | 42.60 |
| 长源电力 | 24.25 到 25.38 | 26.18 |
即使解锁重问、研判放行、你在页面上点了头,落成指令之后择时仍会说"高于上沿,不追"
指令挂在窗口期里等价格回落。**解锁重问买到的不是"立刻追高",而是"让这只票进入待办、等回调时自动买入"。**
追高那条线一个字没改。
**二、不追高那道闸量的是相对今日开盘,不是相对昨收。** 四方股份今天较昨收涨 7.6%,较开盘是 -0.2%
所以它其实从没被那道闸拦过。这次只登记口径,不改闸。
**三、资金流开全量比原方案想的危险。** 实施时查出两处:股票池门控总开关默认关着时覆盖面等于
全市场(日均一千三到一千六条,没底牌的票逐条走冷启动重算,可能一天几百次打满大模型队列);
流出侧会触发风控仲裁,大模型不可用时硬规则会直接判卖出。所以加了方向闸、覆盖面闸与冷启动配额,
第一阶段只放流入侧。详见择时决策系统台账 003。
---
## 四、验证命令
### 甲、持仓管理系统(在它所在的服务器上,仓库根目录)
单测。预期最后一行是 `ALL SUITES PASS`
```bash
docker compose run --rm --no-deps -v "$PWD:/app" pms-web python scripts/run_tests.py
```
解锁判定试算。只读,一行都不写。预期打印当日被驳回的票与逐只的解锁判定:
```bash
docker compose run --rm --no-deps -v "$PWD:/app" pms-web python -c "from datetime import datetime; from app.services import proposal_service as ps, reask_service as rs; jk = ps._judge_rejected_open_keys(); print('当日被研判驳回:', len(jk), '只'); print('解锁:', rs.evaluate_all(jk, datetime.now()) or '(无)')"
```
全链试算,不落任何表。预期打印候选数与分流结果:
```bash
docker compose run --rm --no-deps -v "$PWD:/app" pms-web python -c "from app.services import proposal_service as p; import json; print(json.dumps(p.scan_and_route(dry_run=True), ensure_ascii=False)[:600])"
```
单票信号回扫。预期打印条数与耗时,五路都标 ok
```bash
docker compose run --rm --no-deps -v "$PWD:/app" pms-web python -c "import json,time; from app.services import upstream_signals as u; t=time.time(); d=u.by_code('601126.SH', force=True); print('%d 条 %.2f 秒' % (len(d['timeline']), time.time()-t)); print(json.dumps(d['sources'], ensure_ascii=False))"
```
### 乙、择时决策系统(在它所在的服务器上,仓库根目录)
三个自检。每个预期最后一行都是 `ALL OK`
```bash
docker exec trader_worker_brain python3 scripts/selftest_strength_scan.py
```
```bash
docker exec trader_worker_brain python3 scripts/selftest_pms_judge_force.py
```
```bash
docker exec trader_worker_brain python3 scripts/selftest_metrics_scope.py
```
候选池键通不通。预期打印"候选池 N 只"与代码列表:
```bash
docker exec trader_worker_brain python3 -c "from workers.strength_scan import load_universe; print(load_universe())"
```
单轮扫描试跑。总开关关着时预期是 `SKIP 总开关关着`
```bash
docker exec trader_worker_brain python3 -c "from workers.strength_scan import run_scan; print(run_scan())"
```
---
## 五、上线顺序与开关
| 段 | 做什么 | 前提 | 观察多久 |
|---|---|---|---|
| 第零段 | 两侧代码全部到位、全部测试绿、容器重启 | — | 半天,只看日志没有新报错 |
| 第一段 | 打开解锁重问(页面改参数,即时生效,不用重启) | 第零段完成 | 三个交易日 |
| 第二段 | 打开强势扫描的观察档(只记不派,**一次大模型都不打** | 第一段观察满三天 | 两个交易日 |
| 第三段 | 关掉观察档,真派单 | 第二段读数正常 | 三个交易日 |
| 第四段 | 资金流分发半开(全量 + 只放流入 + 覆盖面收着) | **必须单独一段** | 两个交易日 |
| 第五段 | 资金流分发全开(放两侧) | 第四段全绿,且当日兜底卖出恒为 0 | 两个交易日 |
第一段与第二段为什么不能同时开:它们会互相喂 —— 强势扫描产的转多广播正好是解锁重问的第一条解锁条件。
同时开就分不清"今天解锁了五次"是解锁阈值定得准,还是扫描在制造信号。
## 六、回退
三条互相独立,可以单独拉:
1. 资金流分发:改服务器环境文件回只留痕,重建那一个容器
2. 强势扫描:改环境文件把总开关关掉,重启大脑工作进程
3. 解锁重问:页面上把总开关改成关,**即时生效,不用重启**