【Python量化实战全攻略 #22】涨跌停、连板情绪手册:情绪指标构建(附代码)
摘要:【Python量化实战全攻略 #22】涨跌停、连板情绪手册:情绪指标构建(附代码) 手册定位:模块三第 6 篇。市场情绪是择时的「温度表」——涨停数量多、连板高度高代表风险偏好强;反之恐慌。本篇讲用涨跌停/连板数据构
手册定位:模块三第 6 篇。市场情绪是择时的「温度表」——涨停数量多、连板高度高代表风险偏好强;反之恐慌。本篇讲用涨跌停/连板数据构建情绪指标。
数据来源复用 #01 涨跌股池(/hs/pool/ztgc/{date}、/hs/pool/dtgc/{date})+ #02 历史K线。
1. 你将得到什么
- 每日涨停数、跌停数、连板高度的取数;
- 情绪温度指数(涨停/跌停比 + 连板高度归一)的构建;
- 用情绪指标做「冰点买入、沸点减仓」的反向择时;
- 情绪指标的 4 个坑(牛熊基准不同、一字板、新股、样本偏差)。
2. 取数约定(复用)
| 信号 | 来源端点 | 见 |
|---|---|---|
| 涨停股池 | /hs/pool/ztgc/{日期} |
#01 |
| 跌停股池 | /hs/pool/dtgc/{日期} |
#01 |
3. 数据来源(复用,不重复罗列)
详见 #01 实时行情接口手册(涨跌股池 /hs/pool/*)。
4. 核心模板函数(自包含可跑)
import pandas as pd
import numpy as np
_MOCK = True
def sentiment_index(zt_count, dt_count, max_board, window=20):
ratio = zt_count / max(dt_count, 1)
r_norm = np.log1p(ratio) / (np.log1p(ratio) + 1)
b_norm = min(max_board / 10.0, 1.0)
return 0.6 * r_norm + 0.4 * b_norm
def board_height_today(stocks_with_board):
return max((b for _, b in stocks_with_board), default=0)
def run_check():
temp = sentiment_index(80, 10, 7)
h = board_height_today([("600519", 1), ("000001", 7), ("600036", 3)])
assert 0 <= temp <= 1 and h == 7
print("校验通过 | 情绪温度=%.2f 最高连板=%d板" % (temp, h))
return temp
if __name__ == "__main__":
run_check()
5. 跑通示例
temp = run_check()
print("当前情绪:", "冰点-可考虑" if temp < 0.2 else ("沸点-注意风险" if temp > 0.8 else "中性"))
6. 坑与注意事项
- 牛熊基准不同:用滚动分位而非绝对值,避免牛市误判。
- 一字板:一字涨停无法买入,要区分「可参与涨停」与「一字板」。
- 新股/ST:新股连板、ST 涨跌幅不同,计入情绪要剔除或单独处理。
- 样本偏差:情绪指标只在有涨跌停制度的 A 股有效。
7. 小结与下一篇预告
情绪指标补上「市场温度」维度。下一篇讲多信号综合择时打分——把 #17–#22 所有择时信号加权合成。
下一篇预告:《【Python量化实战全攻略 #23】多信号综合择时打分手册:加权合成(附代码)》
8. 免责声明
本文为择时方法示例,演示数据为虚构,不构成投资建议。
关于数据来源:本文情绪指标所需的涨跌停股池接口来自智兔数服(www.zhituapi.com)官方文档(详见本系列 #01),覆盖 200+ 已验证路径,注册可领免费 token 做研究测试。
更多实战手册见技术博客:zhituapi.com/blog.html。
本系列《Python量化实战全攻略》共 32 篇,下一篇讲多信号综合择时。
想亲自试一下?免费获取证书