client-risk-exposure-diagnosis

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

105 stars

Best use case

client-risk-exposure-diagnosis is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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

Teams using client-risk-exposure-diagnosis should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/client-risk-exposure-diagnosis/SKILL.md --create-dirs "https://raw.githubusercontent.com/aifinlab/FinClaw/main/skills/client-risk-exposure-diagnosis/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/client-risk-exposure-diagnosis/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How client-risk-exposure-diagnosis Compares

Feature / Agentclient-risk-exposure-diagnosisStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 客户风险暴露诊断助手

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

---

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

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

**判断 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;
```

Related Skills

trust-risk-manager

105
from aifinlab/FinClaw

## 描述

futures-risk-analyzer

105
from aifinlab/FinClaw

期货风险分析工具。计算期货品种波动率、最大回撤、VaR等风险指标。分析价格跳空、涨跌停风险、流动性风险。使用AkShare期货历史数据。适用于风险管理、仓位控制、止损设置。

fund-risk-analyzer

105
from aifinlab/FinClaw

基金风险分析器 - 专业基金风险识别与量化分析工具。 当用户需要分析基金风险、计算VaR、评估最大回撤、分析波动率、计算风险指标时使用此技能。 支持VaR/CVaR、最大回撤、夏普比率、Beta系数、下行风险等多种风险指标计算。 触发关键词:基金风险、风险分析、VaR计算、最大回撤、波动率、夏普比率、Beta系数、风险评估。

bank-risk-analyzer

105
from aifinlab/FinClaw

银行风险分析工具。分析银行资产质量、信用风险、操作风险等关键风险指标。包括不良贷款率、关注类贷款率、拨备覆盖率、逾期贷款率、单一客户集中度等。使用AkShare、Tushare、央行统计数据。适用于银行风控研究、投资决策、监管合规分析。

client-churn-warning

105
from aifinlab/FinClaw

客户流失预警助手,专用于识别客户流失风险和制定挽留方案。 以下情况请主动触发此技能: - 用户需要识别客户流失风险 - 用户问"这个客户会不会流失""怎么判断流失风险" - 用户准备流失预警方案、挽留话术 - 用户需要流失原因分析、挽留策略 - 用户问"客户要转走了怎么办""怎么挽留客户" 输出含流失风险识别、原因分析、挽留方案的流失预警方案。 不要等用户明确说"流失预警"——只要涉及客户流失风险识别、挽留方案,就应主动启动此技能。

wealth-succession-risk-alert

105
from aifinlab/FinClaw

用于信托领域财富与家族信托中的财富传承风险提示助手场景,支持结构化处理与报告输出。

tumor-history-risk-review-assistant

105
from aifinlab/FinClaw

当用户需要对与肿瘤相关的既往病史资料进行专业、结构化的审查,提取肿瘤类型、病理结果、分期分级、治疗经过、手术情况、放化疗或靶向治疗、复发转移风险、随访状态及其他与保险核保相关的重要健康信息,并生成适合核保审查、风险分层和资料流转的结构化分析结果时使用本 skill。

risk-weekly-report

105
from aifinlab/FinClaw

用于信托领域存续期管理中的风险周报助手场景。支持结构化输入处理、规则分析与Markdown结果输出。

risk-daily-report

105
from aifinlab/FinClaw

用于信托领域存续期管理中的风险日报助手场景。支持结构化输入处理、规则分析与Markdown结果输出。

smoking-alcohol-risk-identification-assistant

105
from aifinlab/FinClaw

当用户需要对投保资料中的吸烟、饮酒相关信息进行专业、结构化的识别与审查,提取吸烟饮酒习惯、持续时间、频率、剂量、戒断情况、一致性问题及相关健康风险线索,并生成适合保险核保、补问流转和资料审查的结构化分析结果时使用本 skill。

silent-client-awakening

105
from aifinlab/FinClaw

沉默客户唤醒助手,专用于长期未互动客户的唤醒激活。 以下情况请主动触发此技能: - 用户需要唤醒长期未互动的沉默客户 - 用户问"这个客户很久没联系了怎么重新联系" - 用户准备沉默客户唤醒话术、激活方案 - 用户需要沉默客户分析、唤醒策略设计 - 用户问"客户不回消息怎么办""怎么重新建立联系" 输出含沉默分析、唤醒话术、激活方案的沉默客户唤醒方案。 不要等用户明确说"沉默客户唤醒"——只要涉及长期未互动客户的重新联系、激活唤醒,就应主动启动此技能。

risk-workflow-assistant

105
from aifinlab/FinClaw

风控工单流转助手,适用于券商风控运营、合规管理、事件处置、流程跟踪等场景。 以下情况请主动触发此技能: - 用户提供了工单数据,问"工单进展如何""帮我跟踪一下" - 用户问"工单怎么流转""处置流程是什么""谁负责处理" - 用户需要:工单状态跟踪、流转分析、处置建议 - 用户提到:工单、流转、处置、跟进、风控事件、合规工单 - 用户需要形成工单报告、流转分析、处置总结 不要等用户明确说"工单流转"——只要涉及风控工单跟踪、事件处置流程、工单状态管理,就应主动启动此技能。