【历史文档】算子-高级优化
由polll创建,最终由small_q 被浏览 1102 用户
{{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 | 任务名, 默认为当前文件目录 + 当前文件名的形式生成 | 当前文件名 | |
通知邮箱 | 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 | 通用 | 数据 |
\