FAQ > 金融建模 > 建模问题 > 基金相关

Q:如何获取指定标的指数的基金集合?    

  • A:市场上基金的分类方式有许多种,通过基金基本信息表,用户可以根据需求对基金进行筛选,获取到符合需求的基金集合。
    FAQ:基本信息
    若一般常见的分类方式,天软有提供相应分类的板块,用户也能直接得到。
    FAQ:Q:2021-04-05天软板块变更:如何获取某个分类板块的所有个券?
    FAQ:Q:天软公用市场板块说明

    下面分别通过这两个数据介绍三种获取方式供需要的用户参考:

    方式一:天软板块方式
    根据天软已提供的板块分类,用户可以通过查询基金的标的指数分类,找到对应的标的板块名称,即可通过getbk("标的板块名")获取。
    优点:速度快(已分类好);缺点:只能取最新的样本,不能取历史指定日的。
    操作步骤如下:
    第一步:在证券数据专家,或板块管理中,通过对市场板块的选择,找到对应的板块列表:

    找基金分类:

    找到基金分类下的主要标的指数分类:如中证指数沪深300基金板块


    代码提取: return getbk("沪深300标的基金");
    返回一个基金代码序列,是一维字符串数组。

    方式二:先取指定标的集合,再筛选指定日
    逻辑:通过getbkAll调用已存在的公用板块分类,补充已退市的成份。而后筛选出指定日还在运作的基金列表
    优点:可以支持指定日,速度相对也较快。缺点:只能处理已有的板块,用户板块不支持。
       Endt:=20240312T; //指定日
       funds:=getbkAll("沪深300标的基金"); //所有沪深300基金,包括已退市
       funds:=FundsOperateFunds(funds,Endt);//删除指定日未在运作的基金
       return funds;

    返回的是一维字符串数组:


    方式三:对所有基金进行筛选
    优点:可以获取指定日的,也可以自定义筛选出不在板块分类中的集合;
    缺点:从所有基金中进行筛选,速度慢。
    实现案例:
       Endt:=20240312T; //指定日
       Index:="SH000300"; //指定标的代码
       funds:=getbk("上市基金;已退市基金"); //所有基金
       funds:=FundsOperateFunds(funds,Endt);//删除指定日未在运作的基金
       //取业绩基准
       f:= select thisrow as 'fundid',
         spec(base(302039),thisrow) as '基准代码'//取基金对应的相关分类数据
         from funds end;
       //取指定基准的基金集合
       return select * from f where ['基准代码']=Index end;

    返回是一个二维数组,部分结果截图如下: