proprietary-sentiment-monitor

自营舆情风险监测助手,适用于券商自营投资、风险管理、舆情监控、投资决策等场景。 以下情况请主动触发此技能: - 用户提供了持仓股票舆情数据,问"有什么风险""舆情怎么样" - 用户问"舆情怎么监控""负面舆情怎么处理" - 用户需要:舆情监测分析、风险预警、处置建议 - 用户提到:舆情、负面新闻、声誉风险、持仓风险、投资舆情 - 用户需要形成舆情报告、风险预警、处置方案 不要等用户明确说"舆情监测"——只要涉及持仓股票舆情分析、负面新闻预警、声誉风险评估,就应主动启动此技能。

105 stars

Best use case

proprietary-sentiment-monitor is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

自营舆情风险监测助手,适用于券商自营投资、风险管理、舆情监控、投资决策等场景。 以下情况请主动触发此技能: - 用户提供了持仓股票舆情数据,问"有什么风险""舆情怎么样" - 用户问"舆情怎么监控""负面舆情怎么处理" - 用户需要:舆情监测分析、风险预警、处置建议 - 用户提到:舆情、负面新闻、声誉风险、持仓风险、投资舆情 - 用户需要形成舆情报告、风险预警、处置方案 不要等用户明确说"舆情监测"——只要涉及持仓股票舆情分析、负面新闻预警、声誉风险评估,就应主动启动此技能。

Teams using proprietary-sentiment-monitor 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/proprietary-sentiment-monitor/SKILL.md --create-dirs "https://raw.githubusercontent.com/aifinlab/FinClaw/main/skills/proprietary-sentiment-monitor/SKILL.md"

Manual Installation

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

How proprietary-sentiment-monitor Compares

Feature / Agentproprietary-sentiment-monitorStandard 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,再提供"需要详细报告可继续" |

---

## 数据需求(理想字段)

**持仓信息:**
- 证券代码、证券名称
- 持仓数量、持仓成本
- 当前市值、浮动盈亏
- 持仓占比

**舆情数据:**
- 新闻标题、新闻内容
- 新闻来源、发布时间
- 情感倾向(正面/中性/负面)
- 情感得分(-1 到 1)

**舆情指标:**
- 舆情热度(阅读量、转发量)
- 负面舆情数量
- 负面舆情占比
- 舆情趋势变化

**风险标签:**
- 风险类型(财务/经营/法律/监管等)
- 风险等级(高/中/低)
- 影响评估

---

## 核心分析框架

### 舆情风险类型分类

**1. 财务风险舆情**
- 业绩下滑/亏损
- 财务造假嫌疑
- 审计意见异常
- 债务违约

**2. 经营风险舆情**
- 高管变动
- 重大诉讼
- 业务收缩
- 客户流失

**3. 法律监管舆情**
- 监管处罚
- 立案调查
- 重大违法
- 政策限制

**4. 市场声誉舆情**
- 产品质量问题
- 消费者投诉
- 媒体负面报道
- 社交网络负面

**5. 行业环境舆情**
- 行业政策变化
- 行业景气度下降
- 竞争格局恶化
- 供应链风险

### 舆情情感分析

**1. 情感得分计算**
```
情感得分 = (正面词数 - 负面词数) / 总词数

得分范围:-1(极度负面)到 1(极度正面)
中性:-0.2 到 0.2
负面:< -0.2
正面:> 0.2
```

**2. 舆情热度计算**
```
舆情热度 = 阅读量权重×0.3 + 转发量权重×0.3 + 评论量权重×0.2 + 媒体权重×0.2
```

**3. 负面舆情指数**
```
负面舆情指数 = 负面新闻数量 × 平均情感得分绝对值 × 舆情热度
```

### 风险等级划分

| 等级 | 负面舆情指数 | 典型特征 | 响应要求 |
|-----|-------------|---------|---------|
| 高 | >80 | 重大负面、监管处罚、财务造假 | 立即评估,考虑减仓 |
| 中高 | 60-80 | 严重负面、高管变动、重大诉讼 | 密切监控,准备预案 |
| 中 | 40-60 | 一般负面、业绩下滑、行业利空 | 关注进展,评估影响 |
| 低 | <40 | 轻微负面、正常波动 | 常规监控 |

---

## 输出模板

### 模板 A:快速监测
> 适用:"有什么风险""快速监测"

```
**自营舆情风险监测** | YYYY-MM-DD

**持仓股票**:XX 只

**舆情概览**:
- 负面舆情:X 条
- 中性舆情:X 条
- 正面舆情:X 条

**风险股票**:
| 股票 | 负面条数 | 情感得分 | 风险等级 | 主要风险 |
|-----|---------|---------|---------|---------|
| 股票 A | 5 | -0.6 | 高 | 监管处罚 |
| 股票 B | 3 | -0.4 | 中 | 业绩下滑 |

**建议关注**:股票 A(高风险,建议评估减仓)
```

### 模板 B:标准报告
> 适用:"详细分析""舆情报告"

```
**自营持仓舆情分析报告** | YYYY-MM-DD

## 一、监测概览

**监测期间**:YYYY-MM-DD 至 YYYY-MM-DD
**持仓股票**:XX 只
**舆情总量**:XX 条
- 负面:XX 条(XX%)
- 中性:XX 条(XX%)
- 正面:XX 条(XX%)

## 二、重点股票舆情

**股票 A(XXX)**
- 持仓情况:XX 万股,市值 XX 万,占比 XX%
- 舆情总量:XX 条
- 负面舆情:XX 条
- 平均情感得分:-0.XX
- 风险等级:高

**主要负面舆情**:
1. [标题] 来源:XXX,时间:XXX
   摘要:xxx
2. [标题] 来源:XXX,时间:XXX
   摘要:xxx

**影响分析**:xxx

**股票 B(XXX)**
- ...

## 三、舆情趋势

**负面舆情趋势**:
- 本周:XX 条
- 上周:XX 条
- 变化:XX%

**热点风险类型**:
1. 财务风险:XX 条
2. 经营风险:XX 条
3. 监管风险:XX 条

## 四、风险汇总

**高风险股票**:X 只
**中风险股票**:X 只
**低风险股票**:X 只

**持仓风险暴露**:
- 高风险持仓市值:XX 万(XX%)
- 中风险持仓市值:XX 万(XX%)
```

### 模板 C:决策版
> 适用:"处置建议""投资决策"

```
**自营舆情风险处置建议** | YYYY-MM-DD

**核心结论**:监测 XX 只持仓股票,X 只存在高风险,建议处置 X 只

**处置建议清单**:

| 股票 | 风险等级 | 负面舆情 | 持仓市值 | 建议操作 | 理由 |
|-----|---------|---------|---------|---------|------|
| 股票 A | 高 | 监管处罚 | XX 万 | 减仓/清仓 | 重大违规 |
| 股票 B | 中高 | 业绩下滑 | XX 万 | 观察/止损 | 持续恶化 |

**重点股票分析**:

**股票 A(建议减仓/清仓)**:
- 风险事件:xxx
- 影响评估:xxx
- 建议操作:xxx
- 目标价位:xxx
- 止损位:xxx

**股票 B(建议观察)**:
- 风险事件:xxx
- 影响评估:xxx
- 观察要点:xxx
- 触发条件:xxx

**组合调整建议**:
- 减仓股票:xxx
- 加仓股票:xxx
- 调仓比例:xxx
```

---

## 特殊情况处理

**舆情误判**:如存在舆情误判可能,说明"建议人工核实,确认舆情真实性"

**突发舆情**:如为突发重大舆情,说明"建议立即评估,必要时启动应急预案"

**信息不足**:如舆情信息不完整,说明"建议补充信息来源,持续跟踪"

**市场已反应**:如市场已充分反应,说明"建议评估是否已 price-in,避免过度反应"

---

## 语言要求

- 先给结论,再给支撑数据
- 风险等级判断要有依据
- 明确区分:舆情事实 vs 影响分析 vs 处置建议
- 关键数字、风险等级、操作建议单独指出
- 处置建议要具体、可执行、可追踪

---

## Reference

**舆情数据源:**
- 新浪财经、东方财富
- 同花顺 iFinD
- 慧科新闻数据库
- 社交媒体(微博、雪球等)

**分析工具:**
- 自然语言处理(NLP)
- 情感分析模型
- 舆情监控系统

**行业标准:**
- 券商自营业务风控指引
- 投资舆情监测规范
- 声誉风险管理指引

---

## Scripts

**Python 舆情分析示例:**
```python
import pandas as pd
import numpy as np
from textblob import TextBlob

def calc_sentiment_score(text):
    """
    计算情感得分(简化版)
    
    参数:
        text: 文本内容
    
    返回:
        情感得分 (-1 到 1)
    """
    # 实际应使用中文情感分析模型
    blob = TextBlob(text)
    return blob.sentiment.polarity

def analyze_stock_sentiment(news_data):
    """
    分析股票舆情
    
    参数:
        news_data: 新闻数据 DataFrame
    
    返回:
        舆情分析结果 DataFrame
    """
    # 计算情感得分
    news_data['sentiment_score'] = news_data['content'].apply(calc_sentiment_score)
    
    # 情感分类
    def classify_sentiment(score):
        if score > 0.2:
            return '正面'
        elif score < -0.2:
            return '负面'
        else:
            return '中性'
    
    news_data['sentiment'] = news_data['sentiment_score'].apply(classify_sentiment)
    
    return news_data

def aggregate_stock_risk(news_data, holdings_data):
    """
    汇总股票风险
    
    参数:
        news_data: 新闻数据 DataFrame
        holdings_data: 持仓数据 DataFrame
    
    返回:
        股票风险汇总 DataFrame
    """
    # 按股票汇总舆情
    stock_sentiment = news_data.groupby('stock_code').agg({
        'news_id': 'count',
        'sentiment_score': ['mean', 'min', 'std'],
        'read_count': 'sum',
        'share_count': 'sum'
    }).reset_index()
    
    stock_sentiment.columns = ['stock_code', 'news_count', 'avg_sentiment', 
                                'min_sentiment', 'sentiment_std', 
                                'total_reads', 'total_shares']
    
    # 计算负面舆情指数
    negative_news = news_data[news_data['sentiment'] == '负面'].groupby('stock_code').size()
    stock_sentiment['negative_count'] = stock_sentiment['stock_code'].map(negative_news).fillna(0)
    stock_sentiment['negative_ratio'] = stock_sentiment['negative_count'] / stock_sentiment['news_count']
    
    # 负面舆情指数
    stock_sentiment['risk_index'] = (
        stock_sentiment['negative_count'] * 
        abs(stock_sentiment['avg_sentiment']) * 
        np.log1p(stock_sentiment['total_reads'])
    )
    
    # 风险等级
    def get_risk_level(index):
        if index > 80:
            return '高'
        elif index > 60:
            return '中高'
        elif index > 40:
            return '中'
        else:
            return '低'
    
    stock_sentiment['risk_level'] = stock_sentiment['risk_index'].apply(get_risk_level)
    
    # 合并持仓数据
    result = stock_sentiment.merge(holdings_data, on='stock_code', how='left')
    
    return result

# 使用示例
if __name__ == '__main__':
    # 假设数据
    news = pd.DataFrame({
        'stock_code': ['000001', '000001', '000002'],
        'content': ['业绩大幅增长', '涉嫌财务造假', '新产品发布'],
        'read_count': [10000, 50000, 5000],
        'share_count': [100, 1000, 50]
    })
    
    holdings = pd.DataFrame({
        'stock_code': ['000001', '000002'],
        'shares': [100000, 50000],
        'market_value': [2000000, 1000000]
    })
    
    news_analyzed = analyze_stock_sentiment(news)
    risk_summary = aggregate_stock_risk(news_analyzed, holdings)
    
    print(risk_summary[['stock_code', 'negative_count', 'avg_sentiment', 'risk_level', 'market_value']])
```

**SQL 查询示例:**
```sql
-- 查询持仓股票舆情风险
SELECT 
    h.stock_code,
    h.stock_name,
    h.market_value,
    COUNT(n.news_id) as news_count,
    SUM(CASE WHEN n.sentiment = '负面' THEN 1 ELSE 0 END) as negative_count,
    AVG(n.sentiment_score) as avg_sentiment,
    MIN(n.sentiment_score) as min_sentiment,
    SUM(n.read_count) as total_reads,
    CASE 
        WHEN SUM(CASE WHEN n.sentiment = '负面' THEN 1 ELSE 0 END) * ABS(AVG(n.sentiment_score)) > 5 THEN '高'
        WHEN SUM(CASE WHEN n.sentiment = '负面' THEN 1 ELSE 0 END) * ABS(AVG(n.sentiment_score)) > 3 THEN '中高'
        WHEN SUM(CASE WHEN n.sentiment = '负面' THEN 1 ELSE 0 END) * ABS(AVG(n.sentiment_score)) > 1 THEN '中'
        ELSE '低'
    END as risk_level
FROM holdings h
LEFT JOIN news_sentiment n ON h.stock_code = n.stock_code
WHERE n.pub_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY h.stock_code, h.stock_name, h.market_value
ORDER BY negative_count DESC, avg_sentiment ASC;
```

Related Skills

securities-proprietary-analyzer

105
from aifinlab/FinClaw

券商自营业务分析工具。分析券商自营投资收入、收益率、持仓结构等。使用券商财报数据、AkShare数据。适用于自营业务研究、投资收益评估、风险分析。

fund-monitor

105
from aifinlab/FinClaw

基金组合监控预警系统 - 实时监控基金持仓、自动预警异常波动、生成定期报告。 当用户需要监控基金组合、设置预警提醒、获取定期报告、跟踪组合表现时使用此技能。 支持实时监控、多维度预警、定期报告、业绩跟踪、风险监控、事件提醒。 触发关键词:基金监控、组合预警、净值提醒、异常波动、定期报告、持仓跟踪。

sentiment-xueqiu

105
from aifinlab/FinClaw

雪球社区舆情与热股榜分析,提供雪球热股榜、情绪监控、个股雪球热度等。当用户需要查看雪球社区舆情或热门股票讨论时使用。

sentiment-weibo

105
from aifinlab/FinClaw

微博财经舆情与热搜分析,提供微博财经热搜榜、股票话题热度、舆情情绪分析等。当用户需要查看微博上的财经舆情或热搜时使用。

sentiment-scan

105
from aifinlab/FinClaw

用于信托领域项目尽调中的舆情扫描助手场景。支持结构化输入处理、规则分析与Markdown结果输出。

sentiment-eastmoney

105
from aifinlab/FinClaw

东方财富股吧舆情与热度分析,提供股吧热度排行、个股情绪指标、散户情绪监控等。当用户需要查看东财股吧热度或散户情绪时使用。

sentiment-alert

105
from aifinlab/FinClaw

用于信托领域存续管理中的舆情预警助手场景,支持结构化处理与报告输出。

project-sentiment-alert

105
from aifinlab/FinClaw

用于信托领域存续期管理中的项目舆情预警助手场景。支持结构化输入处理、规则分析与Markdown结果输出。

ongoing-risk-monitor

105
from aifinlab/FinClaw

用于信托领域存续管理中的存续风险监控助手场景,支持结构化处理与报告输出。

ongoing-risk-monitor-real-estate-project

105
from aifinlab/FinClaw

用于信托领域存续期管理中的存续风险监控助手-地产项目版场景。支持结构化输入处理、规则分析与Markdown结果输出。

ongoing-risk-monitor-gov-project

105
from aifinlab/FinClaw

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

ongoing-risk-monitor-equity-investment

105
from aifinlab/FinClaw

用于信托领域存续期管理中的存续风险监控助手-股权投资版场景。支持结构化输入处理、规则分析与Markdown结果输出。