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

Q:不同收费模式基金如何获取本基金总规模?    

  • A:基金因其收费模式不一致存在多个代码,天软分别记录每个代码的份额变动及基金净值数据。
    计算单个份额基金代码的总规模参考模型:fundscale
    计算该基金所有份额的总规模直接将不同收费模式的基金规模相加即可,实现模型参考如下。
    实现模型
    模型说明
    定义:getFundScale(stock:string,endt:datetime):real
    说明:获取基金指定日总规模,不同收费模式基金计算该基金所有份额规模求和
    参数:
      stock:string,基金代码
      endt:datetime,指定日期
    返回:实数,基金规模
    实现代码
    function getFundScale(stock,endt);
    begin
      ov:=BackupSystemParameters2();
      setsysparam(pn_date(),endt);
      mcode:=spec(FundMasterCode(),stock);
      
      codes:=GetSysParam("fundmcodelist");
      if not codes then
      begin
        col:="mcode";
        codes:=select thisrow as "code",spec(FundMasterCode(),thisrow) as col
            from getbk("上市基金;已退市基金") end;
        codes:=select [col],sselect ['code'] from thisgroup end as "code"
            from codes group by [col] end;
        codes:=NormalTabletoStrSubscript(codes,col);
        setsysparam("fundmcodelist",codes);
      end
      funds:=codes[mcode,"code"];
      v:=0;
      for i,fund in funds do
        v+=spec(fundscale(),fund);
      return v;
    end

    实现范例
    //获取OF008656指定日所属基金总规模
    return getFundScale("of008655",20250430t);
    //返回结果:657999481.0539