Skip to content
Back to skills

Key Risk Client List

ASecurity

重点风险客户名单助手,适用于券商客户风控、财富管理、投顾服务、合规监控等场景。 以下情况请主动触发此技能: - 用户提供了客户风险数据,问"哪些客户风险高""帮我列个名单" - 用户问"重点风险客户怎么筛选""风险客户标准是什么" - 用户需要:重点风险客户筛选、风险等级排序、跟进建议 - 用户提到:风险客户、重点关注、高风险、预警客户、平仓风险 - 用户需要形成风险客户名单、跟进计划、风控报告 不要等用户明确说"重点风险客户"——只要涉及客户风险筛选、高风险客户识别、风险名单整理,就应主动启动此技能。

  • 232 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 7, 2026
datapythonsql

Works with

  • cli

Security analysis

A100/100

Scanned September 7, 2026

npx -y skills add aifinlab/FinClaw --skill key-risk-client-list --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Key Risk Client List?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Key Risk Client List
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aifinlab-key-risk-client-list/badge)](https://www.skillsdirectory.com/skills/aifinlab-key-risk-client-list)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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 风险客户筛选示例:**
```python
import pandas as pd
import numpy as np

def calc_risk_score(client_data):
    """
    计算客户风险评分
    
    参数:
        client_data: 客户风险数据 DataFrame
    
    返回:
        风险评分 Series
    """
    # 两融风险(0-100 分)
    def margin_risk(row):
        if row.get('maintenance_ratio', 200) < 150:
            return min(100, (150 - row['maintenance_ratio']) / 50 * 100)
        return 0
    
    # 持仓风险(0-100 分)
    def position_risk(row):
        concentration = row.get('max_position_ratio', 0)
        return min(100, (concentration - 20) / 40 * 100) if concentration > 20 else 0
    
    # 交易风险(0-100 分)
    def trade_risk(row):
        abnormal_count = row.get('abnormal_trade_count', 0)
        return min(100, abnormal_count / 10 * 100)
    
    # 计算各维度风险
    client_data['margin_risk'] = client_data.apply(margin_risk, axis=1)
    client_data['position_risk'] = client_data.apply(position_risk, axis=1)
    client_data['trade_risk'] = client_data.apply(trade_risk, axis=1)
    
    # 综合风险评分
    client_data['risk_score'] = (
        client_data['margin_risk'] * 0.3 +
        client_data['position_risk'] * 0.3 +
        client_data['trade_risk'] * 0.2 +
        client_data.get('warning_count', 0) / 5 * 100 * 0.2
    )
    
    return client_data['risk_score']

def filter_key_risk_clients(client_data, threshold=60):
    """
    筛选重点风险客户
    
    参数:
        client_data: 客户风险数据 DataFrame
        threshold: 风险评分阈值
    
    返回:
        重点风险客户 DataFrame
    """
    client_data['risk_score'] = calc_risk_score(client_data)
    
    # 风险等级划分
    def get_risk_level(score):
        if score >= 80:
            return '高风险'
        elif score >= 60:
            return '中风险'
        elif score >= 40:
            return '低风险'
        else:
            return '关注'
    
    client_data['risk_level'] = client_data['risk_score'].apply(get_risk_level)
    
    # 筛选重点风险客户
    key_clients = client_data[client_data['risk_score'] >= threshold].copy()
    key_clients = key_clients.sort_values('risk_score', ascending=False)
    
    return key_clients

# 使用示例
if __name__ == '__main__':
    # 假设数据
    data = {
        'client_id': ['C001', 'C002', 'C003'],
        'maintenance_ratio': [125, 145, 180],
        'max_position_ratio': [45, 35, 20],
        'abnormal_trade_count': [8, 3, 1],
        'warning_count': [5, 2, 0]
    }
    df = pd.DataFrame(data)
    
    key_clients = filter_key_risk_clients(df)
    print(key_clients[['client_id', 'risk_score', 'risk_level']])
```

**SQL 查询示例:**
```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 AND m.trade_date = '2026-03-16'
LEFT JOIN (
    SELECT client_id, MAX(position_ratio) as max_position_ratio
    FROM holdings_risk
    WHERE trade_date = '2026-03-16'
    GROUP BY client_id
) h ON c.client_id = h.client_id
LEFT JOIN (
    SELECT client_id, COUNT(*) as abnormal_trade_count
    FROM abnormal_trade
    WHERE trade_date >= DATE_SUB('2026-03-16', INTERVAL 30 DAY)
    GROUP BY client_id
) t ON c.client_id = t.client_id
LEFT JOIN (
    SELECT client_id, COUNT(*) as warning_count
    FROM risk_warning
    WHERE trade_date >= DATE_SUB('2026-03-16', INTERVAL 30 DAY)
    GROUP BY client_id
) w ON c.client_id = w.client_id
WHERE m.maintenance_ratio < 150 
   OR h.max_position_ratio > 30 
   OR t.abnormal_trade_count > 3
ORDER BY 
    CASE 
        WHEN m.maintenance_ratio < 130 THEN 1
        WHEN m.maintenance_ratio < 150 THEN 2
        WHEN h.max_position_ratio > 40 THEN 3
        ELSE 4
    END;
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…