多源爬取 A 股论坛帖子,基于词频词典做情绪量化,并结合 TuShare 市场数据估算大盘综合风险值,自动生成可视化看板。
在线看板: https://hyan1985.github.io/MarketMonitoring/
| 模块 | 说明 |
|---|---|
| 多源爬虫 | 东方财富股吧、雪球、同花顺(上证指数相关讨论) |
| 情绪分析 | 基于多头/空头/否定词词典的分词加权打分,范围 [-1, 1] |
| 风险预估 | TuShare 双轨模型:结构拥挤 + 破位风险,含领先信号与硬触发 |
| 可视化看板 | 情绪仪表盘、日线趋势、多空词频、横版风险面板、帖子明细、实时模拟器 |
| 定时任务 | GitHub Actions 每个工作日自动跑昨天数据并更新看板 |
| 区域 | 内容 |
|---|---|
| 左上 | 大盘情绪指数(仪表盘 + 帖子分类占比) |
| 右上 | 情绪日线趋势 + 模型说明(三档横排) |
| 中部 | 活跃多头/空头词频(左右并排) |
| 横版风险卡 | 总分/等级 · 双轨分+炸板率 · 集中度+五维进度条 |
| 风险卡底部 | 变动信号 · 硬触发 · 成交集中度近一年历史分位(PE 式分位条) |
| 底部 | 情绪模拟器 + 帖子明细表 |
综合风险分 0–100 = 结构拥挤(0–50)+ 破位风险(0–50)。
| 轨道 | 维度与信号 | 主升期表现 |
|---|---|---|
| 结构拥挤 | 资金集中度、融资余额、行业集中度、论坛情绪亢奋 | 科技拉指数时常偏高 → 观察,不宜追高 |
| 破位风险 | 恐慌扩散、宽度骤降、隐性破位、炸板跌停潮 | 真正减仓信号,≥22 紧急、≥35 极端 |
主升趋势熔断: MA5>MA10>MA20 且破位分 <20 时,总分上限 55,避免结构性牛市天天 70–90 假警报。
| 维度 | 数据来源 | 说明 |
|---|---|---|
| 资金集中度 | 前 5% 个股成交额 / 全市场 | 含近一年历史极值与历史分位 |
| 融资余额占比 | margin + daily_basic | 杠杆参与度 |
| 行业集中度 | 通信+电子成交占比 | 科技主线拥挤度 |
| 恐慌扩散 | 跌幅≥5% 个股占比 | 市场广度恶化 |
| 论坛情绪 | 当日帖子加权情绪分 | 与词频分析联动 |
| 类型 | 信号 | 作用 |
|---|---|---|
| 量价背离 | 指数高位 + 量能/参与面走弱 | 顶部派发领先特征,持续 2 日确认 |
| 顶部派发形态库 | 缩量背离、巨量滞涨、衰竭缺口、融资流出等 6 类 | 低误报形态可弹窗升级风险等级 |
| 隐性破位 | 指数收红/收平,底下宽度崩塌 | 大幅提升破位分(如 6/26 大绿棒前一日) |
| 炸板率/跌停扩散 | limit_list_d 涨停/炸板/跌停统计 | 赚钱效应转弱时加分 |
| 余震记忆 | 近期刚破位且仍在回撤 | 反弹日维持中性/预警,防死猫跳 |
| 硬触发 | 多维度共振 | 可设总分底线(预警/紧急/极端) |
| 等级 | 典型条件 | 建议 |
|---|---|---|
| 🟢 安全 | 双轨均低 | 正常持仓 |
| 🟡 中性 | 结构偏高或余震观察 | 谨慎,不追高 |
| 🟠 预警 | 破位分 ≥15 或硬触发 | 控制仓位 |
| 🔴 紧急 | 破位分 ≥22 | 明显减仓 |
| ⛔ 极端 | 破位分 ≥35 或极端组合 | 大幅减仓/对冲 |
git clone https://github.com/hyan1985/MarketMonitoring.git
cd MarketMonitoring
pip install -r requirements.txt
cp config.example.json config.json # 按需填写 TuShare Token 等
python main.py # 默认分析昨天(北京时间)
python main.py --yesterday # 显式指定前一自然日(定时任务用)
python main.py --today # 分析当天(北京时间)
python main.py --date YYYY-MM-DD --no-browser # 补跑指定日期运行完成后会生成/更新 data.json 与 index.html,并在浏览器中打开看板(可用 --no-browser 跳过)。
| 变量 | 说明 |
|---|---|
TUSHARE_TOKEN |
TuShare Pro API Token,用于大盘风险值计算 |
本地可在 config.json 中配置,GitHub Actions 请设为仓库 Secret。
python scripts/backtest_risk_peaks.py # 历史顶部预警提前量
python scripts/backtest_vp_divergence.py # 量价背离领先信号
python scripts/backtest_distribution_patterns.py # 顶部派发形态库
python scripts/backtest_big_drops.py # 历史大跌日模型表现git remote add origin https://github.com/<用户名>/MarketMonitoring.git
git push -u origin main仓库 Settings → Secrets and variables → Actions 中添加:
TUSHARE_TOKEN— TuShare Pro API Key(建议 5000 积分以上,需daily、margin、limit_list_d等接口)
Settings → Actions → General → Workflow permissions → 选择 Read and write permissions。
Settings → Pages → Source → Branch 选 main,目录选 / (root)。
部署完成后访问:https://<用户名>.github.io/MarketMonitoring/
Actions → Daily Sentiment Analysis → Run workflow
可选 target_day:today(默认)或 yesterday。
- 工作流:
.github/workflows/daily.yml - 每天北京时间 00:30(0 点后)自动执行
- 抓取前一自然日全天论坛帖子;TuShare 风险数据取该日或之前最近已入库的交易日
- 全项目时间与面板展示统一为北京时间 (Asia/Shanghai)
- 自动 commit
data.json、posts.json与index.html
├── main.py # 主入口:爬取 → 分析 → 风险 → 看板
├── sentiment_analyzer.py # 词频情绪分析引擎
├── risk_scorer.py # TuShare 双轨风险评分 + 领先信号
├── dashboard_generator.py # HTML 看板生成
├── guba_crawler.py # 东方财富股吧爬虫
├── xueqiu_crawler.py # 雪球爬虫
├── ths_crawler.py # 同花顺爬虫
├── config.example.json # 配置模板(不含敏感信息)
├── data.json # 分析摘要 + 风险分(轻量,~15KB)
├── posts.json # 帖子明细(紧凑 JSON,看板异步加载)
├── index.html # 在线看板模板(~60KB,不再内嵌帖子)
├── data_store.py # data.json / posts.json 读写
├── scripts/ # 历史回测脚本
│ ├── backtest_risk_peaks.py
│ ├── backtest_vp_divergence.py
│ ├── backtest_distribution_patterns.py
│ └── backtest_big_drops.py
└── .github/workflows/
└── daily.yml # 每日定时任务
| 区间 | 含义 | 参考操作 |
|---|---|---|
< -0.3 |
极度恐慌 / 黄金买点 | 逆向建仓 +10%~+20% |
-0.3 ~ 0.5 |
情绪中性 / 卧倒装死 | 维持底仓,持股不动 |
> +0.5 |
极度亢奋 / 防御警报 | 防守减仓 -10%~-20% |
本工具仅供情绪因子研究与数据展示,不构成任何投资建议。股市有风险,投资需谨慎。