复制链接
克隆策略

    {"description":"实验创建于1/13/2021","graph":{"edges":[{"to_node_id":"-18:instruments","from_node_id":"-5:data"},{"to_node_id":"-79:instruments","from_node_id":"-5:data"},{"to_node_id":"-18:features","from_node_id":"-13:data"},{"to_node_id":"-25:features","from_node_id":"-13:data"},{"to_node_id":"-25:input_data","from_node_id":"-18:data"},{"to_node_id":"-494:data1","from_node_id":"-25:data"},{"to_node_id":"-66:input_1","from_node_id":"-58:sorted_data"},{"to_node_id":"-41:input_data","from_node_id":"-115:data"},{"to_node_id":"-58:input_ds","from_node_id":"-41:data"},{"to_node_id":"-1390:input_ds","from_node_id":"-79:data"},{"to_node_id":"-494:data2","from_node_id":"-1390:data"},{"to_node_id":"-115:input_data","from_node_id":"-494:data"}],"nodes":[{"node_id":"-5","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2022-05-01","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2022-05-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":"-5"}],"output_ports":[{"name":"data","node_id":"-5"}],"cacheable":true,"seq_num":1,"comment":"","comment_collapsed":true},{"node_id":"-13","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"\ncode=industry_sw_level1_0.astype('str')\n# 同时按日期和key做分组,求平均\npjzf=group_mean(industry_sw_level1_0, return_0)\npjzf20=mean(pjzf,20)\n\n# 同时按日期和key做分组,求和\n# group_sum(industry_level1_0, return_0)\n\n# 同时按日期和key做分组,求当前值在分组内的排名百分比\nhypm=group_rank(industry_sw_level3_0,return_0)\n#","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-13"}],"output_ports":[{"name":"data","node_id":"-13"}],"cacheable":true,"seq_num":2,"comment":"","comment_collapsed":true},{"node_id":"-18","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":"-18"},{"name":"features","node_id":"-18"}],"output_ports":[{"name":"data","node_id":"-18"}],"cacheable":true,"seq_num":3,"comment":"","comment_collapsed":true},{"node_id":"-25","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":"-25"},{"name":"features","node_id":"-25"}],"output_ports":[{"name":"data","node_id":"-25"}],"cacheable":true,"seq_num":4,"comment":"","comment_collapsed":true},{"node_id":"-58","module_id":"BigQuantSpace.sort.sort-v5","parameters":[{"name":"sort_by","value":"pjzf","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":"-58"},{"name":"sort_by_ds","node_id":"-58"}],"output_ports":[{"name":"sorted_data","node_id":"-58"}],"cacheable":true,"seq_num":5,"comment":"","comment_collapsed":true},{"node_id":"-115","module_id":"BigQuantSpace.dropnan.dropnan-v2","parameters":[],"input_ports":[{"name":"input_data","node_id":"-115"},{"name":"features","node_id":"-115"}],"output_ports":[{"name":"data","node_id":"-115"}],"cacheable":true,"seq_num":8,"comment":"","comment_collapsed":true},{"node_id":"-41","module_id":"BigQuantSpace.filter.filter-v3","parameters":[{"name":"expr","value":"date=='2022-05-17'","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":"-41"}],"output_ports":[{"name":"data","node_id":"-41"},{"name":"left_data","node_id":"-41"}],"cacheable":true,"seq_num":6,"comment":"","comment_collapsed":true},{"node_id":"-79","module_id":"BigQuantSpace.use_datasource.use_datasource-v1","parameters":[{"name":"datasource_id","value":"basic_info_IndustrySw","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":"-79"},{"name":"features","node_id":"-79"}],"output_ports":[{"name":"data","node_id":"-79"}],"cacheable":true,"seq_num":7,"comment":"","comment_collapsed":true},{"node_id":"-1390","module_id":"BigQuantSpace.select_columns.select_columns-v3","parameters":[{"name":"columns","value":"code,name","type":"Literal","bound_global_parameter":null},{"name":"reverse_select","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_ds","node_id":"-1390"},{"name":"columns_ds","node_id":"-1390"}],"output_ports":[{"name":"data","node_id":"-1390"}],"cacheable":true,"seq_num":9,"comment":"","comment_collapsed":true},{"node_id":"-494","module_id":"BigQuantSpace.join.join-v3","parameters":[{"name":"on","value":"code","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":"-494"},{"name":"data2","node_id":"-494"}],"output_ports":[{"name":"data","node_id":"-494"}],"cacheable":true,"seq_num":10,"comment":"","comment_collapsed":true},{"node_id":"-66","module_id":"BigQuantSpace.cached.cached-v3","parameters":[{"name":"run","value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, input_2, input_3):\n # 示例代码如下。在这里编写您的代码\n df = input_1.read()\n df = df.groupby(['date','industry_sw_level1_0']).sum()\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":"-66"},{"name":"input_2","node_id":"-66"},{"name":"input_3","node_id":"-66"}],"output_ports":[{"name":"data_1","node_id":"-66"},{"name":"data_2","node_id":"-66"},{"name":"data_3","node_id":"-66"}],"cacheable":true,"seq_num":11,"comment":"","comment_collapsed":true}],"node_layout":"<node_postions><node_position Node='-5' Position='303,187,200,200'/><node_position Node='-13' Position='642,185,200,200'/><node_position Node='-18' Position='479,296,200,200'/><node_position Node='-25' Position='481,399,200,200'/><node_position Node='-58' Position='533,975,200,200'/><node_position Node='-115' Position='492,592,200,200'/><node_position Node='-41' Position='520,827,200,200'/><node_position Node='-79' Position='180,482,200,200'/><node_position Node='-1390' Position='73,590,200,200'/><node_position Node='-494' Position='248,706,200,200'/><node_position Node='-66' Position='145.03172302246094,1026.369140625,200,200'/></node_postions>"},"nodes_readonly":false,"studio_version":"v2"}
    In [9]:
    # 本代码由可视化策略环境自动生成 2022年6月28日 15:00
    # 本代码单元只能在可视化模式下编辑。您也可以拷贝代码,粘贴到新建的代码单元或者策略,然后修改。
    
    
    # Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端
    def m11_run_bigquant_run(input_1, input_2, input_3):
        # 示例代码如下。在这里编写您的代码
        df = input_1.read()
        df = df.groupby(['date','industry_sw_level1_0']).sum()
        data_1 = DataSource.write_df(df)
        return Outputs(data_1=data_1, data_2=None, data_3=None)
    
    # 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。
    def m11_post_run_bigquant_run(outputs):
        return outputs
    
    
    m1 = M.instruments.v2(
        start_date='2022-05-01',
        end_date='2022-05-31',
        market='CN_STOCK_A',
        instrument_list='',
        max_count=0
    )
    
    m7 = M.use_datasource.v1(
        instruments=m1.data,
        datasource_id='basic_info_IndustrySw',
        start_date='',
        end_date=''
    )
    
    m9 = M.select_columns.v3(
        input_ds=m7.data,
        columns='code,name',
        reverse_select=False
    )
    
    m2 = M.input_features.v1(
        features="""
    code=industry_sw_level1_0.astype('str')
    # 同时按日期和key做分组,求平均
    pjzf=group_mean(industry_sw_level1_0, return_0)
    pjzf20=mean(pjzf,20)
    
    # 同时按日期和key做分组,求和
    # group_sum(industry_level1_0, return_0)
    
    # 同时按日期和key做分组,求当前值在分组内的排名百分比
    hypm=group_rank(industry_sw_level3_0,return_0)
    #"""
    )
    
    m3 = M.general_feature_extractor.v7(
        instruments=m1.data,
        features=m2.data,
        start_date='',
        end_date='',
        before_start_days=90
    )
    
    m4 = M.derived_feature_extractor.v3(
        input_data=m3.data,
        features=m2.data,
        date_col='date',
        instrument_col='instrument',
        drop_na=False,
        remove_extra_columns=False,
        user_functions={}
    )
    
    m10 = M.join.v3(
        data1=m4.data,
        data2=m9.data,
        on='code',
        how='left',
        sort=False
    )
    
    m8 = M.dropnan.v2(
        input_data=m10.data
    )
    
    m6 = M.filter.v3(
        input_data=m8.data,
        expr='date==\'2022-05-17\'',
        output_left_data=False
    )
    
    m5 = M.sort.v5(
        input_ds=m6.data,
        sort_by='pjzf',
        group_by='date',
        keep_columns='--',
        ascending=False
    )
    
    m11 = M.cached.v3(
        input_1=m5.sorted_data,
        run=m11_run_bigquant_run,
        post_run=m11_post_run_bigquant_run,
        input_ports='',
        params='{}',
        output_ports=''
    )
    
    In [10]:
    m11.data_1.read()
    
    Out[10]:
    industry_sw_level3_0 return_0 pjzf pjzf20 hypm
    date industry_sw_level1_0
    2022-05-17 110000 22757862 204.327850 204.327850 205.143963 121.000000
    220000 159598836 724.656799 724.597839 722.292437 395.924528
    230000 20276542 87.998840 87.998833 87.441255 50.000000
    240000 62972516 266.310608 266.302887 261.176815 143.705882
    270000 199492568 747.798218 748.022034 737.030091 383.681385
    280000 135642604 491.814514 491.814514 484.401977 255.000000
    330000 53524856 160.905869 160.624313 161.799785 94.151515
    340000 79710676 232.886993 232.886993 233.350993 129.000000
    350000 78441880 221.206436 221.206436 223.468635 123.000000
    360000 100153762 276.638550 276.638550 277.015371 153.000000
    370000 319946620 848.623413 848.745361 861.404500 446.000000
    410000 99256682 241.082291 241.082291 242.101767 130.000000
    420000 106915238 252.642731 252.666824 253.193005 139.200000
    430000 106668316 242.405655 242.405655 246.776321 129.000000
    450000 91869816 199.838760 199.838760 203.700121 112.000000
    460000 66375522 142.742447 142.742447 142.880361 85.000000
    480000 40351484 84.208481 84.208481 83.728476 46.000000
    490000 83330746 167.563446 167.563446 168.569912 93.000000
    510000 30606060 59.566494 59.566494 59.809597 31.000000
    610000 92752698 150.700806 150.537781 151.571264 85.666667
    620000 191073356 304.166687 304.166687 307.787460 163.000000
    630000 364503458 587.433960 587.479614 578.019136 309.516129
    640000 604424678 946.328491 946.108643 941.675955 494.269875
    650000 153479636 236.811783 236.811783 235.747391 123.000000
    710000 427596308 599.110657 599.127502 598.488731 305.032633
    720000 207542004 286.409515 286.409515 286.427966 157.000000
    730000 162098840 221.789169 221.651184 221.149925 118.894737
    740000 25904446 35.379292 35.379288 34.793693 19.000000
    750000 33761584 45.855541 45.843792 44.902064 25.500000
    760000 88173854 115.963318 115.752586 115.587337 61.855050
    770000 22334840 28.708916 28.708916 28.929383 17.500000