追踪中文社交平台上散户/小白/宝妈的投资讨论热度。指数越高,散户情绪越极端,市场越危险——基于"擦鞋童理论"的行为金融学反向指标。
当菜市场大妈和宝妈都在讨论股票,就是该离场的时候。
— Joseph Kennedy, 1929
四个板块独立计算,每个板块有三个指标:
| 指标 | 含义 |
|---|---|
| 宝妈指数 | 综合情绪热度 (0-100) |
| 🟢 宝妈买入 | 追涨情绪强度 (0-100) |
| 🔴 宝妈卖出 | 割肉恐慌强度 (0-100) |
| 区间 | 信号 | 建议 |
|---|---|---|
| 0-20 | 🔵 极度冷清 | 小白沉默,可能是底部 |
| 20-40 | 🟢 正常区间 | 维持现有策略 |
| 40-60 | 🟡 开始升温 | 关注,准备减仓 |
| 60-75 | 🟠 高度警惕 | 大幅减仓 |
| 75-100 | 🔴 极度狂热 | 擦鞋童时刻,清仓 |
| 板块 | 股吧代码 | ETF |
|---|---|---|
| 纳斯达克 | of159941 | 513100 |
| 黄金 | of518880 | 518880 |
| CPO通信 | of515880 | 515880 |
| 半导体 | of512480 | 512480 |
2026-06-21 | 来源:东方财富股吧(310条)+ 小红书模拟数据(54条小白帖) 市场背景:科技牛市(CPO+半导体持续上涨) + 黄金阴跌(从高位回撤20%) + 纳指高位震荡
| 板块 | 指数 | 买入 | 卖出 | 买卖比 | 小白占比 | 信号 |
|---|---|---|---|---|---|---|
| CPO通信 | 60.4 | 51.9 | 20.9 | 5:1 | 30.2% | 🟠 高度警惕 — FOMO追涨 |
| 黄金 | 51.8 | 0.0 | 64.1 | 0:∞ | 32.6% | 🟡 开始升温 — 恐慌割肉 |
| 纳斯达克 | 50.4 | 46.2 | 0.0 | ∞:0 | 27.9% | 🟡 开始升温 — 温和追涨 |
| 半导体 | 43.5 | 59.6 | 0.0 | ∞:0 | 31.1% | 🟡 开始升温 — 跟风买入 |
⚠️ 当前小红书数据为模拟数据(真实 API 不可用)。接入真实小红书数据后指数可能进一步上升。
mom-index/
├── pipeline.py # 主流程:采集→分析→指数→存储
├── sync_data.py # 数据同步脚本(data/ → frontend/data/)
├── collectors/
│ ├── anti_detection.py # 反检测核心:UA轮换+隐身+延迟
│ ├── guba_collector.py # 东方财富股吧采集(✅ 生产可用)
│ ├── xhs_collector.py # 小红书 rnote.dev API(⚠️ 需充值)
│ └── xhs_playwright.py # 小红书 Playwright 方案(⚠️ 需登录态)
├── analyzer/
│ ├── llm_analyzer.py # 多维度分类引擎(40+信号词库)
│ └── index_calculator.py # 指数计算(含买入/卖出子指数)
├── frontend/
│ ├── dashboard.html # 看板页面(Chart.js 暗色主题)
│ └── data/ # 前端数据(pipeline 自动同步)
├── data/
│ ├── dashboard_data.json # 前端数据源
│ ├── history.json # 完整历史记录
│ └── xhs_posts.json # 小红书采集缓存
├── .gitignore
└── README.md
cd ~/Desktop/mom-index
# 运行数据采集 + 分析 + 指数计算(自动同步到 frontend/data/)
python pipeline.py
# 启动前端看板(默认 8765 端口)
cd frontend && python -m http.server 8765
# 浏览器打开
# http://localhost:8765/dashboard.html| 数据源 | 状态 | 日采集量 | 说明 |
|---|---|---|---|
| 东方财富股吧 | ✅ 稳定 | ~307条 | 4个ETF吧,无需cookie,无风控 |
| 小红书 (rnote.dev) | 0 | 免费额度仅够一轮 | |
| 小红书 (x-mcp) | 0 | 扩展已装,搜索被XHS风控 | |
| 小红书 (Playwright) | 0 | 隐身脚本已就绪,缺登录cookie |
每条帖子匹配多维度信号,每条判定带可读推理:
帖子「黄金亏了20%了要不要割肉啊😭」
命中: 决策依赖(+7) + 情绪恐慌(+5)
意图: 🔴 卖出(命中"割肉""亏了")
得分: 58分 → 判定「纯小白」
信号维度:
| 维度 | 权重 | 示例 |
|---|---|---|
| 身份自述 | +8 | "小白"、"宝妈"、"新手" |
| 知识求助 | +6 | "怎么买"、"在哪看"、"请教" |
| 决策依赖 | +7 | "该不该"、"要不要"、"还能买吗" |
| 情绪恐慌 | +5 | "亏麻了"、"好慌"、"心态崩了" |
| 跟风行为 | +6 | "听博主说"、"朋友推荐" |
| 过度乐观 | +4 | "梭哈"、"满仓干"、"稳赚" |
| 专业术语 | -5 | PE/PB/估值/溢价率(扣分项) |
60+ 关键词区分买入/卖出意图:
- 🟢 买入:上车、冲、加仓、买了、还能买吗、想买、心动...
- 🔴 卖出:割肉、止损、清仓、亏了、要不要走、跌麻了...
宝妈指数 = 小白占比×0.40 + 小白强度×0.25 + 情绪极端度×0.20 + 信号纯度×0.15
宝妈买入 = 买入小白占比×50 + 小白热度×30 + 买入强度×20
宝妈卖出 = 卖出小白占比×50 + 小白热度×30 + 卖出强度×20
- 四板块指数卡片(实时数值 + 买入/卖出子指标)
- 30天历史曲线(Chart.js)
- 今日典型小白帖(含推理过程)
- 暗色主题,响应式布局
collectors/anti_detection.py — 从 AIMail_Agent 项目搬过来的三件套:
| 能力 | 说明 |
|---|---|
| 请求头轮换 | 7个 Chrome/Edge UA 随机切换 + Sec-CH-UA 指纹头 |
| 人类延迟 | 高斯分布,每10次停5-15s,每50次停30-60s |
| 隐身脚本 | 8条 — webdriver/plugins/hardwareConcurrency 全部伪造 |
| Playwright 参数 | 20+ 启动参数隐藏自动化痕迹 |
- 股吧小白占比低:5-20% 是正常的,真正的小白信号需要小红书数据
- 关键词规则限制:非 LLM 语义理解,会漏掉隐含信号、误判部分 spam
- 缺少回测:尚未用历史行情数据验证指数与市场顶底的相关性
- 单日快照:一次采集只是一个数据点,需要持续运行积累
- 小红书稳定数据源(rnote.dev 充值 或 x-mcp 解风控)
- LLM 语义分类替换关键词规则
- 抖音/微博数据源扩展
- 定时自动采集(cron job)
- 每日宝妈指数自动推送(微信/Telegram)
- 回测验证:拿历史数据验证指数与市场顶底的相关性
- Python 3.14 + requests + playwright
- Chart.js 4.x + 原生 HTML/CSS
- 东方财富股吧 HTML 解析
- 小红书 rnote.dev API / x-mcp MCP 协议
MIT — 仅供学习研究,不构成投资建议。