复制链接
克隆策略

    {"description":"实验创建于2022/7/25","graph":{"edges":[{"to_node_id":"-133:instruments","from_node_id":"-337:data"},{"to_node_id":"-27:instruments","from_node_id":"-337:data"},{"to_node_id":"-43:data1","from_node_id":"-133:data"},{"to_node_id":"-27:features","from_node_id":"-22:data"},{"to_node_id":"-34:features","from_node_id":"-22:data"},{"to_node_id":"-100:features","from_node_id":"-22:data"},{"to_node_id":"-131:features","from_node_id":"-22:data"},{"to_node_id":"-138:features","from_node_id":"-22:data"},{"to_node_id":"-34:input_data","from_node_id":"-27:data"},{"to_node_id":"-43:data2","from_node_id":"-34:data"},{"to_node_id":"-62:input_data","from_node_id":"-43:data"},{"to_node_id":"-100:training_ds","from_node_id":"-62:data"},{"to_node_id":"-152:model","from_node_id":"-100:model"},{"to_node_id":"-131:instruments","from_node_id":"-122:data"},{"to_node_id":"-138:input_data","from_node_id":"-131:data"},{"to_node_id":"-147:input_data","from_node_id":"-138:data"},{"to_node_id":"-152:data","from_node_id":"-147:data"}],"nodes":[{"node_id":"-337","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2013-01-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2015-01-01","type":"Literal","bound_global_parameter":null},{"name":"market","value":"CN_STOCK_A","type":"Literal","bound_global_parameter":null},{"name":"instrument_list","value":"600004.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":"-337"}],"output_ports":[{"name":"data","node_id":"-337"}],"cacheable":true,"seq_num":1,"comment":"训练数据集","comment_collapsed":true},{"node_id":"-133","module_id":"BigQuantSpace.advanced_auto_labeler.advanced_auto_labeler-v2","parameters":[{"name":"label_expr","value":"# #号开始的表示注释\n# 0. 每行一个,顺序执行,从第二个开始,可以使用label字段\n# 1. 可用数据字段见 https://bigquant.com/docs/develop/datasource/deprecated/history_data.html\n# 添加benchmark_前缀,可使用对应的benchmark数据\n# 2. 可用操作符和函数见 `表达式引擎 <https://bigquant.com/docs/develop/bigexpr/usage.html>`_\n\n# 计算收益:5日收盘价(作为卖出价格)除以明日开盘价(作为买入价格)\nshift(close, -5) / shift(open, -1)\n\n# 极值处理:用1%和99%分位的值做clip\nclip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))\n\n# 将分数映射到分类,这里使用20个分类\nall_wbins(label, 20)\n\n# 过滤掉一字涨停的情况 (设置label为NaN,在后续处理和训练中会忽略NaN的label)\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":"True","type":"Literal","bound_global_parameter":null},{"name":"user_functions","value":"{}","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-133"}],"output_ports":[{"name":"data","node_id":"-133"}],"cacheable":true,"seq_num":2,"comment":"","comment_collapsed":true},{"node_id":"-22","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"\n# #号开始的表示注释,注释需单独一行\n# 多个特征,每行一个,可以包含基础特征和衍生特征,特征须为本平台特征\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\n","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-22"}],"output_ports":[{"name":"data","node_id":"-22"}],"cacheable":true,"seq_num":3,"comment":"","comment_collapsed":true},{"node_id":"-27","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":"-27"},{"name":"features","node_id":"-27"}],"output_ports":[{"name":"data","node_id":"-27"}],"cacheable":true,"seq_num":4,"comment":"","comment_collapsed":true},{"node_id":"-34","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":"-34"},{"name":"features","node_id":"-34"}],"output_ports":[{"name":"data","node_id":"-34"}],"cacheable":true,"seq_num":5,"comment":"","comment_collapsed":true},{"node_id":"-43","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":"-43"},{"name":"data2","node_id":"-43"}],"output_ports":[{"name":"data","node_id":"-43"}],"cacheable":true,"seq_num":6,"comment":"","comment_collapsed":true},{"node_id":"-62","module_id":"BigQuantSpace.dropnan.dropnan-v2","parameters":[],"input_ports":[{"name":"input_data","node_id":"-62"},{"name":"features","node_id":"-62"}],"output_ports":[{"name":"data","node_id":"-62"}],"cacheable":true,"seq_num":10,"comment":"","comment_collapsed":true},{"node_id":"-100","module_id":"BigQuantSpace.stock_ranker_train.stock_ranker_train-v6","parameters":[{"name":"learning_algorithm","value":"排序","type":"Literal","bound_global_parameter":null},{"name":"number_of_leaves","value":30,"type":"Literal","bound_global_parameter":null},{"name":"minimum_docs_per_leaf","value":1000,"type":"Literal","bound_global_parameter":null},{"name":"number_of_trees","value":20,"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":"data_row_fraction","value":1,"type":"Literal","bound_global_parameter":null},{"name":"plot_charts","value":"True","type":"Literal","bound_global_parameter":null},{"name":"ndcg_discount_base","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":"-100"},{"name":"features","node_id":"-100"},{"name":"test_ds","node_id":"-100"},{"name":"base_model","node_id":"-100"}],"output_ports":[{"name":"model","node_id":"-100"},{"name":"feature_gains","node_id":"-100"},{"name":"m_lazy_run","node_id":"-100"}],"cacheable":true,"seq_num":11,"comment":"","comment_collapsed":true},{"node_id":"-122","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2013-01-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2015-01-01","type":"Literal","bound_global_parameter":null},{"name":"market","value":"CN_STOCK_A","type":"Literal","bound_global_parameter":null},{"name":"instrument_list","value":"600004.SHA\n","type":"Literal","bound_global_parameter":null},{"name":"max_count","value":0,"type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"rolling_conf","node_id":"-122"}],"output_ports":[{"name":"data","node_id":"-122"}],"cacheable":true,"seq_num":13,"comment":"回测和模拟数据集","comment_collapsed":false},{"node_id":"-131","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":"-131"},{"name":"features","node_id":"-131"}],"output_ports":[{"name":"data","node_id":"-131"}],"cacheable":true,"seq_num":14,"comment":"","comment_collapsed":true},{"node_id":"-138","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":"-138"},{"name":"features","node_id":"-138"}],"output_ports":[{"name":"data","node_id":"-138"}],"cacheable":true,"seq_num":15,"comment":"","comment_collapsed":true},{"node_id":"-147","module_id":"BigQuantSpace.dropnan.dropnan-v2","parameters":[],"input_ports":[{"name":"input_data","node_id":"-147"},{"name":"features","node_id":"-147"}],"output_ports":[{"name":"data","node_id":"-147"}],"cacheable":true,"seq_num":16,"comment":"","comment_collapsed":true},{"node_id":"-152","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":"-152"},{"name":"data","node_id":"-152"}],"output_ports":[{"name":"predictions","node_id":"-152"},{"name":"m_lazy_run","node_id":"-152"}],"cacheable":true,"seq_num":17,"comment":"","comment_collapsed":true}],"node_layout":"<node_postions><node_position Node='-337' Position='31,82,200,200'/><node_position Node='-133' Position='-110.0277214050293,200.89186096191406,200,200'/><node_position Node='-22' Position='505.498291015625,-30.76085662841797,200,200'/><node_position Node='-27' Position='219.2750244140625,224.35301208496094,200,200'/><node_position Node='-34' Position='223.17767333984375,309.3257141113281,200,200'/><node_position Node='-43' Position='117.59812927246094,407.0179138183594,200,200'/><node_position Node='-62' Position='125.56363677978516,522.5816650390625,200,200'/><node_position Node='-100' Position='218.64541625976562,620.8609008789062,200,200'/><node_position Node='-122' Position='635.6817321777344,167.2211685180664,200,200'/><node_position Node='-131' Position='623.2195434570312,279.46360778808594,200,200'/><node_position Node='-138' Position='620.430908203125,382.83721923828125,200,200'/><node_position Node='-147' Position='618.167121887207,478.9964599609375,200,200'/><node_position Node='-152' Position='398.29803466796875,715.3328552246094,200,200'/></node_postions>"},"nodes_readonly":false,"studio_version":"v2"}
    In [92]:
    # 本代码由可视化策略环境自动生成 2022年7月25日 17:09
    # 本代码单元只能在可视化模式下编辑。您也可以拷贝代码,粘贴到新建的代码单元或者策略,然后修改。
    
    
    m1 = M.instruments.v2(
        start_date='2013-01-01',
        end_date='2015-01-01',
        market='CN_STOCK_A',
        instrument_list='600004.SHA',
        max_count=0
    )
    
    m2 = M.advanced_auto_labeler.v2(
        instruments=m1.data,
        label_expr="""# #号开始的表示注释
    # 0. 每行一个,顺序执行,从第二个开始,可以使用label字段
    # 1. 可用数据字段见 https://bigquant.com/docs/develop/datasource/deprecated/history_data.html
    #   添加benchmark_前缀,可使用对应的benchmark数据
    # 2. 可用操作符和函数见 `表达式引擎 <https://bigquant.com/docs/develop/bigexpr/usage.html>`_
    
    # 计算收益:5日收盘价(作为卖出价格)除以明日开盘价(作为买入价格)
    shift(close, -5) / shift(open, -1)
    
    # 极值处理:用1%和99%分位的值做clip
    clip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))
    
    # 将分数映射到分类,这里使用20个分类
    all_wbins(label, 20)
    
    # 过滤掉一字涨停的情况 (设置label为NaN,在后续处理和训练中会忽略NaN的label)
    where(shift(high, -1) == shift(low, -1), NaN, label)
    """,
        start_date='',
        end_date='',
        benchmark='000300.SHA',
        drop_na_label=True,
        cast_label_int=True,
        user_functions={}
    )
    
    m3 = M.input_features.v1(
        features="""
    # #号开始的表示注释,注释需单独一行
    # 多个特征,每行一个,可以包含基础特征和衍生特征,特征须为本平台特征
    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
    """
    )
    
    m4 = M.general_feature_extractor.v7(
        instruments=m1.data,
        features=m3.data,
        start_date='',
        end_date='',
        before_start_days=90
    )
    
    m5 = M.derived_feature_extractor.v3(
        input_data=m4.data,
        features=m3.data,
        date_col='date',
        instrument_col='instrument',
        drop_na=False,
        remove_extra_columns=False,
        user_functions={}
    )
    
    m6 = M.join.v3(
        data1=m2.data,
        data2=m5.data,
        on='date,instrument',
        how='inner',
        sort=False
    )
    
    m10 = M.dropnan.v2(
        input_data=m6.data
    )
    
    m11 = M.stock_ranker_train.v6(
        training_ds=m10.data,
        features=m3.data,
        learning_algorithm='排序',
        number_of_leaves=30,
        minimum_docs_per_leaf=1000,
        number_of_trees=20,
        learning_rate=0.1,
        max_bins=1023,
        feature_fraction=1,
        data_row_fraction=1,
        plot_charts=True,
        ndcg_discount_base=1,
        m_lazy_run=False
    )
    
    m13 = M.instruments.v2(
        start_date='2013-01-01',
        end_date='2015-01-01',
        market='CN_STOCK_A',
        instrument_list="""600004.SHA
    """,
        max_count=0
    )
    
    m14 = M.general_feature_extractor.v7(
        instruments=m13.data,
        features=m3.data,
        start_date='',
        end_date='',
        before_start_days=90
    )
    
    m15 = M.derived_feature_extractor.v3(
        input_data=m14.data,
        features=m3.data,
        date_col='date',
        instrument_col='instrument',
        drop_na=False,
        remove_extra_columns=False,
        user_functions={}
    )
    
    m16 = M.dropnan.v2(
        input_data=m15.data
    )
    
    m17 = M.stock_ranker_predict.v5(
        model=m11.model,
        data=m16.data,
        m_lazy_run=False
    )
    
    ---------------------------------------------------------------------------
    Exception                                 Traceback (most recent call last)
    <ipython-input-92-2692f2205050> in <module>
         89 )
         90 
    ---> 91 m11 = M.stock_ranker_train.v6(
         92     training_ds=m10.data,
         93     features=m3.data,
    
    Exception: 模型训练失败:可能导致错误的原因是训练数据问题,请检查训练数据, err_code=1 (3c5867100bf911ed93a1ea1ef7738718)