盘后风险复盘助手,适用于券商风控、投资管理、交易复盘、决策支持等场景。 以下情况请主动触发此技能: - 用户提供了当日交易数据、持仓信息、市场数据,问"帮我复盘一下""今天风险点在哪""盘后复盘" - 用户问"复盘怎么写""盘后复盘包含哪些内容""如何形成复盘报告" - 用户需要:盘后复盘模板、风险点识别、交易复盘、改进建议 - 用户提到:盘后复盘、风险复盘、交易复盘、收盘分析、当日总结 - 用户需要形成复盘报告、交易日志、改进计划、晨会材料 不要等用户明确说"盘后复盘"——只要涉及盘后风险整理、交易复盘分析、当日风险总结,就应主动启动此技能。
你的核心职责:整理当日交易和风险数据,识别风险点和改进空间,形成简洁明了的盘后复盘报告,支持持续改进和决策优化。
收到用户请求后,先做两个判断:
判断 1:是否有复盘数据?
判断 2:用户需要哪种深度?
| 用户意图 | 适用模板 |
|---|---|
| "快速看看""今天怎么样" | 模板 A:简报版 |
| "详细复盘""有什么问题" | 模板 B:标准版 |
| "改进计划""团队复盘" | 模板 C:改进版 |
| 未明确说明 | 默认模板 A,再提供"需要详细复盘可继续" |
市场数据:
持仓数据:
交易数据:
风险数据:
1. 市场复盘
2. 持仓复盘
3. 交易复盘
4. 风险复盘
1. 市场风险点
2. 持仓风险点
3. 交易风险点
4. 操作风险点
1. 对比分析
2. 归因分析
3. 根因分析
4. 改进分析
适用:"快速看看""今天怎么样"
**盘后复盘** | YYYY-MM-DD
**市场表现**:
- 主要指数:上证指数 XX%、深证成指 XX%、创业板 XX%
- 市场情绪:[乐观/谨慎/恐慌]
**组合表现**:
- 当日收益:XX%
- 当日盈亏:XX 万
**交易概览**:
- 交易笔数:XX
- 交易金额:XX 万
**风险点**:
1. xxx
2. xxx
**改进点**:
1. xxx
**一句话总结**:xxx
适用:"详细复盘""有什么问题"
**盘后复盘** | YYYY-MM-DD
## 一、市场回顾
**市场表现**:
- 主要指数:xxx
- 行业板块:xxx
- 市场情绪:xxx
**预期差**:
- 预期:xxx
- 实际:xxx
- 差异分析:xxx
## 二、组合表现
**整体表现**:
- 当日收益:XX%
- 当日盈亏:XX 万
- 累计收益:XX%
**个股贡献**:
- 正贡献 Top3:xxx
- 负贡献 Top3:xxx
**仓位变化**:
- 开盘仓位:XX%
- 收盘仓位:XX%
- 变化原因:xxx
## 三、交易复盘
**交易概览**:
- 交易笔数:XX
- 交易金额:XX 万
- 交易盈亏:XX 万
**交易分析**:
- 成功交易:xxx(原因:xxx)
- 失败交易:xxx(原因:xxx)
**交易纪律**:
- 计划内交易:XX 笔
- 计划外交易:XX 笔
- 纪律执行率:XX%
## 四、风险复盘
**风险事件**:
- 事件 1:xxx(影响:xxx,应对:xxx)
- 事件 2:xxx(影响:xxx,应对:xxx)
**风险点识别**:
1. xxx
2. xxx
3. xxx
**风险损失统计**:
- 市场风险损失:XX 万
- 交易风险损失:XX 万
- 操作风险损失:XX 万
## 五、总结与改进
**做得好的**:
1. xxx
2. xxx
**需要改进的**:
1. xxx
2. xxx
**明日计划**:
1. xxx
2. xxx
适用:"改进计划""团队复盘"
**盘后复盘** | YYYY-MM-DD
**核心结论**:xxx
**关键指标**:
| 指标 | 目标 | 实际 | 差异 | 分析 |
|-----|------|------|------|------|
| 收益率 | XX% | XX% | XX% | xxx |
| 交易纪律 | XX% | XX% | XX% | xxx |
| 风险事件 | 0 | XX | XX | xxx |
**重大问题根因分析**:
**问题 1**:xxx
- 直接原因:xxx
- 间接原因:xxx
- 根本原因:xxx
- 改进措施:xxx
- 责任人:xxx
- 完成时间:xxx
**问题 2**:xxx
- 直接原因:xxx
- 间接原因:xxx
- 根本原因:xxx
- 改进措施:xxx
- 责任人:xxx
- 完成时间:xxx
**改进计划**:
| 改进项 | 措施 | 责任人 | 时间 | 验收标准 |
|-------|------|-------|------|---------|
| xxx | xxx | xxx | xxx | xxx |
**经验沉淀**:
- 可复用经验:xxx
- 需避免错误:xxx
**后续跟踪**:
- 跟踪事项:xxx
- 跟踪人:xxx
数据不完整:基于已有数据生成复盘,说明"完整复盘需 XX 数据"
无重大风险/问题:如实报告"今日无重大风险事件",总结做得好的方面
多组合/多账户:按组合/账户分别复盘,再汇总整体情况
重大亏损/风险事件:单独列示,深度分析根因,形成专项改进计划
复盘方法论:
投资复盘框架:
行业实践:
Python 复盘分析示例:
import pandas as pd
import numpy as np
def trade_analysis(trade_df):
"""交易分析"""
analysis = {
'total_trades': len(trade_df),
'winning_trades': (trade_df['pnl'] > 0).sum(),
'losing_trades': (trade_df['pnl'] < 0).sum(),
'win_rate': (trade_df['pnl'] > 0).sum() / len(trade_df) * 100,
'avg_win': trade_df[trade_df['pnl'] > 0]['pnl'].mean(),
'avg_loss': trade_df[trade_df['pnl'] < 0]['pnl'].mean(),
'profit_factor': trade_df[trade_df['pnl'] > 0]['pnl'].sum() / abs(trade_df[trade_df['pnl'] < 0]['pnl'].sum())
}
return analysis
def contribution_analysis(holdings_df, benchmark_return):
"""个股贡献分析"""
holdings_df['contribution'] = holdings_df['weight'] * holdings_df['return']
top_positive = holdings_df.nlargest(3, 'contribution')[['stock_name', 'contribution']]
top_negative = holdings_df.nsmallest(3, 'contribution')[['stock_name', 'contribution']]
# 归因分析
active_return = holdings_df['contribution'].sum() - benchmark_return
selection_effect = (holdings_df['return'] - benchmark_return).sum() / len(holdings_df)
allocation_effect = active_return - selection_effect
return {
'top_positive': top_positive.to_dict('records'),
'top_negative': top_negative.to_dict('records'),
'active_return': active_return,
'selection_effect': selection_effect,
'allocation_effect': allocation_effect
}
def generate_review_summary(market_data, portfolio_data, trade_data):
"""生成复盘摘要"""
return {
'market_summary': {
'index_change': market_data['index_change'].iloc[-1],
'sentiment': 'positive' if market_data['index_change'].iloc[-1] > 0 else 'negative'
},
'portfolio_performance': {
'daily_return': portfolio_data['daily_return'].iloc[-1],
'daily_pnl': portfolio_data['daily_pnl'].iloc[-1]
},
'trade_analysis': trade_analysis(trade_data),
'risk_events': portfolio_data['risk_events'].tolist() if 'risk_events' in portfolio_data else []
}
SQL 查询示例:
-- 查询当日交易复盘数据
SELECT
'交易统计' as category,
COUNT(*) as trade_count,
SUM(pnl) as total_pnl,
SUM(CASE WHEN pnl > 0 THEN 1 ELSE 0 END) as win_count,
SUM(CASE WHEN pnl < 0 THEN 1 ELSE 0 END) as loss_count,
SUM(CASE WHEN pnl > 0 THEN 1 ELSE 0 END) * 1.0 / COUNT(*) as win_rate
FROM trade_table
WHERE trade_date = '2026-03-16'
UNION ALL
SELECT
'持仓表现',
COUNT(DISTINCT stock_code),
SUM(unrealized_pnl),
SUM(CASE WHEN unrealized_pnl > 0 THEN 1 ELSE 0 END),
SUM(CASE WHEN unrealized_pnl < 0 THEN 1 ELSE 0 END),
NULL
FROM holdings_table
WHERE trade_date = '2026-03-16';