问题描述
如何获取所有属于新能源汽车概念的股票列表?
解决方案
在聚宽(JoinQuant)平台中,获取属于“新能源汽车”概念的股票列表通常分为两步:
- 查找概念代码:使用
get_concepts()获取所有概念板块信息,找到“新能源汽车”对应的概念代码(Concept Code)。 - 获取成分股:使用
get_concept_stocks()根据找到的代码获取股票列表。
以下是完整的实现代码,您可以直接在聚宽的研究环境或回测中运行:
# -*- coding: utf-8 -*-
from jqdata import *
# 1. 获取所有概念板块列表
all_concepts = get_concepts()
# 2. 筛选出名称为 "新能源汽车" 的概念信息
# 注意:概念名称必须完全匹配,如果不确定具体名称,可以打印 all_concepts 查看
target_concept = all_concepts[all_concepts['name'] == '新能源汽车']
if not target_concept.empty:
# 获取概念代码 (index即为概念代码)
concept_code = target_concept.index[0]
concept_name = target_concept['name'][0]
print(f"找到概念: {concept_name}, 代码: {concept_code}")
# 3. 获取该概念下的所有股票代码
stock_list = get_concept_stocks(concept_code)
print(f"该概念下共有 {len(stock_list)} 只股票")
print("股票代码列表 (前10个):", stock_list[:10])
# (可选) 获取股票中文名称以便查看
stocks_info = get_all_securities(date=None).loc[stock_list]
print("\n股票详情示例:")
print(stocks_info[['display_name', 'name']].head())
else:
print("未找到名称为 '新能源汽车' 的概念板块,请检查名称是否正确。")
代码说明:
get_concepts(): 返回一个 DataFrame,索引(index)是概念代码(如GNxxx),列包含概念名称(name)和起始日期。get_concept_stocks(concept_code): 传入上一步获取的代码,返回一个包含股票代码(如000001.XSHE)的列表。get_all_securities(): 这是一个辅助步骤,用于将代码转换为中文名称(display_name),方便阅读。
提示:
如果您不确定概念的具体名称(例如是叫“新能源”还是“新能源车”),可以使用以下代码进行模糊搜索:
# 模糊搜索包含 "新能源" 的所有概念
search_result = all_concepts[all_concepts['name'].str.contains('新能源')]
print(search_result)