FAQ > 金融建模 > 建模问题 > 金融框架

Q:天软高频因子计算中如何指定区间取样    

  • A:专题:FAQ:2023-09-13-量化数据-因子研究04:高频因子算法与计算说明(更新版)
    该专题中,因子的调用时,有两个周期及一个N日的参数,会比较困扰使用者,如何正确使用呢,我们接下来区别一下:

    调用因子时,几个参数要点:
    设置当前时间,作为数据截止时间:setsysparam(pn_date(),endt);//当为高频时,要注意精确到时间点
    调用因子前设置的大区间周期,作为样本区间的推导周期,setsysparam(pn_cycle(),cy1);
    及调用因子时给的周期参数和N日:比如Stock_RD_Kurt(RSP_Cycle,N);
    其中,N日为推导样本开始时间的周期数,RSP_Cycle为因子计算时数据计算频率。

    采样要素
    样本总区间的确定:
    通过以前当时间点为截止时间点,按大周期(cy1)向历史推N个周期数(N),得到该时间区间的开始时间点及截止时间点作为总样本数据提取的区间
    即,若cy1=日线,N=10,则样本总区间为最近10个日线交易日;若cy1=1分钟线,N=10,则样本总区间为最近10个分钟线

    样本小区间参数中的小周期(参数RSP_Cycle)因子计算时的周期频率,即将样本总区间按RSP_Cycle周期切割成若干个周期后计算的因子值。
    比如,计算一段区间内的日线波动率,这里的日线即通过参数RSP_Cycle传递。
    比如:cy1=日线,N=10,RSP_Cycle=1分线时,则是计算最近10个日线交易日的1分钟线的因子值。
    再比如:cy1=1分钟线,N=120,RSP_Cycle=30秒线时,则是计算最近120个1分钟线的时间区间切割成30秒线的因子值。

    因子调用案例解析:
    案例1:

    //过去 3 天,按 10 分钟线计算已实现峰度
    sp_s(PN_Stock(),'SH000001');
    sp_s(pn_date(),20200519T);
    sp_s(PN_Cycle(),cy_day());
    return Stock_RD_Kurt(cy_10m(),3);//返回 16.184

    样本解析:
    样本总区间:取20200519T这一天向前推3日,即2020-05-15 09:40:00到2020-05-19 15:00:00区间
    样本小区间:将2020-05-15 09:40:00到2020-05-19 15:00:00这三天按10分钟线切割成72个周期(包括开始时间的周期线),通过这72个数据点去计算已实现峰度这个指标值

    案例2:

    sp_s(PN_Stock(),'SH000001');
    sp_s(pn_date(),20211015.1430T);
    sp_s(PN_Cycle(),cy_1m());
    return Stock_RD_Kurt(cy_30s(),90);

    样本解析:
    样本总区间:取20211015.1430T这个交易时间点向前推90个交易的分钟,即2021-10-15 13:01:00到2021-10-15 14:30:00区间
    样本小区间:将2021-10-15 13:01:00到2021-10-15 14:30:00区间(包括开始时间的周期线),按30秒线切割成180个周期数据的已实现峰度这个指标值