【量化投资工具】抓取沪深股市所有指数关联的公募基金列表

转载请注明公众号: 结丹记事本儿,关注后获取更多懒人投资工具。

摘要

当我们看中某些个指数时,第一步就是挑选对应的指数基金,那么如何知道指数对应的ETF基金、增强基金以及其他跟踪该指数的公募基金呢?再进一步,如果有基金的经理人、规模、年化、Alpha和Beta、误差率等信息,是不是就能用excel筛选功能快速决策?本文用20行代码即可实现该功能,数据文件和代码附在文末。

数据样例

【量化投资工具】抓取沪深股市所有指数关联的公募基金列表_第1张图片

如何使用

筛选指数代码

过滤IndexTicker和IndexName

【量化投资工具】抓取沪深股市所有指数关联的公募基金列表_第2张图片

筛选规模较大的基金

【量化投资工具】抓取沪深股市所有指数关联的公募基金列表_第3张图片

筛选跟踪误差较小的基金

【量化投资工具】抓取沪深股市所有指数关联的公募基金列表_第4张图片

查看基金类型

通常我们会看到ETF、增强和传统指数基金三类,可以筛选找到自己中意的

【量化投资工具】抓取沪深股市所有指数关联的公募基金列表_第5张图片

代码实现

主要使用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 发布

你可能感兴趣的:(微信公众平台)