| name | market-emotion-discovery |
| description | 先验性发现市场的悲观恐慌和狂热亢奋状态,作为逆向辅助判断信号。当社交媒体情绪极端、搜索量飙升、散户行为一致性过高时触发,为仲裁层提供情绪面参考。 |
| owner_group | 专家6组(舆情) |
| domain | news |
| status | draft |
市场情绪极端发现 Skill
1. 适用范围
所属小组:专家6组(舆情)
适用任务:
- 发现市场情绪处于极端恐慌或极端狂热状态,作为逆向辅助判断信号
- 为个股或大盘的情绪面提供结构化信号,辅助仲裁层综合判断
- 在情绪拐点附近提供先验性预警,帮助识别"别人恐惧时贪婪、别人贪婪时恐惧"的时机
- 适用于 A 股个股、行业板块或 A 股大盘的情绪评估
边界说明:
- 本 Skill 产出的是情绪面辅助信号,不单独构成交易建议
- 情绪极端不等于立即反转,可能持续一段时间;情绪信号需要与其他面(财务、技术、资金、宏观)交叉验证
- 数据源的代表性存在偏差(例如股吧用户偏散户),需要在
meta.uncertainties 中说明
- 本 Skill 不替代风控层的仓位管理,仅作为情绪面输入
2. 输入材料
数据来源
本 Skill 为分析层,不直接爬取数据,消费由数据源按数据接口说明提供的结构化帖子数据:
| 数据接口说明 | 执行数据源 | 提供内容 |
|---|
| eastmoney_guba(skills/data/eastmoney_guba) | data_sources/eastmoney_guba.py | 东方财富股吧帖子列表(标题、正文、阅读数、回复数、发布时间) |
数据源返回的结构化帖子数据格式:
{
"status": "success",
"stock_code": "600519",
"posts": [
{
"post_id": "1234567890",
"title": "茅台要起飞了",
"author": "股友ABC",
"reads": 5230,
"replies": 42,
"post_time": "05-03 14:30",
"source_type": "hot",
"content": "今天放量突破,主力资金进场..."
}
]
}
必填输入
- 标的:股票代码 / 行业名称 / 大盘指数(如"沪深300")
- 时间范围:最近 N 天(建议 5-30 个交易日)
- 社交媒体情绪数据(由 eastmoney_guba Skill 提供):
- 情绪正向帖子占比(看多帖子数 / 总帖子数)
- 情绪负向帖子占比(看空帖子数 / 总帖子数)
- 讨论热度(帖子总量或互动总量)
- 数据来源(如东方财富股吧、雪球、微博财经话题)
- 财经新闻情绪数据:
- 正面新闻占比
- 负面新闻占比
- 新闻总量
- 数据来源(如财联社、新浪财经、同花顺资讯)
- 数据来源说明
可选输入
- 搜索指数数据:百度指数/微信指数中与标的相关的搜索量及变化率
- 市场宽度数据:上涨家数 / 下跌家数比
- 成交量数据:标的或大盘近 N 日成交量及换手率
- 资金流数据:散户资金净流入/流出、融资余额变化
- 历史情绪对比数据:该标的过去同类情绪极端时期的市场表现
- 行业对比数据:同行业其他标的的情绪数据
- 人工补充观点:专家对当前情绪状态的定性判断
缺失处理
- 如果社交媒体情绪数据完全缺失,输出
direction: "neutral",confidence 不高于 0.3,在 meta.uncertainties 写明"缺少社交媒体情绪核心输入",并把 meta.needs_human_review 设为 true
- 如果财经新闻情绪数据完全缺失,可以继续基于社交媒体数据判断,但
confidence 降低 0.1-0.2,并在 meta.uncertainties 说明"缺少新闻情绪数据,单源判断可靠性下降"
- 如果可选输入缺失,可以继续分析,但在
meta.uncertainties 中说明可能影响判断完整性的缺口
- 如果时间范围不足 5 个交易日,情绪趋势判断不可靠,
confidence 不高于 0.5,并标注 meta.needs_human_review: true
3. 分析步骤
-
明确分析对象和时间范围:确认标的类型(个股/行业/大盘)、时间窗口和情绪数据覆盖范围。
-
检查输入数据是否足够:确认社交媒体情绪数据和新闻情绪数据至少有一项可用;如果两项均缺失,输出中性信号并标注缺失。
-
计算情绪综合指数:
- 将社交媒体正向帖子占比和新闻正面占比加权合并,得到综合正向情绪比例
- 将社交媒体负向帖子占比和新闻负面占比加权合并,得到综合负向情绪比例
- 默认权重:社交媒体 0.6,新闻 0.4(社交媒体反映散户情绪更敏感,新闻反映市场叙事更稳定)
- 计算"情绪极化度"= |正向情绪比例 - 负向情绪比例|,反映情绪一致性的强弱
-
判断情绪状态:
- 综合正向情绪比例 > 75% 且情绪极化度 > 40% → 狂热状态
- 综合负向情绪比例 > 75% 且情绪极化度 > 40% → 恐慌状态
- 其他情况 → 中性或温和状态
-
交叉验证辅助信号:
- 如果有搜索指数数据:搜索量飙升 +300% 以上支持狂热或恐慌判断
- 如果有市场宽度数据:涨跌家数比极端(>4:1 或 <1:4)支持情绪极端判断
- 如果有成交量数据:放量 +200% 以上配合狂热,缩量至 50% 以下配合恐慌尾部
- 如果有资金流数据:散户大幅净流入支持狂热,散户大幅净流出支持恐慌
- 辅助信号方向一致时提高
confidence,方向矛盾时降低 confidence 并写入 meta.uncertainties
-
判断方向和置信度:
- 狂热状态 →
direction: "bearish"(逆向看空,市场过热)
- 恐慌状态 →
direction: "bullish"(逆向看多,市场过度悲观)
- 中性状态 →
direction: "neutral"
- 根据情绪极化度和辅助信号一致性确定
confidence
-
提取证据和风险说明:
- 记录每项指标的数据来源、数值、对比基线和判断依据
- 标注数据代表性偏差、时间窗口限制、情绪持续风险等不确定性
-
输出标准 JSON
4. 判断规则
4.1 情绪状态判定规则
| 条件 | 情绪状态 | direction | 说明 |
|---|
| 综合正向 > 75% 且极化度 > 40% | 狂热 | bearish | 市场过度乐观,逆向看空 |
| 综合正向 > 65% 且极化度 > 30% 且有 ≥1 个辅助信号支持 | 偏狂热 | bearish | 偏乐观但未极端 |
| 综合负向 > 75% 且极化度 > 40% | 恐慌 | bullish | 市场过度悲观,逆向看多 |
| 综合负向 > 65% 且极化度 > 30% 且有 ≥1 个辅助信号支持 | 偏恐慌 | bullish | 偏悲观但未极端 |
| 不满足以上条件 | 中性 | neutral | 情绪未到极端区域 |
4.2 置信度规则
- 0.8 - 1.0:情绪极端明确(>75% + 极化度>40%),且 ≥2 个辅助信号方向一致
- 0.6 - 0.8:情绪偏极端(>65%),或有 1 个辅助信号支持但未完全确认
- 0.4 - 0.6:情绪有倾向但不强烈,辅助信号不足或矛盾
- < 0.4:数据不足或信号冲突,使用
neutral 并标注人工复核
提升置信度的因素:
- 搜索指数飙升(+300% 以上)且与情绪方向一致
- 市场宽度极端(涨跌比 >4:1 或 <1:4)
- 散户行为极端一致(散户净流入/流出创近 30 日新高)
- 成交量异动配合(放量 +200% 或缩量至 50%)
降低置信度的因素:
- 情绪数据只来自单一平台
- 辅助信号方向与情绪矛盾
- 时间窗口过短(<5 日)或数据不连续
- 标的为小盘股,社交讨论量过低(日帖量 <50)
4.3 风险等级规则
low:情绪有倾向但未极端,辅助信号不明确
medium:情绪偏极端,需关注后续演变;或情绪数据源单一但辅助信号支持
high:情绪极端明确,但需警惕情绪持续而非立即反转的风险;或情绪与基本面严重背离
4.4 时间周期规则
- 基于社交媒体情绪和搜索指数 →
short(情绪变化快,通常影响天到数周)
- 基于新闻叙事和散户行为趋势 →
mid(叙事变化通常影响数周到数月)
- 如果情绪极端且叠加宏观周期信号 →
long(但需在 meta.uncertainties 说明宏观判断不在本 Skill 范围内)
4.5 特殊规则
- "情绪悬崖"检测:如果 3 日内情绪正向比例从 >70% 骤降至 <30%(或反向),标记为情绪急剧转向,
confidence 不高于 0.6(因为趋势尚未确认),并在 meta.risk_notes 写明"情绪急剧转向,需观察是否为拐点还是短期波动"
- "沉默恐慌"检测:如果讨论热度(帖子总量)降至近 30 日均值的 30% 以下,且负向情绪占比 >60%,可能是市场"无人关注"的低迷恐慌,
direction: "bullish"(逆向看多),但 confidence 不高于 0.7
- 标的为大盘指数时:情绪信号的适用性最强,因为大盘情绪反映市场整体心态
- 标的为个股时:个股情绪更容易被单一事件或游资操控,
confidence 需要更保守地降低 0.1-0.2
5. 标准输出
狂热状态示例
{
"direction": "bearish",
"confidence": 0.82,
"reasoning": "社交媒体正向情绪占比达 82%,情绪极化度 56%,搜索指数周环比飙升 420%,散户连续 5 日大幅净流入,市场呈现典型狂热特征,逆向看空。",
"signals": [
"社交正向情绪 >80%",
"搜索指数飙升 >400%",
"散户连续净流入创月度新高",
"市场情绪进入狂热区间"
],
"source": "market_emotion_discovery",
"signal_type": "news",
"stock_code": "000001",
"weight": 1.0,
"meta": {
"output_version": "0.1",
"skill_name": "market_emotion_discovery",
"owner_group": "专家6组(舆情)",
"target": "平安银行",
"period": "最近 10 个交易日",
"time_horizon": "short",
"risk_level": "high",
"key_findings": [
"社交媒体正向情绪占比 82%,远超 75% 狂热阈值",
"搜索指数周环比 +420%,散户关注度急剧上升",
"散户连续 5 日净流入,累计金额创近 30 日新高",
"情绪极化度 56%,市场一致性极高"
],
"evidence": [
{
"source_type": "social_media",
"source_name": "东方财富股吧 + 雪球",
"date": "2025-01-15",
"metric": "综合正向情绪占比",
"value": "82%",
"comparison": "高于 75% 狂热阈值",
"note": "股吧正向占比 85%,雪球正向占比 76%,加权后 82%"
},
{
"source_type": "social_media",
"source_name": "百度指数",
"date": "2025-01-15",
"metric": "搜索指数周环比变化",
"value": "+420%",
"comparison": "近 30 日均值",
"note": "搜索量飙升至近 90 日最高水平"
},
{
"source_type": "fund_flow",
"source_name": "东方财富资金流",
"date": "2025-01-15",
"metric": "散户连续净流入天数",
"value": "5 日",
"comparison": "近 30 日最大连续净流入",
"note": "散户资金持续涌入,与机构净流出形成反向"
}
],
"risk_notes": [
"狂热情绪可能持续一段时间才反转,短期不宜盲目做空",
"情绪数据主要来自股吧和雪球,偏散户视角,机构情绪可能不同",
"若有利好政策或业绩超预期,狂热情绪可能有基本面支撑"
],
"uncertainties": [
"情绪反转的具体时点无法精确判断",
"缺少期货/期权持仓数据作为机构情绪对冲参考",
"融资余额数据暂缺,无法验证杠杆资金参与程度"
],
"needs_human_review": false
}
}
恐慌状态示例
{
"direction": "bullish",
"confidence": 0.75,
"reasoning": "社交媒体负向情绪占比达 79%,讨论热度骤降至均值 35%,呈现'沉默恐慌'特征。市场宽度极端偏弱(涨跌比 1:8),散户连续大幅净流出,逆向看多。",
"signals": [
"社交负向情绪 >75%",
"讨论热度骤降至均值 35%",
"涨跌家数比 1:8,市场宽度极端",
"散户连续大幅净流出"
],
"source": "market_emotion_discovery",
"signal_type": "news",
"stock_code": "",
"weight": 1.0,
"meta": {
"output_version": "0.1",
"skill_name": "market_emotion_discovery",
"owner_group": "专家6组(舆情)",
"target": "沪深300",
"period": "最近 7 个交易日",
"time_horizon": "short",
"risk_level": "medium",
"key_findings": [
"负向情绪占比 79%,已进入恐慌区间",
"讨论热度骤降,呈'沉默恐慌'特征",
"市场宽度极端,上涨家数远少于下跌家数",
"散户持续撤出,可能接近情绪底部"
],
"evidence": [
{
"source_type": "social_media",
"source_name": "东方财富股吧 + 雪球",
"date": "2025-03-20",
"metric": "综合负向情绪占比",
"value": "79%",
"comparison": "高于 75% 恐慌阈值",
"note": "股吧负向占比 83%,雪球负向占比 71%"
},
{
"source_type": "social_media",
"source_name": "东方财富股吧 + 雪球",
"date": "2025-03-20",
"metric": "讨论热度(日均帖子量)",
"value": "均值 35%",
"comparison": "近 30 日均值的 35%",
"note": "讨论量骤降,符合'沉默恐慌'特征"
},
{
"source_type": "market_data",
"source_name": "Wind / 东方财富",
"date": "2025-03-20",
"metric": "涨跌家数比",
"value": "1:8",
"comparison": "极端偏弱(<1:4 即为极端)",
"note": "市场宽度极度收缩"
}
],
"risk_notes": [
"恐慌情绪可能因利空持续释放而进一步恶化",
"底部确认需要结合成交量是否放大(恐慌放量出清信号)",
"大盘恐慌信号适用性较强,但反弹时点和幅度需要其他面验证"
],
"uncertainties": [
"缺少融资盘强平数据,无法判断是否有被动卖出压力",
"恐慌底部的成交量信号(放量vs缩量)尚未纳入",
"历史同期数据不足,无法做情绪分位对比"
],
"needs_human_review": true
}
}
中性状态示例
{
"direction": "neutral",
"confidence": 0.45,
"reasoning": "社交媒体情绪正向占比 55%,负向 35%,情绪极化度 20%,未达到极端阈值。市场宽度正常,散户行为无明显异常,情绪面暂无明确方向信号。",
"signals": [
"情绪处于中性区间",
"无明显散户行为异常"
],
"source": "market_emotion_discovery",
"signal_type": "news",
"stock_code": "600519",
"weight": 1.0,
"meta": {
"output_version": "0.1",
"skill_name": "market_emotion_discovery",
"owner_group": "专家6组(舆情)",
"target": "贵州茅台",
"period": "最近 10 个交易日",
"time_horizon": "short",
"risk_level": "low",
"key_findings": [
"情绪正向 55%,负向 35%,未触达极端阈值",
"辅助信号无明显异常"
],
"evidence": [
{
"source_type": "social_media",
"source_name": "东方财富股吧 + 雪球",
"date": "2025-02-10",
"metric": "综合正向情绪占比",
"value": "55%",
"comparison": "处于 40%-65% 中性区间",
"note": "情绪无明显偏向"
}
],
"risk_notes": [],
"uncertainties": [
"搜索指数和融资数据暂缺,辅助判断不完整"
],
"needs_human_review": false
}
}
6. 质量检查
输出前检查:
- 是否明确标注情绪状态(狂热/恐慌/中性)
- 是否同时包含社交媒体和新闻情绪数据(或说明缺失)
direction 是否符合逆向逻辑(狂热→bearish,恐慌→bullish)
confidence 是否根据情绪极化度和辅助信号一致性合理设定
- 是否计算了情绪极化度
- 是否检查了辅助信号的交叉验证
- 证据是否写明数据来源、数值、对比基线
- 是否在
meta.uncertainties 中说明数据代表性偏差
- 是否标注了情绪持续风险(极端情绪不等于立即反转)
- 个股情绪信号是否比大盘更保守
signal_type 是否为 news
meta.needs_human_review 是否在数据不足或信号矛盾时设为 true