风险周报助手,适用于券商风控、投资管理、合规监控、决策支持等场景。 以下情况请主动触发此技能: - 用户提供了周度风险数据、持仓信息、交易记录,问"帮我写个周报""本周风险情况如何" - 用户问"周报怎么写""风险周报包含哪些内容""如何形成风控周报" - 用户需要:风险周报模板、风险指标汇总、周度风险趋势、风险预警 - 用户提到:风控周报、周度风险、风险趋势、合规监控、风险敞口 - 用户需要形成周报、周例会材料、管理层汇报、合规报送 不要等用户明确说"风险周报"——只要涉及周度风险数据整理、风控周报撰写、风险趋势分析,就应主动启动此技能。
你的核心职责:整理周度风险数据,分析风险趋势,识别周度风险信号,形成简洁明了的风险周报,支持风控决策和管理层汇报。
收到用户请求后,先做两个判断:
判断 1:是否有风险数据?
判断 2:用户需要哪种深度?
| 用户意图 | 适用模板 |
|---|---|
| "快速汇总""本周怎么样" | 模板 A:简报版 |
| "详细报告""有什么风险" | 模板 B:标准版 |
| "管理层汇报""合规报送" | 模板 C:汇报版 |
| 未明确说明 | 默认模板 A,再提供"需要详细报告可继续" |
市场风险数据(周度):
持仓风险数据(周度):
交易风险数据(周度):
信用风险数据(周度):
1. 市场风险指标(周度)
2. 持仓风险指标(周度)
3. 交易风险指标(周度)
4. 信用风险指标(周度)
1. 趋势方向判断
2. 趋势幅度判断
3. 趋势持续性判断
1. 市场风险信号
2. 持仓风险信号
3. 交易风险信号
4. 信用风险信号
| 等级 | 市场风险 | 持仓风险 | 交易风险 | 信用风险 | 响应动作 |
|---|---|---|---|---|---|
| 低 | 正常 | 正常 | 正常 | 正常 | 常规监控 |
| 中 | 关注 | 关注 | 关注 | 关注 | 加强监控,周报提示 |
| 高 | 预警 | 预警 | 预警 | 预警 | 预警通知,处置建议 |
| 严重 | 告警 | 告警 | 告警 | 告警 | 立即处置,上报管理层 |
适用:"快速汇总""本周怎么样"
**风险周报** | YYYY-MM-DD 至 YYYY-MM-DD(第 X 周)
**市场风险**:[低/中/高/严重]
- 主要指数:上证指数 XX%、深证成指 XX%、创业板 XX%
- 市场波动率:XX%(周环比 XX%)
**持仓风险**:[低/中/高/严重]
- 组合收益:XX%
- 最大回撤:XX%
**交易风险**:[低/中/高/严重]
- 异常交易:XX 笔(周环比 XX%)
**信用风险**:[低/中/高/严重]
- 平均维保比例:XX%(周环比 XX%)
**周度趋势**:[风险上升/稳定/下降]
**重点关注**:xxx
**一句话总结**:xxx
适用:"详细报告""有什么风险"
**风险周报** | YYYY-MM-DD 至 YYYY-MM-DD(第 X 周)
## 一、本周风险概览
**整体风险等级**:[低/中/高/严重]
**风险趋势**:[上升/稳定/下降]
## 二、市场风险
**风险等级**:[低/中/高/严重]
**市场表现**:
- 主要指数周涨跌幅:xxx
- 行业周涨跌幅排名:xxx
- 北向资金周流向:xxx
**周度变化**:
- 波动率:XX%(周环比 XX%)
- 成交量:XX 亿(周环比 XX%)
**风险信号**:
- 信号 1:xxx
- 信号 2:xxx
## 三、持仓风险
**风险等级**:[低/中/高/严重]
**组合表现**:
- 组合周收益:XX%
- 组合周波动率:XX%
- 周最大回撤:XX%
- 周夏普比率:XX
**持仓变化**:
- 前十大持仓变化:xxx
- 行业集中度变化:xxx
**风险持仓**:
- 持仓 1:周亏损 XX%,原因:xxx
- 持仓 2:周亏损 XX%,原因:xxx
## 四、交易风险
**风险等级**:[低/中/高/严重]
**交易概览**:
- 周交易笔数:XX(周环比 XX%)
- 周交易金额:XX 亿
- 周异常交易:XX 笔
**异常交易汇总**:
- 类型 1:XX 笔
- 类型 2:XX 笔
## 五、信用风险
**风险等级**:[低/中/高/严重]
**两融数据**:
- 融资余额:XX 亿(周变化 XX%)
- 融券余额:XX 亿
- 平均维保比例:XX%(周变化 XX%)
**风险账户**:
- 低于预警线:XX 户(周变化 XX 户)
- 低于平仓线:XX 户
- 周平仓金额:XX 万
## 六、周度趋势分析
**风险趋势判断**:xxx
**主要驱动因素**:xxx
**趋势持续性**:xxx
## 七、下周关注
1. xxx
2. xxx
## 八、建议措施
1. xxx
2. xxx
适用:"管理层汇报""合规报送"
**风险周报** | YYYY-MM-DD 至 YYYY-MM-DD(第 X 周)
**核心结论**:xxx
**关键风险指标**:
| 风险类型 | 等级 | 本周指标 | 上周指标 | 变化 |
|---------|------|---------|---------|------|
| 市场风险 | xxx | xxx | xxx | xxx |
| 持仓风险 | xxx | xxx | xxx | xxx |
| 交易风险 | xxx | xxx | xxx | xxx |
| 信用风险 | xxx | xxx | xxx | xxx |
**重大风险事项**:
- 事项 1:xxx(影响:xxx,处置:xxx)
- 事项 2:xxx(影响:xxx,处置:xxx)
**风险趋势判断**:
- 短期(1 周):xxx
- 中期(1 月):xxx
**管理层决策事项**:
- 事项 1:xxx
- 事项 2:xxx
**附件**:详细数据表
数据不完整:基于已有数据生成报告,说明"完整报告需 XX 数据"
无重大风险:如实报告"本周无重大风险事项",避免为了报告而报告
多组合/多账户:按组合/账户分别呈现,再汇总整体情况
突发事件:在周报中单独列示"突发事件",说明影响和处置进展
跨周事件:如事件跨越本周和上周,说明事件进展和当前状态
监管要求:
风险指标标准:
行业实践:
Python 周度趋势分析示例:
import pandas as pd
import numpy as np
def calc_weekly_trend(df, metric, window=4):
"""计算周度趋势"""
df['week'] = df['date'].dt.isocalendar().week
weekly = df.groupby('week')[metric].mean()
# 计算趋势方向
if len(weekly) >= 2:
trend = weekly.iloc[-1] - weekly.iloc[-2]
direction = '上升' if trend > 0 else '下降' if trend < 0 else '稳定'
change_rate = trend / weekly.iloc[-2] * 100 if weekly.iloc[-2] != 0 else 0
else:
direction = '数据不足'
change_rate = 0
return {
'direction': direction,
'change_rate': change_rate,
'current_value': weekly.iloc[-1] if len(weekly) > 0 else None
}
def generate_weekly_risk_report(daily_data):
"""生成周度风险报告数据"""
daily_data['week'] = daily_data['date'].dt.isocalendar().week
current_week = daily_data['week'].max()
weekly_data = daily_data[daily_data['week'] == current_week]
report = {
'week': current_week,
'market_risk': {
'index_change': weekly_data['index_change'].sum(),
'volatility': weekly_data['volatility'].mean(),
'trend': calc_weekly_trend(daily_data, 'index_change')
},
'portfolio_risk': {
'return': weekly_data['portfolio_return'].sum(),
'max_drawdown': weekly_data['drawdown'].min(),
'var_95': weekly_data['var_95'].mean()
}
}
return report
SQL 查询示例:
-- 查询周度风险指标汇总
SELECT
YEARWEEK(trade_date) as trade_week,
'市场风险' as risk_type,
SUM(index_change) as weekly_change,
AVG(volatility) as avg_volatility,
COUNT(CASE WHEN price_change <= -10 THEN 1 END) as limit_down_count
FROM market_index
WHERE trade_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY YEARWEEK(trade_date)
UNION ALL
SELECT
YEARWEEK(trade_date),
'持仓风险',
SUM(portfolio_return),
AVG(max_drawdown),
NULL
FROM portfolio_risk
WHERE trade_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY YEARWEEK(trade_date);