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

Q:证券的上市日与退市日函数汇总    

简述
由于不同证券类型,获取上市日或运作日、退市日或清算日等数据来源不一,
所以函数可能不是统一接口,找起来较为麻烦,这里给出各大类的函数汇总供参考。
  • A:数据来源
    基本面
    该类数据由天软从公告中采集录入
    上市日:比如股票的上市日,可在《股票.发行上市》表中找到"上市日"这个数据,基金的上市日可在《基金.基本信息》中找到"上市日"等。
    退市日:比如股票的退市日,通过《股票.暂停、终止、恢复上市》表中的变更类型为终止上市的生效日,基金的通过《基金.基本信息》中的"清算日"等。

    行情数据
    行情数据一般只用于提取上市日,退市日还是得依赖基本面。
    天软行情数据,一般只要上市交易,就会产生行情数据,就可以根据库中存放的第一个日线行情数据进行确定其上市日,该种方法是通用的方式,即只要有行情就能获取上市日,用函数firstday()来获取,不需要区分资产大类,但是仅适合有行情的证券,无行情的获取不了,一般常用于行情指标的计算中。

    根据这两种数据源,我们获取各大类资产的上市日及退市日等可以表现为:
    资产大类基本面上市日提取方式上市日数据来源对应字段是否支持firstday方式取上市日退市日提取方式退市日数据来源对应字段
    股票base(12017)股票.发行上市上市日支持StockDelistingDate()股票.暂停、终止、恢复上市变更类型为终止上市的生效日
    基金设立日:base(302003)
    上市日:base(302004)
    基金.基本信息设立日:基金运作开始时间
    上市日:基金上市交易开始日
    上市交易型基金支持,
    需要用交易代码提取
    GetFundLastEndDate(Fundid)基金.基本信息清算日【注1】"
    债券base(502025)债券.基本信息上市日交易所上市交易的债券支持,
    交易不活跃的不建议使用
    base(502054)债券.基本信息实际到期日
    期货base(703002,0)期货.基本信息变动日(取第一个记录)支持FuturesDeliveryDateEndT()期货.基本信息最后交割日
    期权base(720001,0)期权.基本信息截止日(取第一个记录)支持base(720015)期权.基本信息到期日
    指数base(750004)指数.基本信息开始日期支持base(750012)指数.基本信息停用日期

    上述方法使用案例:
    要点1:证券的上市日与退市日,要与证券相关,即应该有个指定证券代码的地方,所以,上面的函数中若无证券代码参数,则通过系统参数传递,若有证券代码参数,则由参数确定,此时就与系统参数无关。
    要点2:在基本信息表中,天软的日期一般存为整型,比如20210806的型式,在使用时需要用inttodate(20210806)转成天软日期格式。
    而在行情数据中,日期时间都是日期类型,比如20210806T,显示为44414

    各种方式的用法请参考下面应用范例:
    范例01:系统参数传递证券代码
    //返回SH688001的上市日
     setsysparam(pn_stock(),'SH688001');
     return base(12017);//返回整数20190722
    //也可直接return spec(base(12017),'SH688001'); //效果一样

    范例02:函数参数传递证券代码(必须是该函数有参数入口才可)
    //返回OF000007的清算日
     return GetFundLastEndDate('OF000007');//返回整数20180808

    范例03:firstday()方式:行情第一个交易日作为上市日
    //返回SH688001的上市日
     setsysparam(pn_stock(),'SH688001');
     return firstday();//返回日期43668,即为2019-07-22 日


    除以上基础函数外,天软还提供了其它相关的公用函数接口

    上市日相关函数介绍
    函数:StockFirstDay(StockID)
    说明:上市的第一个行情的交易日,支持所有有日线行情数据的证券代码。
    数据源:取指定证券代码下行情中的第一个日期

    函数:SI_ListedDate()
    说明:股票发行-上市日
    数据源:取股票.发行上市表中的当前证券的上市日。

    函数:StockGoMarketDate()
    说明:支持有行情的证券和基金的上市日提取。
    算法:当前证券为基金代码时取基金净值中的第一个净值日作为上市日,其它取行情第一个交易日。

    函数:StockIssueDate()
    说明:股票发行日,取发行上市表中的发行起始日,仅支持股票。

    函数:FundGoMarketDate()
    说明:基金上市日,调用StockGoMarketDate(),功能与算法同StockGoMarketDate()。

    函数:bd_ListDate()
    说明:银行间债券上市日
    算法:如果是银行间债券则取债券基本信息中的上市日,否则调用StockGoMarketDate()进行返回。