本文目录导读:

你说的“市场”是指哪个市场? 是股票、加密货币、外汇、商品期货,还是电商/招聘/房产等某个具体行业?不同市场的数据源、指标和判断逻辑完全不同,Python 案例也会完全不一样。
不过我可以先给你一个通用的 Python 分析框架,你套用自己的数据就能得出结论,核心思路是:用 Python 量化“多方力量 vs 空方力量”(或“热度上升 vs 下降”),再判断偏向哪一方。
通用判断框架
市场热度偏向通常从四个维度量化:
| 维度 | 多方信号 | 空方信号 | Python 常用工具 |
|---|---|---|---|
| 价格动量 | 上涨、均线多头 | 下跌、均线空头 | pandas, ta, talib |
| 成交量/资金 | 放量上涨、净流入 | 放量下跌、净流出 | pandas |
| 情绪/舆情 | 正面情绪占比高 | 负面情绪占比高 | snownlp, jieba, transformers |
| 广度/参与度 | 上涨家数多、搜索热度升 | 下跌家数多、热度降 | pandas, pytrends |
Python 案例:A股市场热度偏向判断
下面是一个可运行的示例(用模拟数据,换成真实数据即可):
import pandas as pd
import numpy as np
# 1. 假设你有一张日频数据表:日期、收盘价、成交量、上涨家数、下跌家数、资金净流入
# 这里用模拟数据演示
np.random.seed(42)
dates = pd.date_range("2024-01-01", periods=60)
df = pd.DataFrame({
"date": dates,
"close": 3000 + np.cumsum(np.random.randn(60) * 20),
"volume": np.random.randint(8000, 15000, 60),
"up_count": np.random.randint(1000, 3500, 60),
"down_count": np.random.randint(1000, 3500, 60),
"net_inflow": np.random.randn(60) * 50, # 亿元
})
# 2. 构造指标
df["ma5"] = df["close"].rolling(5).mean()
df["ma20"] = df["close"].rolling(20).mean()
df["momentum"] = df["close"].pct_change(5) # 5日动量
df["vol_ratio"] = df["volume"] / df["volume"].rolling(20).mean()
df["breadth"] = df["up_count"] / (df["up_count"] + df["down_count"]) # 上涨家数占比
# 3. 打分:每个维度给 +1(偏多)/ -1(偏空)/ 0(中性)
def score_row(r):
s = 0
s += 1 if r["ma5"] > r["ma20"] else -1 # 趋势
s += 1 if r["momentum"] > 0 else -1 # 动量
s += 1 if r["net_inflow"] > 0 else -1 # 资金
s += 1 if r["breadth"] > 0.5 else -1 # 广度
s += 1 if r["vol_ratio"] > 1 and r["momentum"] > 0 else (-1 if r["vol_ratio"] > 1 and r["momentum"] < 0 else 0) # 量价配合
return s
df["score"] = df.apply(score_row, axis=1)
# 4. 最新热度偏向
latest = df.iloc[-1]
print(f"最新综合得分: {latest['score']} (范围 -5 ~ +5)")
if latest["score"] >= 2:
print("→ 市场热度偏向【多方】")
elif latest["score"] <= -2:
print("→ 市场热度偏向【空方】")
else:
print("→ 市场热度【中性/分歧】")
# 5. 近20日得分趋势
print("\n近20日得分均值:", df["score"].tail(20).mean().round(2))
输出示例:
最新综合得分: 3 (范围 -5 ~ +5)
→ 市场热度偏向【多方】
近20日得分均值: 1.35
如果要加“情绪热度”,可以再加一段
from snownlp import SnowNLP
news = ["政策利好频出,市场信心恢复", "资金持续流出,观望情绪浓厚", "成交量放大,做多意愿增强"]
sent = [SnowNLP(t).sentiments for t in news] # 0~1,越接近1越正面
print("平均情绪分:", np.mean(sent))
# >0.6 偏多,<0.4 偏空
结论怎么下
把上面几个维度的得分汇总后:
- 得分 ≥ +2:热度偏向多方(趋势、资金、情绪、广度多数转好)
- 得分 ≤ -2:热度偏向空方
- -1 ~ +1:中性或分歧,不宜单边判断
关键提醒: 热度“偏向哪一方”是当下状态的描述,不等于未来涨跌预测;而且不同市场(A股/美股/币圈/行业)用的指标权重不一样,需要回测校准。
你告诉我具体是哪个市场、手头有什么数据(价格?成交量?舆情?搜索指数?),我可以把上面的案例改成直接能跑你数据的版本,并给出更明确的“偏多/偏空”判断逻辑。
版权声明:本站文章为原创整理,转载请注明出处。