• CTQuant

      用户登录/注册:登录/注册

      CTQuant开发平台是一款高性能本地化AI策略及传统策略快速开发平台,

      提供丰富的数据及处理模块,开放的AI训练模型,开发者可以快速搭建诸如XGBoost、CNN等机器学习和深度学习的模型进行训练。 强大的因子计算公式能够快速计算相关因子,强大的数据处理模块能快速处理因子值,使其适应各个AI模型。

      基础数据 依托于CTQuant_DATA基础数据,生成适用AI策略的基础数据,并提供每日的基础数据更新。

      预计算因子 基于基础数据,配置一批预计算因子,提供给开发者快速构建因子表达式的基础因子数据。

      因子表达式 强大的因子表达式模块,更具因子计算表达式,能够快速抽取复杂因子。

      数据处理 根据一般机器学习、深度学习所需使用的数据,快速处理因子数据,包括缺失值处理、去极值、标准化。

      训练模型 提供丰富的模型接口,开发者可以使用系统自带的构建好的经典模型,亦可以使用本地的模型模块进行AI训练调优。

      仿真模拟环境 依托与Backtrader的回测模拟框架进行二次开发,适用于AI训练模型以后的数据预测及在线模拟,强大的数据分析功能提供给开发者进行更好的模型参数调优。

       

      联系客服领取更多福利。

      jskf

       

      样例说明

      概述

      本平台使用了机器学习、深度学习的框架,当然也支持传统策略。用户可以根据自己的需求,使用本地的机器学习模型、深度学习模型来进行训练预测。本平台集成了一些基础的样例,仅供参考学习。

       

      1.样例1(传统策略)

       

      2.样例2(AI策略,CNN模型)

       

      安装说明

       

      开发准备

      下载开发包软件及数据。

      下载地址:

      下载后解压缩到磁盘,尽量避免使用C盘,以免遇到权限不足发生错误。

       

      目录说明

      文件夹名称说明
      .venvpython开发环境及各类开发包
      CTQuant_cache模块缓存文件
      CTQuant_DATA数据文件(A股)
      CTQuant_imiate_dir策略模拟文件夹,存放py文件的策略
      CTQuant_logs模块运行日志
      dict存放的开发包文件
      static回测web的js、css文件等
      templates回测web
      config.ini配置文件

       

      1.安装 Python及版本

      目前平台的开发系统基于windows,推荐windows 11 专业版。

      平台使用python 3.9开发,所有引用的方法及包均在3.9版本下测试通过,可以直接使用开发包中的python安装文件进行安装(\CTQuant_client\dict文件夹下)。安装过程中必须要将python的路径添加到环境变量中。

      微信图片_20240327170927

       

      安装完成后可以运行命令行程序:

      检验python是否安装成功,并查看当前python的版本信息。

       

      2.安装文件

      (1)在解压缩的文件中运行【初始化并启动.bat】文件,推荐使用管理员权限运行程序。运行需要下载所需的安装包

      微信图片_20240329144317

      (2)用户注册。根据提示在打开的网站中注册用户。注册成功后登录网站,在右侧菜单【量化】-》【会员信息】里查看令牌信息,复制粘贴到之前运行的程序中。等待完成安装。

      微信图片_20240329144654

      (3)程序运行完成后可以退出。再运行文件【启动服务.bat】,该服务提供数据更新、回测web查看、策略模拟等服务。建议将服务加入自启动保证数据每天自动更新。

      程序加入自启动方法: (1)通过“启动”文件夹添加: 复制文件的快捷方式,如果软件没有快捷方式,可以找到主程序,点击鼠标右键,选择创建快捷方式。 按Windows徽标键 + R,键入“shell:startup”,然后选择“确定”打开“启动”文件夹。 将应用的快捷方式从文件位置复制并粘贴到“启动”文件夹中。 (2)通过“任务计划程序”添加: 找到要设置为自启动的程序的快捷方式。 在“任务计划程序”窗口中,依次展开左侧的“任务计划程序库”>“Microsoft”>“Windows”>“Startup”。 选择“创建基本任务”,输入任务名称和描述,选择触发器类型(如“当计算机启动时”),然后选择“启动程序”,浏览并选择刚刚创建的程序快捷方式,确认设置无误后,点击“完成”。

       

      2.IDE

      建议使用pycharm的开发环境。vs code等其他环境同样可以运行。同时支持py、juypter notebook形式的开发。

      强烈建议启动开发环境时使用管理员权限运行,避免一些文件读写的权限问题。

       

       

      3. 策略开发

      若项目创建在C盘,建议启动开发环境请右击,选择以管理员方式运行。即使放在其他盘,也建议使用管理员权限运行,避免文件读写的权限问题。

      pycham,新建python项目,并且配置环境到开发包中的python环境,路径为:【本地存放路径】\CTQuant_client.venv\Scripts\python.exe。

      vs code 新建python项目,需要配置开发包中的python环境即可。

      微信图片_20240329151044

      至此环境配置及项目创建成功。

       

       

       

      使用手册

       

      因子表达式

      基于基础数据和因子库,CTQuant让我们可以无需代码,快速构建因子。

       

      因子表达式引擎

      CTQuant表达式计算引擎,通过编写简单的表达式,就可以对数据做任何运算,而无需编写代码。

      通过表达式,实现数据处理和计算。例如:

       

      常量

       

      支持的运算符

       

      简单函数

       

      按股票分组后的数据处理函数

       

      按日期分组后的数据处理函数

       

      按日期和自定义key分组的处理函数

       

      TA-LIB部分技术指标

       

      基础因子

      导语

      平台目前已支持一批基础因子数据,用户可以用来构建因子表达式。通过基础特征抽取可以自动识别并抽取基础因子。

      绝大部分参数均可自定义,末尾(_*)表示去第几天的值,例如(close_0) 代表当天的收盘价,(close_1)代表过去1天的值,以此类推。

      部分因子中间包含X的值可以自取,可以参照一般所用到的数值。例如(ta_adx_X_*),使用(ta_adx_14_1)表示过去一天adx指标参数日期取14天的值。

      A股

      量价因子

      字段字段类型字段描述
      adjust_factor_*float32第前 * 个交易日的复权因子
      *取值: 0 .. 9999
      amount_*float32第前 * 个交易日的交易额
      * 取值: 0 .. 9999
      avg_amount_*float32过去 * 个交易日的平均交易额
      * 取值: 0 .. 9999
      avg_price_*float32过去 * 个交易日的平均价格(=amount/volume*adjust_factor)
      * 取值: 0 .. 9999
      close_*float32第前 * 个交易日的收盘价
      * 取值: 0 .. 9999
      daily_return_*float32第前 * 个交易日的收益,=close*i / close*(i+1)
      * 取值: 0 ..9999
      deal_number_*int32第前 * 个交易日的成交笔数
      * 取值: 0 .. 9999
      high_*float32第前 * 个交易日的最高价
      * 取值: 0 .. 9999
      low_*float32第前 * 个交易日的最低价
      * 取值: 0 .. 9999
      open_*float32第前 * 个交易日的开盘价
      * 取值: 0 .. 9999
      price_limit_status_*float32股价在收盘时的涨跌停状态:1表示跌停,2表示未涨跌停,3则表示涨停
      * 取值: 0 .. 9999
      rank_amount_*float32第前 * 个交易日的交易额百分比排名
      * 取值: 0 .. 9999
      rank_avg_amount_*float32过去 * 个交易日的平均交易额,百分比排名
      * 取值: 0 .. 9999
      rank_return_*float32过去 * 个交易日的收益排名
      * 取值: 0 .. 9999
      return_*float32过去 * 个交易日的收益, =close_0/close_(* +1),eg :return_0 = close_0 / close_1,return_5 = close_0 / close_6
      * 取值: 0 .. 9999
      volume_*int64第前 * 个交易日的交易量
      * 取值: 0 .. 9999

       

      换手率因子

      字段字段类型字段描述
      avg_turn_*float32过去 * 个交易日的平均换手率
      * 取值: 0 .. 9999
      rank_avg_turn_*float32过去 * 个交易日的平均换手率排名
      * 取值: 0 .. 9999
      rank_turn_*float32过去 * 个交易日的换手率排名
      * 取值: 0 .. 9999
      turn_*float32第前 * 个交易日的换手率
      * 取值: 0 .. 9999
      avg_turn_f_*float32过去 * 个交易日的平均换手率(流通股本计算)
      * 取值: 0 .. 9999
      rank_avg_turn_f_*float32过去 * 个交易日的平均换手率排名(流通股本计算)
      * 取值: 0 .. 9999
      rank_turn_f_*float32过去 * 个交易日的换手率排名(流通股本计算)
      * 取值: 0 .. 9999
      turn_f_*float32第前 * 个交易日的换手率(流通股本计算)
      * 取值: 0 .. 9999

       

      基本信息因子

      字段字段类型字段描述
      industry_sw_level1_0int32申万一级行业类别
      industry_sw_level2_0int32申万二级行业类别
      industry_sw_level3_0int32申万三级行业类别
      list_board_0float32上市板,主板:1,中小企业板:2,创业板:3
      list_days_0float32已经上市的天数,按自然日计算
      st_status_0float32ST状态:0:正常股票,1:ST,2:*ST,11:暂停上市

       

      资金流因子

      字段字段类型字段描述
      avg_mf_net_amount_*float64过去 * 个交易日平均净主动买入额
      * 取值: 0 .. 9999
      mf_net_amount_*float32第前 * 个交易日净主动买入额,= 买入金额 - 卖出金额 (包括超大单、大单、中单或小单)
      * 取值: 0 .. 9999
      rank_avg_mf_net_amount_*float32过去 * 个交易日平均净主动买入额排名
      * 取值: 1 .. 9999
      rank_avg_mf_net_amount_0float32过去0个交易日平均净主动买入额排名

       

      估值因子

      字段字段类型字段描述
      market_cap_0float64总市值
      market_cap_float_0float64流通市值
      pb_lf_0float32市净率 (LF)
      pe_lyr_0float32市盈率 (LYR)
      pe_ttm_0float32市盈率 (TTM)
      ps_ttm_0float32市销率 (TTM)
      rank_market_cap_0float32总市值,升序百分比排名
      rank_market_cap_float_0float32流通市值,升序百分比排名
      rank_pb_lf_0float32市净率 (LF),升序百分比排名
      rank_pe_lyr_0float32市盈率 (LYR),升序百分比排名
      rank_pe_ttm_0float32市盈率,升序百分比排名
      rank_ps_ttm_0float32市销率 (TTM),升序百分比排名

       

      技术分析因子

      字段字段类型字段描述
      ta_ad_*float32收集派发指标 *取值0...9999(表示第前n天的值,下同)
      ta_adx_X_*float32ADX指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_aroon_down_X_*float32阿隆指标aroondown,x取值1...9999,一般使用14,28。*取值0...9999
      ta_aroon_up_X_*float32阿隆指标aroonup,x取值1...9999,一般使用14,28。*取值0...9999
      ta_aroonosc_X_*float32AROONOSC指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_aroonosc_X_*float32AROONOSC指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_atr_X_*float32ATR指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_bbands_lowerband_X_*float32BBANDS指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_bbands_middleband_X_*float32BBANDS指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_bbands_upperband_X_*float32BBANDS指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_cci_X_*float32CCI指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_macd_macd_X_Y_Z_*float32MACD指标,X、Y、Z取值1...9999,一般使用fastperiod(X)=12,slowperiod(Y)=26,signalperiod(Z)=9
      *取值0...9999
      ta_macd_macdhist_X_Y_Z_*float32MACD的hist指标,X、Y、Z取值1...9999,一般使用fastperiod(X)=12,slowperiod(Y)=26,signalperiod(Z)=9
      *取值0...9999
      ta_macd_macdsignal_X_Y_Z_*float32MACD的signal指标,X、Y、Z取值1...9999,一般使用fastperiod(X)=12,slowperiod(Y)=26,signalperiod(Z)=9
      *取值0...9999
      ta_mfi_X_*float32MFI指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_mom_X_*float32MOM指标,x取值1...9999,一般使用10,20,30,60。*取值0...9999
      ta_obv_*float64OBV指标。*取值0...9999
      ta_rsi_X_*float32RSI指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_sar_*float32SAR指标。*取值0...9999
      ta_stoch_slowd_5_3_0_3_0_0float32STOCH (KDJ) 指标D值
      ta_stoch_slowk_5_3_0_3_0_0float32STOCH (KDJ) 指标K值
      ta_trix_X_*float32TRIX指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_willr_X_*float32WILLR指标,x取值1...9999,一般使用14,28。*取值0...9999
      ta_ema_X_*float32收盘价的X日指数移动平均值,x取值1...9999,一般使用5,10,20,30,60,120。*取值0...9999
      ta_sma_X_*float32收盘价的X日简单移动平均值,x取值1...9999,一般使用5,10,20,30,60,120。*取值0...9999
      ta_wma_X_*float32收盘价的X日加权移动平均值,x取值1...9999,一般使用5,10,20,30,60,120。*取值0...9999
      ta_ewm_X_*float32收盘价的X日指数加权平均值,x取值1...9999,一般使用5,10,20,30,60,120。*取值0...9999
         
         
         
         

       

      BETA值因子

      字段字段类型字段描述
      beta_csi100_X_*float32X天BETA值(中证100),x取值1...9999,一般使用5,10,20,30,60,120。 timeperiod= *
      * 取值: 0 .. 9999
      beta_csi300_X_*float32X天BETA值(中证300),x取值1...9999,一般使用5,10,20,30,60,120。 timeperiod= *
      * 取值: 0 .. 9999
      beta_csi500_X_*float32X天BETA值(中证500),x取值1...9999,一般使用5,10,20,30,60,120。 timeperiod= *
      * 取值: 0 .. 9999
      beta_csi800_X_*float32X天BETA值(中证800),x取值1...9999,一般使用5,10,20,30,60,120。 timeperiod= *
      * 取值: 0 .. 9999
      beta_gem_X_*float32X天BETA值(创业板),x取值1...9999,一般使用5,10,20,30,60,120。 timeperiod= *
      * 取值: 0 .. 9999
      beta_industry_X_*float32X天BETA值(所在行业),x取值1...9999,一般使用5,10,20,30,60,120。 timeperiod= *
      * 取值: 0 .. 9999
      beta_sse180_X_*float32X天BETA值(上证180),x取值1...9999,一般使用5,10,20,30,60,120。 timeperiod= *
      * 取值: 0 .. 9999
      beta_sse50_X_*float32X天BETA值(上证50),x取值1...9999,一般使用5,10,20,30,60,120。 timeperiod= *
      * 取值: 0 .. 9999
      beta_szzs_X_*float32X天BETA值(上证综指),x取值1...9999,一般使用5,10,20,30,60,120。 timeperiod= *
      * 取值: 0 .. 9999

       

      波动率因子

      字段字段类型字段描述
      rank_swing_volatility_X_*float32X天振幅波动率排名,x取值1...9999,一般使用5,10,20,30,60,120。
      * 取值: 0 .. 9999
      rank_volatility_X_*float32X天波动率排名,x取值1...9999,一般使用5,10,20,30,60,120。
      * 取值: 0 .. 9999
      swing_volatility_X_*float32X天振幅波动率,x取值1...9999,一般使用5,10,20,30,60,120。
      * 取值: 0 .. 9999
      volatility_X_*float32X天波动率,x取值1...9999,一般使用5,10,20,30,60,120。
      * 取值: 0 .. 9999

       

      龙虎榜因子

      注意:只有上龙虎榜的个股才会有此数据,若未上榜则会返回Nan。

      字段字段类型字段描述
      top_l_sell_*float32过去*个交易日的龙虎榜卖出额 。
      * 取值: 0 .. 9999
      top_l_buy_*float32过去*个交易日的龙虎榜卖出额 。
      *取值: 0 .. 9999
      top_l_amount_*float32过去*个交易日的龙虎榜成交额 。
      *取值: 0 .. 9999
      top_net_amount_*float32过去*个交易日的龙虎榜净买入额 。
      *取值: 0 .. 9999
      top_net_rate_*float32过去*个交易日的龙虎榜净买额占比 。
      *取值: 0 .. 9999
      top_amount_rate_*float32过去*个交易日的龙虎榜成交额占比 。
      *取值: 0 .. 9999

       

      筹码因子

      字段字段类型字段描述
      cyq_perf_winner_rate_*float32过去*个交易日的筹码胜率 。
      * 取值: 0 .. 9999

       

      申万二级板块因子

      字段字段类型字段描述(当天的因子值)
      SW_return_0float32申万二级板块收益率
      SW2_open_0float32申万二级板块开盘价
      SW2_close_0float32申万二级板块收盘价
      SW2_volume_0float32申万二级板块成交量
      SW2_amount_0float32申万二级板块成交额
      SW2_market_cap_0float32申万二级板块总市值
      SW2_market_cap_float_0float32申万二级板块总流通市值
      SW2_turn_0float32申万二级板块换手率
      SW2_turn_f_0float32申万二级板块换手率(相对于流通市值)
      SW2_mf_net_amount_0float32申万二级板块净主动买入额,= 买入金额 - 卖出金额 (包括超大单、大单、中单或小单)
      SW2_price_limit_status_zt_sum_0int申万二级板块涨停股票个数
      SW2_price_limit_status_dt_sum_0int申万二级板块跌停股票个数
      SW2_instrument_count_0int申万二级板块股票个数

       

      同花顺概念板块因子

      注意:同花顺概念板块因子时同花顺中的板块因子,非个股因子,若要计算个股的相关因子,需要通过概念板块中包含的股票信息进行连接。

      字段字段类型字段描述
      ths_amount_*float32第前 * 个交易日的交易额
      * 取值: 0 .. 9999
      ths_avg_amount_*float32第前 * 个交易日的平均交易额
      * 取值: 0 .. 9999
      ths_rank_avg_amount_*float32第前 * 个交易日的平均交易额排名
      * 取值: 0 .. 9999
      ths_return_*float32过去*个交易日的收益, =close_0/close_(** +1),eg :return_0 = close_0 / close_1,return_5 = close_0 / close_6
      * 取值: 0 .. 9999
      ths_rank_return_*float32过去*个交易日的收益排名
      * 取值: 0 .. 9999
      ths_daily_return_*float32第前 * 个交易日的收益,=close_i / close_(i+1)
      * 取值: 0 ..9999
      ths_close_*float32第前 * 个交易日的收盘价
      * 取值: 0 .. 9999
      ths_high_*float32第前 * 个交易日的最高价
      * 取值: 0 .. 9999
      ths_low_*float32第前 * 个交易日的最低价
      * 取值: 0 .. 9999
      ths_open_*float32第前 * 个交易日的开盘价
      * 取值: 0 .. 9999
      ths_volume_*float32第前 * 个交易日的成交量
      * 取值: 0 .. 9999
      ths_avg_turn_*float32第前 * 个交易日的平均换手率
      * 取值: 0 .. 9999
      ths_rank_avg_turn_*float32第前 * 个交易日的平均换手率排名
      * 取值: 0 .. 9999
      ths_rank_turn_*float32第前 * 个交易日的换手率排名
      * 取值: 0 .. 9999
      ths_turn_*float32第前 * 个交易日的换手率
      * 取值: 0 .. 9999
      ths_list_days_*int第前 * 个交易日的上市天数
      * 取值: 0 .. 9999
      ths_stock_quantity_*int第前 * 个交易日的板块包含个股数量(去除ST、退、*ST)
      * 取值: 0 .. 9999
      ths_limit_up_quantity_*int第前 * 个交易日的板块内涨停个股数量
      * 取值: 0 .. 9999
      ths_limit_low_quantity_*int第前 * 个交易日的板块内跌停个股数量
      * 取值: 0 .. 9999
      ths_rise_quantity_*int第前 * 个交易日的板块内上涨个股数量(去除ST、退、*ST)
      * 取值: 0 .. 9999
      ths_fall_quantity_*int第前 * 个交易日的板块内下跌个股数量(去除ST、退、*ST)
      * 取值: 0 .. 9999
      ths_surge_quantity_*int第前 * 个交易日的板块涨幅较大的个股数量
      * 取值: 0 .. 9999
      ths_market_cap_float_*float32第前 * 个交易日的流通市值
      * 取值: 0 .. 9999
      ths_market_cap_0_*float32第前 * 个交易日的总市值
      * 取值: 0 .. 9999
      ths_market_cap_0_float_*float32第前 * 个交易日的流通市值
      * 取值: 0 .. 9999
      ths_rank_market_cap_0_*float32第前 * 个交易日的总市值排名
      * 取值: 0 .. 9999
      ths_rank_market_cap_0_float_*float32第前 * 个交易日的流通市值排名
      * 取值: 0 .. 9999
      ths_ta_ad_*float32收集派发指标 *取值0...9999(表示第前n天的值,下同)
      ths_ta_adx_X_*float32ADX指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_aroon_down_X_*float32阿隆指标aroondown,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_aroon_up_X_*float32阿隆指标aroonup,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_aroonosc_X_*float32AROONOSC指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_aroonosc_X_*float32AROONOSC指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_atr_X_*float32ATR指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_bbands_lowerband_X_*float32BBANDS指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_bbands_middleband_X_*float32BBANDS指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_bbands_upperband_X_*float32BBANDS指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_cci_X_*float32CCI指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_macd_macd_X_Y_Z_*float32MACD指标,X、Y、Z取值1...9999,一般使用fastperiod(X)=12,slowperiod(Y)=26,signalperiod(Z)=9
      *取值0...9999
      ths_ta_macd_macdhist_X_Y_Z_*float32MACD的hist指标,X、Y、Z取值1...9999,一般使用fastperiod(X)=12,slowperiod(Y)=26,signalperiod(Z)=9
      *取值0...9999
      ths_ta_macd_macdsignal_X_Y_Z_*float32MACD的signal指标,X、Y、Z取值1...9999,一般使用fastperiod(X)=12,slowperiod(Y)=26,signalperiod(Z)=9
      *取值0...9999
      ths_ta_mfi_X_*float32MFI指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_mom_X_*float32MOM指标,x取值1...9999,一般使用10,20,30,60。*取值0...9999
      ths_ta_obv_*float64OBV指标。*取值0...9999
      ths_ta_rsi_X_*float32RSI指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_sar_*float32SAR指标。*取值0...9999
      ths_ta_stoch_slowd_5_3_0_3_0_0float32STOCH (KDJ) 指标D值
      ths_ta_stoch_slowk_5_3_0_3_0_0float32STOCH (KDJ) 指标K值
      ths_ta_trix_X_*float32TRIX指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_willr_X_*float32WILLR指标,x取值1...9999,一般使用14,28。*取值0...9999
      ths_ta_ema_X_*float32收盘价的X日指数移动平均值,x取值1...9999,一般使用5,10,20,30,60,120。*取值0...9999
      ths_ta_sma_X_*float32收盘价的X日简单移动平均值,x取值1...9999,一般使用5,10,20,30,60,120。*取值0...9999
      ths_ta_wma_X_*float32收盘价的X日加权移动平均值,x取值1...9999,一般使用5,10,20,30,60,120。*取值0...9999
      ths_ta_ewm_X_*float32收盘价的X日指数加权平均值,x取值1...9999,一般使用5,10,20,30,60,120。*取值0...9999
      ths_rank_swing_volatility_X_*float32X天振幅波动率排名,x取值1...9999,一般使用5,10,20,30,60,120。
      * 取值: 0 .. 9999
      ths_rank_volatility_X_*float32X天波动率排名,x取值1...9999,一般使用5,10,20,30,60,120。
      * 取值: 0 .. 9999
      ths_swing_volatility_X_*float32X天振幅波动率,x取值1...9999,一般使用5,10,20,30,60,120。
      * 取值: 0 .. 9999
      ths_volatility_X_*float32X天波动率,x取值1...9999,一般使用5,10,20,30,60,120。
      * 取值: 0 .. 9999
      ths_beta_csi100_X_*float32X天BETA值(中证100),x取值1...9999,一般使用5,10,20,30,60,120。 timeperiod= *
      * 取值: 0 .. 9999
      ths_beta_csi300_X_*float32X天BETA值(中证300),x取值1...9999,一般使用5,10,20,30,60,120。 ,timeperiod= *
      * 取值: 0 .. 9999
      ths_beta_csi500_X_*float32X天BETA值(中证500),x取值1...9999,一般使用5,10,20,30,60,120。 ,timeperiod= *
      * 取值: 0 .. 9999
      ths_beta_csi800_X_*float32X天BETA值(中证800),x取值1...9999,一般使用5,10,20,30,60,120。 ,timeperiod= *
      * 取值: 0 .. 9999
      ths_beta_gem_X_*float32X天BETA值(创业板),x取值1...9999,一般使用5,10,20,30,60,120。 ,timeperiod= *
      * 取值: 0 .. 9999
      ths_beta_sse180_X_*float32X天BETA值(上证180),x取值1...9999,一般使用5,10,20,30,60,120。 ,timeperiod= *
      * 取值: 0 .. 9999
      ths_beta_sse50_X_*float32X天BETA值(上证50),x取值1...9999,一般使用5,10,20,30,60,120。 ,timeperiod= *
      * 取值: 0 .. 9999
      ths_beta_szzs_X_*float32X天BETA值(上证综指),x取值1...9999,一般使用5,10,20,30,60,120。 ,timeperiod= *
      * 取值: 0 .. 9999

       

       

      算子(模块)使用手册

       

      通用说明

       

      关于缓存

      所有模块没有特殊说明,均支持传入是否使用缓存参数(is_use_cache),默认为False。若为True,则会在本地磁盘创建缓存文件。缓存配置地址在config.ini文件中的cache_path字段。请及时关注本地磁盘空间是否充足。

       

      通用数据模块

      一般模块输出均为通用数据模块(Output),根据各个模块返回结果会有data,data_1,data_2,data_3,均为DataSource类型,可以使用read()方法读取。

      注意:以下模块说明中返回的模型均为使用read方法后获取以后的类型。

      代码示例:

       

      DataSource读取缓存文件及基础表功能说明

      DataSource可以直接用来读取基础数据(base文件夹下的csv文件),也可以读取缓存文件的内容。

       

      数据(DataFrame、Series、List)转换为DataSource

      自定义数据转换为CTQaunt中使用的模块

       

      训练日期模块

       

      使用场景

      生成训练数据的开始时间、结束时间。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      start_datestr 训练开始日期。格式:20230101
      end_datestr 训练结束日期。格式:20231231
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      datadict例:{'start_date':20230101, 'end_date':20231231}

       

      使用示例

      输出结果:

       

       

      预测(模拟)日期模块

       

      使用场景

      生成回测(模拟)数据的开始时间、结束时间。注意和训练日期模块有所区别。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      start_datestr 训练开始日期。格式:20230101
      end_datestr 训练结束日期。格式:20231231
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      datadict例:{'start_date':20230101, 'end_date':20231231}

       

      使用示例

      输出结果:

       

       

      因子列表模块

       

      使用场景

      输入特征(因子)数据。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_feature_listDataSourceNone因子列表模块数据的返回值,用于因子的叠加
      feature_listlist 因子列表,例如:['factor1=return_0/return_5', 'mean(turn_0,5)/turn_0']
      is_rankstrnormal返回因子的格式,normal:正常因子、rank:排序因子、all:所有因子(normal+rank)
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      datalist因子列表的集合
      data_1list因子列表的集合(同data)
      data_2list因子简称的列表集合

       

      使用示例

      代码示例1

      输出结果:

       

      代码示例2

      输出结果

       

      建议使用 (factor_key = 表达式)这种格式。

       

       

      基础特征抽取模块

       

      使用场景

      抽取基础特征因子(只支持股票的日线)。基础特征是因子表达式中的所使用到的预计算因子。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      feature_list_inputDataSource 因子列表模块数据的返回值(data)
      input_dateDataSource 日期模块返回值
      shift_daysint0向前取数据的天数
      feature_typestrstockstock 股票基础特征,ths:同花顺概念板块特征
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame股票基础特征数据

       

      使用示例

      代码示例1

      输出结果:

       

       

      申万二级行业基础特征抽取模块

       

      使用场景

      抽取申万二级板块预计算因子。若要计算申万二级板块的表达式因子,需要用此模块先抽取申万二级板块的基础特征(预计算因子),再用衍生特征抽取模块获取相应的表达式因子值。例如 sw2_factor1=SW_return_0/shift(SW_return_0,5),此模块会抽取SW_return_0这个因子特征的值。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_dateDataSource 日期模块返回的结果
      shift_daysint0向前取数据的天数
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame股票申万二级板块基础因子数据

       

      使用示例

       

      输出结果

       

      衍生特征抽取模块

       

      使用场景

      抽取衍生特征因子(非预计算因子抽取),即计算因子表达式的值。注意:若要抽取申万二级板块的衍生特征,需要使用申万二级板块的基础特征抽取模块获取基础特征后方可使用。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_dataDataSource 基础特征模块返回的结果
      input_feature_listDataSource 因子列表模块返回的结果(data)
      input_dateDataSource 日期模块返回的结果
      date_colstrdate日期列的名称
      instrument_colstrinstrument股票列名称
      drop_naboolFalse是否删除包含空数据的行
      remove_extra_columnsboolFalse是否删除多余的列
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame股票因子数据

       

      使用示例

       

      输出结果

       

       

      数据过滤模块

       

      使用场景

      根据因子值过滤数据。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_dataDataSource 股票因子特征数据
      exprstr 表达式,例如return_0>5
      output_left_databoolFalse是否输出剩余数据
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame过滤后的股票数据
      data_2DataFrame原始数据经过滤后的剩余数据(如果output_left_data设为True才会有值)

       

      使用示例

       

       

      A股过滤模块

       

      使用场景

      过滤A股股票数据。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_dataDataSource 股票数据
      board_condlist[][1:上证主板, 2:深证主板, 3:创业板, 4:科创办, 5:北交所]
      st_condlist[][0:正常、1:ST、2:*ST、11:暂停上市]
      output_left_databoolFalse是否输出剩余数据
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame过滤后的股票数据
      data_2DataFrame原始数据经过滤后的剩余数据(如果output_left_data设为True才会有值)

       

      使用示例

       

       

      数据连接模块

       

      使用场景

      用于连接两个或者三个数据。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_data1DataSource 输入数据1
      input_data2DataSource 输入数据2
      input_data3DataSourceNone输入数据3
      onlist['instrument','date']关联的列
      howstrleft连接方式
      sortboolFalse是否排序
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame连接后的数据

       

      使用示例

       

       

      数据处理模块

       

      使用场景

      集成的数据处理模块,包括:缺失值填充(常规因子使用每天的均值填充,申万二级板块因子采用前后填充),去极值,标准化(Min_Max标准化)。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_data_blockDataSource 待处理数据
      feature_list_blockDataSource 因子列表数据
      init_dataDataSourceNone初始化数据,标准化用到max min值,所以在训练时使用的标准化会在预测、模拟的时候使用到全局的max、min值。
      bk_index_namestr 申万二级板块因子填充时用来groupby的列,一般为name_SW2
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame处理后的数据
      data_2dictinit_data数据(记录max、min值)

       

      使用示例

       

       

      数据标准化模块

       

      使用场景

      标准化数据。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_dataDataSource 待处理数据
      standard_funstrMin_MaxMin_Max:Min-Max标准化(默认)
      Z_Score:Z-Score标准化
      DecimalScaler:小数定标标准化
      MeanScaler:均值归一化
      VectorScaler:向量归一化
      lg_scaler:lg函数标准化
      columnslist 处理列,默认所有列可标准化的列
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame标准化后的数据

       

      使用示例

       

       

      数据去极值模块

       

      使用场景

      数据去极值。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_dataDataSource 待处理数据
      function_namestr'1'可选值[1:'MAD',2:'3倍标准差',3:'百分位法']
      columns_inputlist 处理的列,默认所有列
      groupstr'date'分组列名,默认date
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame去极值后的数据

       

      使用示例

       

       

      数据去空值模块

       

      使用场景

      数据去空值。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_dataDataSource 待处理数据
      dropna_columnslist 处理的列,默认所有列
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame去空值后的数据

       

      使用示例

       

       

      数据标注模块

       

      使用场景

      标注股票目标值。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_dateDataSource 日期模块
      label_exprstr 自动标注的表达式 ,例如:shift(close, -2) / shift(open, -1)
      filter_yizibanboolTrue过滤掉一字涨停的情况 (设置label为NaN,在后续处理和训练中会忽略NaN的label) where(shift(high, -1) == shift(low, -1), NaN, label)
      winsorizeboolTrue去极值,用1%和99%分位的值做clip clip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))
      wbinsboolFalse#按等宽做离散化,映射从0开始。bins可以是正整数,表示bins的数量;list,表示splits,e.g. [-2, 0, 2],小于-2的数据将被映射为0,大于2的被映射为3,中间的分别为1和2
      cbinsboolFalse按等频做离散化,映射从0开始。bins可以是正整数,表示bins的数量;list,表示每个bin里的数据比例
      binsint20分类个数,设置wbin=True或cbins=True时使用
      cast_label_intboolFalse将标注转换为整数,一般用于分类学习
      is_use_cacheboolFalse是否启用缓存

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame标注后的数据,标注的字段为label

       

      使用示例

       

      说明

      一般情况而言,机器学习会将标注数据离散化处理,而深度学习则不会做离散化。

      标注后的数据可以和股票的因子数据列表进行连接。

       

       

      获取CNN模型样例模块

       

      使用场景

      CNN样例模型。目前提供两种样例CNN模型,都是基于一维卷积搭建的深度学习模型。具体模型构建层及参数可以后期发布源码。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      input_dataDataSource 训练数据
      feature_keysDataSource 因子列表
      epochsint10训练次数
      verboseint2输出显示日志:0不显示,1输出进度条记录,2:每个epoch输出一行记录。
      default_weights_pathstrWeights\m1_weights1.h5默认使用已存储的权重,若没有,则会保存权重文件
      save_weight_pathstrWeights\m1_weights1.h5在没有读取到默认存储权重的文件时,会保存权重文件路径。

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      datatensorflow.keras.Model模型数据

       

      使用示例

       

      说明

      CNN训练每次都会生成随机的权重,这就会导致每次结果会有偏差。所以这里会固定权重文件。

      此模型是训练后的模型。模型可以直接用来预测数据。

       

      深度学习预测模块

       

      使用场景

      使用深度学习的模型进行预测。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      model_blockDataSource 训练模型
      input_dataDataSource 预测数据
      feature_keysDataSource 因子列表
      input_dateDataSource 预测时间模块
      verboseint2输出显示日志:0不显示,1输出进度条记录,2:每个epoch输出一行记录
      calc_icboolFalse是否计算和打印IC图表

       

      输出端

      通用数据类型(Output)

      名称类型字段描述
      dataDataFrame预测的数据值,预测值列名:pred_label
      data_2DataFrame计算IC的相关信息,每条记录对应每次预测的IC,最后一行是累计的平均IC

       

      使用示例

       

      说明

      预测的数据可以用来回测,检验模型的收益情况。

       

       

      回测模块

      使用场景

      用来数据回测。目前平台只支持日频交易数据,即买卖点在开盘或者收盘时买入、卖出。

       

      模块参数

      名称字段类型是否必填默认值字段描述
      name策略名称 策略模拟时,如果名字相同,则覆盖原策略信号
      paramsdict{"cash": 100000, "enable_log": False, "showplot": False,"load_data_log_flag": False}params说明
      cash:回测初始资金,默认:100000
      benchmark: 基准,默认 000300.SH
      enable_log: 是否显示交易详细日志,默认:False
      showplot: 是否显示回测曲线,默认:False
      load_data_log_flag: 是否显示加载回测数据进度条,默认:Flase
      除了以上系统使用到的字段,用户可以自定义字段,在交易模块中使用。
      trade_date_blockDataSource 预测(模拟)时间模块
      trade_prediction_dataDataSource 预测数据模块
      executeFuncfuc 自定义的交易规方法,方法中包含买卖逻辑、交易权重、持仓天数等,具体可参照示例。

       

      输出端

      注意,此结果直接返回dict类型,可自行打印查看相关数据。

      名称类型字段描述
      datadict预测结果

       

      交易模块参数(G模块)

      名称类型字段描述
      prediction_dataDataFrame传入的预测参数数据
      positionsdict持仓股票信息,key包括:
      instrument 股票代码 字符串
      hold_num 持仓数量 整数型
      holding_days 持仓天数 整数型(第一天买入为0,后续每天加1)
      price 成本价 浮点型
      position_value 持仓市值 浮点型
      trading_dayint当前交易日期,例如:20240105
      available_cashfloat当前可用资金
      total_market_holdingsfloat持仓总市值
      total_assetsfloat总资产
      paramsdict自定义传入的参数集合,例如传入购买股票数量,股票购买权重等等

       

      使用示例

       

      说明

      本系统的交易模块不包含具体的交易规则,所以用户需要写自己的交易逻辑