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

Q:ETF基金的时点净值说明及提取范例    

  • A: 天软中提供了ETF的场内的时点收盘和场外的时点净值数据,有关该数据的披露准则、数据处理及提取方法,可参考ETF基金时点净值说明文档FAQ:2025-04-27-应用专题-数据提取专题04:ETF基金常见数据说明及提取
    要点说明:
    1、ETF时点净值由盘口接收,存放于交易明细数据表中,通过交易代码获取。
      深交所:以“市盈率2”字段公布时点净值
      上交所:2015-05-04开始:以“市盈率2”字段公布时点净值
          2015-05-04之前:以SH+(6位二级市场代码+1)公布的“收盘价”作为时点净值
    2、天软封装取指定时点的时点净值,模型为:FundIPOV(),支持交易代码与一级市场代码获取。
    3、通过一级市场基金代码获取二级市场交易代码,可通过spec(base(302033),FundID)方式。

    ETF时点净值提取范例:
    范例01:取指定高频截面的时点净值
      SetSysParam(PN_Stock(),"OF510050");
      SetSysParam(PN_Cycle(),cy_1s());
      SetSysParam(PN_Date(),20241226.101002T);
      return FundIPOV(); //2.7498

    范例02:函数+NDay方式-取指定时间区间内5秒线的时点净值序列
      BegT:=IntToDate(20140430);
      EndT:=BegT+10/24;
      FundID:='OF510050';
      JYCode:=spec(base(302033),FundID);
      SetSysParam(PN_Stock(),JYCode);
      SetSysParam(PN_Cycle(),cy_5s());
      SetSysParam(PN_Date(),endt);
      days:=tradedays(begt,endt);
      return nday(days,'时间',datetimetostr(sp_time()),
      '时点净值-交易所公布',FundIPOV());

    返回结果(部分结果截图):

    范例03:取指定日交易明细的时点净值序列
    上证ETF2015-05-04开始以交易代码的“市盈率2”字段公布时点净值
    EndT:=20241225T;
      FundID:='OF510050';
      JYCode:=spec(base(302033),FundID);
      return select datetimetostr(["date"]) as "时间",
          ["syl2"] as "时点净值"
          from tradetable datekey EndT to Endt+16/24 of JYCode end;

    返回结果(部分结果截图):

    范例04:Markettable方式-取一段时间内1分钟线的时点净值序列
    上证ETF2015-05-04之前以SH+(6位二级市场代码+1)公布的“收盘价”作为时点净值
      BegT:=20150429.09T;
      EndT:=20150429.16T;
      FundID:='OF510050';
      JYCode:=spec(base(302033),FundID);
      JYCode1:=leftstr(JYCode,2)$(strtoint(RightStr(JYCode,6))+1);
      setsysparam(pn_cycle(),cy_1m());
      return select datetimetostr(["date"]) as "时间",
          ["close"] as "时点净值"
          from Markettable datekey BegT to EndT of JYCode1 end;

    返回结果(部分结果截图):

    范例05:Markettable方式-取上证ETF历史连续的时点净值序列
    上证ETF2015-05-04之前以SH+(6位二级市场代码+1)公布的“收盘价”作为时点净值,2015-05-04开始以交易代码的“市盈率2”字段公布时点净值
      BegT:=20150429.09T;
      EndT:=20150506.16T;
      st:=20150504t;
      FundID:='OF510050';
      JYCode:=spec(base(302033),FundID);
      JYCode1:=leftstr(JYCode,2)$(strtoint(RightStr(JYCode,6))+1);
      setsysparam(pn_cycle(),cy_1m());
      t1:= select JYCode as "StockID",datetimetostr(["date"]) as "时间",
          ["close"] as "时点净值"
          from Markettable datekey BegT to st of JYCode1 end;
      t2:= select ["StockID"],datetimetostr(["date"]) as "时间",
          ["syl2"] as "时点净值"
          from Markettable datekey st to EndT of JYCode end;

    返回结果(部分结果截图):