【量化投资工具】抓取沪深股市所有指数关联的公募基金列表(含ETF、增强、分级等)

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

摘要

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

数据样例

file file

如何使用

筛选指数代码

过滤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 发布

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章