复制链接
克隆策略
In [13]:
m8.predictions.read()
Out[13]:
pred_label date instrument
0 8.383444 2021-01-04 000001.SZA
1 8.383444 2021-01-05 000001.SZA
2 8.383444 2021-01-06 000001.SZA
3 8.383444 2021-01-07 000001.SZA
4 8.383444 2021-01-08 000001.SZA
... ... ... ...
1061522 8.341400 2021-12-27 872925.BJA
1061523 8.331825 2021-12-28 872925.BJA
1061524 8.336874 2021-12-29 872925.BJA
1061525 8.345505 2021-12-30 872925.BJA
1061526 8.345505 2021-12-31 872925.BJA

1049627 rows × 3 columns

In [14]:
 
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-14-842b748d543d> in <module>
----> 1 m8.predict_ds.read()

AttributeError: 'Outputs' object has no attribute 'predict_ds'

    {"description":"实验创建于2017/8/26","graph":{"edges":[{"to_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-15:instruments","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8:data"},{"to_node_id":"-215:instruments","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8:data"},{"to_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-53:data1","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-15:data"},{"to_node_id":"-215:features","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-24:data"},{"to_node_id":"-222:features","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-24:data"},{"to_node_id":"-231:features","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-24:data"},{"to_node_id":"-238:features","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-24:data"},{"to_node_id":"-669:features","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-24:data"},{"to_node_id":"-423:input_data","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-53:data"},{"to_node_id":"-231:instruments","from_node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-62: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":"-427:input_data","from_node_id":"-238:data"},{"to_node_id":"-669:training_ds","from_node_id":"-423:data"},{"to_node_id":"-669:predict_ds","from_node_id":"-427:data"},{"to_node_id":"-110:predictions","from_node_id":"-669:predictions"}],"nodes":[{"node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-8","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2011-01-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2020-12-31","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":"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-15","module_id":"BigQuantSpace.advanced_auto_labeler.advanced_auto_labeler-v2","parameters":[{"name":"label_expr","value":"\nshift(close, -5) / shift(open, -1)\n\n\nclip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))\n\n\nall_wbins(label, 20)\n\n\nwhere(shift(high, -1) == shift(low, -1), NaN, label)\n","type":"Literal","bound_global_parameter":null},{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"benchmark","value":"000300.SHA","type":"Literal","bound_global_parameter":null},{"name":"drop_na_label","value":"True","type":"Literal","bound_global_parameter":null},{"name":"cast_label_int","value":"False","type":"Literal","bound_global_parameter":null},{"name":"user_functions","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-15"}],"output_ports":[{"name":"data","node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-15"}],"cacheable":true,"seq_num":2,"comment":"","comment_collapsed":true},{"node_id":"287d2cb0-f53c-4101-bdf8-104b137c8601-24","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"# (close_0-mean(close_0,12))/mean(close_0,12)*100\n# rank(std(amount_0,15))\n# rank_avg_amount_0/rank_avg_amount_8\n# ts_argmin(low_0,20)\n# rank_return_30\n# (low_1-close_0)/close_0\n# ta_bbands_lowerband_14_0\n# mean(mf_net_pct_s_0,4)\n# amount_0/avg_amount_3\n# return_0/return_5\n# return_1/return_5\n# rank_avg_amount_7/rank_avg_amount_10\n# ta_sma_10_0/close_0\n# sqrt(high_0*low_0)-amount_0/volume_0*adjust_factor_0\n# avg_turn_15/(turn_0+1e-5)\n# return_10\n# mf_net_pct_s_0\n# (close_0-open_0)/close_1\nreturn_5\nreturn_10\nreturn_20\navg_amount_0/avg_amount_5\navg_amount_5/avg_amount_20\nrank_avg_amount_0/rank_avg_amount_5\nrank_avg_amount_5/rank_avg_amount_10\nrank_return_0\nrank_return_5\nrank_return_10\nrank_return_0/rank_return_5\nrank_return_5/rank_return_10\npe_ttm_0\nlabel=log(close)","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-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-62","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2021-01-01","type":"Literal","bound_global_parameter":"交易日期"},{"name":"end_date","value":"2021-12-31","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":"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":"-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":0,"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":0,"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":"-423","module_id":"BigQuantSpace.dropnan.dropnan-v2","parameters":[],"input_ports":[{"name":"input_data","node_id":"-423"},{"name":"features","node_id":"-423"}],"output_ports":[{"name":"data","node_id":"-423"}],"cacheable":true,"seq_num":5,"comment":"","comment_collapsed":true},{"node_id":"-427","module_id":"BigQuantSpace.dropnan.dropnan-v2","parameters":[],"input_ports":[{"name":"input_data","node_id":"-427"},{"name":"features","node_id":"-427"}],"output_ports":[{"name":"data","node_id":"-427"}],"cacheable":true,"seq_num":6,"comment":"","comment_collapsed":true},{"node_id":"-669","module_id":"BigQuantSpace.extra_trees_regressor.extra_trees_regressor-v1","parameters":[{"name":"criterion","value":"mse","type":"Literal","bound_global_parameter":null},{"name":"iterations","value":10,"type":"Literal","bound_global_parameter":null},{"name":"feature_fraction","value":1,"type":"Literal","bound_global_parameter":null},{"name":"max_depth","value":30,"type":"Literal","bound_global_parameter":null},{"name":"min_samples_per_leaf","value":200,"type":"Literal","bound_global_parameter":null},{"name":"key_cols","value":"date,instrument","type":"Literal","bound_global_parameter":null},{"name":"workers","value":1,"type":"Literal","bound_global_parameter":null},{"name":"random_state","value":0,"type":"Literal","bound_global_parameter":null},{"name":"other_train_parameters","value":"{}","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"training_ds","node_id":"-669"},{"name":"features","node_id":"-669"},{"name":"model","node_id":"-669"},{"name":"predict_ds","node_id":"-669"}],"output_ports":[{"name":"output_model","node_id":"-669"},{"name":"predictions","node_id":"-669"}],"cacheable":true,"seq_num":8,"comment":"","comment_collapsed":true},{"node_id":"-110","module_id":"BigQuantSpace.metrics_regression.metrics_regression-v1","parameters":[{"name":"explained_variance_score","value":"True","type":"Literal","bound_global_parameter":null},{"name":"mean_absolute_error","value":"True","type":"Literal","bound_global_parameter":null},{"name":"mean_squared_error","value":"True","type":"Literal","bound_global_parameter":null},{"name":"mean_squared_log_error","value":"True","type":"Literal","bound_global_parameter":null},{"name":"median_absolute_error","value":"True","type":"Literal","bound_global_parameter":null},{"name":"r2_score","value":"True","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"predictions","node_id":"-110"}],"output_ports":[{"name":"report","node_id":"-110"}],"cacheable":false,"seq_num":4,"comment":"","comment_collapsed":true}],"node_layout":"<node_postions><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-8' Position='211,64,200,200'/><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-15' Position='81,227,200,200'/><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-24' Position='765,19,200,200'/><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-53' Position='249,375,200,200'/><node_position Node='287d2cb0-f53c-4101-bdf8-104b137c8601-62' Position='1088,20,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='1002,202,200,200'/><node_position Node='-238' Position='1004,299,200,200'/><node_position Node='-423' Position='387,439,200,200'/><node_position Node='-427' Position='1034,404,200,200'/><node_position Node='-669' Position='556,619,200,200'/><node_position Node='-110' Position='650,765,200,200'/></node_postions>"},"nodes_readonly":false,"studio_version":"v2"}
    In [1]:
    # 本代码由可视化策略环境自动生成 2023年4月24日 10:15
    # 本代码单元只能在可视化模式下编辑。您也可以拷贝代码,粘贴到新建的代码单元或者策略,然后修改。
    
    
    m1 = M.instruments.v2(
        start_date='2011-01-01',
        end_date='2020-12-31',
        market='CN_STOCK_A',
        instrument_list='',
        max_count=0
    )
    
    m2 = M.advanced_auto_labeler.v2(
        instruments=m1.data,
        label_expr="""
    shift(close, -5) / shift(open, -1)
    
    
    clip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))
    
    
    all_wbins(label, 20)
    
    
    where(shift(high, -1) == shift(low, -1), NaN, label)
    """,
        start_date='',
        end_date='',
        benchmark='000300.SHA',
        drop_na_label=True,
        cast_label_int=False
    )
    
    m3 = M.input_features.v1(
        features="""# (close_0-mean(close_0,12))/mean(close_0,12)*100
    # rank(std(amount_0,15))
    # rank_avg_amount_0/rank_avg_amount_8
    # ts_argmin(low_0,20)
    # rank_return_30
    # (low_1-close_0)/close_0
    # ta_bbands_lowerband_14_0
    # mean(mf_net_pct_s_0,4)
    # amount_0/avg_amount_3
    # return_0/return_5
    # return_1/return_5
    # rank_avg_amount_7/rank_avg_amount_10
    # ta_sma_10_0/close_0
    # sqrt(high_0*low_0)-amount_0/volume_0*adjust_factor_0
    # avg_turn_15/(turn_0+1e-5)
    # return_10
    # mf_net_pct_s_0
    # (close_0-open_0)/close_1
    return_5
    return_10
    return_20
    avg_amount_0/avg_amount_5
    avg_amount_5/avg_amount_20
    rank_avg_amount_0/rank_avg_amount_5
    rank_avg_amount_5/rank_avg_amount_10
    rank_return_0
    rank_return_5
    rank_return_10
    rank_return_0/rank_return_5
    rank_return_5/rank_return_10
    pe_ttm_0
    label=log(close)"""
    )
    
    m15 = M.general_feature_extractor.v7(
        instruments=m1.data,
        features=m3.data,
        start_date='',
        end_date='',
        before_start_days=0
    )
    
    m16 = M.derived_feature_extractor.v3(
        input_data=m15.data,
        features=m3.data,
        date_col='date',
        instrument_col='instrument',
        drop_na=False,
        remove_extra_columns=False
    )
    
    m7 = M.join.v3(
        data1=m2.data,
        data2=m16.data,
        on='date,instrument',
        how='inner',
        sort=False
    )
    
    m5 = M.dropnan.v2(
        input_data=m7.data
    )
    
    m9 = M.instruments.v2(
        start_date=T.live_run_param('trading_date', '2021-01-01'),
        end_date=T.live_run_param('trading_date', '2021-12-31'),
        market='CN_STOCK_A',
        instrument_list='',
        max_count=0
    )
    
    m17 = M.general_feature_extractor.v7(
        instruments=m9.data,
        features=m3.data,
        start_date='',
        end_date='',
        before_start_days=0
    )
    
    m18 = M.derived_feature_extractor.v3(
        input_data=m17.data,
        features=m3.data,
        date_col='date',
        instrument_col='instrument',
        drop_na=False,
        remove_extra_columns=False
    )
    
    m6 = M.dropnan.v2(
        input_data=m18.data
    )
    
    m8 = M.extra_trees_regressor.v1(
        training_ds=m5.data,
        features=m3.data,
        predict_ds=m6.data,
        criterion='mse',
        iterations=10,
        feature_fraction=1,
        max_depth=30,
        min_samples_per_leaf=200,
        key_cols='date,instrument',
        workers=1,
        random_state=0,
        other_train_parameters={}
    )
    
    m4 = M.metrics_regression.v1(
        predictions=m8.predictions,
        explained_variance_score=True,
        mean_absolute_error=True,
        mean_squared_error=True,
        mean_squared_log_error=True,
        median_absolute_error=True,
        r2_score=True
    )
    
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-1-72a96ea7ca57> in <module>
        139 )
        140 
    --> 141 m4 = M.metrics_regression.v1(
        142     predictions=m8.predictions,
        143     explained_variance_score=True,
    
    ValueError: 训练数据中无label,无法评估模型