{"description":"实验创建于2020/2/21","graph":{"edges":[{"to_node_id":"-673:input_2","from_node_id":"-4550:data"},{"to_node_id":"-356:inputs","from_node_id":"-4550:data"},{"to_node_id":"-3880:inputs","from_node_id":"-4550:data"},{"to_node_id":"-2431:input_2","from_node_id":"-1540:data"},{"to_node_id":"-10751:input_2","from_node_id":"-2431:data_1"},{"to_node_id":"-9272:input_2","from_node_id":"-3887:data_1"},{"to_node_id":"-2578:training_data","from_node_id":"-3725:data_1"},{"to_node_id":"-1540:input_data","from_node_id":"-3725:data_2"},{"to_node_id":"-2431:input_3","from_node_id":"-3725:data_3"},{"to_node_id":"-3954:input_2","from_node_id":"-2186:data"},{"to_node_id":"-1086:input_2","from_node_id":"-2186:data"},{"to_node_id":"-3887:input_2","from_node_id":"-18645:data"},{"to_node_id":"-1101:input_2","from_node_id":"-18645:data"},{"to_node_id":"-1120:input_1","from_node_id":"-989:data"},{"to_node_id":"-3960:input_data","from_node_id":"-3954:data_1"},{"to_node_id":"-1128:input_1","from_node_id":"-3960:data"},{"to_node_id":"-3004:input_ds","from_node_id":"-3964:data"},{"to_node_id":"-3725:input_2","from_node_id":"-3004:sorted_data"},{"to_node_id":"-3725:input_1","from_node_id":"-673:data_2"},{"to_node_id":"-4746:input_3","from_node_id":"-673:data_2"},{"to_node_id":"-558:input_3","from_node_id":"-673:data_2"},{"to_node_id":"-1969:inputs","from_node_id":"-356:data"},{"to_node_id":"-3176:inputs","from_node_id":"-1969:data"},{"to_node_id":"-3880:outputs","from_node_id":"-2605:data"},{"to_node_id":"-2578:input_model","from_node_id":"-3880:data"},{"to_node_id":"-1092:input_data","from_node_id":"-1086:data_1"},{"to_node_id":"-4746:input_1","from_node_id":"-1092:data"},{"to_node_id":"-558:input_1","from_node_id":"-1096:data"},{"to_node_id":"-1096:input_data","from_node_id":"-1101:data_1"},{"to_node_id":"-3964:data1","from_node_id":"-1108:data"},{"to_node_id":"-1108:input_data_1","from_node_id":"-1120:data"},{"to_node_id":"-4873:feature_data1","from_node_id":"-1128:data"},{"to_node_id":"-4873:feature_data2","from_node_id":"-4746:data"},{"to_node_id":"-1108:input_data_2","from_node_id":"-558:data"},{"to_node_id":"-3725:input_3","from_node_id":"-5975:data_2"},{"to_node_id":"-3954:input_1","from_node_id":"-5975:data_2"},{"to_node_id":"-1120:input_2","from_node_id":"-5975:data_2"},{"to_node_id":"-1128:input_2","from_node_id":"-5975:data_2"},{"to_node_id":"-9260:input_2","from_node_id":"-5975:data_2"},{"to_node_id":"-9272:input_1","from_node_id":"-5975:data_2"},{"to_node_id":"-2605:inputs","from_node_id":"-3176:data"},{"to_node_id":"-3964:data2","from_node_id":"-2461:data"},{"to_node_id":"-2461:input_data_1","from_node_id":"-4873:cleaned_data1"},{"to_node_id":"-2461:input_data_2","from_node_id":"-4873:cleaned_data2"},{"to_node_id":"-3887:input_1","from_node_id":"-9260:data_2"},{"to_node_id":"-989:input_data","from_node_id":"-9272:data_2"},{"to_node_id":"-1540:trained_model","from_node_id":"-2578:trained_model"},{"to_node_id":"-2431:input_1","from_node_id":"-2578:trained_model"},{"to_node_id":"-1101:input_1","from_node_id":"-532:data"},{"to_node_id":"-1086:input_1","from_node_id":"-532:data"},{"to_node_id":"-9272:input_3","from_node_id":"-532:data"},{"to_node_id":"-558:input_2","from_node_id":"-532:data"},{"to_node_id":"-5975:input_2","from_node_id":"-532:data"},{"to_node_id":"-4746:input_2","from_node_id":"-532:data"}],"nodes":[{"node_id":"-4550","module_id":"BigQuantSpace.dl_layer_input.dl_layer_input-v1","parameters":[{"name":"shape","value":"20,30","type":"Literal","bound_global_parameter":null},{"name":"batch_shape","value":"","type":"Literal","bound_global_parameter":null},{"name":"dtype","value":"float32","type":"Literal","bound_global_parameter":null},{"name":"sparse","value":"False","type":"Literal","bound_global_parameter":null},{"name":"name","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"inputs","node_id":"-4550"}],"output_ports":[{"name":"data","node_id":"-4550"}],"cacheable":false,"seq_num":1,"comment":"","comment_collapsed":true},{"node_id":"-1540","module_id":"BigQuantSpace.dl_model_predict.dl_model_predict-v1","parameters":[{"name":"batch_size","value":"32","type":"Literal","bound_global_parameter":null},{"name":"n_gpus","value":0,"type":"Literal","bound_global_parameter":null},{"name":"verbose","value":"2:每个epoch输出一行记录","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"trained_model","node_id":"-1540"},{"name":"input_data","node_id":"-1540"}],"output_ports":[{"name":"data","node_id":"-1540"}],"cacheable":true,"seq_num":2,"comment":"","comment_collapsed":true},{"node_id":"-2431","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, input_2, input_3):\n # 示例代码如下。在这里编写您的代码\n \n mdl_dict = input_1.read_pickle() # 获取 模型字典\n pred_label = input_2.read_pickle() # 大盘因子预测标签\n df = input_3.read_df() # 大盘因子测试集,含实际标签\n \n # 获取 模型 return_sequences 参数\n return_sequences = mdl_dict['model_graph'].partition('return_sequences:')[2].partition('return_state')[0]\n \n# print('\\nLSTM 是否返回整个序列? ', return_sequences)\n \n df = pd.DataFrame({'pred_label':pred_label[:,-1,-1] if return_sequences.startswith('true') else \n pred_label[:,0], \n 'date':df.date, \n 'label':df.label})\n df.sort_values(['date','pred_label'],inplace=True, ascending=[True,False])\n \n return Outputs(data_1=DataSource.write_df(df), data_2=None, data_3=None)\n\n","type":"Literal","bound_global_parameter":null},{"name":"post_run","value":"# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。\ndef bigquant_run(outputs):\n return outputs\n","type":"Literal","bound_global_parameter":null},{"name":"input_ports","value":"","type":"Literal","bound_global_parameter":null},{"name":"params","value":"{}","type":"Literal","bound_global_parameter":null},{"name":"output_ports","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-2431"},{"name":"input_2","node_id":"-2431"},{"name":"input_3","node_id":"-2431"}],"output_ports":[{"name":"data_1","node_id":"-2431"},{"name":"data_2","node_id":"-2431"},{"name":"data_3","node_id":"-2431"}],"cacheable":false,"seq_num":3,"comment":"绑定 大盘因子测试集 预测标签 和 实际标签","comment_collapsed":false},{"node_id":"-3887","module_id":"BigQuantSpace.index_feature_extract.index_feature_extract-v3","parameters":[{"name":"before_days","value":"200","type":"Literal","bound_global_parameter":null},{"name":"index","value":"000001.HIX","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-3887"},{"name":"input_2","node_id":"-3887"}],"output_ports":[{"name":"data_1","node_id":"-3887"},{"name":"data_2","node_id":"-3887"}],"cacheable":true,"seq_num":4,"comment":"大盘标签 训练集","comment_collapsed":false},{"node_id":"-3725","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\n# 输入端:\n # input_1:接 输入层Input\n # input_2:基于 大盘因子训练集 代码列表 和 股票因子测试集 代码列表 抽取的 指数特征(大盘因子)数据集\n # input_3:接 大盘因子训练集 代码列表\n# # input_2:基于 测试集代码列表 抽取的 指数特征(大盘因子)数据集\n# # input_3:接 测试集代码列表\n# 输出端:\n # data_1:大盘因子滑动窗口训练集,数组类型字典\n # data_2:大盘因子滑动窗口测试集,数组类型字典,保留 第一个 前补 window\n# # data_3:大盘因子测试集,完整保留原始列 \n # data_3:大盘因子测试集,丢弃 第一个 前补 window,完整保留原始列 \n \ndef bigquant_run(input_1, input_2, input_3):\n # 示例代码如下。在这里编写您的代码\n\n #window = 7 # m18.data.shape[1] # 每个input的长度\n #window = input_1.shape[1] # 每个input的长度,对应 LSTM time_steps\n window = input_1 # 每个input的长度,对应 LSTM time_steps\n \n# print('window:',window)\n \n # 指数特征(大盘因子)数据集:基于 测试集 代码列表 时间区间,但 向前保留一个 window 天数 用于 训练集 \n# df = input_2.read_df() \n# df = input_2.read_df().reset_index(drop = True)\n df = (input_2.read_df()\n# .dropna(subset=['bm_label']) # 不能 dropna, 否则 会删掉 测试集最后一天记录,导致模拟交易无预测信号 \n .drop_duplicates() # 去除可能因 测试集 向前多取 window 导致的重复行\n .reset_index(drop=True)) # 重置索引\n \n # 大盘因子名称去除前缀'bm_'\n cols = df.columns\n df.columns = [(col.partition('bm_')[2] if col.startswith('b') else col) for col in cols ]\n \n # 大盘因子数据集 去除 ['date','instrument','label'] 三列\n df_x = df[df.columns.difference(['date','instrument','label'] )] \n\n# # 取 测试集开始日期 为 大盘因子测试集开始日期 \n# start_date = input_3.read()['start_date'] \n \n# train_df = df.query(\"date<@start_date\") # 大盘因子训练集\n# test_df = df.query(\"date>=@start_date\") # 大盘因子测试集\n## train_df = df[df['date'] < start_date] # 大盘因子 训练集\n## test_df = df[df['date'] >= start_date] # 大盘因子 预测集\n \n # 大盘因子训练集 开始日期 和 结束日期\n start_date = input_3.read()['start_date'] \n end_date = input_3.read()['end_date']\n \n # 大盘因子 训练集 和 测试集\n train_df = df.query(\"@start_date <= date and date <= @end_date\") # 大盘因子训练集\n train_df_end_ix = train_df.tail(1).index[0] # train_df 尾行索引值\n test_df = df.iloc[(train_df_end_ix +1 - window):] # 大盘因子测试集,使用 索引 确保完整包含 向前多取的 window\n# test_df = df.iloc[(train_df_end_ix +1 - window):].drop_duplicates() # 大盘因子测试集,使用 索引 确保完整包含 向前多取的 window\n# test_df = df.query(\"index > @ train_df_end_ix\") # 大盘因子测试集,使用 索引 确保完整包含 向前多取的 window\n \n# train_df = df.query(\"@start_date <= date and date <= @end_date\").dropna(subset=['label']) # 大盘因子训练集\n# test_df = df.query(\"date > @end_date\") # 大盘因子测试集,包含 一个 多取的 向前的 window\n \n# print('\\n')\n# print('\\n大盘因子预处理模块:标准化、滑动窗口、滑动窗口型大盘因子数据集 拆分为 训练集和测试集')\n# print('大盘因子预处理前训练集train_df长度:',len(train_df))\n# print('大盘因子预处理前测试集test_df长度:',len(test_df))\n# print('大盘因子预处理前训练集train_df:',(train_df)).tail(10)\n \n# # 大盘因子测试集 向前补一个 window,以便以该 window 为基础 预测 原测试集 首个 window 各日对应 label\n# test_df = pd.concat([train_df.tail(window),test_df]) \n \n# if len(train_df) < train_len:\n# print('大盘因子数据集长度不足!')\n# print('请调增‘指数特征抽取模块’的‘行情数据向前抽取天数’,或调减‘输入层Input’ shape 长度参数,或调减 train_length 参数!')\n# return\n \n train_x = train_df[train_df.columns.difference(['date','instrument','label'] )] # 大盘因子训练集 x,去除 ['date','instrument','label'] 三列\n train_y = train_df['label'] # 大盘因子训练集 y,仅 ['label'] 列\n test_x = test_df[test_df.columns.difference(['date','instrument','label'] )] # 大盘因子测试集 x,去除 ['date','instrument','label'] 三列\n \n# print('大盘因子训练集 train_df:\\n',(train_df))\n# print('大盘因子测试集 test_df:\\n',(test_df))\n \n # 数据处理:标签独热编码\n# from sklearn.preprocessing import OneHotEncoder\n# onehot_model = OneHotEncoder()\n# train_y = onehot_model.fit_transform(train_df[['label']]).toarray() # 大盘因子训练集 y,仅 ['label'] 列\n \n # 数据处理:标准化\n from sklearn.preprocessing import scale,StandardScaler\n train_x = scale(train_x) \n test_x = scale(test_x) \n# print('scale(train_x):\\n{}\\n{}'.format(scale(train_x),scale(train_x).shape))\n# print('scale(test_x):\\n{}\\n{}'.format(scale(test_x),scale(test_x).shape))\n# scaler = StandardScaler().fit(train_x)\n# train_x = scaler.transform(train_x) # 与 scale(train_x) 相同\n# test_x = scaler.transform(test_x) # 与 scale(test_x) 不同\n \n# print('标准化及滑动窗口前大盘因子训练集train_x长度:',len(train_x))\n# print('标准化及滑动窗口前大盘因子训练集train_y长度:',len(train_y))\n# print('标准化及滑动窗口前大盘因子测试集test_x长度:',len(test_x), '\\n')\n# print('train_x:\\n{}\\n{}'.format(train_x,train_x.shape))\n# print('train_y:\\n{}\\n{}'.format(train_y,train_y.shape))\n# print('test_x:\\n{}\\n{}'.format(test_x,test_x.shape))\n \n # 数据处理:窗口化,生成 滑动窗口数据,基于前一个 滑动窗口(window) 训练和预测 \n# train_x = [scale(train_x[i:i + window]) for i in range(len(train_x) - window)] # x 元素形状:(window,len(fields))\n# train_y = [train_y[window + i:window + i + 1].values[0] for i in range(len(train_y) - window)]\n \n# test_x = [scale(test_x[i:i + window]) for i in range(len(test_x) - window)] # x 元素形状:(window,len(fields))\n \n train_x = [(train_x[i:i + window]) for i in range(len(train_x) - window)] # x 元素形状:(window,len(fields))\n train_y = [train_y[window + i] for i in range(len(train_y) - window)]\n# train_y = [train_y[window + i:window + i + 1].values[0] for i in range(len(train_y) - window)]\n \n test_x = [(test_x[i:i + window]) for i in range(len(test_x) - window)] # x 元素形状:(window,len(fields)),经滑动自动缩短前补 window 导致的增量长度\n\n# train_x = [scale(train_x[i:i+window]) for i in range(len(train_x)-window)] # x 元素形状:(window,len(fields))\n# test_x = [scale(test_x[i:i+window]) for i in range(len(test_x)-window)] # x 元素形状:(window,len(fields))\n# train_x = [scale(train_x[i:i+window]) for i in range(len(train_x)-window-1)] # x 元素形状:(window,len(fields))\n# train_y = [train_y[window+i:window+i+1].values[0] for i in range(len(train_y)-window-1)]\n# train_x = [scale(train_x[i:i+window+1]) for i in range(len(train_x)-window)] # x 元素形状:(window,len(fields))\n# train_y = [train_y[window+i-1:window+i].values[0] for i in range(len(train_y)-window)]\n# train_y = [train_y[i:i+1].values[0] for i in range(len(train_y)-window)]\n# train_x = [scale(train_x[i:i+window]) for i in range(len(train_x))] # x 元素形状:(window,len(fields))\n# train_y = [train_y[i] for i in range(len(train_y)-window)]\n# train_y = [train_y[i] for i in range(len(train_y))]\n# test_x = [scale(df_x[i:i+window]) for i in range(len(df_x)-len(test_df),len(df_x)-window)] # x 元素形状:(window,len(fields))\n# test_x = [scale(df_x[i+1-window:i+1]) for i in range(len(df_x)-len(test_df),len(df_x))] # x 元素形状:(window,len(fields))\n# test_x = [scale(test_x[i:i+window]) for i in range(len(test_x))] # x 元素形状:(window,len(fields))\n\n # LSTM 训练和预测模块接受 数组类型字典 的输入\n train = {'x':np.array(train_x),'y':np.array(train_y)}\n test = {'x':np.array(test_x)}\n\n# print('标准化及滑动窗口后大盘因子训练集train_x长度:',len(train_x))\n# print('标准化及滑动窗口后大盘因子训练集train_y长度:',len(train_y))\n# print('标准化及滑动窗口后大盘因子测试集test_x长度:',len(test_x), '\\n')\n# # print('标准化及滑动窗口后大盘因子测试集test长度:',len(test['x']))\n# print(\"train['x']:\\n{}\\n{}\".format(train['x'],train['x'].shape))\n# print(\"train['y']:\\n{}\\n{}\".format(train['y'],train['y'].shape))\n# print(\"test['x']:\\n{}\\n{}\".format(test['x'],test['x'].shape))\n \n data_1 = DataSource.write_pickle(train) # 大盘因子滑动窗口训练集,数组类型字典\n data_2 = DataSource.write_pickle(test) # 大盘因子滑动窗口测试集,数组类型字典,长度已 不含 第一个 前补 window 的长度\n# data_2 = DataSource.write_pickle(test['x']) # 大盘因子滑动窗口测试集,数组类型字典,长度已 不含 第一个 前补 window 的长度\n# data_3 = DataSource.write_df(test_df) # 大盘因子测试集,丢弃 第一个 前补 window,完整保留原始列 \n data_3 = DataSource.write_df(test_df.iloc[window:]) # 大盘因子测试集,丢弃 第一个 前补 window,完整保留原始列 \n# data_3 = DataSource.write_df(test_df) # 大盘因子测试集,完整保留原始列 \n return Outputs(data_1=data_1, data_2=data_2, data_3=data_3)","type":"Literal","bound_global_parameter":null},{"name":"post_run","value":"# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。\ndef bigquant_run(outputs):\n return outputs\n","type":"Literal","bound_global_parameter":null},{"name":"input_ports","value":"","type":"Literal","bound_global_parameter":null},{"name":"params","value":"","type":"Literal","bound_global_parameter":null},{"name":"output_ports","value":"data_1,data_2,data_3","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-3725"},{"name":"input_2","node_id":"-3725"},{"name":"input_3","node_id":"-3725"}],"output_ports":[{"name":"data_1","node_id":"-3725"},{"name":"data_2","node_id":"-3725"},{"name":"data_3","node_id":"-3725"}],"cacheable":false,"seq_num":5,"comment":"标准化、滑动窗口、滑动窗口型大盘因子数据集 拆分为 训练集和测试集","comment_collapsed":false},{"node_id":"-2186","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"#开盘价/收盘价,最高价/收盘价,最低价/收盘价,收盘价日涨幅,交易量日涨幅,持仓量日涨幅,收盘价5日平均/收盘价,收盘价10日平均/收盘价,收盘价20日平均/收盘价,交易量5日平均/交易量,交易量10日平均/交易量,交易量20日平均/交易量,持仓量5日平均/持仓量,持仓量10日平均/持仓量,持仓量20日平均/持仓量,收盘价14日RSI指数\n# 20210831-1:169%\n# 20210831-1-ep800:176%\n# 20210831-1-ep1000:156%\n\nbm_close= close\nbm_open= open\nbm_high= high\nbm_low= low\nbm_amount= amount\nbm_volume= volume\n\n\nbm_amplitude= (high-low)/shift(close, 1)\nbm_max_amplitude_5= ts_max(bm_amplitude, 5)\nbm_min_amplitude_5= ts_min(bm_amplitude, 5)\n\n#bm_ret_5=close / shift(open, 5) - 1\n#bm_ret_10=close / shift(open, 10) - 1\n#bm_ret_20=close / shift(open, 20) - 1\nbm_mean_close_5= mean(close,5)\n#bm_mean_close_10= mean(close,10)\n#bm_mean_close_20= mean(close,20)\nbm_high_5= ts_max(high, 5)\nbm_low_5= ts_min(low, 5)\nbm_amount_5= sum(amount,5)\nbm_mean_amount_5= mean(amount,5)\n#bm_mean_amount_10= mean(amount,10)\nbm_volume_5= sum(volume,5)\nbm_mean_volume_5= mean(volume,5)\n#bm_mean_volume_10= mean(volume,10)\n\nbm_open_close= open / close\nbm_high_close= high / close\nbm_low_close= low / close\nbm_close_delta= close / shift(close, 1)\nbm_volume_delta= volume / shift(volume, 1)\nbm_mean_close_5_close= mean(close,5) / close\n#bm_mean_close_10_close= mean(close,10) / close\n#bm_mean_close_20_close= mean(close,20) / close\nbm_mean_volume_5_volume= mean(volume,5) / volume\n#bm_mean_volume_10_volume= mean(volume,10) / volume\n#bm_mean_volume_20_volume= mean(volume,20) / volume\n\n#timeperiod周期的相对强弱指标\n#bm_rsi_1= ta_rsi(close, 1) 参数错误\n#bm_rsi_5= ta_rsi(close, 5)\nbm_rsi_6= ta_rsi(close, 6)\n#bm_rsi_14= ta_rsi(close, 14)\n#timeperiod周期的顺势指标\n#bm_cci_1= ta_cci(high, low, close, 1) 参数错误\nbm_cci_5= ta_cci(high, low, close, 5)\nbm_cci_10= ta_cci(high, low, close, 10)\n#bm_cci_20= ta_cci(high, low, close, 20)\nbm_cci_30= ta_cci(high, low, close, 30)\n#bm_cci_40= ta_cci(high, low, close, 40)\n#timeperiod乖离率\nbm_bias_1= ta_bias(close, 1)\nbm_bias_5= ta_bias(close, 5)\n#bm_bias_10= ta_bias(close, 10)\n#timeperiod周期的动量指标\nbm_mom_1= ta_mom(close,1)\n#bm_mom_5= ta_mom(close,5)\n#timeperiod周期的变动率指标\nbm_roc_1= ta_roc(close,1)\nbm_roc_5= ta_roc(close,5)\n#bm_roc_10= ta_roc(close,10)\n#bm_willr_5= ta_willr(close, 5)\n# bm_diff_close_sma 需要较多的 向前抽取天数\nbm_diff_close_sma= close /((ta_sma(close,30) + ta_sma(close,72)) / 2) -1\n#timeperiod移动平均线\n#bm_ta_ma_5= ta_ma(close, 5)\n#timeperiod移动平均线,金叉\nbm_ta_ma_golden_cross= ta_ma(close, derive='golden_cross')\n#timeperiod移动平均线,死叉\nbm_ta_ma_death_cross= ta_ma(close, derive='death_cross')\n#timeperiod移动平均线,多头\nbm_ma_long_5= ta_ma(close, 5, derive='long')\n#timeperiod移动平均线,空头\nbm_ma_short_5= ta_ma(close, 5, derive='short')\n#bm_ma_long_10= ta_ma(close, 10, derive='long')\n#bm_ma_short_10= ta_ma(close, 10, derive='short')\n#bm_ma_long_20= ta_ma(close, 20, derive='long')\n#bm_ma_short_20= ta_ma(close, 20, derive='short')\n#timeperiod平行线差,金叉\n#bm_ta_dma_golden_cross= ta_dma(close, 'golden_cross')\n#timeperiod平行线差,死叉\n#bm_ta_dma_death_cross= ta_dma(close, 'death_cross')\n#timeperiod平行线差,多头\n#bm_ta_dma_long= ta_dma(close, 'long')\n#timeperiod平行线差,空头\n#bm_ta_dma_short= ta_dma(close, 'short')\n\n#timeperiod指数平滑移动平均线\n#bm_ta_macd_dif= ta_macd_dif(close)\n#timeperiodDIF的N日(默认9日)指数平滑移动平均线\n#bm_ta_macd_dea= ta_macd_dea(close)\n#timeperiod 2*(DIF-DEA)\n#bm_ta_macd_hist= ta_macd_hist(close)\n#timeperiod指数平滑移动平均线,金叉\n#bm_ta_macd_golden_cross= ta_macd(close,'golden_cross')\n#timeperiod指数平滑移动平均线,死叉\n#bm_ta_macd_death_cross= ta_macd(close,'death_cross')\n#timeperiod指数平滑移动平均线,多头\n#bm_ta_macd_long= ta_macd(close,'long')\n#timeperiod指数平滑移动平均线,空头\n#bm_ta_macd_short= ta_macd(close,'short')\n#timeperiod随机指标,金叉\n#bm_ta_kdj_golden_cross_5_3_3= ta_kdj(high, low, close, 5, 3, 3, 'golden_cross')\n#timeperiod随机指标,死叉\n#bm_ta_kdj_death_cross_5_3_3= ta_kdj(high, low, close, 5, 3, 3, 'death_cross')\n#timeperiod随机指标,多头\n#bm_ta_kdj_long_5_3_3= ta_kdj(high, low, close, 5, 3, 3, 'long')\n#timeperiod随机指标,空头\n#bm_ta_kdj_short_5_3_3= ta_kdj(high, low, close, 5, 3, 3, 'short')\n#timeperiod随机指标,买入信号\n#bm_ta_kdj_buy_5_3_3= ta_kdj(high, low, close, 5, 3, 3, 'buy')\n#timeperiod随机指标,卖出信号\n#bm_ta_kdj_sell_5_3_3= ta_kdj(high, low, close, 5, 3, 3, 'sell')\n#timeperiodKDJ指标的K值\n#bm_ta_kdj_k_5_3_3= ta_kdj_k(high, low, close, 5, 3)\n#timeperiodKDJ指标的D值\n#bm_ta_kdj_d_5_3_3= ta_kdj_d(high, low, close, 5, 3, 3)\n#timeperiodKDJ指标的J值\n#bm_ta_kdj_j_5_3_3= ta_kdj_j(high, low, close, 5, 3, 3)\n#ta_bbands_u(close, timeperiod),#timeperiod布林线上线\n#ta_bbands_m(close, timeperiod),#timeperiod布林线中线\n#ta_bbands_l(close, timeperiod),#timeperiod布林线下线\n\n\n# timeperiod 周期的平均波幅指标\n#bm_ta_atr_1= ta_atr(high, low, close, 1) \n#bm_ta_atr_5= ta_atr(high, low, close, 5) \n# timeperiod 周期的平均趋向指数\nbm_ta_adx_5= ta_adx(high, low, close, 5)\n#bm_ta_adx_14= ta_adx(high, low, close, 14)\n# timeperiod 周期的平均趋向指数\n#bm_ta_adxr_10= ta_adxr(high, low, close, 10)\n#bm_ta_adxr_5= ta_adxr(high, low, close, 5)\n# 资金流量指标\n#bm_ta_MFI_5= ta_MFI(high, low, close, volume, 5)\n#timeperiod周期的回归斜率\n#bm_ta_beta= ta_beta(x, y, timeperiod)\n#timeperiod多空指数,多头市场\n#bm_ta_bbi_long= ta_bbi(close, 'long')\n#timeperiod多空指数,空头市场\n#bm_ta_bbi_short= ta_bbi(close, 'short')\n\n\n########################## 国泰君安 alpha191 因子 #################################\n# 因大盘因子只涉及大盘数据,涉及横截面排名计算的因子无效,可考虑尝试剔除横截面计算的修正因子\n\nbm_vwap=amount / volume\n##ret=close_0 / close_1 - 1\nbm_dtm=where(open<=delay(open,1),0,max((high-open),(open-delay(open,1))))\nbm_dbm=where(open>=delay(open,1),0,max((open-low),(open-delay(open,1))))\nbm_tr=max(max(high-low,abs(high-delay(close,1))),abs(low-delay(close,1)))\nbm_hd=high-delay(high,1)\nbm_ld=delay(low,1)-low \nbm_ret= close/shift(close, 1) - 1\n\n# alpha_001:刻画成交量变化排名与日内收益率排名的偏离程度,表现为成交量变化排名上升,日内收益率排名下降;成交量变化排名下降,日内收益率排名上升。\n##bm_alpha_001=-1*correlation(rank(delta(log(volume),1)),rank(((close-open)/open)),6)\nbm_alpha_001=-1*correlation((delta(log(volume),1)),(((close-open)/open)),6)\n\n# alpha_002:刻画多空失衡变动情况,用(CLOSE - LOW) - (HIGH - CLOSE)) / (HIGH - LOW)表示多空力量不平衡度。\nbm_alpha_002=-1*delta((((close-low)-(high-close))/(high-low)),1) \n\n# alpha_003:刻画短期(6天)内累计的按最高最低价调整前收盘价后的收盘价变动情况\n#bm_alpha_003=sum(where(close==delay(close,1),0,close)-where(close>delay(close,1),min(low,delay(close,1)),max(high,delay(close,1))),6)\nbm_alpha_003=sum(where(close==delay(close,1),\\\n 0,\\\n close-where(close>delay(close,1),\\\n min(low,delay(close,1)),\\\n max(high,delay(close,1)))),6)\n\n# alpha_004:区间突破因子。价格(2日均价)突破布林带(8日)上限取-1,价格突破布林带下限取1,价格在布林带区间内时,成交量放大或不变取1,成交量缩小取-1\nbm_alpha_004=where(((sum(close,8)/8)+std(close,8))<(sum(close,2)/2),\\\n -1,\\\n where((sum(close,2)/2)<((sum(close,8)/8)-std(close,8)),\\\n 1,\\\n where((volume/mean(volume,20))>=1,\\\n 1,\\\n -1)))\n\n# alpha_005:短期(3天)内成交量、高点最大偏离程度。表现为短周期内(5天)成交量上升,最高价下降;或者成交量下降,最高价上升\n##bm_alpha_005=-1*ts_max(correlation(ts_rank(volume,5),ts_rank(high,5),5),3)\nbm_alpha_005=-1*(correlation(delta(log(volume),1),delta(high,1),6))\n\n# alpha_006:刻画当前价格位置和此前位置价格的差距,进行动量交易\n##bm_alpha_006=-1*rank(sign(delta((((open*0.85)+(high*0.15))),4)))\n##bm_alpha_006=-1*(sign(delta((((open*0.85)+(high*0.15))),4)))\nbm_alpha_006=-1*((delta((((open*0.85)+(high*0.15))),4)))\n\n\n\n##bm_alpha_007=((rank(max((bm_vwap-close),3))+rank(min((bm_vwap-close),3)))*rank(delta(volume,3)))\n\n##bm_alpha_008=-1*rank(delta(((((high+low)/2)*0.2)+(bm_vwap*0.8)),4))\n#bm_alpha_008=-1*ts_rank(delta(((((high+low)/2)*0.2)+(bm_vwap*0.8)),4),6)\nbm_alpha_008=-1*(delta(((((high+low)/2)*0.2)+(bm_vwap*0.8)),4))\n\n##bm_alpha_010=(rank(max(where((bm_ret<0),std(bm_ret,20),close)**2,5)))\nbm_alpha_010=((max(where((bm_ret<0),std(bm_ret,20),close)**2,5)))\n\n##bm_alpha_041=(rank(max(delta((bm_vwap),3),5))*(-1))\nbm_alpha_041=((max(delta((bm_vwap),3),5))*(-1))\n","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-2186"}],"output_ports":[{"name":"data","node_id":"-2186"}],"cacheable":true,"seq_num":6,"comment":"大盘因子 bm_*","comment_collapsed":false},{"node_id":"-18645","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"# 大盘因子标签\n\n#bm_label=shift(close, -1) / close - 1 # 次日收益率\nbm_label=shift(close, -2) / close - 1 # 2日收益率\n#bm_label=shift(close, -1) - close \n#bm_label=log(shift(close, -1) / close) \n","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-18645"}],"output_ports":[{"name":"data","node_id":"-18645"}],"cacheable":true,"seq_num":7,"comment":"大盘标签 bm_label","comment_collapsed":false},{"node_id":"-989","module_id":"BigQuantSpace.dropnan.dropnan-v2","parameters":[],"input_ports":[{"name":"input_data","node_id":"-989"},{"name":"features","node_id":"-989"}],"output_ports":[{"name":"data","node_id":"-989"}],"cacheable":true,"seq_num":8,"comment":"","comment_collapsed":true},{"node_id":"-3954","module_id":"BigQuantSpace.index_feature_extract.index_feature_extract-v3","parameters":[{"name":"before_days","value":"200","type":"Literal","bound_global_parameter":null},{"name":"index","value":"000001.HIX","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-3954"},{"name":"input_2","node_id":"-3954"}],"output_ports":[{"name":"data_1","node_id":"-3954"},{"name":"data_2","node_id":"-3954"}],"cacheable":true,"seq_num":9,"comment":"大盘因子训练集","comment_collapsed":false},{"node_id":"-3960","module_id":"BigQuantSpace.dropnan.dropnan-v2","parameters":[],"input_ports":[{"name":"input_data","node_id":"-3960"},{"name":"features","node_id":"-3960"}],"output_ports":[{"name":"data","node_id":"-3960"}],"cacheable":true,"seq_num":10,"comment":"","comment_collapsed":true},{"node_id":"-3964","module_id":"BigQuantSpace.join.join-v3","parameters":[{"name":"on","value":"date","type":"Literal","bound_global_parameter":null},{"name":"how","value":"right","type":"Literal","bound_global_parameter":null},{"name":"sort","value":"True","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"data1","node_id":"-3964"},{"name":"data2","node_id":"-3964"}],"output_ports":[{"name":"data","node_id":"-3964"}],"cacheable":true,"seq_num":11,"comment":"绑定 大盘标签","comment_collapsed":false},{"node_id":"-3004","module_id":"BigQuantSpace.sort.sort-v4","parameters":[{"name":"sort_by","value":"date","type":"Literal","bound_global_parameter":null},{"name":"group_by","value":"","type":"Literal","bound_global_parameter":null},{"name":"keep_columns","value":"--","type":"Literal","bound_global_parameter":null},{"name":"ascending","value":"True","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_ds","node_id":"-3004"},{"name":"sort_by_ds","node_id":"-3004"}],"output_ports":[{"name":"sorted_data","node_id":"-3004"}],"cacheable":true,"seq_num":12,"comment":"","comment_collapsed":true},{"node_id":"-673","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, input_2, input_3):\n # 示例代码如下。在这里编写您的代码\n window = input_2.shape[1]\n return Outputs(data_1=None, data_2=window, data_3=None)\n","type":"Literal","bound_global_parameter":null},{"name":"post_run","value":"# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。\ndef bigquant_run(outputs):\n return outputs\n","type":"Literal","bound_global_parameter":null},{"name":"input_ports","value":"","type":"Literal","bound_global_parameter":null},{"name":"params","value":"{}","type":"Literal","bound_global_parameter":null},{"name":"output_ports","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-673"},{"name":"input_2","node_id":"-673"},{"name":"input_3","node_id":"-673"}],"output_ports":[{"name":"data_1","node_id":"-673"},{"name":"data_2","node_id":"-673"},{"name":"data_3","node_id":"-673"}],"cacheable":false,"seq_num":13,"comment":"获取 window","comment_collapsed":false},{"node_id":"-356","module_id":"BigQuantSpace.dl_layer_lstm.dl_layer_lstm-v1","parameters":[{"name":"units","value":"5","type":"Literal","bound_global_parameter":null},{"name":"activation","value":"selu","type":"Literal","bound_global_parameter":null},{"name":"user_activation","value":"import tensorflow as tf\n \ndef bigquant_run(x):\n return tf.atan(x)\n \n \n","type":"Literal","bound_global_parameter":null},{"name":"recurrent_activation","value":"tanh","type":"Literal","bound_global_parameter":null},{"name":"user_recurrent_activation","value":"","type":"Literal","bound_global_parameter":null},{"name":"use_bias","value":"True","type":"Literal","bound_global_parameter":null},{"name":"kernel_initializer","value":"glorot_uniform","type":"Literal","bound_global_parameter":null},{"name":"user_kernel_initializer","value":"","type":"Literal","bound_global_parameter":null},{"name":"recurrent_initializer","value":"Orthogonal","type":"Literal","bound_global_parameter":null},{"name":"user_recurrent_initializer","value":"","type":"Literal","bound_global_parameter":null},{"name":"bias_initializer","value":"Zeros","type":"Literal","bound_global_parameter":null},{"name":"user_bias_initializer","value":"","type":"Literal","bound_global_parameter":null},{"name":"unit_forget_bias","value":"True","type":"Literal","bound_global_parameter":null},{"name":"kernel_regularizer","value":"None","type":"Literal","bound_global_parameter":null},{"name":"kernel_regularizer_l1","value":"0","type":"Literal","bound_global_parameter":null},{"name":"kernel_regularizer_l2","value":"0.00001","type":"Literal","bound_global_parameter":null},{"name":"user_kernel_regularizer","value":"","type":"Literal","bound_global_parameter":null},{"name":"recurrent_regularizer","value":"None","type":"Literal","bound_global_parameter":null},{"name":"recurrent_regularizer_l1","value":"0.00001","type":"Literal","bound_global_parameter":null},{"name":"recurrent_regularizer_l2","value":"0","type":"Literal","bound_global_parameter":null},{"name":"user_recurrent_regularizer","value":"","type":"Literal","bound_global_parameter":null},{"name":"bias_regularizer","value":"None","type":"Literal","bound_global_parameter":null},{"name":"bias_regularizer_l1","value":"0","type":"Literal","bound_global_parameter":null},{"name":"bias_regularizer_l2","value":"0","type":"Literal","bound_global_parameter":null},{"name":"user_bias_regularizer","value":"","type":"Literal","bound_global_parameter":null},{"name":"activity_regularizer","value":"None","type":"Literal","bound_global_parameter":null},{"name":"activity_regularizer_l1","value":0,"type":"Literal","bound_global_parameter":null},{"name":"activity_regularizer_l2","value":0,"type":"Literal","bound_global_parameter":null},{"name":"user_activity_regularizer","value":"","type":"Literal","bound_global_parameter":null},{"name":"kernel_constraint","value":"None","type":"Literal","bound_global_parameter":null},{"name":"user_kernel_constraint","value":"","type":"Literal","bound_global_parameter":null},{"name":"recurrent_constraint","value":"None","type":"Literal","bound_global_parameter":null},{"name":"user_recurrent_constraint","value":"","type":"Literal","bound_global_parameter":null},{"name":"bias_constraint","value":"None","type":"Literal","bound_global_parameter":null},{"name":"user_bias_constraint","value":"","type":"Literal","bound_global_parameter":null},{"name":"dropout","value":"0","type":"Literal","bound_global_parameter":null},{"name":"recurrent_dropout","value":0,"type":"Literal","bound_global_parameter":null},{"name":"return_sequences","value":"False","type":"Literal","bound_global_parameter":null},{"name":"implementation","value":"2","type":"Literal","bound_global_parameter":null},{"name":"name","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"inputs","node_id":"-356"}],"output_ports":[{"name":"data","node_id":"-356"}],"cacheable":false,"seq_num":14,"comment":"","comment_collapsed":true},{"node_id":"-1969","module_id":"BigQuantSpace.dl_layer_dropout.dl_layer_dropout-v1","parameters":[{"name":"rate","value":"0.00752","type":"Literal","bound_global_parameter":null},{"name":"noise_shape","value":"","type":"Literal","bound_global_parameter":null},{"name":"seed","value":"0","type":"Literal","bound_global_parameter":null},{"name":"name","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"inputs","node_id":"-1969"}],"output_ports":[{"name":"data","node_id":"-1969"}],"cacheable":false,"seq_num":15,"comment":"","comment_collapsed":true},{"node_id":"-2605","module_id":"BigQuantSpace.dl_layer_dense.dl_layer_dense-v1","parameters":[{"name":"units","value":"1","type":"Literal","bound_global_parameter":null},{"name":"activation","value":"tanh","type":"Literal","bound_global_parameter":null},{"name":"user_activation","value":"import tensorflow as tf\n\ndef bigquant_run(x):\n return tf.atan(x)\n\n","type":"Literal","bound_global_parameter":null},{"name":"use_bias","value":"True","type":"Literal","bound_global_parameter":null},{"name":"kernel_initializer","value":"glorot_uniform","type":"Literal","bound_global_parameter":null},{"name":"user_kernel_initializer","value":"","type":"Literal","bound_global_parameter":null},{"name":"bias_initializer","value":"Zeros","type":"Literal","bound_global_parameter":null},{"name":"user_bias_initializer","value":"","type":"Literal","bound_global_parameter":null},{"name":"kernel_regularizer","value":"L1L2","type":"Literal","bound_global_parameter":null},{"name":"kernel_regularizer_l1","value":"0.000","type":"Literal","bound_global_parameter":null},{"name":"kernel_regularizer_l2","value":"0.005","type":"Literal","bound_global_parameter":null},{"name":"user_kernel_regularizer","value":"","type":"Literal","bound_global_parameter":null},{"name":"bias_regularizer","value":"None","type":"Literal","bound_global_parameter":null},{"name":"bias_regularizer_l1","value":0,"type":"Literal","bound_global_parameter":null},{"name":"bias_regularizer_l2","value":"0.005","type":"Literal","bound_global_parameter":null},{"name":"user_bias_regularizer","value":"","type":"Literal","bound_global_parameter":null},{"name":"activity_regularizer","value":"None","type":"Literal","bound_global_parameter":null},{"name":"activity_regularizer_l1","value":0,"type":"Literal","bound_global_parameter":null},{"name":"activity_regularizer_l2","value":"0.005","type":"Literal","bound_global_parameter":null},{"name":"user_activity_regularizer","value":"","type":"Literal","bound_global_parameter":null},{"name":"kernel_constraint","value":"None","type":"Literal","bound_global_parameter":null},{"name":"user_kernel_constraint","value":"","type":"Literal","bound_global_parameter":null},{"name":"bias_constraint","value":"None","type":"Literal","bound_global_parameter":null},{"name":"user_bias_constraint","value":"","type":"Literal","bound_global_parameter":null},{"name":"name","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"inputs","node_id":"-2605"}],"output_ports":[{"name":"data","node_id":"-2605"}],"cacheable":false,"seq_num":16,"comment":"","comment_collapsed":true},{"node_id":"-3880","module_id":"BigQuantSpace.dl_model_init.dl_model_init-v1","parameters":[],"input_ports":[{"name":"inputs","node_id":"-3880"},{"name":"outputs","node_id":"-3880"}],"output_ports":[{"name":"data","node_id":"-3880"}],"cacheable":false,"seq_num":17,"comment":"","comment_collapsed":true},{"node_id":"-1086","module_id":"BigQuantSpace.index_feature_extract.index_feature_extract-v3","parameters":[{"name":"before_days","value":"200","type":"Literal","bound_global_parameter":null},{"name":"index","value":"000001.HIX","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-1086"},{"name":"input_2","node_id":"-1086"}],"output_ports":[{"name":"data_1","node_id":"-1086"},{"name":"data_2","node_id":"-1086"}],"cacheable":true,"seq_num":19,"comment":"大盘因子预测集","comment_collapsed":false},{"node_id":"-1092","module_id":"BigQuantSpace.dropnan.dropnan-v2","parameters":[],"input_ports":[{"name":"input_data","node_id":"-1092"},{"name":"features","node_id":"-1092"}],"output_ports":[{"name":"data","node_id":"-1092"}],"cacheable":true,"seq_num":20,"comment":"","comment_collapsed":true},{"node_id":"-1096","module_id":"BigQuantSpace.dropnan.dropnan-v2","parameters":[],"input_ports":[{"name":"input_data","node_id":"-1096"},{"name":"features","node_id":"-1096"}],"output_ports":[{"name":"data","node_id":"-1096"}],"cacheable":true,"seq_num":21,"comment":"","comment_collapsed":true},{"node_id":"-1101","module_id":"BigQuantSpace.index_feature_extract.index_feature_extract-v3","parameters":[{"name":"before_days","value":"200","type":"Literal","bound_global_parameter":null},{"name":"index","value":"000001.HIX","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-1101"},{"name":"input_2","node_id":"-1101"}],"output_ports":[{"name":"data_1","node_id":"-1101"},{"name":"data_2","node_id":"-1101"}],"cacheable":true,"seq_num":22,"comment":"大盘标签 预测集","comment_collapsed":false},{"node_id":"-1108","module_id":"BigQuantSpace.concat.concat-v3","parameters":[],"input_ports":[{"name":"input_data_1","node_id":"-1108"},{"name":"input_data_2","node_id":"-1108"},{"name":"input_data_3","node_id":"-1108"}],"output_ports":[{"name":"data","node_id":"-1108"}],"cacheable":true,"seq_num":23,"comment":"大盘标签合并","comment_collapsed":false},{"node_id":"-1120","module_id":"BigQuantSpace.del_data_before_startdate.del_data_before_startdate-v5","parameters":[],"input_ports":[{"name":"input_1","node_id":"-1120"},{"name":"input_2","node_id":"-1120"}],"output_ports":[{"name":"data","node_id":"-1120"}],"cacheable":true,"seq_num":24,"comment":"","comment_collapsed":true},{"node_id":"-1128","module_id":"BigQuantSpace.del_data_before_startdate.del_data_before_startdate-v5","parameters":[],"input_ports":[{"name":"input_1","node_id":"-1128"},{"name":"input_2","node_id":"-1128"}],"output_ports":[{"name":"data","node_id":"-1128"}],"cacheable":true,"seq_num":25,"comment":"","comment_collapsed":true},{"node_id":"-4746","module_id":"BigQuantSpace.del_data_before_startdate.del_data_before_startdate-v13","parameters":[{"name":"before_start_date_days","value":"0","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-4746"},{"name":"input_2","node_id":"-4746"},{"name":"input_3","node_id":"-4746"}],"output_ports":[{"name":"data","node_id":"-4746"}],"cacheable":true,"seq_num":26,"comment":"","comment_collapsed":true},{"node_id":"-558","module_id":"BigQuantSpace.del_data_before_startdate.del_data_before_startdate-v13","parameters":[{"name":"before_start_date_days","value":"0","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-558"},{"name":"input_2","node_id":"-558"},{"name":"input_3","node_id":"-558"}],"output_ports":[{"name":"data","node_id":"-558"}],"cacheable":true,"seq_num":27,"comment":"","comment_collapsed":true},{"node_id":"-5975","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# 功能:自定义 大盘因子 训练集 证券代码列表\n# 逻辑:如果 input_2 接 股票因子 预测集 证券代码列表,\n# 则令 大盘因子 训练集 证券代码列表 end_date \n# 为 \n# 股票因子 预测集 证券代码列表 start_date 前一交易日\ndef bigquant_run(input_1, input_2, input_3, start_date = '', end_date = ''):\n # 示例代码如下。在这里编写您的代码\n \n if input_2 is not None: # input_2 接 股票因子 预测集 证券代码列表\n \n instrument_module_dict = input_2.read_pickle()\n \n end_date = instrument_module_dict['start_date']\n tdays = list(D.trading_days(end_date = end_date)['date'])\n end_date = tdays[-1].strftime('%Y-%m-%d') if tdays[-1].strftime('%Y-%m-%d') < end_date else tdays[-2].strftime('%Y-%m-%d')\n \n else:\n \n instrument_module_dict = {}\n \n instrument_module_dict['start_date'] = start_date\n instrument_module_dict['end_date'] = end_date\n\n data = DataSource.write_pickle(instrument_module_dict)\n \n return Outputs(data_1 = None, data_2 = data, data_3 = None)\n","type":"Literal","bound_global_parameter":null},{"name":"post_run","value":"# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。\ndef bigquant_run(outputs):\n return outputs\n","type":"Literal","bound_global_parameter":null},{"name":"input_ports","value":"","type":"Literal","bound_global_parameter":null},{"name":"params","value":"{\n 'start_date' : '2006-01-01', \n 'end_date' : '2019-12-31' \n}","type":"Literal","bound_global_parameter":null},{"name":"output_ports","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-5975"},{"name":"input_2","node_id":"-5975"},{"name":"input_3","node_id":"-5975"}],"output_ports":[{"name":"data_1","node_id":"-5975"},{"name":"data_2","node_id":"-5975"},{"name":"data_3","node_id":"-5975"}],"cacheable":true,"seq_num":28,"comment":"代码列表\n大盘因子 训练集","comment_collapsed":false},{"node_id":"-3176","module_id":"BigQuantSpace.dl_layer_dense.dl_layer_dense-v1","parameters":[{"name":"units","value":"5","type":"Literal","bound_global_parameter":null},{"name":"activation","value":"selu","type":"Literal","bound_global_parameter":null},{"name":"user_activation","value":"import tensorflow as tf\n\ndef bigquant_run(x):\n return tf.atan(x)\n\n","type":"Literal","bound_global_parameter":null},{"name":"use_bias","value":"True","type":"Literal","bound_global_parameter":null},{"name":"kernel_initializer","value":"glorot_uniform","type":"Literal","bound_global_parameter":null},{"name":"user_kernel_initializer","value":"","type":"Literal","bound_global_parameter":null},{"name":"bias_initializer","value":"Zeros","type":"Literal","bound_global_parameter":null},{"name":"user_bias_initializer","value":"","type":"Literal","bound_global_parameter":null},{"name":"kernel_regularizer","value":"None","type":"Literal","bound_global_parameter":null},{"name":"kernel_regularizer_l1","value":"0.000","type":"Literal","bound_global_parameter":null},{"name":"kernel_regularizer_l2","value":"0.0005","type":"Literal","bound_global_parameter":null},{"name":"user_kernel_regularizer","value":"","type":"Literal","bound_global_parameter":null},{"name":"bias_regularizer","value":"None","type":"Literal","bound_global_parameter":null},{"name":"bias_regularizer_l1","value":0,"type":"Literal","bound_global_parameter":null},{"name":"bias_regularizer_l2","value":0,"type":"Literal","bound_global_parameter":null},{"name":"user_bias_regularizer","value":"","type":"Literal","bound_global_parameter":null},{"name":"activity_regularizer","value":"None","type":"Literal","bound_global_parameter":null},{"name":"activity_regularizer_l1","value":0,"type":"Literal","bound_global_parameter":null},{"name":"activity_regularizer_l2","value":0,"type":"Literal","bound_global_parameter":null},{"name":"user_activity_regularizer","value":"","type":"Literal","bound_global_parameter":null},{"name":"kernel_constraint","value":"None","type":"Literal","bound_global_parameter":null},{"name":"user_kernel_constraint","value":"","type":"Literal","bound_global_parameter":null},{"name":"bias_constraint","value":"None","type":"Literal","bound_global_parameter":null},{"name":"user_bias_constraint","value":"","type":"Literal","bound_global_parameter":null},{"name":"name","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"inputs","node_id":"-3176"}],"output_ports":[{"name":"data","node_id":"-3176"}],"cacheable":false,"seq_num":29,"comment":"","comment_collapsed":true},{"node_id":"-2461","module_id":"BigQuantSpace.concat.concat-v3","parameters":[],"input_ports":[{"name":"input_data_1","node_id":"-2461"},{"name":"input_data_2","node_id":"-2461"},{"name":"input_data_3","node_id":"-2461"}],"output_ports":[{"name":"data","node_id":"-2461"}],"cacheable":true,"seq_num":31,"comment":"大盘因子 训练集 预测集 合并","comment_collapsed":false},{"node_id":"-4873","module_id":"BigQuantSpace.dataclean.dataclean-v46","parameters":[{"name":"nan_method","value":"中位数填充","type":"Literal","bound_global_parameter":null},{"name":"outlier_method","value":"MAD法","type":"Literal","bound_global_parameter":null},{"name":"n_components","value":"30","type":"Literal","bound_global_parameter":null},{"name":"grp_len","value":10,"type":"Literal","bound_global_parameter":null},{"name":"if_nan","value":"False","type":"Literal","bound_global_parameter":null},{"name":"if_inf","value":"False","type":"Literal","bound_global_parameter":null},{"name":"if_outlier","value":"False","type":"Literal","bound_global_parameter":null},{"name":"if_neutralize","value":"False","type":"Literal","bound_global_parameter":null},{"name":"neutral_feature_remained","value":"False","type":"Literal","bound_global_parameter":null},{"name":"if_standardize","value":"False","type":"Literal","bound_global_parameter":null},{"name":"if_pca","value":"True","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"feature_data1","node_id":"-4873"},{"name":"feature_data2","node_id":"-4873"},{"name":"cleaning_feature_list","node_id":"-4873"},{"name":"neutral_feature_list","node_id":"-4873"}],"output_ports":[{"name":"cleaned_data1","node_id":"-4873"},{"name":"cleaned_data2","node_id":"-4873"},{"name":"cleaned_factors","node_id":"-4873"}],"cacheable":true,"seq_num":32,"comment":"PCA","comment_collapsed":false},{"node_id":"-10751","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, input_2, input_3):\n # 示例代码如下。在这里编写您的代码\n \n df = input_2.read()\n df.fillna(0,inplace = True)\n pred_label = df['pred_label']\n label = df['label'] \n \n df['方向预测成功与否'] = np.sign(pred_label) == np.sign(label)\n succed = df['方向预测成功与否']\n \n from sklearn.metrics import mean_squared_error\n mse = mean_squared_error(df['label'],df['pred_label'])\n print('MSE:', mse)\n \n data_2 = DataSource.write_df(df)\n data_3 = DataSource.write_pickle(mse)\n return Outputs(data_1=None, data_2=data_2, data_3=data_3)\n","type":"Literal","bound_global_parameter":null},{"name":"post_run","value":"# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。\ndef bigquant_run(outputs):\n return outputs\n","type":"Literal","bound_global_parameter":null},{"name":"input_ports","value":"","type":"Literal","bound_global_parameter":null},{"name":"params","value":"{}","type":"Literal","bound_global_parameter":null},{"name":"output_ports","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-10751"},{"name":"input_2","node_id":"-10751"},{"name":"input_3","node_id":"-10751"}],"output_ports":[{"name":"data_1","node_id":"-10751"},{"name":"data_2","node_id":"-10751"},{"name":"data_3","node_id":"-10751"}],"cacheable":false,"seq_num":34,"comment":"大盘预测准确率评估","comment_collapsed":false},{"node_id":"-9260","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# 本模块功能:延长 证券代码列表模块 截止日 30 日,\n# 本模块目的:解决 自动标注模块 对其输入“证券代码列表”模块 截止日 不标注 问题\n# 输入端:\n# input_2:接 证券代码列表模块\ndef bigquant_run(input_1, input_2, input_3):\n # 示例代码如下。在这里编写您的代码\n data = input_2.read_pickle()\n end_date = data['end_date']\n data['end_date'] = (datetime.datetime.strptime(end_date,'%Y-%m-%d').date()\n + datetime.timedelta(days = 30)).strftime('%Y-%m-%d')\n data = DataSource.write_pickle(data)\n return Outputs(data_1=None, data_2=data, data_3=None)\n","type":"Literal","bound_global_parameter":null},{"name":"post_run","value":"# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。\ndef bigquant_run(outputs):\n return outputs\n","type":"Literal","bound_global_parameter":null},{"name":"input_ports","value":"","type":"Literal","bound_global_parameter":null},{"name":"params","value":"{}","type":"Literal","bound_global_parameter":null},{"name":"output_ports","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-9260"},{"name":"input_2","node_id":"-9260"},{"name":"input_3","node_id":"-9260"}],"output_ports":[{"name":"data_1","node_id":"-9260"},{"name":"data_2","node_id":"-9260"},{"name":"data_3","node_id":"-9260"}],"cacheable":true,"seq_num":39,"comment":"延长 训练集 证券代码列表模块截止日","comment_collapsed":false},{"node_id":"-9272","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# 本模块功能:标签 训练集 过滤掉 训练集 证券代码列表模块 截止日后 数据\n# 本模块目的:确保 标签 训练集 截止日 早于 预测集 开始日\n# 输入端:\n# input_1:接 训练集 证券代码列表模块\n# input_2:接 自动标注模块/标签提取模块\n# input_3:接 预测集 证券代码列表模块\n\ndef bigquant_run(input_1, input_2, input_3):\n # 示例代码如下。在这里编写您的代码\n \n # 取 训练集 证券代码列表模块 截止日\n train_end_date = input_1.read_pickle()['end_date'] \n # 取 预测集 证券代码列表模块 开始日\n predict_start_date = input_3.read_pickle()['start_date'] \n # 取 标注/标签 数据\n data = input_2.read_df() \n \n if train_end_date >= predict_start_date:\n print(\"标签 训练集 截止日 必须早于 预测集开始日!! 请检查。。。。。。\")\n else: # 标签 训练集 过滤掉 训练集 证券代码列表模块 截止日后 数据 \n data = data.query('date <= @ train_end_date') \n \n data = DataSource.write_df(data)\n \n return Outputs(data_1=None, data_2=data, data_3=None)\n","type":"Literal","bound_global_parameter":null},{"name":"post_run","value":"# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。\ndef bigquant_run(outputs):\n return outputs\n","type":"Literal","bound_global_parameter":null},{"name":"input_ports","value":"","type":"Literal","bound_global_parameter":null},{"name":"params","value":"{}","type":"Literal","bound_global_parameter":null},{"name":"output_ports","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-9272"},{"name":"input_2","node_id":"-9272"},{"name":"input_3","node_id":"-9272"}],"output_ports":[{"name":"data_1","node_id":"-9272"},{"name":"data_2","node_id":"-9272"},{"name":"data_3","node_id":"-9272"}],"cacheable":true,"seq_num":40,"comment":"标签 训练集 过滤 训练集 证券代码列表模块 截止日后 数据","comment_collapsed":false},{"node_id":"-2578","module_id":"BigQuantSpace.DL_train_or_train_go_on.DL_train_or_train_go_on-v29","parameters":[{"name":"path","value":"/home/bigquant/work/userlib/","type":"Literal","bound_global_parameter":null},{"name":"before_train_model_file_name","value":"","type":"Literal","bound_global_parameter":null},{"name":"after_train_model_file_name","value":"","type":"Literal","bound_global_parameter":null},{"name":"seed","value":"0","type":"Literal","bound_global_parameter":null},{"name":"optimizer","value":"Nadam","type":"Literal","bound_global_parameter":null},{"name":"loss","value":"mean_squared_error","type":"Literal","bound_global_parameter":null},{"name":"metrics","value":"%7B%22enumItems%22%3A%5B%7B%22value%22%3A%22MSE%22%2C%22displayValue%22%3A%22MSE%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22MSLE%22%2C%22displayValue%22%3A%22MSLE%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22RMSE%22%2C%22displayValue%22%3A%22RMSE%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22MAE%22%2C%22displayValue%22%3A%22MAE%22%2C%22selected%22%3Atrue%7D%2C%7B%22value%22%3A%22MAPE%22%2C%22displayValue%22%3A%22MAPE%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22KLD%22%2C%22displayValue%22%3A%22KLD%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22AUC%22%2C%22displayValue%22%3A%22AUC%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22Precision%22%2C%22displayValue%22%3A%22Precision%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22Recall%22%2C%22displayValue%22%3A%22Recall%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22PrecisionAtRecall%22%2C%22displayValue%22%3A%22PrecisionAtRecall%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22TruePositives%22%2C%22displayValue%22%3A%22TruePositives%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22TrueNegatives%22%2C%22displayValue%22%3A%22TrueNegatives%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22FalsePositives%22%2C%22displayValue%22%3A%22FalsePositives%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22FalseNegatives%22%2C%22displayValue%22%3A%22FalseNegatives%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22SensitivityAtSpecificity%22%2C%22displayValue%22%3A%22SensitivityAtSpecificity%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22SpecificityAtSensitivity%22%2C%22displayValue%22%3A%22SpecificityAtSensitivity%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22Accuracy%22%2C%22displayValue%22%3A%22Accuracy%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22binary_accuracy%22%2C%22displayValue%22%3A%22binary_accuracy%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22categorical_accuracy%22%2C%22displayValue%22%3A%22categorical_accuracy%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22sparse_categorical_accuracy%22%2C%22displayValue%22%3A%22sparse_categorical_accuracy%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22top_k_categorical_accuracy%22%2C%22displayValue%22%3A%22top_k_categorical_accuracy%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22sparse_top_k_categorical_accuracy%22%2C%22displayValue%22%3A%22sparse_top_k_categorical_accuracy%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22binary_crossentropy%22%2C%22displayValue%22%3A%22binary_crossentropy%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22categorical_crossentropy%22%2C%22displayValue%22%3A%22categorical_crossentropy%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22sparse_categorical_crossentropy%22%2C%22displayValue%22%3A%22sparse_categorical_crossentropy%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22hinge%22%2C%22displayValue%22%3A%22hinge%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22squared_hinge%22%2C%22displayValue%22%3A%22squared_hinge%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22logcosh%22%2C%22displayValue%22%3A%22logcosh%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22possion%22%2C%22displayValue%22%3A%22possion%22%2C%22selected%22%3Afalse%7D%5D%7D","type":"Literal","bound_global_parameter":null},{"name":"batch_size","value":"4096","type":"Literal","bound_global_parameter":null},{"name":"epochs","value":"10","type":"Literal","bound_global_parameter":null},{"name":"verbose","value":"2:每个epoch输出一行记录","type":"Literal","bound_global_parameter":null},{"name":"validation_split","value":"0.0","type":"Literal","bound_global_parameter":null},{"name":"initial_epoch","value":"000","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_model","node_id":"-2578"},{"name":"training_data","node_id":"-2578"},{"name":"validation_data","node_id":"-2578"}],"output_ports":[{"name":"trained_model","node_id":"-2578"},{"name":"trained_params","node_id":"-2578"}],"cacheable":true,"seq_num":42,"comment":"","comment_collapsed":true},{"node_id":"-578","module_id":"BigQuantSpace.hyper_parameter_search.hyper_parameter_search-v1","parameters":[{"name":"param_grid_builder","value":"def bigquant_run():\n param_grid = {}\n\n # 在这里设置需要调优的参数备选\n # param_grid['m3.features'] = ['close_1/close_0', 'close_2/close_0\\nclose_3/close_0']\n # param_grid['m6.number_of_trees'] = [5, 10, 20]\n# param_grid['m1.shape'] = [(2,30), (3,30), (4,30), (5,30), (6,30), (7,30), (8,30), (9,30), (10,30), (20,30)]\n# param_grid['m15.rate'] = [0.01, 0.05, 0.00748, 0.00749, 0.0075, 0.00751, 0.00752]\n param_grid['m15.rate'] = [0.00752]\n\n return param_grid\n","type":"Literal","bound_global_parameter":null},{"name":"scoring","value":"def bigquant_run(result):\n mse = result.get('m34').data_3.read()\n return mse\n\n","type":"Literal","bound_global_parameter":null},{"name":"search_algorithm","value":"网格搜索","type":"Literal","bound_global_parameter":null},{"name":"search_iterations","value":"1","type":"Literal","bound_global_parameter":null},{"name":"random_state","value":"0","type":"Literal","bound_global_parameter":null},{"name":"workers","value":"1","type":"Literal","bound_global_parameter":null},{"name":"worker_distributed_run","value":"True","type":"Literal","bound_global_parameter":null},{"name":"worker_silent","value":"True","type":"Literal","bound_global_parameter":null},{"name":"run_now","value":"True","type":"Literal","bound_global_parameter":null},{"name":"bq_graph","value":"True","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"bq_graph_port","node_id":"-578"},{"name":"input_1","node_id":"-578"},{"name":"input_2","node_id":"-578"},{"name":"input_3","node_id":"-578"}],"output_ports":[{"name":"result","node_id":"-578"}],"cacheable":false,"seq_num":18,"comment":"","comment_collapsed":true},{"node_id":"-532","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2021-10-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2022-04-20","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":"-532"}],"output_ports":[{"name":"data","node_id":"-532"}],"cacheable":true,"seq_num":33,"comment":"股票因子 预测集","comment_collapsed":false}],"node_layout":"<node_postions><node_position Node='-4550' Position='-255,291,200,200'/><node_position Node='-1540' Position='88,826,200,200'/><node_position Node='-2431' Position='86,887,200,200'/><node_position Node='-3887' Position='-518,-68,200,200'/><node_position Node='-3725' Position='37.43391418457031,565.5661010742188,200,200'/><node_position Node='-2186' Position='-44,-342,200,200'/><node_position Node='-18645' Position='-280,-344,200,200'/><node_position Node='-989' Position='-515,92,200,200'/><node_position Node='-3954' Position='-68,24,200,200'/><node_position Node='-3960' Position='-67,94,200,200'/><node_position Node='-3964' Position='35,418,200,200'/><node_position Node='-3004' Position='31,508,200,200'/><node_position Node='-673' Position='-543.6981811523438,355.1696472167969,200,200'/><node_position Node='-356' Position='-256,364,200,200'/><node_position Node='-1969' Position='-263,430,200,200'/><node_position Node='-2605' Position='-257,570,200,200'/><node_position Node='-3880' Position='-251,645,200,200'/><node_position Node='-1086' Position='175,21,200,200'/><node_position Node='-1092' Position='178,91,200,200'/><node_position Node='-1096' Position='-297,88,200,200'/><node_position Node='-1101' Position='-291,18,200,200'/><node_position Node='-1108' Position='-194,204,200,200'/><node_position Node='-1120' Position='-516,140,200,200'/><node_position Node='-1128' Position='-64,141,200,200'/><node_position Node='-4746' Position='178,138,200,200'/><node_position Node='-558' Position='-294,140,200,200'/><node_position Node='-5975' Position='-282,-263,200,200'/><node_position Node='-3176' Position='-265,494,200,200'/><node_position Node='-2461' Position='34,321,200,200'/><node_position Node='-4873' Position='20,206,200,200'/><node_position Node='-10751' Position='91,993,200,200'/><node_position Node='-9260' Position='-521,-150,200,200'/><node_position Node='-9272' Position='-517,-5,200,200'/><node_position Node='-2578' Position='82,743,200,200'/><node_position Node='-578' Position='-283.9884910583496,741.0115356445312,200,200'/><node_position Node='-532' Position='201,-468,200,200'/></node_postions>"},"nodes_readonly":false,"studio_version":"v2"}
[2022-05-04 17:45:36.469812] INFO: cached.v3.f2eaf35e: 任务状态: Pending
[2022-05-04 17:45:46.503250] INFO: cached.v3.f2eaf35e: 任务状态: Running
[2022-05-04 17:46:26.631460] INFO: cached.v3.f2eaf35e: 任务状态: Succeeded
[2022-05-04 17:46:26.947920] INFO: cached.v3.10fdfb02: 任务状态: Pending
[2022-05-04 17:46:36.982147] INFO: cached.v3.10fdfb02: 任务状态: Running
[2022-05-04 17:46:57.051653] INFO: cached.v3.10fdfb02: 任务状态: Succeeded
[2022-05-04 17:46:57.065986] INFO: moduleinvoker: hyper_parameter_search.v1 运行完成[81.27332s].
Fitting 1 folds for each of 1 candidates, totalling 1 fits
[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.
[CV 1/1; 1/1] START m15.rate=0.00752............................................
[CV 1/1; 1/1] END ..........................m15.rate=0.00752; total time= 50.7s
[Parallel(n_jobs=1)]: Done 1 out of 1 | elapsed: 50.7s remaining: 0.0s
[Parallel(n_jobs=1)]: Done 1 out of 1 | elapsed: 50.7s finished