3、情绪指标构建基础:文本情感分析(NLP基础)、成交量情绪指标、波动率情绪指标
各位同学,咱们今天聊点实在的。
情绪指标这东西,说白了就是把市场里那些看不见摸不着的「恐慌」和「贪婪」,变成一串能算的数字。我做了这么多年量化,最大的感触就是:价格会骗人,成交量会骗人,但情绪不会。你想想看,当所有人都慌不择路的时候,那个成交量曲线和波动率曲线,简直比心电图还诚实。
3.1 文本情感分析:NLP基础
先说说文本情感分析。嗯,这里要注意,很多人一上来就搞什么BERT、GPT,其实没必要。我个人习惯,先从最简单的做起。
核心思路:把新闻、股吧帖子、社交媒体上的文字,转化成「正面」「负面」「中性」三个标签。然后统计每天的正负面比例,这就是最原始的文本情绪指数。
关键点:不要追求100%准确。情绪指标要的是「趋势」,不是「精确值」。我在项目中遇到过,用简单词典法跑出来的情绪曲线,跟市场波动率的相关系数能达到0.6以上,够用了。
具体怎么做?我一般分三步:
- 数据清洗:去掉HTML标签、特殊符号、停用词。中文分词用jieba,简单粗暴。
- 情感词典构建:用现成的知网Hownet情感词典,或者自己标注。我建议用「金融领域情感词典」,网上有开源版本。
- 打分规则:正面词+1,负面词-1,中性词0。然后累加除以总词数,得到当天的情绪得分。
# 一个极简的文本情绪打分函数
def sentiment_score(text):
pos_words = ['利好', '突破', '增长', '抄底', '牛市']
neg_words = ['利空', '暴跌', '崩盘', '恐慌', '熊市']
score = 0
for word in pos_words:
if word in text:
score += 1
for word in neg_words:
if word in text:
score -= 1
return score
避坑指南:我曾经用通用情感词典去分析股市评论,结果「暴跌」被标成负面,「抄底」被标成正面。但实际在股吧里,「抄底」往往是套牢的开始。所以一定要用金融领域词典,或者自己微调。
3.2 成交量情绪指标
成交量这东西,我把它叫做「市场的体温计」。价格涨跌可以造假,但成交量不会。你想想看,如果某只股票连续三天缩量上涨,那大概率是庄家在自拉自唱,散户根本没跟。
核心指标:
| 指标名称 | 计算公式 | 含义 |
|---|---|---|
| 成交量比率(VR) | VR = (上涨日成交量之和) / (下跌日成交量之和) | VR > 1.5 表示情绪过热,VR < 0.5 表示情绪冰点 |
| 能量潮(OBV) | OBV = 前日OBV + 当日成交量 × 涨跌方向 | OBV与价格背离时,往往是反转信号 |
| 成交量加权平均价(VWAP) | VWAP = Σ(价格 × 成交量) / Σ成交量 | 价格在VWAP上方表示多头情绪强 |
我个人习惯用VR指标。为什么?因为它简单。你不需要什么复杂的数学,就看每天上涨和下跌时的成交量对比。如果连续5天VR > 2.0,那基本可以确定市场情绪已经进入「疯狂」阶段,这时候就该考虑减仓了。
注意:成交量情绪指标在「极端行情」下会失效。比如2015年股灾期间,VR指标连续多日低于0.3,但市场并没有立刻反弹,而是继续暴跌。这时候需要结合波动率指标一起看。
3.3 波动率情绪指标
波动率,说白了就是「市场的恐惧指数」。我经常跟团队说:价格是表象,波动率才是本质。为什么?因为当所有人都恐慌时,波动率会急剧放大;当所有人都麻木时,波动率会极度萎缩。
常用指标:
- 历史波动率(HV):过去N天的价格标准差。一般用20天或30天。
- 隐含波动率(IV):从期权价格反推出来的波动率。这个需要期权数据,门槛稍高。
- 波动率指数(VIX):标普500的隐含波动率,被称为「恐慌指数」。
嗯,这里要重点说一下历史波动率的计算。很多人直接用收盘价的标准差,这是不对的。正确的做法是用「对数收益率」的标准差:
import numpy as np
def historical_volatility(prices, window=20):
# 计算对数收益率
log_returns = np.log(prices[1:] / prices[:-1])
# 滚动标准差
hv = log_returns.rolling(window=window).std()
# 年化
return hv * np.sqrt(252)
实战经验:我习惯把波动率分成三个区间:
- HV < 15%:低波动,市场情绪麻木,适合做趋势策略
- 15% < HV < 30%:正常波动,情绪中性,适合做均值回归
- HV > 30%:高波动,情绪恐慌,适合做反转策略
为什么会这样?你想想看,当波动率很低的时候,说明市场没有方向,大家都在观望。这时候一旦出现趋势,往往能持续很久。而当波动率很高的时候,说明多空分歧巨大,这时候追涨杀跌很容易被两边打脸。
3.4 三种情绪指标的融合
单独看一个指标,就像盲人摸象。我个人习惯把文本情绪、成交量情绪、波动率情绪结合起来,构建一个「综合情绪指数」。
下面这张图,就是这三种指标的关系框架:
具体怎么融合?我常用的方法有两种:
- 等权加权:三个指标各占1/3,简单粗暴。适合快速验证。
- 动态加权:根据近期表现,给表现好的指标更高权重。比如最近波动率情绪更准,就给它50%权重。
一个小技巧:我习惯在融合之前,先把三个指标都做「归一化」处理,让它们都在0到1之间。这样就不会因为量纲不同导致某个指标被淹没。
好了,这一章的内容就到这里。文本情感、成交量、波动率,这三个工具你拿好了,后面咱们就要开始调参实战了。记住,情绪指标不是万能的,但没有情绪指标是万万不能的。