qlib icon indicating copy to clipboard operation
qlib copied to clipboard

Why did model.get_feature_importance() got zero?

Open DanielKui opened this issue 1 year ago • 0 comments

port_analysis_config = {
    "executor": {
        "class": "SimulatorExecutor",
        "module_path": "qlib.backtest.executor",
        "kwargs": {
            "time_per_step": "1min",
            "generate_portfolio_metrics": True,
        },
    },
    "strategy": {
        "class": "TopkDropoutStrategy",
        "module_path": "qlib.contrib.strategy.signal_strategy",
        "kwargs": {
            "model": model,
            "dataset": dataset,
            "topk": 50,
            "n_drop": 5,
        },
    },
    "backtest": {
        "start_time": "2020-09-14",
        "end_time": "2020-09-15",
        "account": 1000,
        "benchmark": benchmark,
        "exchange_kwargs": {
            "freq": "1min",
            "limit_threshold": 0.095,
            "deal_price": "close",
            "open_cost": 0.0005,
            "close_cost": 0.0015,
            "min_cost": 5,
        },
    },
}

# backtest and analysis
with R.start(experiment_name="backtest_analysis"):
    recorder = R.get_recorder(recorder_id=rid, experiment_name="train_model")
    model = recorder.load_object("trained_model")

    # prediction
    recorder = R.get_recorder()
    ba_rid = recorder.id
    sr = SignalRecord(model, dataset, recorder)
    sr.generate()

    # backtest & analysis
    par = PortAnaRecord(recorder, port_analysis_config, "1min")
    par.generate()

    import csv

    feature_importance = model.get_feature_importance()
    fea_expr, fea_name = dataset.handler.get_feature_config()
    feature_importance = {fea_name[int(i.split("_")[1])]: v for i,v in feature_importance.items()}

    with open('C:\\feature.csv', 'w', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=feature_importance.keys())
        writer.writeheader()
        writer.writerow(feature_importance)

the content of feature.csv :

KMID,CNTD5,CNTP30,CNTP60,CNTN5,CNTN10,CNTN20,CNTN30,CNTN60,CNTD10,CNTP10,CNTD20,CNTD30,CNTD60,SUMP5,SUMP10,SUMP20,SUMP30,CNTP20,CNTP5,SUMN5,CORR5,IMIN30,IMIN60,IMXD5,IMXD10,IMXD20,IMXD30,IMXD60,CORR10,CORD60,CORR20,CORR30,CORR60,CORD5,CORD10,CORD20,CORD30,SUMP60,SUMN10,KLEN,VSUMN5,WVMA30,WVMA60,VSUMP5,VSUMP10,VSUMP20,VSUMP30,VSUMP60,VSUMN10,WVMA10,VSUMN20,VSUMN30,VSUMN60,VSUMD5,VSUMD10,VSUMD20,VSUMD30,WVMA20,WVMA5,SUMN20,VMA5,SUMN30,SUMN60,SUMD5,SUMD10,SUMD20,SUMD30,SUMD60,VMA10,VSTD60,VMA20,VMA30,VMA60,VSTD5,VSTD10,VSTD20,VSTD30,IMIN20,IMIN10,IMIN5,BETA10,MA60,STD5,STD10,STD20,STD30,STD60,BETA5,BETA20,MA20,BETA30,BETA60,RSQR5,RSQR10,RSQR20,RSQR30,RSQR60,MA30,MA10,IMAX60,OPEN0,KMID2,KUP,KUP2,KLOW,KLOW2,KSFT,KSFT2,HIGH0,MA5,LOW0,VWAP0,ROC5,ROC10,ROC20,ROC30,ROC60,RESI5,RESI10,RESI20,RSV5,QTLD30,QTLD60,RANK5,RANK10,RANK20,RANK30,RANK60,RSV10,RESI30,RSV20,RSV30,RSV60,IMAX5,IMAX10,IMAX20,IMAX30,QTLD20,QTLD10,QTLD5,QTLU60,RESI60,MAX5,MAX10,MAX20,MAX30,MAX60,MIN5,MIN10,MIN20,MIN30,MIN60,QTLU5,QTLU10,QTLU20,QTLU30,VSUMD60 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

Why it all was zero?

DanielKui avatar Dec 27 '23 05:12 DanielKui