{"description":"实验创建于2022/11/30","graph":{"edges":[{"to_node_id":"-180:instruments","from_node_id":"-172:data"}],"nodes":[{"node_id":"-172","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2022-01-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2022-05-01","type":"Literal","bound_global_parameter":null},{"name":"market","value":"CN_STOCK_A","type":"Literal","bound_global_parameter":null},{"name":"instrument_list","value":"","type":"Literal","bound_global_parameter":null},{"name":"max_count","value":0,"type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"rolling_conf","node_id":"-172"}],"output_ports":[{"name":"data","node_id":"-172"}],"cacheable":true,"seq_num":1,"comment":"","comment_collapsed":true},{"node_id":"-180","module_id":"BigQuantSpace.advanced_auto_labeler.advanced_auto_labeler-v2","parameters":[{"name":"label_expr","value":"# #号开始的表示注释\n# 0. 每行一个,顺序执行,从第二个开始,可以使用label字段\n# 1. 可用数据字段见 https://bigquant.com/docs/develop/datasource/deprecated/history_data.html\n# 添加benchmark_前缀,可使用对应的benchmark数据\n# 2. 可用操作符和函数见 `表达式引擎 <https://bigquant.com/docs/develop/bigexpr/usage.html>`_\n\n# # 计算收益:5日收盘价(作为卖出价格)除以明日开盘价(作为买入价格)\n# shift(close, -5) / shift(open, -1)\n\n# # 极值处理:用1%和99%分位的值做clip\n# clip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))\n\n# # 将分数映射到分类,这里使用20个分类\n# all_wbins(label, 20)\n\n# # 过滤掉一字涨停的情况 (设置label为NaN,在后续处理和训练中会忽略NaN的label)\n# where(shift(high, -1) == shift(low, -1), NaN, label)\n#未来5日最大相对收益率\nshift(cal_max_ret(close,open,benchmark_close,benchmark_open,5),-1)\n#未来5日最大相对收益率所在天数\n# shift(cal_max_ret_date(close,open, benchmark_close, benchmark_open,5),-1)+ 1","type":"Literal","bound_global_parameter":null},{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"benchmark","value":"000300.SHA","type":"Literal","bound_global_parameter":null},{"name":"drop_na_label","value":"True","type":"Literal","bound_global_parameter":null},{"name":"cast_label_int","value":"True","type":"Literal","bound_global_parameter":null},{"name":"user_functions","value":"def cal_max_ret(df,close,open,benchmark_close,benchmark_open,N):\n ret = df.groupby('instrument',as_index=False,sort=False,group_keys=False).apply(lambda x:(pd.concat([x['close'].shift(-i)/ x['open']- x['benchmark_close'].shift(-i)/ x['benchmark_open'] for i in range(N)],axis=1))\n return ret\n \ndef cal_max_ret_dateldf,close,open,benchmark_close,benchmark_open,N):\n ret = df.groupby ('instrument',as_index=False,sort=False,group_keys=False).apply(lambda x:(pd.concat([x['close'].shift(-i)/ x['open']- x['benchmark_close'].shift(-i)/ x['benchmark_open'] for i in range(N)],axis=1))\n return np.nanargmax(np.array(ret),axis=1)\nbigquant_run={'cal_max_ret':cal_max_ret,'cal_max_ret_date': cal_max_ret_date}","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-180"}],"output_ports":[{"name":"data","node_id":"-180"}],"cacheable":true,"seq_num":2,"comment":"","comment_collapsed":true}],"node_layout":"<node_postions><node_position Node='-172' Position='182,123,200,200'/><node_position Node='-180' Position='200,274,200,200'/></node_postions>"},"nodes_readonly":false,"studio_version":"v2"}
File "<ipython-input-9-91d92071f87b>", line 7
return ret
^
SyntaxError: invalid syntax