
前2天,星球同学问我,怎么获取指数成分股。 这里提供2种技术方案
先说一下,为什么获取指数成分股重要?
在开始实操之前,我们先明确一下它的应用场景,知其然,更知其所以然。
好了,明确了目标,我们直奔主题!
方法一:使用迅投 QMT (xtquant) —— 专业、稳定、功能强大
迅投QMT是一款面向专业投资者和机构的量化交易平台。其内置的xtquant(简称xt)库提供了非常丰富和稳定的金融数据接口,获取指数成分股及权重数据自然不在话下。 如果没有账户,需要申请qmt量化交易软件可以咨询我。
通过xtquant库的download_index_weight()函数下载指定指数的最新权重数据,然后使用get_index_weight()函数将其读取到本地进行分析。
这里提供下示例代码
# -*- coding: utf-8 -*-
from xtquant import xtdata
def get_main_index_stocks():
# 下载权重相关信息
xtdata.download_index_weight()
# 获取权重相关信息
ret_weight_data = xtdata.get_index_weight('000016.SH')
print(ret_weight_data)
# --- 主程序入口 ---
if __name__ == "__main__":
get_main_index_stocks()对于不想安装专业软件,或者只是偶尔需要获取数据的个人开发者或学生来说,利用公开的Web API是一个绝佳的选择。新浪财经长期以来提供了大量公开的金融数据接口,虽然是非官方的,但因其简单易用而广受欢迎。
通过Python的requests库,向新浪财经指定的URL发送一个HTTP GET请求,请求中包含我们想查询的指数代码,然后解析返回的JSON数据即可。
import requests
def zhishu_stock():
url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData"
params = {
'node': 'zhishu_000016'
}
response = requests.get(url, params=params)
data = response.json()
print(len(data))
for stock in data:
print(f"{stock['symbol']} {stock['name']} {stock['trade']}")
# --- 主程序入口 ---
if __name__ == "__main__":
zhishu_stock()如果我的分享对你投资有所帮助,不吝啬给个点赞关注呗。 这个号主要分享AI量化技术相关, 当天的灵感相关记录,相对比较杂。