历史文档

【历史文档】算子-高级优化

由polll创建,最终由small_q 被浏览 1106 用户

{{use_style}}

更新

本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明

新版量化开发IDE(AIStudio):

https://bigquant.com/wiki/doc/aistudio-aiide-NzAjgKapzW

新版模版策略:

https://bigquant.com/wiki/doc/demos-ecdRvuM1TU

新版数据平台:

https://bigquant.com/data/home

https://bigquant.com/wiki/doc/dai-PLSbc1SbZX

新版表达式算子:

https://bigquant.com/wiki/doc/dai-sql-Rceb2JQBdS

新版因子平台:

https://bigquant.com/wiki/doc/bigalpha-EOVmVtJMS5

\

超参搜索

设置超参数范围和评分函数,自动进行网格搜索。

表名:hyper_parameter_search.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 graph bq_graph_port 通用 graph,可以重写全局传入的graph None
输入1 input_ 通用 输入1,run函数参数inputs的第1个元素 None
输入2 input_2 通用 输入2,run函数参数inputs的第2个元素 None
输入3 input_3 通用 输入3,run函数参数inputs的第3个元素 None
输入参数 超参数输入 param_grid_builder code 超参数输入,构建需要搜索的超参数列表 [默认代码](javascript:void(0);)
评分函数 scoring code 评分函数 [默认代码](javascript:void(0);)
参数搜索算法 search_algorithm choice 参数搜索算法 网格搜索
搜索迭代次数 search_iterations int 搜索迭代次数,用于随机搜索 10
随机数种子 random_state int 随机数种子,用于随机搜索,不填则默认使用np.random None
并行运行作业数 workers int 并行运行作业数,会员可以使用更多的并行作业,请联系微信客服 bigq100 开通 1
作业分布式运行 worker_distributed_run bool 作业分布式运行,在集群里分布式运行参数搜索作业 True
不显示作业日志 worker_silent bool 不显示作业日志,如果作业日志太多,可以选择不显示 True
即时执行 run_now bool 即时执行,如果不勾选,此模块不会即时执行,而是将当前行为打包为graph传入到后续模块执行 True
bq_graph bq_graph bool bq_graph,用于接收全局传入的graph,用户设置值无效 True
输出端 结果 result 通用 结果

使用案例:超参搜索使用简介

(用双均线模板做的一个快线,慢线周期的搜索)

https://bigquant.com/experimentshare/7fda4c8312b04d79bbe1e3a898b9d5db

滚动训练

滚动训练模块可以实现训练集和测试集的定期更新轮换。在金融市场中,市场结构是时常变化的,因此模型需要不断训练,这也是滚动训练的出发点。一般而言,是随着时间的推移按固定的时间定期训练模型,比如训练集为2年时间,预测集为1年,模型更新时间为1年。那么由2010-2011年的数据训练出的模型在2012年数据上预测,由2011-2012年训练的模型在2013年数据上预测,依次类推,最后把每次预测的数据拼接起来,进行回测验证。

表名:hyper_rolling_train.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 graph bq_graph_port 通用 graph,可以重写全局传入的graph None
输入1 input_1 通用 输入1,run函数参数inputs的第1个元素 None
输入1 input_2 通用 输入1,run函数参数inputs的第2个元素 None
输入1 input_3 通用 输入1,run函数参数inputs的第3个元素 None
输入参数 run函数 run code run函数 [默认代码](javascript:void(0);)
即时执行 run_now bool 即时执行,如果不勾选,此模块不会即时执行,并将当前行为打包为graph传入到后续模块执行 True
bq_graph bq_graph bool bq_graph,用于接收全局传入的graph,用户设置值无效 True
输出端 结果 result 通用 结果

自定义运行

自定义运行,可以在这里批量设置参数,批量运行,比如对某因子池进行单个因子验证,比如对训练模块学习率在某个范围按一定步长单个测试验证。该模块也可结合超参数调优、滚动训练等场景使用。

表名:hyper_run.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 graph bq_graph_port 通用 graph,可以重写全局传入的graph None
输入1 input_1 通用 输入1,run函数参数inputs的第1个元素 None
输入2 input_2 通用 输入2,run函数参数inputs的第2个元素 None
输入3 input_3 通用 输入3,run函数参数inputs的第3个元素 None
输入参数 run函数 run code run函数 [默认代码](javascript:void(0);)
即时执行 run_now bool 即时执行,如果不勾选,此模块不会即时执行,并将当前行为打包为graph传入到后续模块执行 True
bq_graph bq_graph bool bq_graph,用于接收全局传入的graph,用户设置值无效 True
输出端 结果 result 通用 结果

自定义模块

自定义Python模块

表名:cached.v3

类别 显示名称 名称 类型 描述 必填/默认
输入端 输入1 input_1 通用 输入1,传入到函数的参数 input_1 None
输入2 input_2 通用 输入2,传入到函数的参数 input_2 None
输入3 input_3 通用 输入3,传入到函数的参数 input_3 None
输入参数 主函数 run code 主函数,返回Outputs对象 [默认代码](javascript:void(0);)
后处理函数 post_run code 后处理函数,输入是主函数的输出,此函数输出不会被缓存 [默认代码](javascript:void(0);)
模块输入端 input_ports str 模块输入端,另存为模块时使用,示例input1,input2...
模块参数 params code 模块参数,字典形式,给出参数的值。比如{'param1':1,'param2':2} [默认代码](javascript:void(0);)
模块输出端 output_ports str 模块输出端,另存为模块时使用,示例data1,data2...
主函数参数 kwargs doc 主函数参数,run的参数,如果函数接受参数 input_1/2/3,如上的 input_1/2/3也将被加入到此参数里。在可视化模式下,只有参数 input_1/2/3 可用。 None
输出端 输出1 data_1 通用 输出1,对应函数输出的 data_1
输出2 data_2 通用 输出2,对应函数输出的 data_2
输出3 data_3 通用 输出3,对应函数输出的 data_3

策略绩效评价

最近N日绩效评估

根据策略回测曲线,统计近期绩效指标。

表名:N_days_performance_statistics.v5

类别 显示名称 名称 类型 描述 必填/默认
输入端 回测详细数据 backtest_ds 通用 回测详细数据 None
输入参数 N日绩效指标评估 N int N日绩效指标评估,默认为5 5
输出端 N日绩效指标 evaluation_of_perf_indicator 通用 N日绩效指标
N日阶段收益率分析 analysis_of_stage_return_rat 通用 N日阶段收益率分析

平均持仓周期分析

对传入的回测结果数据进行持仓分析,输出各时间段策略的平均持仓数据

表名:strategy_average_position_analysis.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 回测详细数据 raw_perf 通用 回测详细数据 *必填
输出端 平均持仓天数 data 通用 平均持仓天数

brinson归因分析

对传入的回测结果数据进行净值归因分析,输出策略在各行业上的收益分布

表名:strategy_brinson_analysis.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 回测详细数据 raw_perf 通用 回测详细数据 *必填
输入参数 基准指数代码 benchmark_index str 基准指数代码 000300.HIX
输出端 单期brinson数据 single_brinson 通用 单期brinson数据
多期brinson数据 multi_brinson 通用 多期brinson数据

策略容量分析

对传入的回测详细数据,进行策略容量分析计算并对计算结果进行可视化

表名:strategy_capacity_analyzer.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 回测详细数据 raw_perf 通用 回测详细数据 *必填
输入参数 成交比率 volume_limit float 成交比率 0.025
策略容量计算方式(开盘N分钟) frequency choice 策略容量计算方式(开盘N分钟) 15m
策略容量计算函数 calculate code 策略容量计算函数 [默认代码](javascript:void(0);)

策略风险概览

对传入的回测结果数据进行风险分析,输出动态回撤图及策略各风险指标数据

表名:strategy_evaluate_risk_overview.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 回测详细数据 raw_perf 通用 回测详细数据 *必填
输出端 回撤指标 data 通用 回撤指标

策略收益分布

对传入的回测结果数据进行收益分布分析,输出策略及基准各时间段的收益数据

表名:strategy_income_distribution.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 回测详细数据 raw_perf 通用 回测详细数据 *必填
输出端 策略收益分布指标 data 通用 策略收益分布指标

策略区间收益

对传入的回测结果数据进行区间收益分析,输出各时间段及各区间的策略及基准收益情况

表名:strategy_interval_return.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 回测详细数据 raw_perf 通用 回测详细数据 *必填
输出端 策略收益分布指标 data 通用 策略收益分布指标

因子收益及风险分析

因子收益及风险分析.

表名:strategy_ret_risk_analysis.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 回测详细数据 backtest_ds 通用 回测详细数据 None
输入参数 基准代码 benchmark_symbol choice 基准代码 000300.HIX
因子数据窗口值 feature_window int 因子数据窗口值 60
输出端 因子收益及风险分析分析结果 data 通用 因子收益及风险分析分析结果

每日top10持仓分析

用于回测结果分析。分析每日持仓股票的行业分布和数量分布。输出持仓行业市值和top10持仓的股票。

表名:strategy_top10_position_analysis.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 回测详细数据 backtest_ds 通用 回测详细数据 None
输出端 每日各行业市值(申万一级) industry_market_value_daily 通用 每日各行业市值(申万一级)
每日的top10持仓 top10_positions 通用 每日的top10持仓

换手率分析

对传入的回测结果数据进行换手率分析,输出该策略换手率随时间的分布图

表名:strategy_turn_analysis.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 回测详细数据 raw_perf 通用 回测详细数据 *必填
输出端 回撤指标 data 通用 回撤指标

数据导入与构建

修改表信息

表名:datahub_alter_table.v3

类别 显示名称 名称 类型 描述 必填/默认
输入参数 表名 alias str 表名 *必填
测试 test bool 测试, 查看更新前后数据对比, 不更新表信息 True
新schema update_schema code 新schema,写入您定义的新的schema [默认代码](javascript:void(0);)
输出端 更新结果 None 通用 更新结果

创建定时任务

表名:datahub_bash_operator.v3

类别 显示名称 名称 类型 描述 必填/默认
输入参数 任务名(默认) task_name choice 任务名(默认) 当前文件名
定时设置 schedule_interval str 定时设置,可参考linux cron语法或者使用 @daily / @once / @hourly / @weekly / @monthly / @yearly, 建议定时设置最小间隔为15分钟 0 8 * * *
即时执行 run_now bool 即时执行, 如果不勾选, 此模块不会即时执行 True
输出端 任务 task 通用 任务

删除用户数据表

表名:datahub_delete_table.v1

类别 显示名称 名称 类型 描述 必填/默认
输入参数 表名 alias str 表名, 删除的表名称, 用户表明后缀为_U *必填
输出端 msg None 通用 msg

数据处理(自定义)

表名:datahub_handler_column.v1

类别 显示名称 名称 类型 描述 必填/默认
输入端 输入数据 input_data 通用 输入数据, 数据DataFrame *必填
输入参数 自定义处理函数 handler code 自定义处理函数, 自定义函数, 处理数据 [默认代码](javascript:void(0);)
输出端 数据 data 通用 数据

创建定时任务(自定义)

表名:datahub_kube_operator.v2

类别 显示名称 名称 类型 描述 必填/默认
输入参数 即时执行 run_now bool 即时执行, 如果不勾选, 此模块不会即时执行 True
定时设置 schedule_interval str 定时设置,可参考linux cron语法或者使用 @daily / @once / @hourly / @weekly / @monthly / @yearly 15 5 * * *
任务名 task_name choice 任务名, 默认为当前文件目录 + 当前文件名的形式生成 当前文件名
通知邮箱 email str 通知邮箱, 多个可以使用 "," 分隔, 任务失败发送邮件提醒
重试次数 retry_times str 重试次数 3
镜像 image str 镜像, 默认用户userbox镜像,使用其他镜像在此填入镜像地址 default
节点选择 node_selectors code 节点选择 [默认代码](javascript:void(0);)
挂载目录 volume_mounts code 挂载目录 [默认代码](javascript:void(0);)
环境变量 env_vars code 环境变量 [默认代码](javascript:void(0);)
输出端 任务 task 通用 任务

可读用户数据表

表名:datahub_list_tables.v1

类别 显示名称 名称 类型 描述 必填/默认
输入参数 包含公开数据表 contain_public bool 包含公开数据表, 包含公开数据表将会把公开的数据表一起查询出来 True
输出端 tables None 通用 tables

读取数据(DataSource)

表名:datahub_load_datasource.v1

类别 显示名称 名称 类型 描述 必填/默认
输入参数 表名 table str 表名, 线上数据表名 *必填
开始时间 start_date str 开始时间
结束时间 end_date str 结束时间
股票列表 instruments code 股票列表 [默认代码](javascript:void(0);)
字段列表 fields code 字段列表 [默认代码](javascript:void(0);)
输出端 数据(DataFrame) data 通用 数据(DataFrame)

读取数据(MySql)

表名:datahub_load_db.v1

类别 显示名称 名称 类型 描述 必填/默认
输入参数 数据库连接 conn str 数据库连接,数据库连接字符串,username:password@host:port *必填
数据库名称 database str 数据库名称 *必填
查询SQL generate_sql code 查询SQL, 编写自定义sql读取数据库中的数据 [默认代码](javascript:void(0);)
charset charset str charset,字符集 utf8
输出端 数据 data 通用 数据

读取数据(文件)

表名:datahub_load_file.v1

类别 显示名称 名称 类型 描述 必填/默认
输入参数 文件路径生成函数 file_path code 文件路径生成函数, 自定义函数, 处理数据 [默认代码](javascript:void(0);)
文件类型 file_type choice 文件类型 csv
csv文件分隔符 csv_delimiter str csv文件分隔符, 默认是都好, h5文件不需要填入此值 ,
H5文件key h5_data_key str H5文件key, 默认是data, csv文件不需要填入此值 data
输出端 数据 data 通用 数据

读取数据(MongoDB)

表名:datahub_load_mongo.v1

类别 显示名称 名称 类型 描述 必填/默认
输入参数 数据库连接 conn str 数据库连接, 数据库连接字符串,username:password@host:port *必填
数据库名称 database str 数据库名称 *必填
数据集合 table str 数据集合, 可选, 建议使用sql的方式动态查询每次构建的数据,确保每次数据都是最新的 *必填
查询条件 generate_condition code 查询条件, 编写自定义sql读取数据库中的数据 [默认代码](javascript:void(0);)
输出端 数据 data 通用 数据

读取数据(Oracle)

表名:datahub_load_oracle.v1

类别 显示名称 名称 类型 描述 必填/默认
输入参数 数据库连接 conn str 数据库连接, 数据库连接字符串,username:password@host:port *必填
数据库名称 database str 数据库名称 *必填
查询SQL generate_sql code 查询SQL, 编写自定义sql读取数据库中的数据 [默认代码](javascript:void(0);)
输出端 数据 data 通用 数据

读取数据(Postgres)

表名:datahub_load_postgres.v1

类别 显示名称 名称 类型 描述 必填/默认
输入参数 数据库连接 conn str 数据库连接, 数据库连接字符串,username:password@host:port *必填
数据库名称 database str 数据库名称 *必填
查询SQL generate_sql code 查询SQL, 编写自定义sql读取数据库中的数据 [默认代码](javascript:void(0);)
输出端 数据 data 通用 数据

读取数据(SqlServer)

表名:datahub_load_sqlserver.v1

类别 显示名称 名称 类型 描述 必填/默认
输入参数 数据库连接 conn str 数据库连接, 数据库连接字符串,username:password@host:port *必填
数据库名称 database str 数据库名称 *必填
查询SQL generate_sql code 查询SQL, 编写自定义sql读取数据库中的数据 [默认代码](javascript:void(0);)
输出端 数据 data 通用 数据

更新入库

表名:datahub_update_datasource.v4

类别 显示名称 名称 类型 描述 必填/默认
输入端 数据通用 input_data 通用 数据通用 *必填
输入参数 表名 alias str 表名, 数据表名,用户数据系统会自动添加后缀"_U" *必填
主键字段(必填) primary_key code 主键字段(必填), 指定字段作为去重的索引, 多个使用逗号隔开 [默认代码](javascript:void(0);)
日期字段 date_field str 日期字段, 日期所在字段的名称, 如果没有可不填
分表方式 partition_date choice 分表方式, 数据将按照您选定的方式进行分库分表
覆盖原数据 rewrite bool 覆盖原数据, 是否删除旧数据只保留当前数据 False
公开数据 public bool 公开数据, 选择公开数据后数据对所有人可见 False
中文表名 friendly_name str 中文表名, 表的中文名称
表描述 desc str 表描述, 描述表的数据分类和数据用途
只保留数据描述定义字段 only_desc_fields bool 只保留数据描述定义字段 False
数据字段描述 fields code 数据字段描述, 对数据中的每列的含义和数据类型进行描述 [默认代码](javascript:void(0);)
数据文档 show_doc bool 数据文档, 用户数据不会显示在文档中,只有系统数据勾选此项有效 True
输出端 数据 data 通用 数据

\

{link}