{"description":"实验创建于2017/8/26","graph":{"edges":[{"to_node_id":"-215:instruments","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8:data"},{"to_node_id":"-3201:instruments","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8:data"},{"to_node_id":"-11425:features_ds","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-24:data"},{"to_node_id":"-236:input_1","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-24:data"},{"to_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-60:model","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43:model"},{"to_node_id":"-11430:input_data","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-53:data"},{"to_node_id":"-329:data1","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-60:predictions"},{"to_node_id":"-231:instruments","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-62:data"},{"to_node_id":"-175:input_1","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-62:data"},{"to_node_id":"-224:instruments","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-62:data"},{"to_node_id":"-1918:instruments","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-62:data"},{"to_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43:training_ds","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-84:data"},{"to_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43:test_ds","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-84:data"},{"to_node_id":"-222:input_data","from_node_id":"-215:data"},{"to_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-53:data2","from_node_id":"-222:data"},{"to_node_id":"-238:input_data","from_node_id":"-231:data"},{"to_node_id":"-3234:data1","from_node_id":"-238:data"},{"to_node_id":"-528:input_data","from_node_id":"-197:data"},{"to_node_id":"-6195:input_data","from_node_id":"-528:data"},{"to_node_id":"-528:features","from_node_id":"-546:data"},{"to_node_id":"-1162:input_ds","from_node_id":"-6195:data"},{"to_node_id":"-3194:data2","from_node_id":"-1162:data"},{"to_node_id":"-3325:input_data","from_node_id":"-3194:data"},{"to_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-53:data1","from_node_id":"-3325:data"},{"to_node_id":"-3194:data1","from_node_id":"-3201:data"},{"to_node_id":"-9271:input_1","from_node_id":"-9965:data"},{"to_node_id":"-199:input_1","from_node_id":"-10010:data"},{"to_node_id":"-10053:input_data","from_node_id":"-10004:data"},{"to_node_id":"-10053:features","from_node_id":"-10048:data"},{"to_node_id":"-6189:input_data","from_node_id":"-10053:data"},{"to_node_id":"-3228:input_ds","from_node_id":"-6189:data"},{"to_node_id":"-3234:data2","from_node_id":"-3228:data"},{"to_node_id":"-11436:input_data","from_node_id":"-3234:data"},{"to_node_id":"-215:features","from_node_id":"-11425:data"},{"to_node_id":"-222:features","from_node_id":"-11425:data"},{"to_node_id":"-231:features","from_node_id":"-11425:data"},{"to_node_id":"-238:features","from_node_id":"-11425:data"},{"to_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-84:input_data","from_node_id":"-11430:data"},{"to_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-60:data","from_node_id":"-11436:data"},{"to_node_id":"-323:input_ds","from_node_id":"-11436:data"},{"to_node_id":"-175:input_2","from_node_id":"-12762:data"},{"to_node_id":"-196:input_ds","from_node_id":"-175:data_1"},{"to_node_id":"-189:data2","from_node_id":"-196:data"},{"to_node_id":"-202:data2","from_node_id":"-189:data"},{"to_node_id":"-189:data1","from_node_id":"-224:data"},{"to_node_id":"-224:features","from_node_id":"-148:data"},{"to_node_id":"-490:input_ds","from_node_id":"-202:data"},{"to_node_id":"-1918:options_data","from_node_id":"-490:sorted_data"},{"to_node_id":"-329:data2","from_node_id":"-323:data"},{"to_node_id":"-202:data1","from_node_id":"-329:data"},{"to_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43:features","from_node_id":"-236:data_1"},{"to_node_id":"-10004:data2","from_node_id":"-199:data_1"},{"to_node_id":"-10004:data1","from_node_id":"-9271:data_1"},{"to_node_id":"-12223:input_1","from_node_id":"-12191:data"},{"to_node_id":"-12211:input_1","from_node_id":"-12199:data"},{"to_node_id":"-197:data2","from_node_id":"-12211:data_1"},{"to_node_id":"-197:data1","from_node_id":"-12223:data_1"}],"nodes":[{"node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2010-01-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2018-01-01","type":"Literal","bound_global_parameter":null},{"name":"market","value":"CN_STOCK_A","type":"Literal","bound_global_parameter":null},{"name":"instrument_list","value":"002714.SZA\n000620.SZA\n600066.SHA\n600887.SHA\n002415.SZA\n300450.SZA\n000622.SZA\n002690.SZA\n300601.SZA\n000776.SZA\n600519.SHA\n000333.SZA\n002035.SZA\n002236.SZA\n300015.SZA\n600436.SHA\n600566.SHA\n600201.SHA\n600705.SHA\n000156.SZA\n002677.SZA\n002032.SZA\n600681.SHA\n603601.SHA\n002372.SZA\n603019.SHA\n300571.SZA\n002475.SZA\n300033.SZA\n600346.SHA\n601888.SHA\n600763.SHA\n603799.SHA\n603690.SHA\n002044.SZA\n300253.SZA\n000651.SZA\n002085.SZA\n600903.SHA\n600340.SHA\n300296.SZA\n002572.SZA\n300176.SZA\n000963.SZA\n000403.SZA\n002747.SZA\n000789.SZA\n002508.SZA\n300347.SZA\n300401.SZA\n300666.SZA\n000732.SZA\n\t\n000049.SZA\n300451.SZA\n603986.SHA\n300684.SZA\n000681.SZA\n000671.SZA\n002230.SZA\n600867.SHA\n300059.SZA\n002020.SZA\n300457.SZA\n300136.SZA\n300308.SZA\n000661.SZA\n002304.SZA\n600276.SHA\n600563.SHA\n601012.SHA\n000703.SZA\n002410.SZA\n002358.SZA\n300725.SZA\n300226.SZA\n300675.SZA\n300324.SZA\n600801.SHA\n000048.SZA\n300383.SZA\n300285.SZA\n300459.SZA\n002008.SZA\n603288.SHA\n002049.SZA\n002311.SZA\n600305.SHA\n300377.SZA\n002746.SZA\n603638.SHA\n002507.SZA\n002252.SZA\n002271.SZA\n300482.SZA\n000002.SZA\n600612.SHA\n002081.SZA\n002013.SZA\n300357.SZA","type":"Literal","bound_global_parameter":null},{"name":"max_count","value":"0","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"rolling_conf","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8"}],"output_ports":[{"name":"data","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8"}],"cacheable":true,"seq_num":1,"comment":"","comment_collapsed":true},{"node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-24","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"avg_turn_15/turn_0\nmf_net_amount_xl_0\nalpha4=close_0*avg_turn_0+close_1*avg_turn_1+close_2*avg_turn_2\nalpha_039=((-1*rank((delta(close_0,7)*(1-rank(decay_linear(div(volume_0,mean(volume_0,20)),9))))))*(1+rank(sum((close_0/shift(close_0,1)-1),250))))\nalpha_030=div(((1.0-rank(((sign((close_0-delay(close_0,1)))+sign((delay(close_0,1)-delay(close_0,2))))+sign((delay(close_0,2)-delay(close_0,3))))))*sum(volume_0,5)),sum(volume_0,20))\nalpha_014=((-1*rank(delta((close_0/shift(close_0,1)-1),3)))*correlation(open_0,volume_0,10))\nalpha_022=(-1*(delta(correlation(high_0,volume_0,5),5)*rank(std(close_0,20))))\nalpha_012=(sign(delta(volume_0,1))*(-1*delta(close_0,1)))\nalpha_042=div(rank((((high_0+low_0+open_0+close_0)*0.25)-close_0)),rank((((high_0+low_0+open_0+close_0)*0.25)+close_0)))\nalpha_049=where(((((delay(close_0,20)-delay(close_0,10))/10)-((delay(close_0,10)-close_0)/10))<(-1*0.1)),1,((-1*1)*(close_0-delay(close_0,1))))\nalpha_016=(-1*rank(covariance(rank(high_0),rank(volume_0),5)))\nalpha_027=where((0.5<rank((sum(correlation(rank(volume_0),rank(((high_0+low_0+open_0+close_0)*0.25)),6),2)/2.0))),(-1*1),1)\nalpha_006=(-1*correlation(open_0,volume_0,10))\nalpha_057=(0-(1*div((close_0-((high_0+low_0+open_0+close_0)*0.25)),decay_linear(rank(ts_argmax(close_0,30)),2))))\nalpha_054=div((-1*((low_0-close_0)*(open_0**5))),((low_0-high_0)*(close_0**5)))\n\n","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-24"}],"output_ports":[{"name":"data","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-24"}],"cacheable":true,"seq_num":3,"comment":"","comment_collapsed":true},{"node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43","module_id":"BigQuantSpace.stock_ranker_train.stock_ranker_train-v5","parameters":[{"name":"learning_algorithm","value":"排序","type":"Literal","bound_global_parameter":null},{"name":"number_of_leaves","value":"20","type":"Literal","bound_global_parameter":null},{"name":"minimum_docs_per_leaf","value":1000,"type":"Literal","bound_global_parameter":null},{"name":"number_of_trees","value":"70","type":"Literal","bound_global_parameter":null},{"name":"learning_rate","value":0.1,"type":"Literal","bound_global_parameter":null},{"name":"max_bins","value":1023,"type":"Literal","bound_global_parameter":null},{"name":"feature_fraction","value":1,"type":"Literal","bound_global_parameter":null},{"name":"m_lazy_run","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"training_ds","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43"},{"name":"features","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43"},{"name":"test_ds","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43"},{"name":"base_model","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43"}],"output_ports":[{"name":"model","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43"},{"name":"feature_gains","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43"},{"name":"m_lazy_run","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-43"}],"cacheable":true,"seq_num":6,"comment":"","comment_collapsed":true},{"node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-53","module_id":"BigQuantSpace.join.join-v3","parameters":[{"name":"on","value":"date,instrument","type":"Literal","bound_global_parameter":null},{"name":"how","value":"inner","type":"Literal","bound_global_parameter":null},{"name":"sort","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"data1","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-53"},{"name":"data2","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-53"}],"output_ports":[{"name":"data","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-53"}],"cacheable":true,"seq_num":7,"comment":"","comment_collapsed":true},{"node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-60","module_id":"BigQuantSpace.stock_ranker_predict.stock_ranker_predict-v5","parameters":[{"name":"m_lazy_run","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"model","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-60"},{"name":"data","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-60"}],"output_ports":[{"name":"predictions","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-60"},{"name":"m_lazy_run","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-60"}],"cacheable":true,"seq_num":8,"comment":"","comment_collapsed":true},{"node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-62","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2018-01-01","type":"Literal","bound_global_parameter":"交易日期"},{"name":"end_date","value":"2021-10-30","type":"Literal","bound_global_parameter":"交易日期"},{"name":"market","value":"CN_STOCK_A","type":"Literal","bound_global_parameter":null},{"name":"instrument_list","value":"300782.SZA\n605358.SHA\n603290.SHA\n603392.SHA\n601865.SHA\n300759.SZA\n300750.SZA\n300677.SZA\n002607.SZA\n603259.SHA\n300751.SZA\n603613.SHA\n601100.SHA\n300763.SZA\n002568.SZA\n300724.SZA\n603345.SHA\n600763.SHA\n603713.SHA\n300595.SZA\n300014.SZA\n603712.SHA\n300760.SZA\n603317.SHA\n002791.SZA\n601066.SHA\n002985.SZA\n300661.SZA\n300347.SZA\n300777.SZA\n603129.SHA\n300454.SZA\n601888.SHA\n605111.SHA\n603638.SHA\n300850.SZA\n600809.SHA\n002414.SZA\n603893.SHA\n002967.SZA\n600132.SHA\n603605.SHA\n300015.SZA\n603267.SHA\n300012.SZA\n600882.SHA\n300684.SZA\n300390.SZA\n300769.SZA\n\t\n300748.SZA\n000799.SZA\n300767.SZA\n300775.SZA\n603737.SHA\n300601.SZA\n601698.SHA\n300841.SZA\n002975.SZA\n603501.SHA\n300122.SZA\n300677.SZA\n603392.SHA\n002791.SZA\n601865.SHA\n300759.SZA\n002568.SZA\n603613.SHA\n300014.SZA\n601100.SHA\n300763.SZA\n300274.SZA\n601633.SHA\n603501.SHA\n002709.SZA\n603317.SHA\n300661.SZA\n002985.SZA\n600882.SHA\n300598.SZA\n300777.SZA\n300552.SZA\n300346.SZA\n002475.SZA\n605111.SHA\n300850.SZA\n300526.SZA\n601012.SHA\n603893.SHA\n002967.SZA\n000858.SZA\n603267.SHA\n000568.SZA\n603638.SHA\n000708.SZA\n603456.SHA\n000995.SZA\n600399.SHA\n300767.SZA\n300595.SZA\n300347.SZA\n600763.SHA\n300751.SZA\n600316.SHA\n300775.SZA\n603208.SHA\n600862.SHA\n002241.SZA\n002706.SZA\n300390.SZA\n601698.SHA\n002541.SZA\n002607.SZA\n000733.SZA\n000596.SZA\n603345.SHA\n300151.SZA\n300496.SZA\n002705.SZA\n002756.SZA\n603185.SHA\n002850.SZA\n000661.SZA\n002600.SZA\n300724.SZA\n600584.SHA\n002414.SZA\n300223.SZA\n002920.SZA\n603906.SHA\n002714.SZA\n600966.SHA\n300083.SZA\n300601.SZA\n600438.SHA\n002812.SZA\n002459.SZA\n603027.SHA\n300015.SZA\n300763.SZA\n002709.SZA\n688202.SHA\n000422.SZA\n300769.SZA\n300751.SZA\n300343.SZA\n605117.SHA\n300827.SZA\n601633.SHA\n603026.SHA\n002240.SZA\n002326.SZA\n002487.SZA\n000762.SZA\n300432.SZA\n603396.SHA\n300363.SZA\n603985.SHA\n000155.SZA\n002594.SZA\n600399.SHA\n600702.SHA\n300171.SZA\n002176.SZA\n000733.SZA\n300750.SZA\n601127.SHA\n002812.SZA\n603260.SHA\n600610.SHA\n601012.SHA\n003022.SZA\n603127.SHA\n000301.SZA\n002585.SZA\n688198.SHA\n002245.SZA\n300693.SZA\n600096.SHA\n300568.SZA\n300382.SZA\n300443.SZA\n003031.SZA\n605376.SHA\n603806.SHA\n603223.SHA\n688116.SHA\n002529.SZA\n600141.SHA\n600956.SHA\n300035.SZA\n300316.SZA\n002460.SZA\n600110.SHA\n300671.SZA\n002407.SZA\n600532.SHA\n688599.SHA\n002472.SZA\n600499.SHA\n600111.SHA\n600884.SHA\n300696.SZA\n603267.SHA","type":"Literal","bound_global_parameter":null},{"name":"max_count","value":"0","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"rolling_conf","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-62"}],"output_ports":[{"name":"data","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-62"}],"cacheable":true,"seq_num":9,"comment":"预测数据,用于回测和模拟","comment_collapsed":false},{"node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-84","module_id":"BigQuantSpace.dropnan.dropnan-v1","parameters":[],"input_ports":[{"name":"input_data","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-84"}],"output_ports":[{"name":"data","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-84"}],"cacheable":true,"seq_num":13,"comment":"","comment_collapsed":true},{"node_id":"-215","module_id":"BigQuantSpace.general_feature_extractor.general_feature_extractor-v7","parameters":[{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"before_start_days","value":90,"type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-215"},{"name":"features","node_id":"-215"}],"output_ports":[{"name":"data","node_id":"-215"}],"cacheable":true,"seq_num":15,"comment":"","comment_collapsed":true},{"node_id":"-222","module_id":"BigQuantSpace.derived_feature_extractor.derived_feature_extractor-v3","parameters":[{"name":"date_col","value":"date","type":"Literal","bound_global_parameter":null},{"name":"instrument_col","value":"instrument","type":"Literal","bound_global_parameter":null},{"name":"drop_na","value":"False","type":"Literal","bound_global_parameter":null},{"name":"remove_extra_columns","value":"False","type":"Literal","bound_global_parameter":null},{"name":"user_functions","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-222"},{"name":"features","node_id":"-222"}],"output_ports":[{"name":"data","node_id":"-222"}],"cacheable":true,"seq_num":16,"comment":"","comment_collapsed":true},{"node_id":"-231","module_id":"BigQuantSpace.general_feature_extractor.general_feature_extractor-v7","parameters":[{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"before_start_days","value":"300","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-231"},{"name":"features","node_id":"-231"}],"output_ports":[{"name":"data","node_id":"-231"}],"cacheable":true,"seq_num":17,"comment":"","comment_collapsed":true},{"node_id":"-238","module_id":"BigQuantSpace.derived_feature_extractor.derived_feature_extractor-v3","parameters":[{"name":"date_col","value":"date","type":"Literal","bound_global_parameter":null},{"name":"instrument_col","value":"instrument","type":"Literal","bound_global_parameter":null},{"name":"drop_na","value":"False","type":"Literal","bound_global_parameter":null},{"name":"remove_extra_columns","value":"False","type":"Literal","bound_global_parameter":null},{"name":"user_functions","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-238"},{"name":"features","node_id":"-238"}],"output_ports":[{"name":"data","node_id":"-238"}],"cacheable":true,"seq_num":18,"comment":"","comment_collapsed":true},{"node_id":"-197","module_id":"BigQuantSpace.join.join-v3","parameters":[{"name":"on","value":"date","type":"Literal","bound_global_parameter":null},{"name":"how","value":"inner","type":"Literal","bound_global_parameter":null},{"name":"sort","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"data1","node_id":"-197"},{"name":"data2","node_id":"-197"}],"output_ports":[{"name":"data","node_id":"-197"}],"cacheable":true,"seq_num":24,"comment":"合并股票真实价格和大盘5日收益率","comment_collapsed":true},{"node_id":"-528","module_id":"BigQuantSpace.derived_feature_extractor.derived_feature_extractor-v3","parameters":[{"name":"date_col","value":"date","type":"Literal","bound_global_parameter":null},{"name":"instrument_col","value":"instrument","type":"Literal","bound_global_parameter":null},{"name":"drop_na","value":"False","type":"Literal","bound_global_parameter":null},{"name":"remove_extra_columns","value":"False","type":"Literal","bound_global_parameter":null},{"name":"user_functions","value":"{}","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-528"},{"name":"features","node_id":"-528"}],"output_ports":[{"name":"data","node_id":"-528"}],"cacheable":true,"seq_num":25,"comment":"抽取相对收益率","comment_collapsed":true},{"node_id":"-546","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"\n# #号开始的表示注释,注释需单独一行\n# 多个特征,每行一个,可以包含基础特征和衍生特征,特征须为本平台特征\nrelative_ret=stockret-bmret\nrelative_ret_5=sum(relative_ret,5)\nrelative_ret_30=sum(relative_ret,30)","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-546"}],"output_ports":[{"name":"data","node_id":"-546"}],"cacheable":true,"seq_num":26,"comment":"","comment_collapsed":true},{"node_id":"-6195","module_id":"BigQuantSpace.filter.filter-v3","parameters":[{"name":"expr","value":"(relative_ret_5>0)&(relative_ret_30>0)&(rank(relative_ret_30)>0.8)","type":"Literal","bound_global_parameter":null},{"name":"output_left_data","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-6195"}],"output_ports":[{"name":"data","node_id":"-6195"},{"name":"left_data","node_id":"-6195"}],"cacheable":true,"seq_num":31,"comment":"","comment_collapsed":true},{"node_id":"-1162","module_id":"BigQuantSpace.select_columns.select_columns-v3","parameters":[{"name":"columns","value":"date,instrument","type":"Literal","bound_global_parameter":null},{"name":"reverse_select","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_ds","node_id":"-1162"},{"name":"columns_ds","node_id":"-1162"}],"output_ports":[{"name":"data","node_id":"-1162"}],"cacheable":true,"seq_num":32,"comment":"","comment_collapsed":true},{"node_id":"-3194","module_id":"BigQuantSpace.join.join-v3","parameters":[{"name":"on","value":"date,instrument","type":"Literal","bound_global_parameter":null},{"name":"how","value":"inner","type":"Literal","bound_global_parameter":null},{"name":"sort","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"data1","node_id":"-3194"},{"name":"data2","node_id":"-3194"}],"output_ports":[{"name":"data","node_id":"-3194"}],"cacheable":true,"seq_num":33,"comment":"","comment_collapsed":true},{"node_id":"-3325","module_id":"BigQuantSpace.auto_labeler_on_datasource.auto_labeler_on_datasource-v1","parameters":[{"name":"label_expr","value":"# #号开始的表示注释\n# 0. 每行一个,顺序执行,从第二个开始,可以使用label字段\n# 1. 可用数据字段见 https://bigquant.com/docs/develop/datasource/deprecated/history_data.html\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# 计算收益:2日开盘价(作为卖出价格)除以明日开盘价(作为买入价格)\n(shift(close, -5) / shift(open, -1)-1)\n\n# 极值处理:用1%和99%分位的值做clip\nclip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))\nall_wbins(label, 20)\n# 过滤掉一字涨停的情况 (设置label为NaN,在后续处理和训练中会忽略NaN的label)\nwhere(shift(high, -1) == shift(low, -1), NaN, label)\n#where(label>0.5, NaN, label)\n#where(label<-0.5, NaN, label)\n","type":"Literal","bound_global_parameter":null},{"name":"drop_na_label","value":"True","type":"Literal","bound_global_parameter":null},{"name":"cast_label_int","value":"False","type":"Literal","bound_global_parameter":null},{"name":"date_col","value":"date","type":"Literal","bound_global_parameter":null},{"name":"instrument_col","value":"instrument","type":"Literal","bound_global_parameter":null},{"name":"user_functions","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-3325"}],"output_ports":[{"name":"data","node_id":"-3325"}],"cacheable":true,"seq_num":34,"comment":"","comment_collapsed":true},{"node_id":"-3201","module_id":"BigQuantSpace.use_datasource.use_datasource-v1","parameters":[{"name":"datasource_id","value":"bar1d_CN_STOCK_A","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}],"input_ports":[{"name":"instruments","node_id":"-3201"},{"name":"features","node_id":"-3201"}],"output_ports":[{"name":"data","node_id":"-3201"}],"cacheable":true,"seq_num":2,"comment":"","comment_collapsed":true},{"node_id":"-9965","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2018-01-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2021-10-30","type":"Literal","bound_global_parameter":"交易日期"},{"name":"market","value":"CN_STOCK_A","type":"Literal","bound_global_parameter":null},{"name":"instrument_list","value":"000300.HIX","type":"Literal","bound_global_parameter":null},{"name":"max_count","value":0,"type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"rolling_conf","node_id":"-9965"}],"output_ports":[{"name":"data","node_id":"-9965"}],"cacheable":true,"seq_num":4,"comment":"","comment_collapsed":true},{"node_id":"-10010","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2018-01-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2021-10-30","type":"Literal","bound_global_parameter":"交易日期"},{"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":"-10010"}],"output_ports":[{"name":"data","node_id":"-10010"}],"cacheable":true,"seq_num":37,"comment":"","comment_collapsed":true},{"node_id":"-10004","module_id":"BigQuantSpace.join.join-v3","parameters":[{"name":"on","value":"date","type":"Literal","bound_global_parameter":null},{"name":"how","value":"inner","type":"Literal","bound_global_parameter":null},{"name":"sort","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"data1","node_id":"-10004"},{"name":"data2","node_id":"-10004"}],"output_ports":[{"name":"data","node_id":"-10004"}],"cacheable":true,"seq_num":41,"comment":"合并股票真实价格和大盘5日收益率","comment_collapsed":true},{"node_id":"-10048","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"\n# #号开始的表示注释,注释需单独一行\n# 多个特征,每行一个,可以包含基础特征和衍生特征,特征须为本平台特征\nrelative_ret=stockret-bmret\nrelative_ret_5=sum(relative_ret,5)\nrelative_ret_30=sum(relative_ret,30)","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-10048"}],"output_ports":[{"name":"data","node_id":"-10048"}],"cacheable":true,"seq_num":47,"comment":"","comment_collapsed":true},{"node_id":"-10053","module_id":"BigQuantSpace.derived_feature_extractor.derived_feature_extractor-v3","parameters":[{"name":"date_col","value":"date","type":"Literal","bound_global_parameter":null},{"name":"instrument_col","value":"instrument","type":"Literal","bound_global_parameter":null},{"name":"drop_na","value":"False","type":"Literal","bound_global_parameter":null},{"name":"remove_extra_columns","value":"False","type":"Literal","bound_global_parameter":null},{"name":"user_functions","value":"{}","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-10053"},{"name":"features","node_id":"-10053"}],"output_ports":[{"name":"data","node_id":"-10053"}],"cacheable":true,"seq_num":48,"comment":"抽取相对收益率","comment_collapsed":true},{"node_id":"-6189","module_id":"BigQuantSpace.filter.filter-v3","parameters":[{"name":"expr","value":"(relative_ret_5>0)&(relative_ret_30>0)&(rank(relative_ret_30)>0.8)","type":"Literal","bound_global_parameter":null},{"name":"output_left_data","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-6189"}],"output_ports":[{"name":"data","node_id":"-6189"},{"name":"left_data","node_id":"-6189"}],"cacheable":true,"seq_num":49,"comment":"","comment_collapsed":true},{"node_id":"-3228","module_id":"BigQuantSpace.select_columns.select_columns-v3","parameters":[{"name":"columns","value":"date,instrument","type":"Literal","bound_global_parameter":null},{"name":"reverse_select","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_ds","node_id":"-3228"},{"name":"columns_ds","node_id":"-3228"}],"output_ports":[{"name":"data","node_id":"-3228"}],"cacheable":true,"seq_num":50,"comment":"","comment_collapsed":true},{"node_id":"-3234","module_id":"BigQuantSpace.join.join-v3","parameters":[{"name":"on","value":"date,instrument","type":"Literal","bound_global_parameter":null},{"name":"how","value":"inner","type":"Literal","bound_global_parameter":null},{"name":"sort","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"data1","node_id":"-3234"},{"name":"data2","node_id":"-3234"}],"output_ports":[{"name":"data","node_id":"-3234"}],"cacheable":true,"seq_num":51,"comment":"","comment_collapsed":true},{"node_id":"-11425","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"# #号开始的表示注释\n# 多个特征,每行一个,可以包含基础特征和衍生特征\n#周线金叉\ncond1=sum(ta_macd_dif(close_0,2,4,4),5)>sum(ta_macd_dea(close_0,2,4,4),5)\ncond2=close_0>mean(close_0, 25)\ncond3=sum(ta_macd_dea(close_0,2,4,4),5)>0.2\nprice_limit_status_0\ncond4=st_status_0<1","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-11425"}],"output_ports":[{"name":"data","node_id":"-11425"}],"cacheable":true,"seq_num":52,"comment":"","comment_collapsed":true},{"node_id":"-11430","module_id":"BigQuantSpace.filter.filter-v3","parameters":[{"name":"expr","value":"cond1&cond2&cond3","type":"Literal","bound_global_parameter":null},{"name":"output_left_data","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-11430"}],"output_ports":[{"name":"data","node_id":"-11430"},{"name":"left_data","node_id":"-11430"}],"cacheable":true,"seq_num":53,"comment":"","comment_collapsed":true},{"node_id":"-11436","module_id":"BigQuantSpace.filter.filter-v3","parameters":[{"name":"expr","value":"cond1&cond2&cond3&cond4","type":"Literal","bound_global_parameter":null},{"name":"output_left_data","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-11436"}],"output_ports":[{"name":"data","node_id":"-11436"},{"name":"left_data","node_id":"-11436"}],"cacheable":true,"seq_num":54,"comment":"","comment_collapsed":true},{"node_id":"-12762","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"\n# #号开始的表示注释,注释需单独一行\n# 多个特征,每行一个,可以包含基础特征和衍生特征,特征须为本平台特征\n#bm_0 = where(close/shift(close,5)-1<-0.05,1,0)\n\nbm_0=where(ta_macd_dif(close,2,4,4)-ta_macd_dea(close,2,4,4)<0,1,0)","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-12762"}],"output_ports":[{"name":"data","node_id":"-12762"}],"cacheable":true,"seq_num":55,"comment":"","comment_collapsed":true},{"node_id":"-175","module_id":"BigQuantSpace.index_feature_extract.index_feature_extract-v3","parameters":[{"name":"before_days","value":100,"type":"Literal","bound_global_parameter":null},{"name":"index","value":"000300.HIX","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_1","node_id":"-175"},{"name":"input_2","node_id":"-175"}],"output_ports":[{"name":"data_1","node_id":"-175"},{"name":"data_2","node_id":"-175"}],"cacheable":true,"seq_num":56,"comment":"","comment_collapsed":true},{"node_id":"-196","module_id":"BigQuantSpace.select_columns.select_columns-v3","parameters":[{"name":"columns","value":"date,bm_0","type":"Literal","bound_global_parameter":null},{"name":"reverse_select","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_ds","node_id":"-196"},{"name":"columns_ds","node_id":"-196"}],"output_ports":[{"name":"data","node_id":"-196"}],"cacheable":true,"seq_num":57,"comment":"","comment_collapsed":true},{"node_id":"-189","module_id":"BigQuantSpace.join.join-v3","parameters":[{"name":"on","value":"date","type":"Literal","bound_global_parameter":null},{"name":"how","value":"left","type":"Literal","bound_global_parameter":null},{"name":"sort","value":"True","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"data1","node_id":"-189"},{"name":"data2","node_id":"-189"}],"output_ports":[{"name":"data","node_id":"-189"}],"cacheable":true,"seq_num":58,"comment":"","comment_collapsed":true},{"node_id":"-224","module_id":"BigQuantSpace.use_datasource.use_datasource-v1","parameters":[{"name":"datasource_id","value":"instruments_CN_STOCK_A","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}],"input_ports":[{"name":"instruments","node_id":"-224"},{"name":"features","node_id":"-224"}],"output_ports":[{"name":"data","node_id":"-224"}],"cacheable":true,"seq_num":59,"comment":"","comment_collapsed":true},{"node_id":"-148","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"\n# #号开始的表示注释,注释需单独一行\n# 多个特征,每行一个,可以包含基础特征和衍生特征,特征须为本平台特征\nname","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-148"}],"output_ports":[{"name":"data","node_id":"-148"}],"cacheable":true,"seq_num":60,"comment":"","comment_collapsed":true},{"node_id":"-202","module_id":"BigQuantSpace.join.join-v3","parameters":[{"name":"on","value":"date,instrument","type":"Literal","bound_global_parameter":null},{"name":"how","value":"left","type":"Literal","bound_global_parameter":null},{"name":"sort","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"data1","node_id":"-202"},{"name":"data2","node_id":"-202"}],"output_ports":[{"name":"data","node_id":"-202"}],"cacheable":true,"seq_num":61,"comment":"","comment_collapsed":true},{"node_id":"-490","module_id":"BigQuantSpace.sort.sort-v4","parameters":[{"name":"sort_by","value":"score","type":"Literal","bound_global_parameter":null},{"name":"group_by","value":"date","type":"Literal","bound_global_parameter":null},{"name":"keep_columns","value":"--","type":"Literal","bound_global_parameter":null},{"name":"ascending","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_ds","node_id":"-490"},{"name":"sort_by_ds","node_id":"-490"}],"output_ports":[{"name":"sorted_data","node_id":"-490"}],"cacheable":true,"seq_num":62,"comment":"","comment_collapsed":true},{"node_id":"-1918","module_id":"BigQuantSpace.trade.trade-v4","parameters":[{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"initialize","value":"# 回测引擎:初始化函数,只执行一次\ndef bigquant_run(context):\n # 加载预测数据\n context.ranker_prediction = context.options['data'].read_df()\n #context.write_log('hi')\n # 系统已经设置了默认的交易手续费和滑点,要修改手续费可使用如下函数\n context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))\n # 预测数据,通过options传入进来,使用 read_df 函数,加载到内存 (DataFrame)\n # 设置买入的股票数量,这里买入预测股票列表排名靠前的5只\n stock_count = 5\n # 每只的股票的权重,如下的权重分配会使得靠前的股票分配多一点的资金,[0.339160, 0.213986, 0.169580, ..]\n context.stock_weights = T.norm([1 / math.log(i + 2) for i in range(0, stock_count)])\n # 设置每只股票占用的最大资金比例\n context.max_cash_per_instrument =0.1\n context.options['hold_days'] = 5\n\n from zipline.finance.slippage import SlippageModel\n class FixedPriceSlippage(SlippageModel):\n def process_order(self, data, order, bar_volume=0, trigger_check_price=0):\n if order.limit is None:\n price_field = self._price_field_buy if order.amount > 0 else self._price_field_sell\n price = data.current(order.asset, price_field)\n else:\n price = data.current(order.asset, self._price_field_buy)\n # 返回希望成交的价格和数量\n return (price, order.amount)\n # 设置price_field,默认是开盘买入,收盘卖出\n context.fix_slippage = FixedPriceSlippage(price_field_buy='open', price_field_sell='close')\n context.set_slippage(us_equities=context.fix_slippage)","type":"Literal","bound_global_parameter":null},{"name":"handle_data","value":"# 回测引擎:每日数据处理函数,每天执行一次\ndef bigquant_run(context, data):\n # 获取当前持仓\n positions = {e.symbol: p.amount * p.last_sale_price\n for e, p in context.portfolio.positions.items()}\n \n today = data.current_dt.strftime('%Y-%m-%d')\n # 按日期过滤得到今日的预测数据\n ranker_prediction = context.ranker_prediction[\n context.ranker_prediction.date == today]\n try:\n #大盘风控模块,读取风控数据 \n benckmark_risk=ranker_prediction['bm_0'].values[0]\n if benckmark_risk > 0:\n for instrument in positions.keys():\n context.order_target(context.symbol(instrument), 0)\n print(today,'大盘风控止损触发,全仓卖出')\n return\n except:\n print('缺失风控数据!')\n \n #当risk为1时,市场有风险,全部平仓,不再执行其它操作\n \n \n # 1. 资金分配\n # 平均持仓时间是hold_days,每日都将买入股票,每日预期使用 1/hold_days 的资金\n # 实际操作中,会存在一定的买入误差,所以在前hold_days天,等量使用资金;之后,尽量使用剩余资金(这里设置最多用等量的1.5倍)\n is_staging = context.trading_day_index < context.options['hold_days'] # 是否在建仓期间(前 hold_days 天)\n cash_avg = context.portfolio.portfolio_value / context.options['hold_days']\n cash_for_buy = min(context.portfolio.cash, (1 if is_staging else 1.5) * cash_avg)\n cash_for_sell = cash_avg - (context.portfolio.cash - cash_for_buy)\n \n \n # 2. 根据需要加入移动止赢止损模块、固定天数卖出模块、ST或退市股卖出模块\n stock_sold = [] # 记录卖出的股票,防止多次卖出出现空单\n \n #------------------------START:止赢止损模块(含建仓期)---------------\n current_stopwin_stock=[]\n current_stoploss_stock = [] \n positions_cost={e.symbol:p.cost_basis for e,p in context.portfolio.positions.items()}\n if len(positions)>0:\n for instrument in positions.keys():\n stock_cost=positions_cost[instrument] \n stock_market_price=data.current(context.symbol(instrument),'price') \n volume_since_buy = data.history(context.symbol(instrument), 'volume', 6, '1d')\n # 赚9%且为可交易状态就止盈\n if stock_market_price/stock_cost-1>=0.6 and data.can_trade(context.symbol(instrument)):\n context.order_target_percent(context.symbol(instrument),0)\n cash_for_sell -= positions[instrument]\n current_stopwin_stock.append(instrument)\n # 亏5%并且为可交易状态就止损\n if stock_market_price/stock_cost-1 <= -0.05 and data.can_trade(context.symbol(instrument)): \n context.order_target_percent(context.symbol(instrument),0)\n cash_for_sell -= positions[instrument]\n current_stoploss_stock.append(instrument)\n # 放天量 止损:\n# if (volume_since_buy[0]>1.5*volume_since_buy[1]) |(volume_since_buy[0]>1.5*(volume_since_buy[1]+volume_since_buy[2]+volume_since_buy[3]+volume_since_buy[4]+volume_since_buy[5])/5):\n# context.order_target_percent(context.symbol(instrument),0)\n# cash_for_sell -= positions[instrument]\n# current_stoploss_stock.append(instrument)\n if len(current_stopwin_stock)>0:\n print(today,'止盈股票列表',current_stopwin_stock)\n stock_sold += current_stopwin_stock\n if len(current_stoploss_stock)>0:\n print(today,'止损股票列表',current_stoploss_stock)\n stock_sold += current_stoploss_stock\n #--------------------------END: 止赢止损模块--------------------------\n \n #--------------------------START:持有固定天数卖出(不含建仓期)-----------\n current_stopdays_stock = []\n positions_lastdate = {e.symbol:p.last_sale_date for e,p in context.portfolio.positions.items()}\n # 不是建仓期(在前hold_days属于建仓期)\n if not is_staging:\n for instrument in positions.keys():\n #如果上面的止盈止损已经卖出过了,就不要重复卖出以防止产生空单\n if instrument in stock_sold:\n continue\n # 今天和上次交易的时间相隔hold_days就全部卖出 datetime.timedelta(context.options['hold_days'])也可以换成自己需要的天数,比如datetime.timedelta(5)\n if data.current_dt - positions_lastdate[instrument]>=datetime.timedelta(22) and data.can_trade(context.symbol(instrument)):\n context.order_target_percent(context.symbol(instrument), 0)\n current_stopdays_stock.append(instrument)\n cash_for_sell -= positions[instrument]\n if len(current_stopdays_stock)>0: \n print(today,'固定天数卖出列表',current_stopdays_stock)\n stock_sold += current_stopdays_stock\n #------------------------- END:持有固定天数卖出-----------------------\n \n #-------------------------- START: ST和退市股卖出 --------------------- \n st_stock_list = []\n for instrument in positions.keys():\n try:\n instrument_name = ranker_prediction[ranker_prediction.instrument==instrument].name.values[0]\n # 如果股票状态变为了st或者退市 则卖出\n if 'ST' in instrument_name or '退' in instrument_name:\n if instrument in stock_sold:\n continue\n if data.can_trade(context.symbol(instrument)):\n context.order_target(context.symbol(instrument), 0)\n st_stock_list.append(instrument)\n cash_for_sell -= positions[instrument]\n except:\n continue\n if st_stock_list!=[]:\n print(today,'持仓出现st股/退市股',st_stock_list,'进行卖出处理') \n stock_sold += st_stock_list\n\n #-------------------------- END: ST和退市股卖出 --------------------- \n \n \n # 3. 生成轮仓卖出订单:hold_days天之后才开始卖出;对持仓的股票,按机器学习算法预测的排序末位淘汰\n if not is_staging and cash_for_sell > 0:\n instruments = list(reversed(list(ranker_prediction.instrument[ranker_prediction.instrument.apply(\n lambda x: x in positions)])))\n for instrument in instruments:\n # 如果资金够了就不卖出了\n if cash_for_sell <= 0:\n break\n #防止多个止损条件同时满足,出现多次卖出产生空单\n if instrument in stock_sold:\n continue\n context.order_target(context.symbol(instrument), 0)\n cash_for_sell -= positions[instrument]\n stock_sold.append(instrument)\n\n # 4. 生成轮仓买入订单:按机器学习算法预测的排序,买入前面的stock_count只股票\n # 计算今日跌停的股票\n dt_list = list(ranker_prediction[ranker_prediction.price_limit_status_0==1].instrument)\n # 计算今日ST/退市的股票\n st_list = list(ranker_prediction[ranker_prediction.name.str.contains('ST')|ranker_prediction.name.str.contains('退')].instrument)\n # 计算所有禁止买入的股票池\n banned_list = stock_sold+dt_list+st_list\n buy_cash_weights = context.stock_weights\n buy_instruments=[k for k in list(ranker_prediction.instrument) if k not in banned_list][:len(buy_cash_weights)]\n max_cash_per_instrument = context.portfolio.portfolio_value * context.max_cash_per_instrument\n for i, instrument in enumerate(buy_instruments):\n cash = cash_for_buy * buy_cash_weights[i]\n if cash > max_cash_per_instrument - positions.get(instrument, 0):\n # 确保股票持仓量不会超过每次股票最大的占用资金量\n cash = max_cash_per_instrument - positions.get(instrument, 0)\n if cash > 0:\n context.order_value(context.symbol(instrument), cash)\n \n\n","type":"Literal","bound_global_parameter":null},{"name":"prepare","value":"# 回测引擎:准备数据,只执行一次\ndef bigquant_run(context):\n context.status_df = D.features(instruments =context.instruments,start_date = context.start_date, end_date = context.end_date, \n fields=['st_status_0','price_limit_status_0','price_limit_status_1'])\n","type":"Literal","bound_global_parameter":null},{"name":"before_trading_start","value":"def bigquant_run(context, data):\n # 获取涨跌停状态数据\n df_price_limit_status = context.ranker_prediction.set_index('date')\n today=data.current_dt.strftime('%Y-%m-%d')\n # 得到当前未完成订单\n for orders in get_open_orders().values():\n # 循环,撤销订单\n for _order in orders:\n ins=str(_order.sid.symbol)\n try:\n #判断一下如果当日涨停,则取消卖单\n if df_price_limit_status[df_price_limit_status.instrument==ins].price_limit_status_0.ix[today]>2 and _order.amount<0:\n cancel_order(_order)\n print(today,'尾盘涨停取消卖单',ins) \n except:\n continue","type":"Literal","bound_global_parameter":null},{"name":"volume_limit","value":0.025,"type":"Literal","bound_global_parameter":null},{"name":"order_price_field_buy","value":"open","type":"Literal","bound_global_parameter":null},{"name":"order_price_field_sell","value":"close","type":"Literal","bound_global_parameter":null},{"name":"capital_base","value":"1000001","type":"Literal","bound_global_parameter":null},{"name":"auto_cancel_non_tradable_orders","value":"True","type":"Literal","bound_global_parameter":null},{"name":"data_frequency","value":"daily","type":"Literal","bound_global_parameter":null},{"name":"price_type","value":"后复权","type":"Literal","bound_global_parameter":null},{"name":"product_type","value":"股票","type":"Literal","bound_global_parameter":null},{"name":"plot_charts","value":"True","type":"Literal","bound_global_parameter":null},{"name":"backtest_only","value":"False","type":"Literal","bound_global_parameter":null},{"name":"benchmark","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-1918"},{"name":"options_data","node_id":"-1918"},{"name":"history_ds","node_id":"-1918"},{"name":"benchmark_ds","node_id":"-1918"},{"name":"trading_calendar","node_id":"-1918"}],"output_ports":[{"name":"raw_perf","node_id":"-1918"}],"cacheable":false,"seq_num":63,"comment":"","comment_collapsed":true},{"node_id":"-323","module_id":"BigQuantSpace.select_columns.select_columns-v3","parameters":[{"name":"columns","value":"date,instrument,price_limit_status_0","type":"Literal","bound_global_parameter":null},{"name":"reverse_select","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_ds","node_id":"-323"},{"name":"columns_ds","node_id":"-323"}],"output_ports":[{"name":"data","node_id":"-323"}],"cacheable":true,"seq_num":64,"comment":"","comment_collapsed":true},{"node_id":"-329","module_id":"BigQuantSpace.join.join-v3","parameters":[{"name":"on","value":"date,instrument","type":"Literal","bound_global_parameter":null},{"name":"how","value":"inner","type":"Literal","bound_global_parameter":null},{"name":"sort","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"data1","node_id":"-329"},{"name":"data2","node_id":"-329"}],"output_ports":[{"name":"data","node_id":"-329"}],"cacheable":true,"seq_num":65,"comment":"","comment_collapsed":true},{"node_id":"-236","module_id":"BigQuantSpace.features_short.features_short-v1","parameters":[],"input_ports":[{"name":"input_1","node_id":"-236"}],"output_ports":[{"name":"data_1","node_id":"-236"}],"cacheable":true,"seq_num":67,"comment":"","comment_collapsed":true},{"node_id":"-199","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, start_date,end_date):\n # 示例代码如下。在这里编写您的代码\n ins=input_1.read_pickle()['instruments']\n start_date=input_1.read_pickle()['start_date']\n end_date=input_1.read_pickle()['end_date']\n m=90\n start_date=(datetime.datetime.strptime(start_date,('%Y-%m-%d'))-datetime.timedelta(m)). strftime('%Y-%m-%d') \n df=DataSource('bar1d_CN_STOCK_A').read(start_date=start_date,end_date=end_date,fields=['close','open','low','high','adjust_factor'])\n #stockret=close/shift(close,1)-1\n #df['stockret']=(df['close']/df['adjust_factor'])/(df['close'].shift(1)/df['adjust_factor'].shift(1))-1\n df['stockret']=(df['close'])/(df['close'].shift(1))-1\n #df = df[['date', 'close', 'instrument']].rename(columns={'close': 'close_0'})\n df=df[['instrument','date','stockret']]\n data_1 = DataSource.write_df(df)\n return Outputs(data_1=data_1, data_2=None, 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":"-199"},{"name":"input_2","node_id":"-199"},{"name":"input_3","node_id":"-199"}],"output_ports":[{"name":"data_1","node_id":"-199"},{"name":"data_2","node_id":"-199"},{"name":"data_3","node_id":"-199"}],"cacheable":true,"seq_num":19,"comment":"","comment_collapsed":true},{"node_id":"-9271","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, start_date,end_date):\n # 示例代码如下。在这里编写您的代码\n ins=input_1.read_pickle()['instruments']\n start_date=input_1.read_pickle()['start_date']\n end_date=input_1.read_pickle()['end_date']\n #进行向前抽取数据,试图避免数据为零的错误\n m=90\n start_date=(datetime.datetime.strptime(start_date,('%Y-%m-%d'))-datetime.timedelta(m)). strftime('%Y-%m-%d') \n df=DataSource('bar1d_index_CN_STOCK_A').read(ins[0],start_date=start_date,end_date=end_date,fields=['close','open','low','high','adjust_factor'])\n #stockret=close/shift(close,1)-1\n #bmret=close/shift(close,1)-1\n #df['bmret']=(df['close']/df['adjust_factor'])/(df['close'].shift(1)/df['adjust_factor'].shift(1))-1\n df['bmret']=(df['close'])/(df['close'].shift(1))-1\n df=df[['date','bmret']]\n #df = df[['date', 'close', 'instrument']].rename(columns={'close': 'close_0'})\n data_1 = DataSource.write_df(df)\n return Outputs(data_1=data_1, data_2=None, 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":"-9271"},{"name":"input_2","node_id":"-9271"},{"name":"input_3","node_id":"-9271"}],"output_ports":[{"name":"data_1","node_id":"-9271"},{"name":"data_2","node_id":"-9271"},{"name":"data_3","node_id":"-9271"}],"cacheable":true,"seq_num":43,"comment":"","comment_collapsed":true},{"node_id":"-12191","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2010-01-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2019-01-01","type":"Literal","bound_global_parameter":null},{"name":"market","value":"CN_STOCK_A","type":"Literal","bound_global_parameter":null},{"name":"instrument_list","value":"000300.HIX","type":"Literal","bound_global_parameter":null},{"name":"max_count","value":0,"type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"rolling_conf","node_id":"-12191"}],"output_ports":[{"name":"data","node_id":"-12191"}],"cacheable":true,"seq_num":5,"comment":"","comment_collapsed":true},{"node_id":"-12199","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2010-01-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2019-01-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":"-12199"}],"output_ports":[{"name":"data","node_id":"-12199"}],"cacheable":true,"seq_num":10,"comment":"","comment_collapsed":true},{"node_id":"-12211","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, start_date,end_date):\n # 示例代码如下。在这里编写您的代码\n ins=input_1.read_pickle()['instruments']\n start_date=input_1.read_pickle()['start_date']\n end_date=input_1.read_pickle()['end_date']\n m=90\n start_date=(datetime.datetime.strptime(start_date,('%Y-%m-%d'))-datetime.timedelta(m)). strftime('%Y-%m-%d') \n df=DataSource('bar1d_CN_STOCK_A').read(start_date=start_date,end_date=end_date,fields=['close','open','low','high','adjust_factor'])\n #stockret=close/shift(close,1)-1\n #df['stockret']=(df['close']/df['adjust_factor'])/(df['close'].shift(1)/df['adjust_factor'].shift(1))-1\n df['stockret']=(df['close'])/(df['close'].shift(1))-1\n #df = df[['date', 'close', 'instrument']].rename(columns={'close': 'close_0'})\n df=df[['instrument','date','stockret']]\n data_1 = DataSource.write_df(df)\n return Outputs(data_1=data_1, data_2=None, 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":"-12211"},{"name":"input_2","node_id":"-12211"},{"name":"input_3","node_id":"-12211"}],"output_ports":[{"name":"data_1","node_id":"-12211"},{"name":"data_2","node_id":"-12211"},{"name":"data_3","node_id":"-12211"}],"cacheable":true,"seq_num":11,"comment":"","comment_collapsed":true},{"node_id":"-12223","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, start_date,end_date):\n # 示例代码如下。在这里编写您的代码\n ins=input_1.read_pickle()['instruments']\n start_date=input_1.read_pickle()['start_date']\n end_date=input_1.read_pickle()['end_date']\n m=90\n start_date=(datetime.datetime.strptime(start_date,('%Y-%m-%d'))-datetime.timedelta(m)). strftime('%Y-%m-%d') \n df=DataSource('bar1d_index_CN_STOCK_A').read(ins[0],start_date=start_date,end_date=end_date,fields=['close','open','low','high','adjust_factor'])\n #stockret=close/shift(close,1)-1\n #bmret=close/shift(close,1)-1\n #df['bmret']=(df['close']/df['adjust_factor'])/(df['close'].shift(1)/df['adjust_factor'].shift(1))-1\n df['bmret']=(df['close'])/(df['close'].shift(1))-1\n df=df[['date','bmret']]\n #df = df[['date', 'close', 'instrument']].rename(columns={'close': 'close_0'})\n data_1 = DataSource.write_df(df)\n return Outputs(data_1=data_1, data_2=None, 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":"-12223"},{"name":"input_2","node_id":"-12223"},{"name":"input_3","node_id":"-12223"}],"output_ports":[{"name":"data_1","node_id":"-12223"},{"name":"data_2","node_id":"-12223"},{"name":"data_3","node_id":"-12223"}],"cacheable":true,"seq_num":12,"comment":"","comment_collapsed":true}],"node_layout":"<node_postions><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-8' Position='121,-20,200,200'/><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-24' Position='663,29,200,200'/><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-43' Position='675,530,200,200'/><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-53' Position='249,375,200,200'/><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-60' Position='794,637,200,200'/><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-62' Position='1231,67,200,200'/><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-84' Position='508,457,200,200'/><node_position Node='-215' Position='381,188,200,200'/><node_position Node='-222' Position='385,280,200,200'/><node_position Node='-231' Position='1086,213,200,200'/><node_position Node='-238' Position='1104,293,200,200'/><node_position Node='-197' Position='-741,-616,200,200'/><node_position Node='-528' Position='-511,-563,200,200'/><node_position Node='-546' Position='-339,-642,200,200'/><node_position Node='-6195' Position='-498,-200,200,200'/><node_position Node='-1162' Position='-403,-35,200,200'/><node_position Node='-3194' Position='-82,196,200,200'/><node_position Node='-3325' Position='-42,290,200,200'/><node_position Node='-3201' Position='46,114,200,200'/><node_position Node='-9965' Position='942,-764,200,200'/><node_position Node='-10010' Position='1376,-775,200,200'/><node_position Node='-10004' Position='1264,-399,200,200'/><node_position Node='-10048' Position='1679,-415,200,200'/><node_position Node='-10053' Position='1490,-192,200,200'/><node_position Node='-6189' Position='1482,-74,200,200'/><node_position Node='-3228' Position='1782,122,200,200'/><node_position Node='-3234' Position='1415,337,200,200'/><node_position Node='-11425' Position='719,145,200,200'/><node_position Node='-11430' Position='673,380,200,200'/><node_position Node='-11436' Position='1351,430,200,200'/><node_position Node='-12762' Position='1927,435,200,200'/><node_position Node='-175' Position='1928,542,200,200'/><node_position Node='-196' Position='1909,642,200,200'/><node_position Node='-189' Position='1725,760,200,200'/><node_position Node='-224' Position='1615,640,200,200'/><node_position Node='-148' Position='1618,542,200,200'/><node_position Node='-202' Position='1459,876,200,200'/><node_position Node='-490' Position='1566,979,200,200'/><node_position Node='-1918' Position='1476.75732421875,1087,200,200'/><node_position Node='-323' Position='1342,676,200,200'/><node_position Node='-329' Position='1346,782,200,200'/><node_position Node='-236' Position='844,340,200,200'/><node_position Node='-199' Position='1419,-619.5146484375,200,200'/><node_position Node='-9271' Position='1045,-625,200,200'/><node_position Node='-12191' Position='-810.75732421875,-955,200,200'/><node_position Node='-12199' Position='-377,-966,200,200'/><node_position Node='-12211' Position='-335,-813,200,200'/><node_position Node='-12223' Position='-708,-816,200,200'/></node_postions>"},"nodes_readonly":false,"studio_version":"v2"}
[2021-11-22 10:02:30.689681] INFO: moduleinvoker: instruments.v2 开始运行..
[2021-11-22 10:02:30.696640] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.698144] INFO: moduleinvoker: instruments.v2 运行完成[0.008475s].
[2021-11-22 10:02:30.702791] INFO: moduleinvoker: use_datasource.v1 开始运行..
[2021-11-22 10:02:30.713578] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.715207] INFO: moduleinvoker: use_datasource.v1 运行完成[0.012407s].
[2021-11-22 10:02:30.719001] INFO: moduleinvoker: input_features.v1 开始运行..
[2021-11-22 10:02:30.724918] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.726477] INFO: moduleinvoker: input_features.v1 运行完成[0.007475s].
[2021-11-22 10:02:30.730555] INFO: moduleinvoker: input_features.v1 开始运行..
[2021-11-22 10:02:30.736658] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.738297] INFO: moduleinvoker: input_features.v1 运行完成[0.007742s].
[2021-11-22 10:02:30.752262] INFO: moduleinvoker: general_feature_extractor.v7 开始运行..
[2021-11-22 10:02:30.761686] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.763436] INFO: moduleinvoker: general_feature_extractor.v7 运行完成[0.011191s].
[2021-11-22 10:02:30.770255] INFO: moduleinvoker: derived_feature_extractor.v3 开始运行..
[2021-11-22 10:02:30.776646] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.778106] INFO: moduleinvoker: derived_feature_extractor.v3 运行完成[0.007843s].
[2021-11-22 10:02:30.800632] INFO: moduleinvoker: features_short.v1 开始运行..
[2021-11-22 10:02:30.807631] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.809279] INFO: moduleinvoker: features_short.v1 运行完成[0.008669s].
[2021-11-22 10:02:30.814090] INFO: moduleinvoker: instruments.v2 开始运行..
[2021-11-22 10:02:30.820089] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.821406] INFO: moduleinvoker: instruments.v2 运行完成[0.00732s].
[2021-11-22 10:02:30.832854] INFO: moduleinvoker: general_feature_extractor.v7 开始运行..
[2021-11-22 10:02:30.838594] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.840195] INFO: moduleinvoker: general_feature_extractor.v7 运行完成[0.00734s].
[2021-11-22 10:02:30.846836] INFO: moduleinvoker: derived_feature_extractor.v3 开始运行..
[2021-11-22 10:02:30.852331] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.853731] INFO: moduleinvoker: derived_feature_extractor.v3 运行完成[0.00689s].
[2021-11-22 10:02:30.857257] INFO: moduleinvoker: input_features.v1 开始运行..
[2021-11-22 10:02:30.862722] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.864049] INFO: moduleinvoker: input_features.v1 运行完成[0.00679s].
[2021-11-22 10:02:30.868887] INFO: moduleinvoker: instruments.v2 开始运行..
[2021-11-22 10:02:30.875600] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.877074] INFO: moduleinvoker: instruments.v2 运行完成[0.00818s].
[2021-11-22 10:02:30.889026] INFO: moduleinvoker: cached.v3 开始运行..
[2021-11-22 10:02:30.895667] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.897280] INFO: moduleinvoker: cached.v3 运行完成[0.008268s].
[2021-11-22 10:02:30.902839] INFO: moduleinvoker: instruments.v2 开始运行..
[2021-11-22 10:02:30.911641] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.912942] INFO: moduleinvoker: instruments.v2 运行完成[0.0101s].
[2021-11-22 10:02:30.922986] INFO: moduleinvoker: cached.v3 开始运行..
[2021-11-22 10:02:30.930486] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.931813] INFO: moduleinvoker: cached.v3 运行完成[0.008845s].
[2021-11-22 10:02:30.939816] INFO: moduleinvoker: join.v3 开始运行..
[2021-11-22 10:02:30.950652] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.952244] INFO: moduleinvoker: join.v3 运行完成[0.012425s].
[2021-11-22 10:02:30.956574] INFO: moduleinvoker: input_features.v1 开始运行..
[2021-11-22 10:02:30.962872] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:30.964321] INFO: moduleinvoker: input_features.v1 运行完成[0.007747s].
[2021-11-22 10:02:30.971930] INFO: moduleinvoker: derived_feature_extractor.v3 开始运行..
[2021-11-22 10:02:31.002320] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.005234] INFO: moduleinvoker: derived_feature_extractor.v3 运行完成[0.033291s].
[2021-11-22 10:02:31.015009] INFO: moduleinvoker: filter.v3 开始运行..
[2021-11-22 10:02:31.022198] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.024466] INFO: moduleinvoker: filter.v3 运行完成[0.009447s].
[2021-11-22 10:02:31.035671] INFO: moduleinvoker: select_columns.v3 开始运行..
[2021-11-22 10:02:31.044682] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.046102] INFO: moduleinvoker: select_columns.v3 运行完成[0.010442s].
[2021-11-22 10:02:31.054348] INFO: moduleinvoker: join.v3 开始运行..
[2021-11-22 10:02:31.059567] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.060778] INFO: moduleinvoker: join.v3 运行完成[0.006428s].
[2021-11-22 10:02:31.067910] INFO: moduleinvoker: filter.v3 开始运行..
[2021-11-22 10:02:31.073272] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.074681] INFO: moduleinvoker: filter.v3 运行完成[0.006766s].
[2021-11-22 10:02:31.084186] INFO: moduleinvoker: select_columns.v3 开始运行..
[2021-11-22 10:02:31.089875] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.091416] INFO: moduleinvoker: select_columns.v3 运行完成[0.007268s].
[2021-11-22 10:02:31.095371] INFO: moduleinvoker: input_features.v1 开始运行..
[2021-11-22 10:02:31.102854] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.104699] INFO: moduleinvoker: input_features.v1 运行完成[0.009321s].
[2021-11-22 10:02:31.114157] INFO: moduleinvoker: index_feature_extract.v3 开始运行..
[2021-11-22 10:02:31.125165] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.127165] INFO: moduleinvoker: index_feature_extract.v3 运行完成[0.013023s].
[2021-11-22 10:02:31.135813] INFO: moduleinvoker: select_columns.v3 开始运行..
[2021-11-22 10:02:31.142119] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.143857] INFO: moduleinvoker: select_columns.v3 运行完成[0.008061s].
[2021-11-22 10:02:31.147654] INFO: moduleinvoker: input_features.v1 开始运行..
[2021-11-22 10:02:31.153879] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.155341] INFO: moduleinvoker: input_features.v1 运行完成[0.007686s].
[2021-11-22 10:02:31.160109] INFO: moduleinvoker: use_datasource.v1 开始运行..
[2021-11-22 10:02:31.166507] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.167825] INFO: moduleinvoker: use_datasource.v1 运行完成[0.007724s].
[2021-11-22 10:02:31.183808] INFO: moduleinvoker: join.v3 开始运行..
[2021-11-22 10:02:31.201696] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.203268] INFO: moduleinvoker: join.v3 运行完成[0.019475s].
[2021-11-22 10:02:31.207790] INFO: moduleinvoker: instruments.v2 开始运行..
[2021-11-22 10:02:31.213445] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.214661] INFO: moduleinvoker: instruments.v2 运行完成[0.00687s].
[2021-11-22 10:02:31.225616] INFO: moduleinvoker: cached.v3 开始运行..
[2021-11-22 10:02:31.233113] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.235112] INFO: moduleinvoker: cached.v3 运行完成[0.009498s].
[2021-11-22 10:02:31.240168] INFO: moduleinvoker: instruments.v2 开始运行..
[2021-11-22 10:02:31.247791] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.249160] INFO: moduleinvoker: instruments.v2 运行完成[0.00899s].
[2021-11-22 10:02:31.259356] INFO: moduleinvoker: cached.v3 开始运行..
[2021-11-22 10:02:31.267708] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.269272] INFO: moduleinvoker: cached.v3 运行完成[0.009922s].
[2021-11-22 10:02:31.279125] INFO: moduleinvoker: join.v3 开始运行..
[2021-11-22 10:02:31.290363] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.291902] INFO: moduleinvoker: join.v3 运行完成[0.01278s].
[2021-11-22 10:02:31.304806] INFO: moduleinvoker: derived_feature_extractor.v3 开始运行..
[2021-11-22 10:02:31.320973] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.322705] INFO: moduleinvoker: derived_feature_extractor.v3 运行完成[0.017902s].
[2021-11-22 10:02:31.331157] INFO: moduleinvoker: filter.v3 开始运行..
[2021-11-22 10:02:31.338713] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.340143] INFO: moduleinvoker: filter.v3 运行完成[0.008988s].
[2021-11-22 10:02:31.348287] INFO: moduleinvoker: select_columns.v3 开始运行..
[2021-11-22 10:02:31.359994] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.361611] INFO: moduleinvoker: select_columns.v3 运行完成[0.013326s].
[2021-11-22 10:02:31.368947] INFO: moduleinvoker: join.v3 开始运行..
[2021-11-22 10:02:31.384898] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.386582] INFO: moduleinvoker: join.v3 运行完成[0.017631s].
[2021-11-22 10:02:31.399903] INFO: moduleinvoker: auto_labeler_on_datasource.v1 开始运行..
[2021-11-22 10:02:31.406531] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.408076] INFO: moduleinvoker: auto_labeler_on_datasource.v1 运行完成[0.008179s].
[2021-11-22 10:02:31.416454] INFO: moduleinvoker: join.v3 开始运行..
[2021-11-22 10:02:31.421990] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.423616] INFO: moduleinvoker: join.v3 运行完成[0.007166s].
[2021-11-22 10:02:31.431569] INFO: moduleinvoker: filter.v3 开始运行..
[2021-11-22 10:02:31.441720] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.443387] INFO: moduleinvoker: filter.v3 运行完成[0.011819s].
[2021-11-22 10:02:31.452115] INFO: moduleinvoker: dropnan.v1 开始运行..
[2021-11-22 10:02:31.461912] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.463536] INFO: moduleinvoker: dropnan.v1 运行完成[0.011484s].
[2021-11-22 10:02:31.472743] INFO: moduleinvoker: stock_ranker_train.v5 开始运行..
[2021-11-22 10:02:31.488716] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.567990] INFO: moduleinvoker: stock_ranker_train.v5 运行完成[0.095267s].
[2021-11-22 10:02:31.578532] INFO: moduleinvoker: stock_ranker_predict.v5 开始运行..
[2021-11-22 10:02:31.587221] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.589668] INFO: moduleinvoker: stock_ranker_predict.v5 运行完成[0.011134s].
[2021-11-22 10:02:31.605026] INFO: moduleinvoker: join.v3 开始运行..
[2021-11-22 10:02:31.616165] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.618720] INFO: moduleinvoker: join.v3 运行完成[0.013681s].
[2021-11-22 10:02:31.636986] INFO: moduleinvoker: join.v3 开始运行..
[2021-11-22 10:02:31.649034] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.651435] INFO: moduleinvoker: join.v3 运行完成[0.014477s].
[2021-11-22 10:02:31.658260] INFO: moduleinvoker: sort.v4 开始运行..
[2021-11-22 10:02:31.671871] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:31.673470] INFO: moduleinvoker: sort.v4 运行完成[0.015211s].
[2021-11-22 10:02:31.755891] INFO: moduleinvoker: backtest.v8 开始运行..
[2021-11-22 10:02:31.760717] INFO: backtest: biglearning backtest:V8.5.1
[2021-11-22 10:02:40.689047] INFO: backtest: product_type:stock by specified
[2021-11-22 10:02:40.780088] INFO: moduleinvoker: cached.v2 开始运行..
[2021-11-22 10:02:40.788556] INFO: moduleinvoker: 命中缓存
[2021-11-22 10:02:40.789988] INFO: moduleinvoker: cached.v2 运行完成[0.009905s].
[2021-11-22 10:02:41.300617] INFO: algo: TradingAlgorithm V1.8.5
[2021-11-22 10:02:42.586795] INFO: algo: trading transform...
[2021-11-22 10:03:07.325063] INFO: Performance: Simulated 928 trading days out of 928.
[2021-11-22 10:03:07.327030] INFO: Performance: first open: 2018-01-02 09:30:00+00:00
[2021-11-22 10:03:07.328299] INFO: Performance: last close: 2021-10-29 15:00:00+00:00
[2021-11-22 10:03:11.016949] INFO: moduleinvoker: backtest.v8 运行完成[39.261062s].
[2021-11-22 10:03:11.018445] INFO: moduleinvoker: trade.v4 运行完成[39.338951s].
bigcharts-data-start/{"__type":"tabs","__id":"bigchart-230b580bcaf24f10ba65a7be4820ea1c"}/bigcharts-data-end
2018-01-11 大盘风控止损触发,全仓卖出
2018-01-12 大盘风控止损触发,全仓卖出
2018-01-15 大盘风控止损触发,全仓卖出
2018-01-16 止损股票列表 ['002709.SZA', '600499.SHA', '300171.SZA']
2018-01-17 大盘风控止损触发,全仓卖出
2018-01-18 大盘风控止损触发,全仓卖出
2018-01-19 止损股票列表 ['002407.SZA', '000858.SZA']
2018-01-25 大盘风控止损触发,全仓卖出
2018-01-26 大盘风控止损触发,全仓卖出
2018-01-29 大盘风控止损触发,全仓卖出
2018-01-30 大盘风控止损触发,全仓卖出
2018-01-31 大盘风控止损触发,全仓卖出
2018-02-01 大盘风控止损触发,全仓卖出
2018-02-02 止损股票列表 ['000661.SZA', '300316.SZA']
2018-02-05 止损股票列表 ['601012.SHA']
2018-02-06 大盘风控止损触发,全仓卖出
2018-02-07 大盘风控止损触发,全仓卖出
2018-02-08 大盘风控止损触发,全仓卖出
2018-02-09 大盘风控止损触发,全仓卖出
2018-02-27 大盘风控止损触发,全仓卖出
2018-02-28 大盘风控止损触发,全仓卖出
2018-03-01 大盘风控止损触发,全仓卖出
2018-03-02 大盘风控止损触发,全仓卖出
2018-03-05 大盘风控止损触发,全仓卖出
2018-03-07 大盘风控止损触发,全仓卖出
2018-03-08 止损股票列表 ['002812.SZA']
2018-03-13 大盘风控止损触发,全仓卖出
2018-03-14 大盘风控止损触发,全仓卖出
2018-03-15 大盘风控止损触发,全仓卖出
2018-03-16 大盘风控止损触发,全仓卖出
2018-03-19 大盘风控止损触发,全仓卖出
2018-03-21 大盘风控止损触发,全仓卖出
2018-03-22 大盘风控止损触发,全仓卖出
2018-03-23 大盘风控止损触发,全仓卖出
2018-03-26 大盘风控止损触发,全仓卖出
2018-03-27 止损股票列表 ['600809.SHA', '000568.SZA']
2018-03-28 大盘风控止损触发,全仓卖出
2018-03-29 止损股票列表 ['300015.SZA']
2018-04-02 止损股票列表 ['300677.SZA']
2018-04-04 大盘风控止损触发,全仓卖出
2018-04-09 止损股票列表 ['002812.SZA', '300496.SZA', '600584.SHA']
2018-04-10 止损股票列表 ['300661.SZA']
2018-04-12 大盘风控止损触发,全仓卖出
2018-04-13 大盘风控止损触发,全仓卖出
2018-04-16 大盘风控止损触发,全仓卖出
2018-04-17 大盘风控止损触发,全仓卖出
2018-04-18 大盘风控止损触发,全仓卖出
2018-04-19 止损股票列表 ['600763.SHA']
2018-04-23 止损股票列表 ['600702.SHA', '300316.SZA', '300661.SZA']
2018-04-26 大盘风控止损触发,全仓卖出
2018-04-27 大盘风控止损触发,全仓卖出
2018-05-02 大盘风控止损触发,全仓卖出
2018-05-03 止损股票列表 ['300496.SZA']
2018-05-11 大盘风控止损触发,全仓卖出
2018-05-16 大盘风控止损触发,全仓卖出
2018-05-17 大盘风控止损触发,全仓卖出
2018-05-18 大盘风控止损触发,全仓卖出
2018-05-21 止损股票列表 ['002812.SZA']
2018-05-22 大盘风控止损触发,全仓卖出
2018-05-23 大盘风控止损触发,全仓卖出
2018-05-24 大盘风控止损触发,全仓卖出
2018-05-25 大盘风控止损触发,全仓卖出
2018-05-28 止损股票列表 ['601012.SHA', '300014.SZA', '600111.SHA', '002241.SZA']
2018-05-29 大盘风控止损触发,全仓卖出
2018-05-30 大盘风控止损触发,全仓卖出
2018-05-31 止损股票列表 ['300122.SZA']
2018-06-01 止损股票列表 ['603260.SHA', '300122.SZA', '603127.SHA', '300347.SZA']
2018-06-04 止损股票列表 ['002714.SZA', '600132.SHA']
2018-06-07 大盘风控止损触发,全仓卖出
2018-06-08 大盘风控止损触发,全仓卖出
2018-06-11 大盘风控止损触发,全仓卖出
2018-06-13 大盘风控止损触发,全仓卖出
2018-06-14 大盘风控止损触发,全仓卖出
2018-06-15 大盘风控止损触发,全仓卖出
2018-06-19 大盘风控止损触发,全仓卖出
2018-06-20 大盘风控止损触发,全仓卖出
2018-06-21 大盘风控止损触发,全仓卖出
2018-06-22 止损股票列表 ['600702.SHA']
2018-06-26 大盘风控止损触发,全仓卖出
2018-06-27 大盘风控止损触发,全仓卖出
2018-06-28 大盘风控止损触发,全仓卖出
2018-06-29 止损股票列表 ['300347.SZA']
2018-07-02 大盘风控止损触发,全仓卖出
2018-07-04 大盘风控止损触发,全仓卖出
2018-07-05 大盘风控止损触发,全仓卖出
2018-07-06 止损股票列表 ['000661.SZA', '300012.SZA', '300595.SZA', '603127.SHA', '300316.SZA']
2018-07-11 大盘风控止损触发,全仓卖出
2018-07-13 止损股票列表 ['300454.SZA']
2018-07-16 大盘风控止损触发,全仓卖出
2018-07-17 大盘风控止损触发,全仓卖出
2018-07-18 大盘风控止损触发,全仓卖出
2018-07-19 大盘风控止损触发,全仓卖出
2018-07-20 止损股票列表 ['603259.SHA', '300347.SZA']
2018-07-25 止损股票列表 ['300750.SZA']
2018-07-26 大盘风控止损触发,全仓卖出
2018-07-27 大盘风控止损触发,全仓卖出
2018-07-30 大盘风控止损触发,全仓卖出
2018-07-31 大盘风控止损触发,全仓卖出
缺失风控数据!
2018-08-01 止损股票列表 ['300496.SZA']
缺失风控数据!
2018-08-02 止损股票列表 ['600132.SHA', '600111.SHA']
缺失风控数据!
2018-08-03 止损股票列表 ['600584.SHA', '600438.SHA']
缺失风控数据!
2018-08-06 止损股票列表 ['601012.SHA']
缺失风控数据!
2018-08-14 大盘风控止损触发,全仓卖出
2018-08-15 大盘风控止损触发,全仓卖出
缺失风控数据!
缺失风控数据!
缺失风控数据!
2018-08-29 大盘风控止损触发,全仓卖出
2018-08-30 大盘风控止损触发,全仓卖出
2018-08-31 大盘风控止损触发,全仓卖出
2018-09-03 大盘风控止损触发,全仓卖出
2018-09-05 大盘风控止损触发,全仓卖出
2018-09-06 大盘风控止损触发,全仓卖出
2018-09-07 大盘风控止损触发,全仓卖出
2018-09-10 大盘风控止损触发,全仓卖出
2018-09-11 大盘风控止损触发,全仓卖出
2018-09-12 大盘风控止损触发,全仓卖出
2018-09-14 止损股票列表 ['002607.SZA']
2018-09-17 大盘风控止损触发,全仓卖出
2018-09-27 大盘风控止损触发,全仓卖出
2018-09-28 大盘风控止损触发,全仓卖出
2018-10-08 大盘风控止损触发,全仓卖出
2018-10-09 大盘风控止损触发,全仓卖出
缺失风控数据!
2018-10-10 止损股票列表 ['300750.SZA', '600110.SHA', '300347.SZA', '600809.SHA']
缺失风控数据!
2018-10-11 止损股票列表 ['600132.SHA', '600110.SHA', '300347.SZA', '002607.SZA']
缺失风控数据!
缺失风控数据!
缺失风控数据!
缺失风控数据!
缺失风控数据!
2018-10-18 止损股票列表 ['600111.SHA']
2018-10-24 大盘风控止损触发,全仓卖出
2018-10-25 大盘风控止损触发,全仓卖出
2018-10-26 大盘风控止损触发,全仓卖出
缺失风控数据!
2018-10-29 止损股票列表 ['002475.SZA']
缺失风控数据!
2018-11-06 大盘风控止损触发,全仓卖出
2018-11-07 大盘风控止损触发,全仓卖出
2018-11-08 大盘风控止损触发,全仓卖出
2018-11-09 大盘风控止损触发,全仓卖出
2018-11-12 大盘风控止损触发,全仓卖出
2018-11-14 大盘风控止损触发,全仓卖出
2018-11-20 大盘风控止损触发,全仓卖出
2018-11-21 大盘风控止损触发,全仓卖出
2018-11-22 大盘风控止损触发,全仓卖出
2018-11-23 大盘风控止损触发,全仓卖出
缺失风控数据!
2018-11-26 止损股票列表 ['002176.SZA', '300750.SZA']
2018-11-27 大盘风控止损触发,全仓卖出
2018-11-29 止损股票列表 ['300595.SZA']
2018-12-05 大盘风控止损触发,全仓卖出
2018-12-06 大盘风控止损触发,全仓卖出
2018-12-07 大盘风控止损触发,全仓卖出
2018-12-10 大盘风控止损触发,全仓卖出
2018-12-11 大盘风控止损触发,全仓卖出
2018-12-12 止损股票列表 ['000661.SZA']
2018-12-14 大盘风控止损触发,全仓卖出
2018-12-17 大盘风控止损触发,全仓卖出
2018-12-18 大盘风控止损触发,全仓卖出
缺失风控数据!
2018-12-19 止损股票列表 ['002407.SZA', '300454.SZA']
缺失风控数据!
2018-12-20 止损股票列表 ['002176.SZA', '601888.SHA']
缺失风控数据!
缺失风控数据!
缺失风控数据!
2019-01-02 大盘风控止损触发,全仓卖出
2019-01-03 止损股票列表 ['300012.SZA']
2019-01-14 大盘风控止损触发,全仓卖出
2019-01-17 大盘风控止损触发,全仓卖出
2019-01-22 大盘风控止损触发,全仓卖出
2019-01-23 大盘风控止损触发,全仓卖出
2019-01-24 大盘风控止损触发,全仓卖出
2019-01-28 止损股票列表 ['600110.SHA']
2019-01-29 止损股票列表 ['002245.SZA', '300151.SZA', '002460.SZA', '300171.SZA']
2019-01-30 大盘风控止损触发,全仓卖出
2019-01-31 止损股票列表 ['002812.SZA']
2019-02-15 大盘风控止损触发,全仓卖出
2019-02-19 大盘风控止损触发,全仓卖出
2019-02-20 大盘风控止损触发,全仓卖出
2019-02-21 大盘风控止损触发,全仓卖出
2019-02-27 大盘风控止损触发,全仓卖出
2019-02-28 大盘风控止损触发,全仓卖出
2019-03-01 大盘风控止损触发,全仓卖出
2019-03-04 止损股票列表 ['600438.SHA']
2019-03-05 大盘风控止损触发,全仓卖出
2019-03-06 大盘风控止损触发,全仓卖出
2019-03-07 大盘风控止损触发,全仓卖出
2019-03-08 大盘风控止损触发,全仓卖出
2019-03-11 大盘风控止损触发,全仓卖出
2019-03-13 大盘风控止损触发,全仓卖出
2019-03-14 大盘风控止损触发,全仓卖出
2019-03-15 止损股票列表 ['600499.SHA', '002245.SZA', '600584.SHA']
2019-03-21 大盘风控止损触发,全仓卖出
2019-03-22 大盘风控止损触发,全仓卖出
2019-03-25 大盘风控止损触发,全仓卖出
2019-03-26 大盘风控止损触发,全仓卖出
2019-03-27 大盘风控止损触发,全仓卖出
2019-03-28 止损股票列表 ['002407.SZA', '002176.SZA']
2019-04-08 大盘风控止损触发,全仓卖出
2019-04-09 大盘风控止损触发,全仓卖出
2019-04-10 大盘风控止损触发,全仓卖出
2019-04-11 大盘风控止损触发,全仓卖出
2019-04-12 大盘风控止损触发,全仓卖出
2019-04-15 大盘风控止损触发,全仓卖出
2019-04-16 止损股票列表 ['300595.SZA']
2019-04-19 止损股票列表 ['002714.SZA']
2019-04-22 大盘风控止损触发,全仓卖出
2019-04-23 大盘风控止损触发,全仓卖出
2019-04-24 大盘风控止损触发,全仓卖出
2019-04-25 大盘风控止损触发,全仓卖出
2019-04-26 大盘风控止损触发,全仓卖出
2019-04-29 大盘风控止损触发,全仓卖出
2019-05-06 大盘风控止损触发,全仓卖出
2019-05-07 大盘风控止损触发,全仓卖出
2019-05-08 大盘风控止损触发,全仓卖出
2019-05-09 大盘风控止损触发,全仓卖出
2019-05-10 止损股票列表 ['603737.SHA']
2019-05-17 大盘风控止损触发,全仓卖出
2019-05-20 大盘风控止损触发,全仓卖出
2019-05-21 止损股票列表 ['300014.SZA']
2019-05-22 止损股票列表 ['000858.SZA', '002607.SZA']
2019-05-23 大盘风控止损触发,全仓卖出
2019-05-24 大盘风控止损触发,全仓卖出
2019-05-28 止损股票列表 ['300496.SZA']
2019-05-30 大盘风控止损触发,全仓卖出
2019-05-31 大盘风控止损触发,全仓卖出
2019-06-03 大盘风控止损触发,全仓卖出
2019-06-04 大盘风控止损触发,全仓卖出
2019-06-05 大盘风控止损触发,全仓卖出
2019-06-06 大盘风控止损触发,全仓卖出
2019-06-13 大盘风控止损触发,全仓卖出
2019-06-14 大盘风控止损触发,全仓卖出
2019-06-17 大盘风控止损触发,全仓卖出
2019-06-18 大盘风控止损触发,全仓卖出
2019-06-21 止损股票列表 ['002714.SZA']
2019-06-25 大盘风控止损触发,全仓卖出
2019-06-26 大盘风控止损触发,全仓卖出
2019-06-27 大盘风控止损触发,全仓卖出
2019-06-28 大盘风控止损触发,全仓卖出
2019-07-03 大盘风控止损触发,全仓卖出
2019-07-04 大盘风控止损触发,全仓卖出
2019-07-05 大盘风控止损触发,全仓卖出
2019-07-08 大盘风控止损触发,全仓卖出
2019-07-09 大盘风控止损触发,全仓卖出
2019-07-10 大盘风控止损触发,全仓卖出
2019-07-11 止损股票列表 ['603605.SHA']
2019-07-12 止损股票列表 ['300769.SZA']
2019-07-18 大盘风控止损触发,全仓卖出
2019-07-22 大盘风控止损触发,全仓卖出
2019-07-23 止损股票列表 ['000568.SZA']
2019-07-29 大盘风控止损触发,全仓卖出
2019-07-31 大盘风控止损触发,全仓卖出
2019-08-01 大盘风控止损触发,全仓卖出
2019-08-02 大盘风控止损触发,全仓卖出
2019-08-05 大盘风控止损触发,全仓卖出
2019-08-06 大盘风控止损触发,全仓卖出
2019-08-07 大盘风控止损触发,全仓卖出
2019-08-08 止损股票列表 ['300454.SZA', '601100.SHA']
2019-08-12 止损股票列表 ['300748.SZA']
2019-08-14 止损股票列表 ['600111.SHA']
2019-08-21 大盘风控止损触发,全仓卖出
2019-08-22 大盘风控止损触发,全仓卖出
2019-08-26 大盘风控止损触发,全仓卖出
2019-08-27 大盘风控止损触发,全仓卖出
2019-08-28 大盘风控止损触发,全仓卖出
2019-08-29 大盘风控止损触发,全仓卖出
2019-08-30 大盘风控止损触发,全仓卖出
2019-09-03 止损股票列表 ['300750.SZA']
2019-09-09 止损股票列表 ['002714.SZA']
2019-09-10 大盘风控止损触发,全仓卖出
2019-09-11 大盘风控止损触发,全仓卖出
2019-09-12 大盘风控止损触发,全仓卖出
2019-09-16 大盘风控止损触发,全仓卖出
2019-09-17 大盘风控止损触发,全仓卖出
2019-09-18 大盘风控止损触发,全仓卖出
2019-09-19 止损股票列表 ['300014.SZA']
2019-09-23 大盘风控止损触发,全仓卖出
2019-09-24 大盘风控止损触发,全仓卖出
2019-09-25 大盘风控止损触发,全仓卖出
2019-09-26 大盘风控止损触发,全仓卖出
2019-09-27 止损股票列表 ['300363.SZA', '600132.SHA']
2019-09-30 大盘风控止损触发,全仓卖出
2019-10-09 止损股票列表 ['300760.SZA', '002475.SZA']
2019-10-11 止损股票列表 ['603737.SHA']
2019-10-14 固定天数卖出列表 ['002568.SZA']
2019-10-15 固定天数卖出列表 ['600702.SHA', '000661.SZA']
2019-10-16 大盘风控止损触发,全仓卖出
2019-10-17 大盘风控止损触发,全仓卖出
2019-10-18 大盘风控止损触发,全仓卖出
2019-10-21 大盘风控止损触发,全仓卖出
2019-10-22 止损股票列表 ['300363.SZA', '300382.SZA']
2019-10-23 大盘风控止损触发,全仓卖出
2019-10-24 大盘风控止损触发,全仓卖出
2019-10-29 止损股票列表 ['300012.SZA']
2019-10-30 大盘风控止损触发,全仓卖出
2019-10-31 大盘风控止损触发,全仓卖出
2019-11-06 大盘风控止损触发,全仓卖出
2019-11-07 大盘风控止损触发,全仓卖出
2019-11-08 大盘风控止损触发,全仓卖出
2019-11-11 大盘风控止损触发,全仓卖出
2019-11-12 大盘风控止损触发,全仓卖出
2019-11-13 大盘风控止损触发,全仓卖出
2019-11-15 大盘风控止损触发,全仓卖出
2019-11-20 止损股票列表 ['600862.SHA']
2019-11-21 大盘风控止损触发,全仓卖出
2019-11-22 大盘风控止损触发,全仓卖出
2019-11-25 止损股票列表 ['300661.SZA', '603501.SHA', '002241.SZA', '603259.SHA', '300552.SZA', '300598.SZA']
2019-11-28 大盘风控止损触发,全仓卖出
2019-11-29 大盘风控止损触发,全仓卖出
2019-12-02 大盘风控止损触发,全仓卖出
2019-12-11 大盘风控止损触发,全仓卖出
2019-12-12 大盘风控止损触发,全仓卖出
2019-12-17 止损股票列表 ['300223.SZA']
2019-12-19 大盘风控止损触发,全仓卖出
2019-12-20 大盘风控止损触发,全仓卖出
2019-12-23 大盘风控止损触发,全仓卖出
2019-12-24 大盘风控止损触发,全仓卖出
2019-12-25 大盘风控止损触发,全仓卖出
2019-12-26 止损股票列表 ['300274.SZA', '603127.SHA']
2019-12-30 止损股票列表 ['603501.SHA']
2020-01-02 固定天数卖出列表 ['600110.SHA']
2020-01-03 止损股票列表 ['603259.SHA']
2020-01-06 大盘风控止损触发,全仓卖出
2020-01-07 大盘风控止损触发,全仓卖出
2020-01-08 大盘风控止损触发,全仓卖出
2020-01-10 大盘风控止损触发,全仓卖出
2020-01-14 大盘风控止损触发,全仓卖出
2020-01-15 大盘风控止损触发,全仓卖出
2020-01-16 大盘风控止损触发,全仓卖出
2020-01-17 大盘风控止损触发,全仓卖出
2020-01-21 大盘风控止损触发,全仓卖出
2020-01-22 大盘风控止损触发,全仓卖出
2020-01-23 大盘风控止损触发,全仓卖出
2020-02-03 大盘风控止损触发,全仓卖出
2020-02-04 大盘风控止损触发,全仓卖出
2020-02-05 止损股票列表 ['002407.SZA', '000799.SZA', '603638.SHA']
2020-02-05 固定天数卖出列表 ['300171.SZA']
2020-02-10 止损股票列表 ['300171.SZA']
2020-02-13 大盘风控止损触发,全仓卖出
2020-02-14 止损股票列表 ['300750.SZA', '300363.SZA', '300769.SZA']
2020-02-19 大盘风控止损触发,全仓卖出
2020-02-24 大盘风控止损触发,全仓卖出
2020-02-25 大盘风控止损触发,全仓卖出
2020-02-26 大盘风控止损触发,全仓卖出
2020-02-27 大盘风控止损触发,全仓卖出
2020-02-28 大盘风控止损触发,全仓卖出
2020-03-02 止损股票列表 ['300223.SZA', '002241.SZA', '600111.SHA']
2020-03-05 止损股票列表 ['300454.SZA']
2020-03-06 大盘风控止损触发,全仓卖出
2020-03-09 大盘风控止损触发,全仓卖出
2020-03-10 大盘风控止损触发,全仓卖出
2020-03-11 大盘风控止损触发,全仓卖出
2020-03-12 大盘风控止损触发,全仓卖出
2020-03-13 大盘风控止损触发,全仓卖出
2020-03-17 大盘风控止损触发,全仓卖出
2020-03-18 大盘风控止损触发,全仓卖出
2020-03-19 大盘风控止损触发,全仓卖出
2020-03-23 止损股票列表 ['300346.SZA', '300316.SZA']
2020-03-30 大盘风控止损触发,全仓卖出
2020-03-31 大盘风控止损触发,全仓卖出
2020-04-01 大盘风控止损触发,全仓卖出
2020-04-08 止损股票列表 ['300661.SZA']
2020-04-09 大盘风控止损触发,全仓卖出
2020-04-10 大盘风控止损触发,全仓卖出
2020-04-13 大盘风控止损触发,全仓卖出
2020-04-14 止损股票列表 ['300782.SZA']
2020-04-15 大盘风控止损触发,全仓卖出
2020-04-16 大盘风控止损触发,全仓卖出
2020-04-21 大盘风控止损触发,全仓卖出
2020-04-22 大盘风控止损触发,全仓卖出
2020-04-23 大盘风控止损触发,全仓卖出
2020-04-24 大盘风控止损触发,全仓卖出
2020-04-27 大盘风控止损触发,全仓卖出
2020-05-07 大盘风控止损触发,全仓卖出
2020-05-11 大盘风控止损触发,全仓卖出
2020-05-12 大盘风控止损触发,全仓卖出
2020-05-13 大盘风控止损触发,全仓卖出
2020-05-14 大盘风控止损触发,全仓卖出
2020-05-15 大盘风控止损触发,全仓卖出
2020-05-18 大盘风控止损触发,全仓卖出
2020-05-21 大盘风控止损触发,全仓卖出
2020-05-22 大盘风控止损触发,全仓卖出
2020-05-25 大盘风控止损触发,全仓卖出
2020-05-27 止损股票列表 ['603259.SHA']
2020-05-28 止损股票列表 ['300769.SZA', '300171.SZA']
2020-06-02 止损股票列表 ['603027.SHA', '603317.SHA', '002568.SZA']
2020-06-02 固定天数卖出列表 ['300763.SZA']
2020-06-04 大盘风控止损触发,全仓卖出
2020-06-05 大盘风控止损触发,全仓卖出
2020-06-08 大盘风控止损触发,全仓卖出
2020-06-09 止损股票列表 ['603345.SHA']
2020-06-10 大盘风控止损触发,全仓卖出
2020-06-11 大盘风控止损触发,全仓卖出
2020-06-12 大盘风控止损触发,全仓卖出
2020-06-15 大盘风控止损触发,全仓卖出
2020-06-17 止损股票列表 ['600499.SHA']
2020-06-18 止损股票列表 ['300677.SZA']
2020-06-22 止损股票列表 ['300767.SZA', '603208.SHA']
2020-06-24 止损股票列表 ['300382.SZA']
2020-06-29 大盘风控止损触发,全仓卖出
2020-07-01 止损股票列表 ['300122.SZA']
2020-07-09 大盘风控止损触发,全仓卖出
2020-07-10 大盘风控止损触发,全仓卖出
2020-07-13 大盘风控止损触发,全仓卖出
2020-07-14 大盘风控止损触发,全仓卖出
2020-07-15 大盘风控止损触发,全仓卖出
2020-07-16 大盘风控止损触发,全仓卖出
2020-07-17 大盘风控止损触发,全仓卖出
2020-07-20 止损股票列表 ['000799.SZA', '300346.SZA']
2020-07-24 大盘风控止损触发,全仓卖出
2020-07-27 大盘风控止损触发,全仓卖出
2020-07-28 止损股票列表 ['300750.SZA']
2020-07-29 固定天数卖出列表 ['300274.SZA']
2020-08-04 止损股票列表 ['300171.SZA', '002241.SZA']
2020-08-05 大盘风控止损触发,全仓卖出
2020-08-06 大盘风控止损触发,全仓卖出
2020-08-07 大盘风控止损触发,全仓卖出
2020-08-10 大盘风控止损触发,全仓卖出
2020-08-11 大盘风控止损触发,全仓卖出
2020-08-12 大盘风控止损触发,全仓卖出
2020-08-13 大盘风控止损触发,全仓卖出
2020-08-19 大盘风控止损触发,全仓卖出
2020-08-20 大盘风控止损触发,全仓卖出
2020-08-21 大盘风控止损触发,全仓卖出
2020-08-24 止损股票列表 ['600316.SHA', '002541.SZA']
2020-08-25 止损股票列表 ['600316.SHA']
2020-08-26 大盘风控止损触发,全仓卖出
2020-08-27 大盘风控止损触发,全仓卖出
2020-08-31 止损股票列表 ['002850.SZA']
2020-09-02 大盘风控止损触发,全仓卖出
2020-09-03 大盘风控止损触发,全仓卖出
2020-09-04 大盘风控止损触发,全仓卖出
2020-09-07 大盘风控止损触发,全仓卖出
2020-09-08 大盘风控止损触发,全仓卖出
2020-09-09 大盘风控止损触发,全仓卖出
2020-09-10 大盘风控止损触发,全仓卖出
2020-09-11 止损股票列表 ['603259.SHA', '300759.SZA', '603456.SHA', '300363.SZA', '300767.SZA', '600702.SHA']
2020-09-17 大盘风控止损触发,全仓卖出
2020-09-18 止损股票列表 ['600809.SHA']
2020-09-22 大盘风控止损触发,全仓卖出
2020-09-23 大盘风控止损触发,全仓卖出
2020-09-24 大盘风控止损触发,全仓卖出
2020-09-25 大盘风控止损触发,全仓卖出
2020-09-28 止损股票列表 ['300382.SZA', '300769.SZA']
2020-09-29 止损股票列表 ['000799.SZA']
2020-10-14 大盘风控止损触发,全仓卖出
2020-10-15 大盘风控止损触发,全仓卖出
2020-10-16 大盘风控止损触发,全仓卖出
2020-10-19 大盘风控止损触发,全仓卖出
2020-10-20 大盘风控止损触发,全仓卖出
2020-10-21 大盘风控止损触发,全仓卖出
2020-10-22 大盘风控止损触发,全仓卖出
2020-10-23 大盘风控止损触发,全仓卖出
2020-10-26 大盘风控止损触发,全仓卖出
2020-10-27 大盘风控止损触发,全仓卖出
2020-10-30 大盘风控止损触发,全仓卖出
2020-11-02 大盘风控止损触发,全仓卖出
2020-11-06 止损股票列表 ['688198.SHA', '300274.SZA']
2020-11-10 大盘风控止损触发,全仓卖出
2020-11-11 大盘风控止损触发,全仓卖出
2020-11-12 大盘风控止损触发,全仓卖出
2020-11-13 大盘风控止损触发,全仓卖出
2020-11-16 大盘风控止损触发,全仓卖出
2020-11-17 大盘风控止损触发,全仓卖出
2020-11-18 大盘风控止损触发,全仓卖出
2020-11-19 止损股票列表 ['601633.SHA']
2020-11-23 止损股票列表 ['300841.SZA']
2020-11-24 大盘风控止损触发,全仓卖出
2020-11-25 大盘风控止损触发,全仓卖出
2020-11-26 大盘风控止损触发,全仓卖出
2020-11-27 止损股票列表 ['002920.SZA', '002985.SZA', '300274.SZA']
2020-12-02 止损股票列表 ['300014.SZA']
2020-12-03 大盘风控止损触发,全仓卖出
2020-12-04 大盘风控止损触发,全仓卖出
2020-12-07 大盘风控止损触发,全仓卖出
2020-12-08 大盘风控止损触发,全仓卖出
2020-12-09 大盘风控止损触发,全仓卖出
2020-12-10 大盘风控止损触发,全仓卖出
2020-12-11 大盘风控止损触发,全仓卖出
2020-12-14 止损股票列表 ['300684.SZA']
2020-12-18 止损股票列表 ['002985.SZA']
2020-12-22 大盘风控止损触发,全仓卖出
2020-12-23 大盘风控止损触发,全仓卖出
2020-12-24 大盘风控止损触发,全仓卖出
2020-12-25 止损股票列表 ['688198.SHA', '300363.SZA']
2020-12-29 大盘风控止损触发,全仓卖出
2020-12-30 止损股票列表 ['603185.SHA', '002245.SZA']
2021-01-06 止损股票列表 ['300598.SZA', '300363.SZA']
2021-01-07 止损股票列表 ['603208.SHA']
2021-01-08 大盘风控止损触发,全仓卖出
2021-01-11 大盘风控止损触发,全仓卖出
2021-01-12 止损股票列表 ['603713.SHA']
2021-01-13 大盘风控止损触发,全仓卖出
2021-01-14 大盘风控止损触发,全仓卖出
2021-01-15 大盘风控止损触发,全仓卖出
2021-01-18 大盘风控止损触发,全仓卖出
2021-01-19 大盘风控止损触发,全仓卖出
2021-01-20 大盘风控止损触发,全仓卖出
2021-01-21 止损股票列表 ['300696.SZA', '601100.SHA']
2021-01-25 止损股票列表 ['300671.SZA', '300014.SZA']
2021-01-26 大盘风控止损触发,全仓卖出
2021-01-27 大盘风控止损触发,全仓卖出
2021-01-28 大盘风控止损触发,全仓卖出
2021-01-29 大盘风控止损触发,全仓卖出
2021-02-01 止损股票列表 ['002920.SZA', '002705.SZA', '300724.SZA']
2021-02-03 止损股票列表 ['000733.SZA']
2021-02-04 止损股票列表 ['002541.SZA']
2021-02-05 止损股票列表 ['688116.SHA']
2021-02-10 止损股票列表 ['603208.SHA']
2021-02-18 止损股票列表 ['002607.SZA', '603605.SHA', '000568.SZA']
2021-02-18 固定天数卖出列表 ['688198.SHA']
2021-02-19 大盘风控止损触发,全仓卖出
2021-02-22 大盘风控止损触发,全仓卖出
2021-02-23 大盘风控止损触发,全仓卖出
2021-02-24 大盘风控止损触发,全仓卖出
2021-02-25 大盘风控止损触发,全仓卖出
2021-02-26 大盘风控止损触发,全仓卖出
2021-03-01 止损股票列表 ['000596.SZA', '601888.SHA', '601100.SHA', '300760.SZA', '300363.SZA', '002791.SZA']
2021-03-04 大盘风控止损触发,全仓卖出
2021-03-05 大盘风控止损触发,全仓卖出
2021-03-08 大盘风控止损触发,全仓卖出
2021-03-09 大盘风控止损触发,全仓卖出
2021-03-10 止损股票列表 ['300568.SZA', '300223.SZA', '300390.SZA', '603737.SHA', '600111.SHA']
2021-03-12 止损股票列表 ['300552.SZA']
2021-03-15 止损股票列表 ['300677.SZA']
2021-03-16 止损股票列表 ['600884.SHA', '603129.SHA']
2021-03-19 大盘风控止损触发,全仓卖出
2021-03-22 大盘风控止损触发,全仓卖出
2021-03-23 大盘风控止损触发,全仓卖出
2021-03-24 大盘风控止损触发,全仓卖出
2021-03-25 大盘风控止损触发,全仓卖出
2021-03-26 止损股票列表 ['002709.SZA']
2021-03-31 大盘风控止损触发,全仓卖出
2021-04-06 大盘风控止损触发,全仓卖出
2021-04-07 大盘风控止损触发,全仓卖出
2021-04-08 大盘风控止损触发,全仓卖出
2021-04-09 大盘风控止损触发,全仓卖出
2021-04-12 大盘风控止损触发,全仓卖出
2021-04-13 大盘风控止损触发,全仓卖出
2021-04-16 止损股票列表 ['603027.SHA', '002985.SZA', '600882.SHA', '603267.SHA']
2021-04-22 大盘风控止损触发,全仓卖出
2021-04-26 大盘风控止损触发,全仓卖出
2021-04-27 大盘风控止损触发,全仓卖出
2021-04-28 止损股票列表 ['603456.SHA']
2021-04-29 止损股票列表 ['002975.SZA', '601100.SHA']
2021-04-30 大盘风控止损触发,全仓卖出
2021-05-06 大盘风控止损触发,全仓卖出
2021-05-07 大盘风控止损触发,全仓卖出
2021-05-10 大盘风控止损触发,全仓卖出
2021-05-11 止损股票列表 ['000596.SZA', '603208.SHA', '002607.SZA']
2021-05-12 止损股票列表 ['603290.SHA']
2021-05-13 大盘风控止损触发,全仓卖出
2021-05-18 止损股票列表 ['002985.SZA']
2021-05-19 大盘风控止损触发,全仓卖出
2021-05-20 大盘风控止损触发,全仓卖出
2021-05-21 大盘风控止损触发,全仓卖出
2021-05-24 大盘风控止损触发,全仓卖出
2021-05-28 大盘风控止损触发,全仓卖出
2021-05-31 大盘风控止损触发,全仓卖出
2021-06-01 大盘风控止损触发,全仓卖出
2021-06-02 大盘风控止损触发,全仓卖出
2021-06-03 大盘风控止损触发,全仓卖出
2021-06-04 大盘风控止损触发,全仓卖出
2021-06-07 大盘风控止损触发,全仓卖出
2021-06-08 大盘风控止损触发,全仓卖出
2021-06-09 大盘风控止损触发,全仓卖出
2021-06-11 大盘风控止损触发,全仓卖出
2021-06-15 大盘风控止损触发,全仓卖出
2021-06-16 大盘风控止损触发,全仓卖出
2021-06-17 大盘风控止损触发,全仓卖出
2021-06-18 止损股票列表 ['002607.SZA']
2021-06-21 止损股票列表 ['000596.SZA']
2021-06-23 止损股票列表 ['600809.SHA', '300363.SZA']
2021-06-24 止损股票列表 ['603260.SHA', '300850.SZA', '300696.SZA', '688202.SHA', '603267.SHA']
2021-06-25 止损股票列表 ['600610.SHA']
2021-06-29 大盘风控止损触发,全仓卖出
2021-06-30 大盘风控止损触发,全仓卖出
2021-07-01 大盘风控止损触发,全仓卖出
2021-07-02 大盘风控止损触发,全仓卖出
2021-07-05 大盘风控止损触发,全仓卖出
2021-07-06 大盘风控止损触发,全仓卖出
2021-07-09 大盘风控止损触发,全仓卖出
2021-07-12 止损股票列表 ['002541.SZA']
2021-07-13 止损股票列表 ['300526.SZA']
2021-07-14 大盘风控止损触发,全仓卖出
2021-07-15 止损股票列表 ['002920.SZA']
2021-07-16 大盘风控止损触发,全仓卖出
2021-07-19 大盘风控止损触发,全仓卖出
2021-07-20 大盘风控止损触发,全仓卖出
2021-07-22 止损股票列表 ['603129.SHA']
2021-07-23 大盘风控止损触发,全仓卖出
2021-07-26 大盘风控止损触发,全仓卖出
2021-07-27 大盘风控止损触发,全仓卖出
2021-07-28 大盘风控止损触发,全仓卖出
2021-07-29 止损股票列表 ['688198.SHA', '002326.SZA']
2021-08-02 止损股票列表 ['300432.SZA']
2021-08-03 止损股票列表 ['300763.SZA', '300382.SZA', '300274.SZA', '603806.SHA']
2021-08-05 止损股票列表 ['300343.SZA']
2021-08-06 大盘风控止损触发,全仓卖出
2021-08-09 止损股票列表 ['300316.SZA', '603259.SHA', '300767.SZA']
2021-08-10 止损股票列表 ['688202.SHA']
2021-08-11 大盘风控止损触发,全仓卖出
2021-08-12 大盘风控止损触发,全仓卖出
2021-08-13 大盘风控止损触发,全仓卖出
2021-08-16 大盘风控止损触发,全仓卖出
2021-08-17 大盘风控止损触发,全仓卖出
2021-08-18 止损股票列表 ['603806.SHA', '002850.SZA', '002414.SZA']
2021-08-20 大盘风控止损触发,全仓卖出
2021-08-24 止损股票列表 ['603208.SHA']
2021-08-26 大盘风控止损触发,全仓卖出
2021-08-27 大盘风控止损触发,全仓卖出
2021-08-30 大盘风控止损触发,全仓卖出
2021-08-31 大盘风控止损触发,全仓卖出
2021-09-01 止损股票列表 ['603638.SHA']
2021-09-02 止损股票列表 ['300454.SZA', '300171.SZA']
2021-09-03 大盘风控止损触发,全仓卖出
2021-09-06 止损股票列表 ['600399.SHA', '000762.SZA', '300390.SZA', '002176.SZA']
2021-09-08 止损股票列表 ['300432.SZA', '300850.SZA']
2021-09-09 大盘风控止损触发,全仓卖出
2021-09-10 止损股票列表 ['603985.SHA', '300443.SZA']
2021-09-13 大盘风控止损触发,全仓卖出
2021-09-14 大盘风控止损触发,全仓卖出
2021-09-15 大盘风控止损触发,全仓卖出
2021-09-16 大盘风控止损触发,全仓卖出
2021-09-17 止损股票列表 ['000596.SZA', '300346.SZA']
2021-09-23 止损股票列表 ['688116.SHA', '300432.SZA', '002709.SZA']
2021-09-27 止损股票列表 ['300382.SZA', '300035.SZA', '300598.SZA']
2021-09-29 大盘风控止损触发,全仓卖出
2021-10-08 止损股票列表 ['603985.SHA']
2021-10-08 固定天数卖出列表 ['688202.SHA']
2021-10-11 止损股票列表 ['603259.SHA', '300759.SZA', '600882.SHA', '603345.SHA', '002568.SZA']
2021-10-12 大盘风控止损触发,全仓卖出
2021-10-14 大盘风控止损触发,全仓卖出
2021-10-15 大盘风控止损触发,全仓卖出
2021-10-18 大盘风控止损触发,全仓卖出
2021-10-19 止损股票列表 ['300767.SZA', '600132.SHA', '300841.SZA']
2021-10-20 大盘风控止损触发,全仓卖出
2021-10-22 止损股票列表 ['300693.SZA', '002706.SZA']
2021-10-26 大盘风控止损触发,全仓卖出
2021-10-27 大盘风控止损触发,全仓卖出
2021-10-28 大盘风控止损触发,全仓卖出
2021-10-29 止损股票列表 ['300724.SZA', '002791.SZA']
- 收益率307.6%
- 年化收益率46.46%
- 基准收益率21.78%
- 阿尔法0.42
- 贝塔0.52
- 夏普比率1.85
- 胜率0.55
- 盈亏比1.36
- 收益波动率20.15%
- 信息比率0.1
- 最大回撤20.42%
bigcharts-data-start/{"__type":"tabs","__id":"bigchart-6966cd4f165a464e9d91db73d48ea2cb"}/bigcharts-data-end