【量化投资工具】抓取沪深股市所有指数关联的公募基金列表(含ETF
2020-05-14 本文已影响0人
结丹记事本儿
转载请注明公众号:结丹记事本儿,关注后获取更多懒人投资工具。
摘要
当我们看中某些个指数时,第一步就是挑选对应的指数基金,那么如何知道指数对应的ETF基金、增强基金以及其他跟踪该指数的公募基金呢?再进一步,如果有基金的经理人、规模、年化、Alpha和Beta、误差率等信息,是不是就能用excel筛选功能快速决策?本文用20行代码即可实现该功能,数据文件和代码附在文末。
数据样例
filefile
如何使用
筛选指数代码
过滤IndexTicker和IndexName
file筛选规模较大的基金
file筛选跟踪误差较小的基金
file查看基金类型
通常我们会看到ETF、增强和传统指数基金三类,可以筛选找到自己中意的
file代码实现
主要使用akshare库来提取指数列表,同时借用了fundsmart的接口来获取匹配的
import requests
import json
import csv
from multiprocessing.dummy import Pool as ThreadPool
from tqdm import tqdm
import akshare as ak
FUND_URL = "http://www.fundsmart.com.cn/api/fund.list.data.php?d=&t=3&i={}"
stock_df = ak.stock_zh_index_spot()
funds = [x[2:] for x in stock_df['symbol'].to_list()]
def getCoFunds(code):
return requests.get(FUND_URL.format(code)).json()['list']
with ThreadPool(5) as p:
r = list(tqdm(p.imap(getCoFunds, funds), total=len(funds)))
with open('全市场指数基金信息.csv', 'w+') as f:
fieldnames = list(r[0][0].keys())
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
for funds in r:
for fund in funds:
fund['indexTicker'] = "'" + fund['indexTicker'].zfill(6)
writer.writerow(fund)
如果您喜欢这篇文章,请点击右下角再看分享
本文是我公众号关于量化工具的其中一篇,欢迎关注查阅其他工具和分析方法
本文由博客群发一文多发等运营工具平台 OpenWrite 发布