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')