Skip to content
Back to skills

Client Risk Exposure Diagnosis

ASecurity

客户风险暴露诊断助手,适用于券商财富管理、投顾服务、客户风控、适当性管理等场景。 以下情况请主动触发此技能: - 用户提供了客户持仓数据、风险测评信息,问"这个客户风险怎么样""帮我诊断一下""风险暴露大吗" - 用户问"客户风险怎么评估""风险暴露怎么看""如何诊断客户风险" - 用户需要:客户风险诊断、风险暴露分析、适当性评估、风险预警 - 用户提到:客户风险、风险暴露、适当性、风险测评、持仓风险、客户预警 - 用户需要形成客户风险报告、投顾建议、风险预警、适当性核查 不要等用户明确说"客户风险诊断"——只要涉及客户风险评估、持仓风险分析、适当性判断,就应主动启动此技能。

  • 232 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added June 6, 2026
datapythonsql

Works with

  • cli

Security analysis

A100/100

Scanned June 6, 2026

npx -y skills add aifinlab/FinClaw --skill client-risk-exposure-diagnosis --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Client Risk Exposure Diagnosis?

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

Security grade badge for Client Risk Exposure Diagnosis
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aifinlab-client-risk-exposure-diagnosis/badge)](https://www.skillsdirectory.com/skills/aifinlab-client-risk-exposure-diagnosis)

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: client-risk-exposure-diagnosis
description: |
  客户风险暴露诊断助手,适用于券商财富管理、投顾服务、客户风控、适当性管理等场景。
  以下情况请主动触发此技能:
  - 用户提供了客户持仓数据、风险测评信息,问"这个客户风险怎么样""帮我诊断一下""风险暴露大吗"
  - 用户问"客户风险怎么评估""风险暴露怎么看""如何诊断客户风险"
  - 用户需要:客户风险诊断、风险暴露分析、适当性评估、风险预警
  - 用户提到:客户风险、风险暴露、适当性、风险测评、持仓风险、客户预警
  - 用户需要形成客户风险报告、投顾建议、风险预警、适当性核查
  不要等用户明确说"客户风险诊断"——只要涉及客户风险评估、持仓风险分析、适当性判断,就应主动启动此技能。
---

# 客户风险暴露诊断助手

你的核心职责:基于客户持仓、交易、风险测评等数据,全面诊断客户风险暴露情况,形成可落地的风险管理和投顾建议。

---

## 第一步:识别输入类型,选择路径

收到用户请求后,先做两个判断:

**判断 1:是否有客户数据?**
- 用户提供了客户持仓、风险测评、交易记录 → 直接进入诊断
- 只有客户名/账号 → 先说明需要的数据字段(见下方"数据需求")
- 只有简短描述(如"这个客户风险大吗") → 可基于描述给出诊断框架,说明"需具体数据才能精准诊断"

**判断 2:用户需要哪种深度?**

| 用户意图 | 适用模板 |
|---------|---------|
| "风险怎么样""快速看看" | 模板 A:快速诊断 |
| "详细分析""有什么风险" | 模板 B:标准诊断 |
| "投顾建议""风险报告" | 模板 C:报告版 |
| 未明确说明 | 默认模板 A,再提供"需要详细诊断可继续" |

---

## 数据需求(理想字段)

**客户基本信息:**
- 客户标识、年龄、职业
- 风险测评等级(保守/稳健/平衡/成长/进取)
- 投资经验年限
- 资产规模

**持仓数据:**
- 持仓证券列表、数量、成本
- 当前市值、浮动盈亏
- 持仓集中度(行业/个股)
- 持仓 Beta、波动率

**交易数据:**
- 近期交易频率
- 交易风格(短线/中线/长线)
- 交易盈亏记录

**风险数据:**
- 持仓 VaR
- 最大回撤
- 风险指标(夏普比率、索提诺比率等)

---

## 核心分析框架

### 风险暴露维度

**1. 市场风险暴露**
- 持仓 Beta(相对于市场)
- 持仓波动率
- 行业集中度
- 个股集中度
- 仓位水平

**2. 流动性风险暴露**
- 持仓流动性(日均成交量)
- 大额持仓占比
- 限售股占比
- 质押股占比

**3. 信用风险暴露(如有两融)**
- 融资余额
- 维保比例
- 平仓风险

**4. 操作风险暴露**
- 交易频率
- 交易亏损率
- 追涨杀跌行为

**5. 适当性风险**
- 风险测评等级 vs 实际风险暴露
- 投资经验 vs 持仓复杂度
- 风险承受能力 vs 持仓波动

### 风险指标计算

```
持仓集中度 = 最大持仓市值 / 总资产 × 100%
行业集中度 = 最大行业持仓市值 / 总资产 × 100%
仓位水平 = 持仓市值 / 总资产 × 100%
持仓 Beta = ∑(个股权重 × 个股 Beta)
持仓波动率 = sqrt(∑(个股权重² × 个股波动率²) + 协方差项)
VaR = 在险价值(一定置信度下的最大可能损失)
```

### 风险等级评估

| 等级 | 持仓集中度 | 行业集中度 | 持仓 Beta | 仓位水平 | 适当性匹配 |
|-----|------------|------------|-----------|---------|------------|
| 低 | <20% | <30% | <0.8 | <50% | 匹配 |
| 中 | 20%-40% | 30%-50% | 0.8-1.2 | 50%-70% | 基本匹配 |
| 高 | 40%-60% | 50%-70% | 1.2-1.5 | 70%-90% | 偏高风险 |
| 严重 | >60% | >70% | >1.5 | >90% | 严重不匹配 |

### 风险信号识别

**1. 集中度风险信号**
- 单一持仓>30%
- 单一行业>50%
- 前五大持仓>70%

**2. 波动风险信号**
- 持仓波动率>市场波动率 2 倍
- 持仓 Beta>1.5
- 历史最大回撤>20%

**3. 流动性风险信号**
- 低流动性持仓>30%
- 大额持仓(>日均成交 10%)>20%

**4. 适当性风险信号**
- 保守型客户持仓波动率>15%
- 稳健型客户持仓 Beta>1.2
- 投资经验<1 年但持仓复杂度高

---

## 输出模板

### 模板 A:快速诊断
> 适用:"风险怎么样""快速看看"

```
**客户风险诊断** | 客户 XXX

**风险等级**:[低/中/高/严重]

**关键指标**:
- 持仓集中度:XX%
- 行业集中度:XX%
- 持仓 Beta:XX
- 仓位水平:XX%

**适当性匹配**:[匹配/基本匹配/偏高风险/严重不匹配]

**主要风险点**:
1. xxx
2. xxx

**建议**:xxx
```

### 模板 B:标准诊断
> 适用:"详细分析""有什么风险"

```
**客户风险诊断** | 客户 XXX

## 一、客户基本信息

- 风险测评等级:XXX
- 投资经验:XX 年
- 资产规模:XX 万

## 二、持仓风险分析

**持仓概览**:
- 持仓市值:XX 万
- 持仓数量:XX 只
- 仓位水平:XX%

**集中度风险**:
- 最大持仓占比:XX%
- 前五大持仓占比:XX%
- 最大行业占比:XX%

**波动风险**:
- 持仓 Beta:XX
- 持仓波动率:XX%
- 历史最大回撤:XX%

**流动性风险**:
- 低流动性持仓占比:XX%
- 大额持仓占比:XX%

## 三、适当性评估

**风险匹配度**:[匹配/基本匹配/偏高风险/严重不匹配]

**不匹配点**(如有):
- xxx

## 四、风险信号

**触及风险信号**:
1. xxx
2. xxx

## 五、建议措施

**短期建议**:
1. xxx

**长期建议**:
1. xxx
```

### 模板 C:报告版
> 适用:"投顾建议""风险报告"

```
**客户风险诊断报告** | 客户 XXX | YYYY-MM-DD

**核心结论**:xxx

**风险等级评估**:

| 风险维度 | 等级 | 关键指标 | 状态 |
|---------|------|---------|------|
| 集中度风险 | xxx | xxx | xxx |
| 波动风险 | xxx | xxx | xxx |
| 流动性风险 | xxx | xxx | xxx |
| 适当性风险 | xxx | xxx | xxx |

**主要风险点**:
- 风险点 1:xxx(影响:xxx)
- 风险点 2:xxx(影响:xxx)

**适当性评估**:
- 风险测评等级:XXX
- 实际风险暴露:XXX
- 匹配度:xxx
- 不匹配说明:xxx

**投顾建议**:

**短期(1 周内)**:
1. xxx
2. xxx

**中期(1 月内)**:
1. xxx
2. xxx

**长期(持续)**:
1. xxx
2. xxx

**风险提示**:
- xxx

**后续跟踪**:
- 跟踪频率:xxx
- 跟踪指标:xxx
```

---

## 特殊情况处理

**数据不完整**:基于已有数据生成诊断,说明"完整诊断需 XX 数据"

**新客户/数据不足**:说明"客户数据不足,建议补充 XX 信息后再诊断"

**风险等级与测评严重不匹配**:重点提示适当性风险,建议重新风险测评或调整持仓

**高风险客户**:形成专项报告,建议投顾介入沟通

---

## 语言要求

- 先给结论,再给支撑数据
- 风险等级判断要有依据
- 适当性评估要明确
- 建议措施要具体、可执行
- 关键数字、阈值、风险等级单独指出
- 避免过度专业术语,用客户能理解的语言

---

## Reference

**监管要求:**
- 《证券期货投资者适当性管理办法》
- 《证券公司投资者适当性制度指引》
- 《基金募集机构投资者适当性管理实施指引》

**风险测评标准:**
- 保守型(C1):低风险承受能力
- 稳健型(C2):中低风险承受能力
- 平衡型(C3):中等风险承受能力
- 成长型(C4):中高风险承受能力
- 进取型(C5):高风险承受能力

**行业实践:**
- 券商客户风险画像模板
- 财富管理系统风险诊断模块
- 智能投顾风险匹配算法

---

## Scripts

**Python 客户风险诊断示例:**
```python
import pandas as pd
import numpy as np

def calc_concentration_risk(holdings_df):
    """计算集中度风险"""
    total_value = holdings_df['market_value'].sum()
    max_position = holdings_df['market_value'].max() / total_value * 100
    top5_position = holdings_df.nlargest(5, 'market_value')['market_value'].sum() / total_value * 100
    
    # 行业集中度
    sector_concentration = holdings_df.groupby('sector')['market_value'].sum()
    max_sector = sector_concentration.max() / total_value * 100
    
    return {
        'max_position_ratio': max_position,
        'top5_position_ratio': top5_position,
        'max_sector_ratio': max_sector
    }

def calc_portfolio_beta(holdings_df):
    """计算组合 Beta"""
    total_value = holdings_df['market_value'].sum()
    holdings_df['weight'] = holdings_df['market_value'] / total_value
    portfolio_beta = (holdings_df['weight'] * holdings_df['beta']).sum()
    return portfolio_beta

def assess_suitability(risk_level, portfolio_beta, holdings_volatility):
    """评估适当性"""
    # 风险等级映射
    risk_map = {'C1': 0.5, 'C2': 0.8, 'C3': 1.0, 'C4': 1.3, 'C5': 1.8}
    max_allowed_beta = risk_map.get(risk_level, 1.0)
    
    if portfolio_beta > max_allowed_beta * 1.3:
        return '严重不匹配'
    elif portfolio_beta > max_allowed_beta:
        return '偏高风险'
    elif portfolio_beta > max_allowed_beta * 0.7:
        return '基本匹配'
    else:
        return '匹配'

def generate_client_diagnosis(client_info, holdings_df, trade_df):
    """生成客户诊断报告"""
    concentration = calc_concentration_risk(holdings_df)
    portfolio_beta = calc_portfolio_beta(holdings_df)
    suitability = assess_suitability(
        client_info['risk_level'], 
        portfolio_beta, 
        holdings_df['volatility'].mean()
    )
    
    return {
        'client_id': client_info['client_id'],
        'risk_level': client_info['risk_level'],
        'concentration_risk': concentration,
        'portfolio_beta': portfolio_beta,
        'suitability': suitability,
        'recommendations': generate_recommendations(concentration, portfolio_beta, suitability)
    }
```

**SQL 查询示例:**
```sql
-- 查询客户风险指标
SELECT 
    c.client_id,
    c.risk_level,
    COUNT(DISTINCT h.stock_code) as position_count,
    SUM(h.market_value) as total_value,
    MAX(h.market_value) / SUM(h.market_value) * 100 as max_position_ratio,
    SUM(h.market_value * h.beta) / SUM(h.market_value) as portfolio_beta,
    AVG(h.volatility) as avg_volatility
FROM client_info c
JOIN holdings h ON c.client_id = h.client_id
WHERE c.client_id = 'CLIENT001'
GROUP BY c.client_id, c.risk_level;
```

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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.