增加智瞰龙虎板块

This commit is contained in:
oficcejo
2025-10-17 19:26:13 +08:00
parent b127ffe60d
commit 18b63dd9c9
5 changed files with 1133 additions and 8 deletions
+9
View File
@@ -6,6 +6,7 @@
from longhubang_data import LonghubangDataFetcher
from longhubang_db import LonghubangDatabase
from longhubang_agents import LonghubangAgents
from longhubang_scoring import LonghubangScoring
from typing import Dict, Any, List
from datetime import datetime, timedelta
import time
@@ -25,6 +26,7 @@ class LonghubangEngine:
self.data_fetcher = LonghubangDataFetcher()
self.database = LonghubangDatabase(db_path)
self.agents = LonghubangAgents(model=model)
self.scoring = LonghubangScoring()
print(f"[智瞰龙虎] 分析引擎初始化完成")
def run_comprehensive_analysis(self, date=None, days=1) -> Dict[str, Any]:
@@ -89,6 +91,13 @@ class LonghubangEngine:
}
print(f"✓ 数据统计完成")
# 阶段3.5: AI智能评分排名
print("\n[阶段3.5] AI智能评分排名...")
print("-" * 60)
scoring_df = self.scoring.score_all_stocks(data_list)
results["scoring_ranking"] = scoring_df
print(f"✓ 完成 {len(scoring_df)} 只股票的智能评分排名")
# 阶段4: AI分析师团队分析
print("\n[阶段4] AI分析师团队工作中...")
print("-" * 60)
+582
View File
@@ -0,0 +1,582 @@
"""
智瞰龙虎AI智能评分模块
对龙虎榜上榜股票进行综合评分排名
"""
import pandas as pd
from typing import Dict, List
from collections import Counter
class LonghubangScoring:
"""龙虎榜股票智能评分系统"""
def __init__(self):
"""初始化评分系统"""
# 顶级游资名单(根据市场知名度和历史战绩)
self.top_youzi = [
'赵老哥', '章盟主', '92科比', '瑞鹤仙', '小鳄鱼',
'养家心法', '欢乐海岸', '古北路', '成都系', '佛山系',
'方新侠', '乔帮主', '淮海路', '东方财富',
'国信深圳', '华泰深圳', '中信杭州', '招商深圳'
]
# 知名游资(次一级)
self.famous_youzi = [
'深股通', '沪股通', '北向资金',
'中金公司', '中信证券', '国泰君安', '海通证券',
'广发证券', '华泰证券', '招商证券'
]
# 机构关键词
self.institution_keywords = [
'机构专用', '机构', '基金', '保险', '社保',
'QFII', 'RQFII', '券商', '信托'
]
print("[智瞰龙虎] 评分系统初始化完成")
def calculate_stock_score(self, stock_data: List[Dict]) -> float:
"""
计算单个股票的综合评分
Args:
stock_data: 该股票的所有龙虎榜记录
Returns:
综合评分 (0-100分)
"""
if not stock_data:
return 0.0
# 1. 买入资金含金量评分 (0-30分)
capital_quality_score = self._calculate_capital_quality(stock_data)
# 2. 净买入额评分 (0-25分)
net_inflow_score = self._calculate_net_inflow_score(stock_data)
# 3. 卖出压力评分 (0-20分)
sell_pressure_score = self._calculate_sell_pressure_score(stock_data)
# 4. 机构共振评分 (0-15分)
institution_score = self._calculate_institution_score(stock_data)
# 5. 其他加分项 (0-10分)
bonus_score = self._calculate_bonus_score(stock_data)
# 综合评分
total_score = (
capital_quality_score +
net_inflow_score +
sell_pressure_score +
institution_score +
bonus_score
)
return round(total_score, 1)
def _calculate_capital_quality(self, stock_data: List[Dict]) -> float:
"""
计算买入资金含金量评分 (0-30分)
顶级游资加分多,普通游资加分少
"""
score = 0.0
max_score = 30.0
buyers = []
for record in stock_data:
buy_amount = record.get('买入金额', 0) or record.get('mrje', 0)
# 确保转换为数值类型
try:
buy_amount = float(buy_amount) if buy_amount else 0
except (ValueError, TypeError):
buy_amount = 0
if buy_amount > 0:
youzi_name = record.get('游资名称', '') or record.get('yzmc', '')
yingye_bu = record.get('营业部', '') or record.get('yyb', '')
buyers.append({
'name': youzi_name,
'yingye_bu': yingye_bu,
'amount': float(buy_amount)
})
if not buyers:
return 0.0
# 顶级游资:每个加8-10分
top_youzi_count = 0
for buyer in buyers:
for top in self.top_youzi:
if top in buyer['name'] or top in buyer['yingye_bu']:
top_youzi_count += 1
score += 10.0
break
# 知名游资:每个加4-6分
famous_youzi_count = 0
for buyer in buyers:
is_top = any(top in buyer['name'] or top in buyer['yingye_bu']
for top in self.top_youzi)
if not is_top:
for famous in self.famous_youzi:
if famous in buyer['name'] or famous in buyer['yingye_bu']:
famous_youzi_count += 1
score += 5.0
break
# 普通游资:每个加1-2分
ordinary_count = len(buyers) - top_youzi_count - famous_youzi_count
score += ordinary_count * 1.5
# 限制最高分
return min(score, max_score)
def _calculate_net_inflow_score(self, stock_data: List[Dict]) -> float:
"""
计算净买入额评分 (0-25分)
真金白银越多分数越高
"""
max_score = 25.0
# 计算总净流入
total_net_inflow = 0.0
for record in stock_data:
net_inflow = record.get('净流入金额', 0) or record.get('jlrje', 0)
try:
net_inflow = float(net_inflow) if net_inflow else 0
total_net_inflow += net_inflow
except (ValueError, TypeError):
pass
if total_net_inflow <= 0:
return 0.0
# 净流入分段评分
# 1000万以下:0-10分
# 1000-5000万:10-18分
# 5000万-1亿:18-22分
# 1亿以上:22-25分
net_inflow_wan = total_net_inflow / 10000 # 转换为万元
if net_inflow_wan < 1000:
score = (net_inflow_wan / 1000) * 10
elif net_inflow_wan < 5000:
score = 10 + ((net_inflow_wan - 1000) / 4000) * 8
elif net_inflow_wan < 10000:
score = 18 + ((net_inflow_wan - 5000) / 5000) * 4
else:
score = 22 + min((net_inflow_wan - 10000) / 10000, 1) * 3
return min(score, max_score)
def _calculate_sell_pressure_score(self, stock_data: List[Dict]) -> float:
"""
计算卖出压力评分 (0-20分)
卖出压力越小分数越高
"""
max_score = 20.0
total_buy = 0.0
total_sell = 0.0
for record in stock_data:
buy_amount = record.get('买入金额', 0) or record.get('mrje', 0)
sell_amount = record.get('卖出金额', 0) or record.get('mcje', 0)
try:
buy_amount = float(buy_amount) if buy_amount else 0
total_buy += buy_amount
except (ValueError, TypeError):
pass
try:
sell_amount = float(sell_amount) if sell_amount else 0
total_sell += sell_amount
except (ValueError, TypeError):
pass
if total_buy == 0:
return 0.0
# 计算卖出比例
sell_ratio = total_sell / total_buy if total_buy > 0 else 1.0
# 卖出压力评分
# 卖出比例0-10%20分
# 卖出比例10-30%15-20分
# 卖出比例30-50%10-15分
# 卖出比例50-80%5-10分
# 卖出比例80%以上:0-5分
if sell_ratio < 0.1:
score = 20.0
elif sell_ratio < 0.3:
score = 20.0 - (sell_ratio - 0.1) / 0.2 * 5
elif sell_ratio < 0.5:
score = 15.0 - (sell_ratio - 0.3) / 0.2 * 5
elif sell_ratio < 0.8:
score = 10.0 - (sell_ratio - 0.5) / 0.3 * 5
else:
score = 5.0 - min(sell_ratio - 0.8, 0.2) / 0.2 * 5
return max(0, min(score, max_score))
def _calculate_institution_score(self, stock_data: List[Dict]) -> float:
"""
计算机构共振评分 (0-15分)
机构+游资共振最高分
"""
max_score = 15.0
has_institution = False
has_youzi = False
institution_count = 0
youzi_count = 0
for record in stock_data:
buy_amount = record.get('买入金额', 0) or record.get('mrje', 0)
try:
buy_amount = float(buy_amount) if buy_amount else 0
except (ValueError, TypeError):
buy_amount = 0
if buy_amount <= 0:
continue
youzi_name = record.get('游资名称', '') or record.get('yzmc', '')
yingye_bu = record.get('营业部', '') or record.get('yyb', '')
# 检查是否是机构
if any(keyword in youzi_name or keyword in yingye_bu
for keyword in self.institution_keywords):
has_institution = True
institution_count += 1
else:
has_youzi = True
youzi_count += 1
# 评分逻辑
if has_institution and has_youzi:
# 机构+游资共振:最高分
score = 15.0
elif has_institution:
# 仅机构:8-12分
score = min(8 + institution_count * 2, 12)
elif has_youzi:
# 仅游资:5-10分
score = min(5 + youzi_count * 1, 10)
else:
score = 0.0
return min(score, max_score)
def _calculate_bonus_score(self, stock_data: List[Dict]) -> float:
"""
计算其他加分项 (0-10分)
买卖比例、主力集中度、热门概念等
"""
max_score = 10.0
score = 0.0
if not stock_data:
return 0.0
# 1. 主力集中度加分 (0-3分)
# 如果资金集中在少数几个席位,说明主力信心强
seat_count = len(stock_data)
if seat_count == 1:
score += 3.0
elif seat_count == 2:
score += 2.5
elif seat_count == 3:
score += 2.0
elif seat_count <= 5:
score += 1.5
else:
score += 1.0
# 2. 热门概念加分 (0-3分)
all_concepts = []
for record in stock_data:
concepts = record.get('概念', '') or record.get('gl', '')
if concepts:
all_concepts.extend([c.strip() for c in str(concepts).split(',')])
hot_keywords = [
'人工智能', 'AI', 'ChatGPT', '算力', '新能源', '芯片', '半导体',
'军工', '医药', '消费', '5G', '新材料', '量子', '光伏',
'储能', '锂电池', '汽车', '游戏', '传媒', '元宇宙'
]
concept_score = 0
for concept in all_concepts:
if any(keyword in concept for keyword in hot_keywords):
concept_score += 0.3
score += min(concept_score, 3.0)
# 3. 连续上榜加分 (0-2分)
# 这里简化处理,如果有多条记录可能表示连续上榜
if len(stock_data) >= 3:
score += 2.0
elif len(stock_data) == 2:
score += 1.0
# 4. 买卖比例优秀加分 (0-2分)
total_buy = 0.0
total_sell = 0.0
for r in stock_data:
try:
buy = float(r.get('买入金额', 0) or r.get('mrje', 0) or 0)
total_buy += buy
except (ValueError, TypeError):
pass
try:
sell = float(r.get('卖出金额', 0) or r.get('mcje', 0) or 0)
total_sell += sell
except (ValueError, TypeError):
pass
if total_buy > 0:
buy_sell_ratio = total_buy / (total_sell + 1)
if buy_sell_ratio >= 10:
score += 2.0
elif buy_sell_ratio >= 5:
score += 1.5
elif buy_sell_ratio >= 3:
score += 1.0
return min(score, max_score)
def score_all_stocks(self, data_list: List[Dict]) -> pd.DataFrame:
"""
对所有上榜股票进行评分排名
Args:
data_list: 龙虎榜数据列表
Returns:
评分排名DataFrame
"""
if not data_list:
return pd.DataFrame()
# 按股票代码分组
stocks_dict = {}
for record in data_list:
code = record.get('股票代码') or record.get('gpdm')
name = record.get('股票名称') or record.get('gpmc')
if not code:
continue
if code not in stocks_dict:
stocks_dict[code] = {
'code': code,
'name': name,
'records': []
}
stocks_dict[code]['records'].append(record)
# 计算每只股票的评分
results = []
for code, stock_info in stocks_dict.items():
records = stock_info['records']
# 计算各维度评分
capital_quality = self._calculate_capital_quality(records)
net_inflow = self._calculate_net_inflow_score(records)
sell_pressure = self._calculate_sell_pressure_score(records)
institution = self._calculate_institution_score(records)
bonus = self._calculate_bonus_score(records)
total_score = capital_quality + net_inflow + sell_pressure + institution + bonus
# 计算实际数据(安全转换)
total_buy = 0.0
total_sell = 0.0
total_net = 0.0
for r in records:
try:
buy = float(r.get('买入金额', 0) or r.get('mrje', 0) or 0)
total_buy += buy
except (ValueError, TypeError):
pass
try:
sell = float(r.get('卖出金额', 0) or r.get('mcje', 0) or 0)
total_sell += sell
except (ValueError, TypeError):
pass
try:
net = float(r.get('净流入金额', 0) or r.get('jlrje', 0) or 0)
total_net += net
except (ValueError, TypeError):
pass
# 统计买入席位数(安全比较)
buy_seats = 0
for r in records:
try:
buy = float(r.get('买入金额', 0) or r.get('mrje', 0) or 0)
if buy > 0:
buy_seats += 1
except (ValueError, TypeError):
pass
# 统计机构数量
institution_count = sum(1 for r in records
if any(kw in (r.get('游资名称', '') or r.get('yzmc', '')) or
kw in (r.get('营业部', '') or r.get('yyb', ''))
for kw in self.institution_keywords))
# 获取概念
concepts_list = []
for r in records:
concepts = r.get('概念', '') or r.get('gl', '')
if concepts:
concepts_list.extend([c.strip() for c in str(concepts).split(',')])
top_concepts = Counter(concepts_list).most_common(3)
concept_str = ','.join([c[0] for c in top_concepts]) if top_concepts else ''
# 判断机构参与
has_institution = institution_count > 0
results.append({
'排名': 0, # 稍后填充
'股票名称': stock_info['name'],
'股票代码': code,
'综合评分': round(total_score, 1),
'资金含金量': round(capital_quality, 0),
'净买入额': round(net_inflow, 0),
'卖出压力': round(sell_pressure, 0),
'机构共振': round(institution, 0),
'加分项': round(bonus, 0),
'顶级游资': self._count_top_youzi(records),
'买方数': buy_seats,
'机构参与': '' if has_institution else '',
'净流入': round(total_net, 2)
})
# 转换为DataFrame并排序
df = pd.DataFrame(results)
if df.empty:
return df
df = df.sort_values('综合评分', ascending=False).reset_index(drop=True)
df['排名'] = range(1, len(df) + 1)
# 添加奖牌
if len(df) >= 1:
df.loc[0, '排名'] = '🥇 1'
if len(df) >= 2:
df.loc[1, '排名'] = '🥈 2'
if len(df) >= 3:
df.loc[2, '排名'] = '🥉 3'
return df
def _count_top_youzi(self, records: List[Dict]) -> int:
"""统计顶级游资数量"""
count = 0
for record in records:
buy_amount = record.get('买入金额', 0) or record.get('mrje', 0)
try:
buy_amount = float(buy_amount) if buy_amount else 0
except (ValueError, TypeError):
buy_amount = 0
if buy_amount <= 0:
continue
youzi_name = record.get('游资名称', '') or record.get('yzmc', '')
yingye_bu = record.get('营业部', '') or record.get('yyb', '')
if any(top in youzi_name or top in yingye_bu for top in self.top_youzi):
count += 1
return count
def get_score_explanation(self) -> str:
"""获取评分维度说明"""
explanation = """
【AI智能评分维度说明】
📊 总分100分,由5个维度组成:
1️⃣ 买入资金含金量 (0-30分)
- 顶级游资(赵老哥、章盟主等):每个+10分
- 知名游资(深股通、中信等):每个+5分
- 普通游资:每个+1.5分
2️⃣ 净买入额评分 (0-25分)
- 净流入1000万以下:0-10分
- 净流入1000-5000万:10-18分
- 净流入5000万-1亿:18-22分
- 净流入1亿以上:22-25分
3️⃣ 卖出压力评分 (0-20分)
- 卖出比例0-10%20分(压力极小)
- 卖出比例10-30%15-20分(压力较小)
- 卖出比例30-50%10-15分(压力中等)
- 卖出比例50-80%5-10分(压力较大)
- 卖出比例80%以上:0-5分(压力极大)
4️⃣ 机构共振评分 (0-15分)
- 机构+游资共振:15分(最强信号)
- 仅机构买入:8-12分
- 仅游资买入:5-10分
5️⃣ 其他加分项 (0-10分)
- 主力集中度:席位越少越集中,+1-3分
- 热门概念:AI、新能源、芯片等,+0-3分
- 连续上榜:连续多日上榜,+0-2分
- 买卖比例优秀:买入远大于卖出,+0-2分
💡 评分越高,表示该股票受到资金青睐程度越高,
但仍需结合市场环境、技术面等因素综合判断!
"""
return explanation
# 测试函数
if __name__ == "__main__":
print("=" * 60)
print("测试智瞰龙虎评分系统")
print("=" * 60)
# 创建测试数据
test_data = [
{
'股票代码': '001337',
'股票名称': '四川黄金',
'游资名称': '92科比',
'营业部': '兴业证券股份有限公司南京天元东路证券营业部',
'买入金额': 14470401,
'卖出金额': 15080,
'净流入金额': 14455321,
'概念': '贵金属,黄金概念,次新股'
},
{
'股票代码': '001337',
'股票名称': '四川黄金',
'游资名称': '赵老哥',
'营业部': '某证券公司',
'买入金额': 10000000,
'卖出金额': 0,
'净流入金额': 10000000,
'概念': '贵金属,黄金概念'
}
]
scoring = LonghubangScoring()
# 测试评分
df_result = scoring.score_all_stocks(test_data)
print("\n评分结果:")
print(df_result)
print("\n" + scoring.get_score_explanation())
+196 -4
View File
@@ -250,7 +250,8 @@ def display_analysis_results(result):
st.markdown("---")
# 创建子标签页
tab1, tab2, tab3, tab4 = st.tabs([
tab1, tab2, tab3, tab4, tab5 = st.tabs([
"🏆 AI评分排名",
"🎯 推荐股票",
"🤖 AI分析师报告",
"📊 数据详情",
@@ -258,18 +259,209 @@ def display_analysis_results(result):
])
with tab1:
display_recommended_stocks(result)
display_scoring_ranking(result)
with tab2:
display_agents_reports(result)
display_recommended_stocks(result)
with tab3:
display_data_details(result)
display_agents_reports(result)
with tab4:
display_data_details(result)
with tab5:
display_visualizations(result)
def display_scoring_ranking(result):
"""显示AI智能评分排名"""
st.subheader("🏆 AI智能评分排名")
scoring_df = result.get('scoring_ranking')
if scoring_df is None or (hasattr(scoring_df, 'empty') and scoring_df.empty):
st.warning("暂无评分数据")
return
# 评分说明
with st.expander("📖 评分维度说明", expanded=False):
st.markdown("""
### 📊 AI智能评分体系 (总分100分)
#### 1️⃣ 买入资金含金量 (0-30分)
- **顶级游资**(赵老哥、章盟主、92科比等):每个 +10分
- **知名游资**(深股通、中信证券等):每个 +5分
- **普通游资**:每个 +1.5分
#### 2️⃣ 净买入额评分 (0-25分)
- 净流入 < 1000万:0-10分
- 净流入 1000-5000万:10-18分
- 净流入 5000万-1亿:18-22分
- 净流入 > 1亿:22-25分
#### 3️⃣ 卖出压力评分 (0-20分)
- 卖出比例 0-10%20分 ✨(压力极小)
- 卖出比例 10-30%15-20分(压力较小)
- 卖出比例 30-50%10-15分(压力中等)
- 卖出比例 50-80%5-10分(压力较大)
- 卖出比例 > 80%0-5分(压力极大)
#### 4️⃣ 机构共振评分 (0-15分)
- **机构+游资共振**:15分 ⭐(最强信号)
- 仅机构买入:8-12分
- 仅游资买入:5-10分
#### 5️⃣ 其他加分项 (0-10分)
- **主力集中度**:席位越少越集中 (+1-3分)
- **热门概念**:AI、新能源、芯片等 (+0-3分)
- **连续上榜**:连续多日上榜 (+0-2分)
- **买卖比例优秀**:买入远大于卖出 (+0-2分)
---
💡 **评分越高,表示该股票受到资金青睐程度越高!**
⚠️ **但仍需结合市场环境、技术面等因素综合判断!**
""")
st.markdown("---")
# 显示TOP10评分表格
st.markdown("### 🥇 TOP10 综合评分排名")
top10_df = scoring_df.head(10).copy()
# 格式化显示
st.dataframe(
top10_df,
column_config={
"排名": st.column_config.TextColumn("排名", width="small"),
"股票名称": st.column_config.TextColumn("股票名称", width="medium"),
"股票代码": st.column_config.TextColumn("代码", width="small"),
"综合评分": st.column_config.NumberColumn(
"综合评分",
format="%.1f",
help="总分100分"
),
"资金含金量": st.column_config.ProgressColumn(
"资金含金量",
format="%d",
min_value=0,
max_value=30
),
"净买入额": st.column_config.ProgressColumn(
"净买入额",
format="%d",
min_value=0,
max_value=25
),
"卖出压力": st.column_config.ProgressColumn(
"卖出压力",
format="%d",
min_value=0,
max_value=20
),
"机构共振": st.column_config.ProgressColumn(
"机构共振",
format="%d",
min_value=0,
max_value=15
),
"加分项": st.column_config.ProgressColumn(
"加分项",
format="%d",
min_value=0,
max_value=10
),
"顶级游资": st.column_config.NumberColumn("顶级游资", format="%d"),
"买方数": st.column_config.NumberColumn("买方数", format="%d"),
"机构参与": st.column_config.TextColumn("机构参与"),
"净流入": st.column_config.NumberColumn("净流入(元)", format="%.2f")
},
hide_index=True,
use_container_width=True
)
st.markdown("---")
# 评分分布图表
st.markdown("### 📊 评分分布可视化")
col1, col2 = st.columns(2)
with col1:
# 综合评分柱状图
fig1 = px.bar(
top10_df,
x='股票名称',
y='综合评分',
title='TOP10 综合评分对比',
text='综合评分',
color='综合评分',
color_continuous_scale='RdYlGn'
)
fig1.update_traces(texttemplate='%{text:.1f}', textposition='outside')
fig1.update_layout(
xaxis_tickangle=-45,
showlegend=False,
height=400
)
st.plotly_chart(fig1, use_container_width=True)
with col2:
# 五维评分雷达图(显示第一名)
if len(top10_df) > 0:
first_place = top10_df.iloc[0]
fig2 = go.Figure(data=go.Scatterpolar(
r=[
first_place['资金含金量'] / 30 * 100,
first_place['净买入额'] / 25 * 100,
first_place['卖出压力'] / 20 * 100,
first_place['机构共振'] / 15 * 100,
first_place['加分项'] / 10 * 100
],
theta=['资金含金量', '净买入额', '卖出压力', '机构共振', '加分项'],
fill='toself',
name=first_place['股票名称']
))
fig2.update_layout(
polar=dict(
radialaxis=dict(
visible=True,
range=[0, 100]
)
),
showlegend=True,
title=f"🥇 {first_place['股票名称']} 五维评分",
height=400
)
st.plotly_chart(fig2, use_container_width=True)
st.markdown("---")
# 完整排名表格
st.markdown("### 📋 完整评分排名")
st.dataframe(
scoring_df,
column_config={
"排名": st.column_config.TextColumn("排名", width="small"),
"股票名称": st.column_config.TextColumn("股票名称"),
"股票代码": st.column_config.TextColumn("代码"),
"综合评分": st.column_config.NumberColumn("综合评分", format="%.1f"),
"顶级游资": st.column_config.NumberColumn("顶级游资", format="%d"),
"买方数": st.column_config.NumberColumn("买方数", format="%d"),
"机构参与": st.column_config.TextColumn("机构"),
"净流入": st.column_config.NumberColumn("净流入(元)", format="%.2f")
},
hide_index=True,
use_container_width=True
)
def display_recommended_stocks(result):
"""显示推荐股票"""
+322
View File
@@ -0,0 +1,322 @@
# 智瞰龙虎 AI智能评分系统说明
## 📊 评分体系概述
智瞰龙虎的AI智能评分系统对所有上榜股票进行100分制综合评分,从5个维度全面评估股票受资金青睐的程度。
## 🎯 五大评分维度
### 1️⃣ 买入资金含金量 (0-30分)
**评分规则**:根据买入游资的级别和数量加分
| 游资类型 | 单个加分 | 示例 |
|---------|---------|-----|
| **顶级游资** | +10分 | 赵老哥、章盟主、92科比、瑞鹤仙、小鳄鱼、养家心法、欢乐海岸、古北路、成都系、佛山系等 |
| **知名游资** | +5分 | 深股通、沪股通、北向资金、中金公司、中信证券、国泰君安、海通证券等 |
| **普通游资** | +1.5分 | 其他营业部席位 |
**计算逻辑**
```
资金含金量得分 = 顶级游资数量 × 10 + 知名游资数量 × 5 + 普通游资数量 × 1.5
(最高30分)
```
**实战意义**
- 顶级游资参与,表示该股得到顶尖短线高手认可
- 多个游资同时买入,形成合力,爆发力更强
- 游资级别越高,对标的的筛选越严格,成功率越高
---
### 2️⃣ 净买入额评分 (0-25分)
**评分规则**:根据净流入金额分段评分
| 净流入金额 | 得分范围 | 含义 |
|-----------|---------|------|
| < 1000万 | 0-10分 | 试探性买入 |
| 1000-5000万 | 10-18分 | 中等力度买入 |
| 5000万-1亿 | 18-22分 | 大力度买入 |
| > 1亿 | 22-25分 | 重仓买入,信心极强 |
**计算公式**
```python
if 净流入 < 1000:
得分 = (净流入 / 1000) × 10
elif 净流入 < 5000:
得分 = 10 + (净流入 - 1000) / 4000 × 8
elif 净流入 < 1亿:
得分 = 18 + (净流入 - 5000) / 5000 × 4
else:
得分 = 22 + min((净流入 - 1亿) / 1亿, 1) × 3
```
**实战意义**
- 真金白银越多,表示资金信心越足
- 大额净流入往往能推动股价强势上涨
- 需结合市值判断,小盘股千万级已算大额
---
### 3️⃣ 卖出压力评分 (0-20分)
**评分规则**:根据卖出/买入比例反向评分
| 卖出比例 | 得分 | 压力等级 | 实战意义 |
|---------|------|---------|---------|
| 0-10% | 20分 | 压力极小✨ | 几乎无卖出,主力高度一致看多 |
| 10-30% | 15-20分 | 压力较小 | 少量获利了结,整体向上 |
| 30-50% | 10-15分 | 压力中等 | 分歧开始加大,需谨慎 |
| 50-80% | 5-10分 | 压力较大 | 卖盘较重,可能是出货信号 |
| > 80% | 0-5分 | 压力极大⚠️ | 大概率是游资出货,避开 |
**计算公式**
```python
卖出比例 = 总卖出金额 / 总买入金额
if 卖出比例 < 0.1:
得分 = 20
elif 卖出比例 < 0.3:
得分 = 20 - (卖出比例 - 0.1) / 0.2 × 5
elif 卖出比例 < 0.5:
得分 = 15 - (卖出比例 - 0.3) / 0.2 × 5
elif 卖出比例 < 0.8:
得分 = 10 - (卖出比例 - 0.5) / 0.3 × 5
else:
得分 = 5 - min(卖出比例 - 0.8, 0.2) / 0.2 × 5
```
**实战意义**
- 卖出压力小,说明主力没有出货意图
- 压力大的股票可能是"一日游",风险高
- 次日开盘容易受卖盘打压
---
### 4️⃣ 机构共振评分 (0-15分)
**评分规则**:根据机构和游资的参与情况
| 参与情况 | 得分 | 市场意义 |
|---------|------|---------|
| **机构+游资共振** | 15分⭐ | 最强信号!短线+中线资金共振 |
| 仅机构买入 | 8-12分 | 基本面支撑,中长期看好 |
| 仅游资买入 | 5-10分 | 短线炒作,波动性大 |
| 无明显主力 | 0分 | 散户行为,不确定性高 |
**机构识别关键词**
- 机构专用、机构、基金、保险、社保
- QFII、RQFII、券商、信托
**计算逻辑**
```python
if 有机构 and 有游资:
得分 = 15 # 机构游资共振,最高分
elif 有机构:
得分 = min(8 + 机构数量 × 2, 12)
elif 有游资:
得分 = min(5 + 游资数量 × 1, 10)
else:
得分 = 0
```
**实战意义**
- 机构+游资共振,表示短中长期逻辑都得到认可
- 纯游资炒作波动大,适合短线
- 纯机构买入偏稳健,适合中长线
---
### 5️⃣ 其他加分项 (0-10分)
**评分细则**
#### A. 主力集中度加分 (0-3分)
```
席位数1个:+3分(高度集中,主力控盘强)
席位数2个:+2.5分
席位数3个:+2分
席位数4-5个:+1.5分
席位数>5个:+1分(资金分散)
```
#### B. 热门概念加分 (0-3分)
```
热门概念关键词:
- AI、ChatGPT、算力、人工智能
- 新能源、芯片、半导体、光伏
- 军工、医药、5G、新材料
- 锂电池、储能、元宇宙、游戏等
每出现1个热门概念:+0.3分
最高3分
```
#### C. 连续上榜加分 (0-2分)
```
单日上榜:+0分
连续2日:+1分
连续3日及以上:+2分
```
#### D. 买卖比例优秀加分 (0-2分)
```
买入 / 卖出 ≥ 10倍:+2分(几乎无卖盘)
买入 / 卖出 ≥ 5倍:+1.5分
买入 / 卖出 ≥ 3倍:+1分
买入 / 卖出 < 3倍:+0分
```
**实战意义**
- 主力集中度高,控盘能力强,易拉升
- 热门概念有题材支撑,容易受市场追捧
- 连续上榜说明持续受关注
- 买卖比例优秀说明一致性强
---
## 📈 综合评分解读
### 评分等级划分
| 分数区间 | 等级 | 市场意义 | 操作建议 |
|---------|------|---------|---------|
| **80-100分** | S级优秀⭐⭐⭐ | 顶级游资+大额净流入+无压力 | 重点关注,优先配置 |
| **70-79分** | A级良好⭐⭐ | 资金认可度高,确定性强 | 积极跟进,适量配置 |
| **60-69分** | B级中等⭐ | 有一定机会,需结合其他因素 | 谨慎参与,小仓位 |
| **50-59分** | C级一般 | 优势不明显,不确定性较大 | 观望为主 |
| **< 50分** | D级较差 | 资金认可度低或压力大 | 避免参与 |
### 高分股票特征
**90分以上股票通常具备**
1. ✅ 2个以上顶级游资参与
2. ✅ 净流入5000万以上
3. ✅ 卖出压力<10%
4. ✅ 机构+游资共振
5. ✅ 热门概念+主力集中
**这类股票次日大概率继续上涨!**
### 低分股票特征
**50分以下股票通常存在**
1. ❌ 无知名游资参与
2. ❌ 净流入金额小
3. ❌ 卖出压力大(>50%
4. ❌ 无机构参与
5. ❌ 资金分散,无热点
**这类股票建议规避!**
---
## 💡 使用建议
### 1. 重点关注TOP10
- 评分排名前10的股票,是资金最认可的标的
- 🥇🥈🥉 前三名是重中之重
### 2. 结合其他指标
AI评分虽然全面,但仍需结合:
- ✅ 技术面:股价位置、技术形态
- ✅ 市场环境:大盘走势、板块轮动
- ✅ 基本面:公司质地、业绩情况
- ✅ 情绪面:市场氛围、题材热度
### 3. 仓位管理
根据评分等级配置仓位:
```
S级(80-100分):可配置30-40%
A级(70-79分):可配置20-30%
B级(60-69分):可配置10-15%
C级及以下:不建议参与
```
### 4. 止损纪律
无论评分多高,都要设置止损:
- 建议止损位:-5%至-8%
- 跌破重要支撑位果断止损
- 题材退潮及时离场
### 5. 最佳操作时间
- **分析时间**:交易日晚上18:00-21:00
- **决策时间**:当晚复盘,制定次日计划
- **操作时间**:次日开盘后5-15分钟观察再介入
---
## ⚠️ 风险提示
1. **AI评分≠必涨承诺**
- 评分只是综合评估,不保证一定上涨
- 市场有不确定性,需独立判断
2. **龙虎榜数据滞后**
- 龙虎榜为T日数据,次日才公布
- 隔日跟随存在时间差
3. **游资操作灵活**
- 游资可能"一日游"后快速撤离
- 高分股票也可能次日分歧
4. **市场环境影响**
- 大盘暴跌时,再高分也难涨
- 题材退潮时,及时止损
5. **严格风险控制**
- 务必设置止损位
- 不要满仓单只股票
- 理性投资,控制情绪
---
## 📚 案例分析
### 案例1:S级高分股票(90分)
**股票特征**
- 买入资金含金量:28分(3个顶级游资)
- 净买入额:24分(净流入1.5亿)
- 卖出压力:20分(几乎无卖出)
- 机构共振:15分(机构+游资)
- 加分项:3分(AI概念+主力集中)
**次日表现**:高开3%,盘中最高涨8%
**启示**:高分股票确定性强,可积极参与
---
### 案例2:C级低分股票(55分)
**股票特征**
- 买入资金含金量:12分(普通游资)
- 净买入额:15分(净流入3000万)
- 卖出压力:8分(卖出压力大)
- 机构共振:10分(仅游资)
- 加分项:10分(热门概念多)
**次日表现**:低开-2%,全天震荡走弱
**启示**:卖出压力大的股票,即使有热点也要谨慎
---
## 🎓 总结
智瞰龙虎的AI智能评分系统,通过5个维度、100分制,全面量化评估龙虎榜股票的投资价值。
**优点**
- 客观量化,避免主观判断
- 多维度评估,更加全面
- 排名清晰,一目了然
⚠️ **注意**
- 评分是辅助工具,不是投资建议
- 需结合市场环境和技术面
- 严格风险控制,理性投资
**记住:市场有风险,投资需谨慎!** 🎯
+24 -4
View File
@@ -47,25 +47,41 @@
## 📊 主要功能
### 1. 龙虎榜综合分析
### 1. AI智能评分排名 ⭐ 核心功能
- **多维度评分**: 对所有上榜股票进行100分制综合评分
- **五大评分维度**:
- 买入资金含金量 (0-30分):顶级游资加分多
- 净买入额评分 (0-25分):真金白银越多分数越高
- 卖出压力评分 (0-20分):压力越小分数越高
- 机构共振评分 (0-15分):机构+游资共振最高分
- 其他加分项 (0-10分):买卖比例、主力集中度、热门概念等
- **排名展示**: TOP10排名,🥇🥈🥉奖牌标识
- **可视化图表**:
- 综合评分柱状图
- 五维雷达图(第一名)
- 进度条显示各维度得分
- **完整数据**: 显示所有上榜股票的评分排名
### 2. 龙虎榜综合分析
- **指定日期分析**: 分析特定日期的龙虎榜数据
- **最近N天分析**: 分析最近几天的数据(1-10天)
- **AI多维度分析**: 5位分析师从不同角度深度分析
- **推荐股票清单**: 自动筛选次日大概率上涨的股票
### 2. 数据可视化
### 3. 数据可视化
- **AI评分排名图表**: 综合评分柱状图、五维雷达图
- **资金净流入图表**: TOP20股票资金流向
- **热门概念分布**: 概念出现频次统计
- **活跃游资排名**: 游资净流入排行
- **详细数据表格**: 完整的龙虎榜数据展示
### 3. 历史记录管理
### 4. 历史记录管理
- **自动存储**: 所有龙虎榜数据自动保存到数据库
- **历史报告**: 查看历史分析报告
- **数据统计**: 统计总记录数、股票数、游资数
- **趋势分析**: 分析历史活跃游资和热门股票
### 4. PDF报告生成
### 5. PDF报告生成
- **专业报告**: 生成完整的PDF分析报告
- **包含内容**:
- 数据概况统计
@@ -100,6 +116,10 @@ streamlit run app.py
6. 保存分析报告
### 5. 查看结果
- **🏆 AI评分排名**: 查看智能评分排名和图表(首选)
- TOP10综合评分排名表
- 评分柱状图和雷达图
- 完整排名列表
- **🎯 推荐股票**: 查看AI筛选的潜力股
- **🤖 AI分析师报告**: 查看5位分析师的详细分析
- **📊 数据详情**: 查看龙虎榜原始数据