M.advanced_auto_labeler¶
定义¶
-
M.advanced_auto_labeler.
v2
(self, instruments, label_expr, start_date='', end_date='', benchmark='000300.SHA', drop_na_label=True, cast_label_int=True, user_functions={})¶ 自动数据标注:advanced_auto_labeler可以使用表达式,对数据做任何标注。比如基于未来给定天数的收益/波动率等数据,来实现对数据做自动标注。
参数: - instruments (列表|DataSource) – 证券代码列表。
- label_expr (列表) – 标注表达式,可以使用多个表达式,顺序执行,从第二个见开始,可以使用label字段。可用数据字段见 历史数据 ,添加benchmark_前缀,可使用对应的benchmark数据。可用操作符和函数见 表达式引擎 。
- start_date (str) – 开始日期,示例 2017-02-12,一般不需要指定,使用 证券代码列表 里的开始日期;默认值是。
- end_date (str) – 结束日期,示例 2017-02-12,一般不需要指定,使用 证券代码列表 里的结束日期;默认值是。
- benchmark (str) – 基准指数,如果给定,可以使用 benchmark_* 变量;默认值是000300.SHA。
- drop_na_label (bool) – 删除无标注数据,是否删除没有标注的数据;默认值是True。
- cast_label_int (bool) – 将标注转换为整数,一般用于分类学习;默认值是True。
- user_functions (字典) – 自定义表达式函数,字典格式,例:{‘user_rank’:user_rank},字典的key是方法名称,字符串类型,字典的value是方法的引用,参考 表达式引擎 ;默认值是{}。
返回: - .data: 标注数据
返回类型: Outputs
示例代码¶
代码:
label_expr = [
# 计算收益:5日收盘价(作为卖出价格)除以明日开盘价(作为买入价格)
'shift(close, -5) / shift(open, -1) - shift(benchmark_close, -5) / shift(benchmark_open, -1)',
# 极值处理:用1%和99%分位的值做clip
'clip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))',
# 将分数映射到分类,这里使用20个分类
'all_wbins(label, 20)',
# 过滤掉一字涨停的情况 (设置label为NaN,在后续处理和训练中会忽略NaN的label)
'where(shift(high, -1) == shift(low, -1), NaN, label)'
]
instruments = '601318.SHA'
start_date = '2017-03-01'
end_date = '2017-04-01'
m1 = M.advanced_auto_labeler.v2(
instruments=instruments, start_date=start_date, end_date=end_date,
label_expr=label_expr, benchmark='000300.SHA')