FAQ > 金融建模 > 建模问题 > 股票相关

Q:天软关于昨收取数模型的区别说明    

简述
当股票发生分红送股等需要除权时,对于昨收,存在实际昨日收盘价与除权后的昨收价,即系统昨收价。
用户在使用时需要区别对待,正确调用。
  • A:数据说明:
    对于上个周期的价格,由于数据的差异天软存在多种叫法,如实际昨收、系统昨收等,其中存在一些差别,具体理解如下:
     实际昨收:即理解为昨日的实际收盘价,由交易产生。
     系统昨收:当日若有发生除权时,是除权后的昨日收盘价;无除权时,等于实际收盘价,在开盘前,由交易所推送得到。
      系统昨收在比例复权中发挥着重要的作用,复权比例即是由系统昨收与实际昨收的比例得到。

     即理解为:当指定日无除权时,实际昨收=系统昨收。
          当指定日存在除权时,系统昨收 <> 实际昨收。


     数据存储:Markettable与Tradetable中,
     close:实际收盘价,盘中交易产生,除权不产生影响。与周期有关。
     yclose:上次价,支持高频的系统昨收。与周期有关。
        特点:当天发生除权时,第一条数据线记录的是除权后的昨收,其它数据记录的是上条线的实际价格。
           低频中,取第一日的该字段值。
     sectional_yclose:日线的系统昨收。
        特点:当天发生除权时,记录的是除权后的昨收,无除权时等于实际昨收。
          一天只有一个值,高频周期下,该字段值相等。低频中,取第一日的该字段值。

    用途:如在计算当日涨幅时,应采用系统昨收。
    PS:高频周期是指日以内的周期,如分钟线,秒线等。低频周期指低于日线的周期,如周线,月线等。
    模型说明:
    天软中,关于在周期与复权方式下,对于昨收的提取方式及区别如下:
    提取方式取数表达式Markettable周期复权
    上次价ref(close(),1)上个周期中的close支持任意周期,取到的是上周期实际收盘价复权后的上个周期的close
    系统昨收sys_prevclose()yclose支持任意周期,取到的是系统昨收同上
    当日系统昨收SectionPrevClose()sectional_yclose高频下,取到的还是日线的系统昨收,有别于上次价。其它同上。同上

    用法举例:
    SH603185 弘元绿能在2023-7-7(周五)日分红2.43401,送股0.39739。其昨收提取范例如下:
    范例01:除权日日线下三个昨收的表现
      endt:=20230707T;
      setsysparam(PN_Precision(),2);
      setsysparam(pn_stock(),'SH603185');
      setsysparam(pn_date(),endt);
      setsysparam(pn_cycle(),cy_day()); //---日线
      setsysparam(pn_rate(),0);//不复权
      return array('上次价':ref(close(),1),
          '系统昨收':sys_prevclose(),
          '当日系统昨收':SectionPrevClose());

    结果:

    范例02:除权日,30分钟线昨收的表现
    endt:=20230707.11T;
      setsysparam(PN_Precision(),2);
      setsysparam(pn_stock(),'SH603185');
      setsysparam(pn_date(),endt);
      setsysparam(pn_cycle(),cy_30m()); //---30分钟线
      setsysparam(pn_rate(),0);//不复权
      t:=Nday(5,'20230707除权@StockID',DefaultStockID(),'20230707除权@StockName',stockname(DefaultStockID()),
          '周期',getsysparam(pn_cycle()),
          '当前时间',datetimetostr(sp_time()),'收盘价',close(),
          '昨收@ref1Close',ref(close(),1),
          '昨收@sys_prevClose',sys_prevclose(),
          '昨收@secPrevClose',SectionPrevClose());
       return t;

    结果: