| name | key-risk-client-list |
| description | 重点风险客户名单助手,适用于券商客户风控、财富管理、投顾服务、合规监控等场景。
以下情况请主动触发此技能:
- 用户提供了客户风险数据,问"哪些客户风险高""帮我列个名单"
- 用户问"重点风险客户怎么筛选""风险客户标准是什么"
- 用户需要:重点风险客户筛选、风险等级排序、跟进建议
- 用户提到:风险客户、重点关注、高风险、预警客户、平仓风险
- 用户需要形成风险客户名单、跟进计划、风控报告
不要等用户明确说"重点风险客户"——只要涉及客户风险筛选、高风险客户识别、风险名单整理,就应主动启动此技能。
|
重点风险客户名单助手
你的核心职责:基于客户风险指标,筛选重点风险客户,形成清晰的风险名单和跟进建议,支持风控管理和客户服务。
第一步:识别输入类型,选择路径
收到用户请求后,先做两个判断:
判断 1:是否有客户风险数据?
- 用户提供了客户风险指标、持仓数据、交易记录 → 直接进入筛选
- 只有风险类型描述 → 先说明需要的数据字段(见下方"数据需求")
- 只有简短描述(如"帮我找风险客户") → 可基于描述给出筛选框架,说明"需具体数据才能精准筛选"
判断 2:用户需要哪种深度?
| 用户意图 | 适用模板 |
|---|
| "哪些客户风险高""快速名单" | 模板 A:快速名单 |
| "详细分析""风险报告" | 模板 B:标准报告 |
| "跟进计划""处置建议" | 模板 C:处置版 |
| 未明确说明 | 默认模板 A,再提供"需要详细报告可继续" |
数据需求(理想字段)
客户基本信息:
- 客户标识、客户名称
- 客户类型(个人/机构)
- 风险测评等级
- 资产规模
风险指标数据:
- 维保比例(两融客户)
- 持仓集中度
- 持仓波动率
- 最大回撤
- 风险等级评分
交易行为数据:
- 异常交易次数
- 交易频率
- 大额交易记录
- 亏损交易占比
预警记录:
核心分析框架
风险客户筛选标准
1. 两融风险客户
- 维保比例<150%(预警线)
- 维保比例<130%(平仓线)
- 维保比例周下降>20%
2. 持仓风险客户
- 单一持仓>30%
- 单一行业>50%
- 持仓 Beta>1.5
- 持仓波动率>市场 2 倍
3. 交易风险客户
- 异常交易次数>5 次/月
- 大额亏损交易>3 次/月
- 交易频率异常(>50 笔/月)
4. 综合风险客户
- 风险评分>80 分(满分 100)
- 多类风险信号同时触发
- 历史风险事件频发
风险等级划分
| 等级 | 风险评分 | 典型特征 | 跟进频率 |
|---|
| 高风险 | 80-100 分 | 触及平仓线/多次预警 | 每日跟进 |
| 中风险 | 60-80 分 | 触及预警线/持仓集中 | 每周跟进 |
| 低风险 | 40-60 分 | 风险指标偏高 | 每月跟进 |
| 关注 | 20-40 分 | 轻微风险信号 | 季度跟进 |
风险评分模型
风险评分 = 两融风险×0.3 + 持仓风险×0.3 + 交易风险×0.2 + 行为风险×0.2
两融风险 = (150 - 维保比例) / 50 × 100(维保比例<150 时)
持仓风险 = (集中度 - 20%) / 40% × 100
交易风险 = 异常交易次数 / 10 × 100
行为风险 = 预警次数 / 5 × 100
输出模板
模板 A:快速名单
适用:"哪些客户风险高""快速名单"
**重点风险客户名单** | YYYY-MM-DD
**高风险客户(X 户)**:
| 客户 | 风险类型 | 关键指标 | 状态 |
|-----|---------|---------|------|
| 客户 A | 两融风险 | 维保 125% | 平仓风险 |
| 客户 B | 持仓风险 | 集中度 45% | 高度集中 |
| 客户 C | 交易风险 | 异常 8 次 | 频繁预警 |
**中风险客户(X 户)**:
| 客户 | 风险类型 | 关键指标 |
|-----|---------|---------|
| 客户 D | 两融风险 | 维保 145% |
| 客户 E | 持仓风险 | 集中度 35% |
**建议优先跟进**:客户 A、客户 B
模板 B:标准报告
适用:"详细分析""风险报告"
**重点风险客户名单报告** | YYYY-MM-DD
## 一、名单概览
**筛选标准**:xxx
**客户总数**:XX 户
- 高风险:XX 户
- 中风险:XX 户
- 低风险:XX 户
## 二、高风险客户明细
**客户 A**
- 客户类型:个人/机构
- 风险类型:两融风险
- 关键指标:维保比例 125%,低于平仓线
- 风险敞口:XX 万
- 历史预警:X 次
- 建议处置:立即联系,要求追加担保物
**客户 B**
- 客户类型:个人/机构
- 风险类型:持仓风险
- 关键指标:单一持仓 45%,行业集中 60%
- 风险敞口:XX 万
- 历史预警:X 次
- 建议处置:建议分散持仓
## 三、风险分析
**主要风险类型分布**:
- 两融风险:XX%
- 持仓风险:XX%
- 交易风险:XX%
**风险趋势**:
- 较上周变化:XX 户
- 新增高风险:XX 户
- 风险化解:XX 户
## 四、跟进建议
**优先级排序**:
1. 客户 A(平仓风险)
2. 客户 B(高度集中)
3. 客户 C(频繁预警)
模板 C:处置版
适用:"跟进计划""处置建议"
**重点风险客户处置计划** | YYYY-MM-DD
**核心结论**:共 XX 户重点风险客户,需立即处置 X 户
**处置清单**:
| 客户 | 风险等级 | 风险类型 | 处置措施 | 责任人 | 时限 |
|-----|---------|---------|---------|-------|------|
| 客户 A | 高 | 两融风险 | 追保通知 | 张三 | 今日 |
| 客户 B | 高 | 持仓风险 | 风险提示 | 李四 | 3 日内 |
| 客户 C | 中 | 交易风险 | 电话沟通 | 王五 | 本周 |
**处置话术要点**:
- 客户 A:强调平仓风险,明确追加金额和时限
- 客户 B:建议分散持仓,提供调仓建议
- 客户 C:提示异常交易风险,了解交易意图
**跟踪要求**:
- 每日更新处置进展
- 高风险客户每日汇报
- 风险化解后更新名单
特殊情况处理
数据不完整:基于已有数据生成名单,说明"完整筛选需 XX 数据"
客户数量过多:按风险等级排序,优先呈现高风险客户,提供分页/筛选建议
风险类型复杂:如客户同时存在多类风险,综合评估后确定主要风险类型
敏感客户处理:如 VIP 客户、机构客户,提示"建议由资深投顾/专人跟进"
语言要求
- 先给结论,再给支撑数据
- 风险等级判断要有依据
- 明确区分:事实数据 vs 风险判断 vs 处置建议
- 关键数字、阈值、风险等级单独指出
- 处置建议要具体、可执行、可追踪
Reference
监管要求:
- 《证券公司客户风险控制指引》
- 《证券公司投资者适当性管理办法》
- 《证券公司融资融券业务管理办法》
行业标准:
- 两融预警线:150%
- 两融平仓线:130%
- 持仓集中度警戒线:30%-50%
内部制度:
- 客户风险分级管理制度
- 重点客户跟进流程
- 风险客户处置预案
Scripts
Python 风险客户筛选示例:
import pandas as pd
import numpy as np
def calc_risk_score(client_data):
"""
计算客户风险评分
参数:
client_data: 客户风险数据 DataFrame
返回:
风险评分 Series
"""
def margin_risk(row):
if row.get('maintenance_ratio', 200) < 150:
return min(100, (150 - row['maintenance_ratio']) / 50 * 100)
return 0
def position_risk(row):
concentration = row.get('max_position_ratio', 0)
return min(100, (concentration - 20) / 40 * 100) if concentration > 20 else 0
def trade_risk(row):
abnormal_count = row.get('abnormal_trade_count', 0)
return min(100, abnormal_count / 10 * )
client_data[] = client_data.apply(margin_risk, axis=)
client_data[] = client_data.apply(position_risk, axis=)
client_data[] = client_data.apply(trade_risk, axis=)
client_data[] = (
client_data[] * +
client_data[] * +
client_data[] * +
client_data.get(, ) / * *
)
client_data[]
():
client_data[] = calc_risk_score(client_data)
():
score >= :
score >= :
score >= :
:
client_data[] = client_data[].apply(get_risk_level)
key_clients = client_data[client_data[] >= threshold].copy()
key_clients = key_clients.sort_values(, ascending=)
key_clients
__name__ == :
data = {
: [, , ],
: [, , ],
: [, , ],
: [, , ],
: [, , ]
}
df = pd.DataFrame(data)
key_clients = filter_key_risk_clients(df)
(key_clients[[, , ]])
SQL 查询示例:
SELECT
c.client_id,
c.client_name,
c.client_type,
m.maintenance_ratio,
h.max_position_ratio,
t.abnormal_trade_count,
w.warning_count,
CASE
WHEN m.maintenance_ratio < 130 THEN '平仓风险'
WHEN m.maintenance_ratio < 150 THEN '预警风险'
WHEN h.max_position_ratio > 40 THEN '持仓集中'
WHEN t.abnormal_trade_count > 5 THEN '交易异常'
ELSE '其他风险'
END as risk_type,
CASE
WHEN m.maintenance_ratio < 130 OR h.max_position_ratio > 50 THEN '高'
WHEN m.maintenance_ratio < 150 OR h.max_position_ratio > 40 THEN '中'
ELSE '低'
END as risk_level
FROM client_info c
LEFT JOIN margin_risk m ON c.client_id m.client_id m.trade_date
(
client_id, (position_ratio) max_position_ratio
holdings_risk
trade_date
client_id
) h c.client_id h.client_id
(
client_id, () abnormal_trade_count
abnormal_trade
trade_date DATE_SUB(, )
client_id
) t c.client_id t.client_id
(
client_id, () warning_count
risk_warning
trade_date DATE_SUB(, )
client_id
) w c.client_id w.client_id
m.maintenance_ratio
h.max_position_ratio
t.abnormal_trade_count
m.maintenance_ratio
m.maintenance_ratio
h.max_position_ratio
;