平台默认支持很多表达式进行数据标注,若用户想自定义表达式进行数据标注,可以参考本例。
# 本代码由可视化策略环境自动生成 2021年6月21日11:08
# 本代码单元只能在可视化模式下编辑。您也可以拷贝代码,粘贴到新建的代码单元或者策略,然后修改。
def my_wbins(self,rets,bins):
result = pd.cut(rets, bins=bins,labels=range(bins))
print(result)
return result
m2_user_functions_bigquant_run = {
'my_wbins': my_wbins
}
m1 = M.instruments.v2(
start_date='2016-01-01',
end_date='2017-01-01',
market='CN_STOCK_A',
instrument_list='',
max_count=0
)
m2 = M.advanced_auto_labeler.v2(
instruments=m1.data,
label_expr="""
# 计算收益:5日收盘价(作为卖出价格)除以明日开盘价(作为买入价格)
shift(close, -5) / shift(open, -1) - 1
# 极值处理:用1%和99%分位的值做clip
clip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))
# 通过自定义函数将分数映射到分类,这里使用20个分类
my_wbins(rets=label, bins=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=m2_user_functions_bigquant_run
)
[2021-06-21 11:06:18.290548] INFO: moduleinvoker: instruments.v2 开始运行..
[2021-06-21 11:06:18.296458] INFO: moduleinvoker: 命中缓存
[2021-06-21 11:06:18.297431] INFO: moduleinvoker: instruments.v2 运行完成[0.006886s].
[2021-06-21 11:06:18.300741] INFO: moduleinvoker: advanced_auto_labeler.v2 开始运行..
[2021-06-21 11:06:18.319001] INFO: moduleinvoker: 命中缓存
[2021-06-21 11:06:18.319888] INFO: moduleinvoker: advanced_auto_labeler.v2 运行完成[0.019149s].
# 查看标注数据
m2.data.read()