自动标注-股票

# 高级数据标注

定义

M.advanced_auto_labeler.v2(instruments, label_expr, start_date, end_date, benchmark, drop_na_label, cast_label_int, user_functions)

advanced_auto_labeler可以使用表达式,对数据做任何标注。比如基于未来给定天数的收益/波动率等数据,来实现对数据做自动标注。

参数:

  • instruments(列表|DataSource)—证券代码列表,默认由M.instruments模块传入
  • labelexpr (列表) – 标注表达式,可以使用多个表达式,顺序执行,从第二个见开始,可以使用label字段。可用数据字段见 历史数据 ,添加benchmark前缀,可使用对应的benchmark数据。可用操作符和函数见表达式引擎
  • start_date(str)—起始时间,默认为空值,由M.instruments模块传入
  • end_date(str)—结束时间,默认为空值,由M.instruments模块传入
  • benchmark(str)—指定的benchmark前缀表达式对应的标注基准,默认为’000300.SHA’
  • drop_na_label (bool) – 删除无标注数据,是否删除没有标注的数据;默认值是True。
  • cast_label_int (bool) – 将标注转换为整数,一般用于分类学习;默认值是True。
  • user_functions—(字典) – 自定义表达式函数,字典格式,例:{‘user_rank’:user_rank},字典的key是方法名称,字符串类型,字典的value是方法的引用,参考表达式引擎;默认值是{}

返回:

  • 标注数据

返回类型:

  • Outputs

示例代码:

m1 = M.input_features.v1(
    features="""

# #号开始的表示注释
close
high
open
low
"""
)

m2 = M.instruments.v2(
    start_date='2018-01-01',
    end_date='2018-06-01',
    market='CN_STOCK_A',
    instrument_list='000002.SZA',
    max_count=0
)

m3 = M.advanced_auto_labeler.v2(
    instruments=m2.data,
    label_expr="""# #号开始的表示注释
# 0. 每行一个,顺序执行,从第二个开始,可以使用label字段
# 1. 可用数据字段见 https://bigquant.com/docs/data_history_data.html
#   添加benchmark_前缀,可使用对应的benchmark数据
# 2. 可用操作符和函数见 `表达式引擎 <https://bigquant.com/docs/big_expr.html>`_

# 计算收益:5日收盘价(作为卖出价格)除以明日开盘价(作为买入价格)
shift(close, -5) / shift(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)
""",
    start_date='',
    end_date='',
    benchmark='000300.SHA',
    drop_na_label=True,
    cast_label_int=True,
    user_functions={}
)
m4.data.read_df().head()

运行结果:

[2018-12-19 09:13:19.435775] INFO: bigquant: input_features.v1 开始运行..
[2018-12-19 09:13:19.441352] INFO: bigquant: 命中缓存
[2018-12-19 09:13:19.442383] INFO: bigquant: input_features.v1 运行完成[0.006637s].
[2018-12-19 09:13:19.445002] INFO: bigquant: instruments.v2 开始运行..
[2018-12-19 09:13:19.449205] INFO: bigquant: 命中缓存
[2018-12-19 09:13:19.450170] INFO: bigquant: instruments.v2 运行完成[0.005134s].
[2018-12-19 09:13:19.452733] INFO: bigquant: advanced_auto_labeler.v2 开始运行..
[2018-12-19 09:13:19.456213] INFO: bigquant: 命中缓存
[2018-12-19 09:13:19.457042] INFO: bigquant: advanced_auto_labeler.v2 运行完成[0.004308s].

datem:lowinstrumentm:highm:openm:closem:amountlabel
02018-01-02 4318.086914 000002.SZA 4529.528809 4318.086914 4470.489746 2.218503e+09 17 
12018-01-03 4425.180664 000002.SZA 4637.996094 4462.251953 4438.910645 2.130250e+09 16 
22018-01-04 4407.331543 000002.SZA 4603.670898 4497.949707 4547.377930 1.740602e+09 14 
32018-01-05 4503.441895 000002.SZA 4926.326172 4528.155762 4772.549805 2.916788e+09 10 
42018-01-08 4820.604980 000002.SZA 5074.609863 4820.604980 4941.429199 2.994516e+09 12