股灾预警系统 v2.1

《A股股灾预警系统 v2.1 —— 工程冻结版》

一、系统定位

本系统不是预测股灾,也不是判断明天涨跌,而是识别:

  1. 当前市场是否容易亏钱;
  1. 我的持仓是否暴露在危险区域;
  1. 今天唯一应该执行的交易纪律是什么。

系统最终定位为《A股智能投研与交易纪律系统》的 风险总闸门

所有盘前简报、盘后复盘、深度分析、卡片任务、候选池,在输出交易建议前,必须先读取本系统生成的:

[本机内部路径已隐藏]

二、v2.1 核心修正

1. 数据降级不再自动降低风险等级

v2.0 中“核心模块连续2天降级运行,预警系统自动降一档输出”的规则取消。

修正为:

数据降级 ≠ 市场风险降低

新的处理规则:

数据状态系统行为
单个非核心模块降级继续评分,标注降级,置信度下降
核心模块降级不主动降低风险等级,执行建议偏保守
样本缺失超过10%不输出精确新等级,沿用昨日等级,并标注“今日不可判定”
核心模块连续2天降级置信度降为 LOW,禁止输出激进机会
核心模块连续3天降级发人工维护告警,模块权重临时转移给市场广度

2. 红色预警后验修正规则

v2.0 中红色预警后验调整逻辑修正。

正确规则:

后验结果含义调整方向
红色预警后5日跌幅很小红色太容易触发提高触发难度
红色预警后5日大跌红色有效保持或略放宽
黄色预警后5日大跌黄色触发太晚降低黄色门槛
黄色预警后市场持续走强黄色误报偏多提高黄色门槛

3. 背离硬规则修正

原规则:

沪深300与全A中位数偏离度 > 历史95%分位,且中位数跌幅 > -2%

修正为:

沪深300与全A中位数偏离度 > 历史95%分位,且全A中位数跌幅 < -2%

含义:

指数看起来没有大跌,但多数个股已经明显下跌。

4. 关键位筹码模块降级为“成交密集区压力”

第一版不做真实筹码成本模型,不宣称能计算全市场真实筹码。

模块名称改为:

关键位成交密集区压力

计算逻辑:

指标说明
近252日指数成交密集区用指数价格区间与成交额近似计算
当前点位距离上方密集区判断反弹压力
缩量接近密集区识别假突破风险
放量突破密集区降低该模块风险分

三、系统架构

TuShare / 本地缓存 / 持仓 / 情绪打卡
        ↓
risk_sentinel 数据层
        ↓
数据质量检查与降级判断
        ↓
九大风险模块
        ↓
历史分位 + z-score
        ↓
市场状态识别
        ↓
动态权重评分
        ↓
一票否决硬规则
        ↓
连续确认 / 解除状态机
        ↓
risk_state.json
        ↓
盘前 / 盘后 / 深度分析 / 卡片任务 / 候选池

四、九大风险模块

第一批:MVP 必须先完成

模块作用
指数趋势判断大盘趋势是否破位
市场广度判断真实赚钱效应
涨跌停恐慌判断极端情绪
成交流动性判断流动性是否坍塌
持仓暴露判断个人账户是否处于高风险区域

第二批:增强稳定性

模块作用
行业扩散判断风险是否从局部扩散到全市场
资金压力判断北向、融资、汇率、港股压力
指数间背离判断指数掩护和个股失血

第三批:辅助模块

模块作用
关键位成交密集区压力判断缩量反弹和上方抛压

五、数据层降级路径

核心数据主方案降级方案数据缺失行为
涨跌停数据TuShare limit_list_ddaily 涨跌幅近似标注估算
全市场行情daily + daily_basic本地缓存 + 部分当日数据样本缺失超过10%则不输出精确新等级
北向资金moneyflow_hsgt汇率、港股、南向辅助观察北向权重归零,置信度下降
融资融券margin成交额变化率 + 换手率分位杠杆权重归零
行业分类index_member_all上周本地缓存标注行业成分非最新

六、市场状态识别

系统每天先判断市场状态,再调用对应权重矩阵。

状态判定条件
趋势市主要指数沿20日线同向运行,趋势未明显背离
震荡市指数在20日线与60日线之间反复,无明显趋势
危机模式全市场广度 < 30%,或波动率较20日均值放大1.5倍以上

七、动态权重矩阵

模块趋势市震荡市危机模式
指数趋势20%15%15%
市场广度20%30%20%
指数间背离15%10%10%
涨跌停恐慌10%10%15%
行业扩散10%15%10%
成交流动性5%10%20%
资金压力10%5%5%
持仓暴露5%5%5%
成交密集区压力5%0%0%

当某模块因数据不可用而权重归零时,该权重优先转移给:

市场广度 > 涨跌停恐慌 > 成交流动性

不允许因为数据缺失而让系统变得更乐观。


八、指标评分

每个模块输出四类值:

当前值
过去60日分位
过去252日分位
z-score

模块基础评分:

分位区间得分
< 60%0
60% - 80%1
80% - 95%2
> 95%3

如果 z-score 与分位方向一致,则维持评分。

如果分位高但 z-score 不支持,则降低半档置信度。


九、风险等级

等级含义最大建议仓位
R0 正常可以正常观察机会80%-100%
R1 黄色市场开始脆弱50%-70%
R2 橙色明显高风险30%-50%
R3 红色系统性风险0%-30%
R4 极端停止进攻,只做风险处理0%-10%

十、触发规则

黄色

加权总分 ≥ 45,且达到1天;
或任一模块得3分且 z-score > 2.5。

橙色

加权总分 ≥ 60,且连续2天达到;
或任一模块得3分且 z-score > 3.5。

红色

加权总分 ≥ 80,且连续2天达到;
或触发一票否决硬规则。

十一、解除规则

当前等级解除条件
R1 黄色总分 < 40,且连续2天改善
R2 橙色总分 < 55,且连续3天改善
R3 红色总分 < 70,且连续3天改善,且市场广度恢复至40%以上
R4 极端只能人工确认解除,不能自动解除

十二、一票否决硬规则

满足以下任一条件,系统直接跳级,不等待连续确认。

条件最低等级
主要指数单日跌幅 > 5%R2 橙色
全市场站上20日线比例 < 20%R2 橙色
跌停家数 > 过去一年99%分位R3 红色
沪深300与全A中位数偏离度 > 历史95%分位,且全A中位数跌幅 < -2%R3 红色
全市场成交额较20日均值下降 > 40%,且跌停 > 50家R3 红色
账户单日回撤 > 总资金3%R2 橙色,个人级
账户连续3日回撤 > 总资金1.5%R3 红色,个人级

十三、个人纪律因子

1. 情绪打卡

每天盘前或盘后输入:

冷静 / 中性 / 焦虑 / 亢奋 / 恐惧

加分规则:

情绪风险加分
冷静0
中性0
焦虑+5
亢奋+8
恐惧+5

说明:

情绪因子不改变市场事实,只改变个人执行建议。

2. 持仓容忍度

持仓配置文件:

~/stock_quant/config/holdings.yaml

示例:

cash_total: 500000

holdings:
  - ts_code: 300502.SZ
    name: 新易盛
    tolerance_level: "战术"
    position_pct: 12
    cost_price: 0
    max_loss_pct: 8
    max_loss_days: 5
    theme: "AI算力"

  - ts_code: 600438.SH
    name: 通威股份
    tolerance_level: "底仓"
    position_pct: 8
    cost_price: 0
    max_loss_pct: 15
    max_loss_days: 30
    theme: "光伏"

系统按容忍度输出不同建议:

标签处理方式
底仓允许观察,不轻易减
战术达到风险条件后减仓
博弈R2 以上优先处理

十四、输出文件

1. 风险状态文件

路径:

[本机内部路径已隐藏]

该文件是所有股票系统模块的唯一风险状态源。


2. 风险面板

路径:

[本机内部路径已隐藏]

模板:

【市场风险哨兵|YYYY-MM-DD】
等级:R2 橙色|总分:63/100|连续:2天|置信度:中
最大建议仓位:30%

—— 三条执行指令 ——
① 禁止动作:禁止新开仓,禁止追高,禁止打板
② 强制动作:检查高波动战术持仓,单票风险降至半仓以下
③ 观察窗口:若涨跌比回升至1:1且跌停低于30家,明日评估降级

—— 核心数据速览 ——
广度:
趋势:
情绪:
流动性:
背离:

—— 数据质量 ——
TuShare:
降级模块:
样本缺失:

十五、与现有系统的接入规则

盘前简报

风险等级输出行为
R0正常输出机会
R1机会减少,增加风险提醒
R2不输出激进机会,只输出观察方向
R3不生成买入候选,只生成风险处理
R4只输出仓位、防守、停止交易提醒

盘后复盘

必须增加:

【市场风险门禁】
当前等级:
今日是否升档:
明日是否限制开仓:
是否需要处理持仓:

深度分析

risk_level >= R2,禁止以下措辞:

积极买入
可加仓
明日重点进攻
强烈看多
适合追高

只允许:

观察
等待
控制仓位
减仓
不追高
不新开仓

卡片任务

风险等级卡片行为
R0/R1可输出机会卡片
R2机会卡片必须带风险约束
R3/R4不输出进攻卡片,只输出风险卡片

十六、自动化运行设计

第一阶段:只读 dry-run

不真实推送
不修改旧任务
不接管盘前/盘后
只生成本地文件

必须通过:

NO_REAL_SEND=PASS
NO_DESKTOP_WRITE=PASS
OLD_TASKS_UNCHANGED=PASS
RISK_STATE_JSON=PASS
RISK_PANEL=PASS

第二阶段:盘后自动生成,但不推送

建议时间:

17:00 拉取 TuShare 全量数据
17:30 数据质量检查
18:00 九大模块计算
18:15 状态机转换
18:25 生成风险面板
18:30 写入 latest

第三阶段:连续10个交易日观察

观察内容:

1. 是否天天误报黄色;
2. 风险来临时是否沉默;
3. 是否出现数据降级却输出正常;
4. 是否出现旧产物复用;
5. 是否出现运行时间异常过短;
6. 是否出现真实推送风险。

通过后再接入盘前、盘后、深度分析和卡片任务。


十七、运维门禁

每次运行必须记录:

RUN_STARTED_AT
RUN_FINISHED_AT
RUN_DURATION_SECONDS
TRADE_DATE
DATA_FRESHNESS
RAW_DATA_HASH
RISK_STATE_HASH
REPORT_HASH
NO_REAL_SEND
NO_DESKTOP_WRITE
FALLBACK_USED
DEGRADED_MODULES

硬性失败条件:

运行时间异常过短
risk_state.json 未刷新
risk_panel.md 未刷新
数据日期不是当前交易日
样本缺失超过10%但仍输出正常
真实发送开关被打开
写入 Desktop
旧任务被意外修改

十八、回测要求

部署前必须支持 756 个交易日回测。

回测输出:

黄色预警后5日沪深300平均涨跌幅
橙色预警后5日沪深300平均涨跌幅
红色预警后5日沪深300平均涨跌幅
黄色误报率
橙色误报率
红色误报率
重大下跌漏报率
模块贡献度
模块预测效率

模块效率公式:

模块效率 = 该模块预警后实际下跌概率 / 该模块权重

调整规则:

结果处理
效率 < 0.8下调权重
效率 0.8 - 1.2保持
效率 > 1.2上调权重

十九、目录规范

代码目录:

~/stock_quant/risk_sentinel/

运行产物:

[本机内部路径已隐藏]

日志目录:

[本机内部路径已隐藏]

审计目录:

[本机内部路径已隐藏]

备份目录:

[本机内部路径已隐藏]

临时目录:

[本机内部路径已隐藏]

禁止写入:

~/Desktop
[本机内部路径已隐藏]
/tmp 中的长期产物

二十、版本冻结结论

v2.1 不继续扩展新模块。

当前版本只解决四件事:

1. 数据可靠性;
2. 风险等级稳定性;
3. 执行指令可操作性;
4. 与现有股票系统的风险门禁接口。

v2.1 的最终产物不是一篇长报告,而是每天稳定生成:

risk_state.json
risk_panel.md
data_quality_manifest.json
risk_state_history.jsonl

当这四个文件连续10个交易日稳定生成后,才允许进入正式接入阶段。