skills/trading-behavior-clustering/SKILL.md
交易行为聚类助手,适用于券商客户分析、行为研究、精准营销、风险识别等场景。 以下情况请主动触发此技能: - 用户提供了客户交易数据,问"客户可以分为几类""帮我分析一下交易行为" - 用户问"交易行为怎么聚类""客户分群怎么做" - 用户需要:交易行为聚类分析、客户分群、群体特征描述 - 用户提到:行为聚类、客户分群、交易模式、群体特征、用户画像 - 用户需要形成聚类报告、分群结果、营销策略 不要等用户明确说"交易行为聚类"——只要涉及客户交易行为分析、群体特征识别、客户分群,就应主动启动此技能。
npx skillsauth add aifinlab/finclaw trading-behavior-clusteringInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
你的核心职责:基于客户交易数据进行聚类分析,识别不同交易行为群体,形成清晰的客户分群和特征描述,支持精准营销和风险管理。
收到用户请求后,先做两个判断:
判断 1:是否有交易数据?
判断 2:用户需要哪种深度?
| 用户意图 | 适用模板 | |---------|---------| | "分为几类""快速分群" | 模板 A:快速分群 | | "详细分析""聚类报告" | 模板 B:标准报告 | | "营销策略""应用建议" | 模板 C:应用版 | | 未明确说明 | 默认模板 A,再提供"需要详细报告可继续" |
客户基本信息:
交易行为指标:
投资偏好指标:
时间特征指标:
1. 交易活跃度
2. 交易风格
3. 风险偏好
4. 投资能力
5. 时间偏好
1. K-Means 聚类
2. 层次聚类
3. DBSCAN 聚类
4. 高斯混合模型 (GMM)
| 群体名称 | 特征描述 | 占比 | 营销建议 | |---------|---------|------|---------| | 高频交易者 | 交易频繁、持仓短、换手率高 | 10-15% | 低佣金、快速通道 | | 价值投资者 | 持仓长、交易少、注重基本面 | 20-25% | 研报服务、长线产品 | | 趋势跟踪者 | 追涨杀跌、技术交易、中等持仓 | 15-20% | 技术分析工具、止盈止损 | | 稳健配置者 | 分散持仓、低风险、固定收益 | 20-25% | 理财产品、资产配置 | | 新手投资者 | 交易少、金额小、学习需求高 | 15-20% | 投教内容、模拟交易 | | 高风险偏好者 | 重仓单一、高波动、两融活跃 | 5-10% | 风险提示、风控工具 |
适用:"分为几类""快速分群"
**交易行为聚类分析** | YYYY-MM-DD
**样本数量**:XX 个客户
**聚类数量**:X 类
**群体分布**:
| 群体 | 名称 | 客户数 | 占比 | 核心特征 |
|-----|------|-------|------|---------|
| 1 | 高频交易者 | XX | XX% | 交易频繁、持仓短 |
| 2 | 价值投资者 | XX | XX% | 持仓长、交易少 |
| 3 | 稳健配置者 | XX | XX% | 分散持仓、低风险 |
**建议关注**:群体 1(高贡献)、群体 6(高风险)
适用:"详细分析""聚类报告"
**交易行为聚类分析报告** | YYYY-MM-DD
## 一、分析概览
**分析样本**:XX 个客户
**特征维度**:X 个
**聚类算法**:XXX
**聚类数量**:X 类
## 二、群体特征
**群体 1:高频交易者**
- 客户数量:XX 个(XX%)
- 资产规模:XX 万(平均)
- 核心特征:
- 月均交易笔数:XX 笔
- 平均持仓周期:X 天
- 换手率:XX%
- 盈亏情况:胜率 XX%,平均盈利 X%
- 风险特征:持仓波动率 XX%
**群体 2:价值投资者**
- 客户数量:XX 个(XX%)
- ...
## 三、群体对比
| 特征 | 群体 1 | 群体 2 | 群体 3 | ... |
|-----|-------|-------|-------|-----|
| 交易频率 | XX | XX | XX | ... |
| 持仓周期 | XX | XX | XX | ... |
| 风险偏好 | XX | XX | XX | ... |
| 盈亏比例 | XX | XX | XX | ... |
## 四、群体价值
**贡献度分析**:
- 群体 1:贡献佣金 XX%,人均 XX 元
- 群体 2:贡献佣金 XX%,人均 XX 元
**风险暴露**:
- 群体 1:异常交易 XX 次,风险较高
- 群体 2:异常交易 XX 次,风险较低
## 五、聚类质量
**轮廓系数**:XX(越接近 1 越好)
**簇内距离**:XX(越小越好)
**簇间距离**:XX(越大越好)
适用:"营销策略""应用建议"
**交易行为聚类应用方案** | YYYY-MM-DD
**核心结论**:识别 X 类客户群体,差异化策略建议如下
**群体策略矩阵**:
| 群体 | 名称 | 规模 | 价值 | 风险 | 核心策略 |
|-----|------|------|------|------|---------|
| 1 | 高频交易者 | XX | 高 | 中 | 保留 + 提效 |
| 2 | 价值投资者 | XX | 中 | 低 | 深耕 + 转化 |
| 3 | 稳健配置者 | XX | 中 | 低 | 维护 + 交叉 |
**分群营销策略**:
**群体 1(高频交易者)**:
- 产品推荐:低佣金套餐、快速交易通道
- 服务内容:实时行情、量化工具
- 触达方式:APP 推送、交易提醒
- 话术要点:"降低交易成本"、"提升交易效率"
**群体 2(价值投资者)**:
- 产品推荐:研报服务、长线理财产品
- 服务内容:深度研究、投资顾问
- 触达方式:邮件、一对一沟通
- 话术要点:"长期价值"、"稳健收益"
**风控应用建议**:
| 群体 | 风险类型 | 监控重点 | 预警阈值 |
|-----|---------|---------|---------|
| 1 | 异常交易 | 高频撤单、对倒 | 撤单率>50% |
| 6 | 过度风险 | 持仓集中、高杠杆 | 集中度>40% |
数据稀疏:如部分客户交易数据较少,说明"建议补充更多特征或单独处理低频客户"
群体重叠:如群体间特征重叠明显,说明"建议调整特征权重或增加聚类数量"
异常值影响:如存在极端交易客户,说明"建议先剔除异常值或采用鲁棒聚类算法"
动态变化:如客户行为随时间变化,说明"建议定期重新聚类,跟踪群体迁移"
聚类算法:
特征工程:
行业应用:
Python 交易行为聚类示例:
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score
def prepare_features(trade_data, client_data):
"""
准备聚类特征
参数:
trade_data: 交易数据 DataFrame
client_data: 客户信息 DataFrame
返回:
特征 DataFrame
"""
# 聚合交易指标
features = trade_data.groupby('client_id').agg({
'trade_id': 'count', # 交易笔数
'amount': ['sum', 'mean'], # 交易金额
'hold_days': 'mean', # 持仓周期
'turnover_rate': 'mean', # 换手率
'pnl_ratio': 'mean', # 盈亏比例
}).reset_index()
# 扁平化列名
features.columns = ['client_id', 'trade_count', 'total_amount', 'avg_amount',
'avg_hold_days', 'avg_turnover', 'avg_pnl']
# 合并客户信息
features = features.merge(client_data[['client_id', 'asset_scale', 'risk_level']],
on='client_id', how='left')
return features
def cluster_trading_behavior(features, n_clusters=6):
"""
交易行为聚类
参数:
features: 特征 DataFrame
n_clusters: 聚类数量
返回:
聚类结果 DataFrame
"""
# 选择聚类特征
cluster_cols = ['trade_count', 'avg_amount', 'avg_hold_days',
'avg_turnover', 'avg_pnl', 'asset_scale']
# 数据标准化
scaler = StandardScaler()
X = scaler.fit_transform(features[cluster_cols].fillna(0))
# K-Means 聚类
kmeans = KMeans(n_clusters=n_clusters, random_state=42, n_init=10)
features['cluster'] = kmeans.fit_predict(X)
# 计算轮廓系数
silhouette = silhouette_score(X, features['cluster'])
return features, silhouette
def analyze_cluster_features(features, cluster_cols):
"""
分析群体特征
参数:
features: 聚类结果 DataFrame
cluster_cols: 特征列
返回:
群体特征 DataFrame
"""
cluster_summary = features.groupby('cluster')[cluster_cols].agg(['mean', 'median', 'std'])
cluster_summary['count'] = features.groupby('cluster').size()
cluster_summary['ratio'] = cluster_summary['count'] / len(features) * 100
return cluster_summary
def name_clusters(cluster_summary):
"""
根据特征为群体命名
参数:
cluster_summary: 群体特征 DataFrame
返回:
群体命名字典
"""
names = {}
for cluster_id in cluster_summary.index:
row = cluster_summary.loc[cluster_id]
# 简单命名规则(实际应更复杂)
if row[('trade_count', 'mean')] > row[('trade_count', 'mean')].mean() * 1.5:
names[cluster_id] = '高频交易者'
elif row[('avg_hold_days', 'mean')] > row[('avg_hold_days', 'mean')].mean() * 1.5:
names[cluster_id] = '价值投资者'
elif row[('avg_turnover', 'mean')] < row[('avg_turnover', 'mean')].mean() * 0.5:
names[cluster_id] = '稳健配置者'
else:
names[cluster_id] = f'群体{cluster_id + 1}'
return names
# 使用示例
if __name__ == '__main__':
# 假设数据
np.random.seed(42)
n_clients = 1000
data = {
'client_id': range(n_clients),
'trade_count': np.random.poisson(20, n_clients),
'avg_amount': np.random.exponential(100000, n_clients),
'avg_hold_days': np.random.exponential(10, n_clients),
'avg_turnover': np.random.beta(2, 5, n_clients),
'avg_pnl': np.random.normal(0.05, 0.2, n_clients),
'asset_scale': np.random.lognormal(13, 1, n_clients)
}
features = pd.DataFrame(data)
# 聚类
result, silhouette = cluster_trading_behavior(features, n_clusters=6)
print(f"轮廓系数:{silhouette:.3f}")
# 分析群体特征
cluster_cols = ['trade_count', 'avg_amount', 'avg_hold_days', 'avg_turnover', 'avg_pnl']
summary = analyze_cluster_features(result, cluster_cols)
print(summary)
SQL 查询示例:
-- 准备聚类特征数据
SELECT
t.client_id,
COUNT(*) as trade_count,
SUM(t.amount) as total_amount,
AVG(t.amount) as avg_amount,
AVG(t.hold_days) as avg_hold_days,
AVG(t.turnover_rate) as avg_turnover,
AVG(t.pnl_ratio) as avg_pnl,
c.asset_scale,
c.risk_level
FROM trade_detail t
JOIN client_info c ON t.client_id = c.client_id
WHERE t.trade_date >= DATE_SUB(CURDATE(), INTERVAL 90 DAY)
GROUP BY t.client_id, c.asset_scale, c.risk_level
HAVING trade_count >= 5; -- 至少 5 笔交易
development
# trust-valuation-engine ## 描述 信托资产估值引擎,支持非标债权估值、股权估值、净值计算、减值测试。 ## 功能 - 非标债权估值(现金流折现法) - 股权估值(市场法/收益法/资产基础法) - 净值计算与发布 - 减值测试与拨备 - 估值模型管理 ## 许可证 MIT License
development
# trust-risk-manager ## 描述 信托风险全流程管理工具,覆盖信用风险、市场风险、流动性风险、操作风险四大维度,提供实时监控、预警提示和风险处置建议。 ## 功能 - 信用风险评估(融资主体、担保措施、偿债能力) - 市场风险监控(利率、汇率、商品价格敏感性) - 流动性风险分析(期限错配、赎回压力、变现能力) - 操作风险检查(流程合规、系统安全) - 风险预警指标(VaR、CVaR、压力测试) - 风险限额管理(集中度、久期、杠杆) - 风险报告生成 ## 使用场景 - 风控部门日常监控 - 投后管理风险排查 - 新产品风险评审 - 监管报送数据准备 - 风险预警处置 ## 输入输出 ### 输入 ```json { "portfolio_id": "", "risk_type": "all|credit|market|liquidity|operation", "assets": [ { "asset_id": "", "asset_type": "非标债权|股票|债券|基金", "exposu
development
# trust-product-analyzer ## 描述 信托产品综合分析与筛选工具,支持产品信息抓取、风险评级、收益测算、合规检查和竞品对比。 ## 功能 - 信托产品信息智能抓取与解析(支持用益信托网、中国信托登记等平台) - 多维度风险评估(信用风险、市场风险、流动性风险) - 预期收益与实际收益对比分析 - 合格投资者适当性匹配 - 产品竞品横向对比 - 自动生成尽调报告 ## 使用场景 - 理财师为客户筛选合适信托产品 - 投资经理进行竞品分析 - 风控部门审查产品合规性 - 研究人员追踪市场产品发行情况 ## 输入输出 ### 输入 ```json { "action": "analyze|compare|screen", "product_code": "", "product_name": "", "filters": { "min_yield": 6.5, "max_duration": 24, "risk_level": ["R2", "R3"], "trust_type": "集合信托", "i
development
# trust-post-investment-monitor ## 描述 信托投后监控工具,提供预警指标追踪、风险事件监测、处置建议生成、定期报告输出。 ## 功能 - 融资主体监控(经营/财务/舆情) - 担保物监控(价值/权属/流动性) - 预警阈值管理 - 风险事件响应 - 处置方案建议 - 定期监控报告 ## 许可证 MIT License