stock_ranker_train什么机制,为什么会报异常


(gotojyh) #1

M.stock_ranker_train.v3 如果instruments只放三支股票是会报异常的?

“Exception: output ranker not generated
We cannot build a tree with gain = 负无穷大”

什么原因?


(神龙斗士) #2

看起来是通过给定的因子等数据,机器发现不能生成有效的模型。可能你是因子问题。如果需要我们进一步分析,可以把策略发到社区


(gotojyh) #3
克隆策略
In [69]:
start_date='2017-01-03'
end_date='2017-01-10'
instruments=['000002.SZA','000001.SZA','000003.SZA']
#instruments=D.instruments(start_date=start_date,end_date=end_date,market='CN_STOCK_A') 

label_expr=['return*1000+1000'] 
hold_days=2
features=['rank_return_5']
m1=M.fast_auto_labeler.v8(instruments=instruments
                          ,start_date=start_date,end_date=end_date
                          ,label_expr=label_expr,hold_days=hold_days,sell_at='open',buy_at='open')
d1=D.history_data(instruments=instruments,start_date=start_date,end_date=end_date)
m2=M.general_feature_extractor.v5(instruments=instruments
                              ,start_date=start_date,end_date=end_date
                              ,features=features)
#m2.data.read_df()
m3=M.transform.v2(data=m2.data,transforms=T.get_stock_ranker_default_transforms()
                 ,drop_null=True,astype='int32'
                 ,except_columns=['date','instrument'])
m4=M.join.v2(data1=m1.data,data2=m3.data,on=['date','instrument'],sort=True)
m4.data.read_df()
m5=M.stock_ranker_train.v3(training_ds=m4.data,features=features)
#m5.plot_model()
[2017-11-02 20:43:14.653905] INFO: bigquant: fast_auto_labeler.v8 开始运行..
[2017-11-02 20:43:14.659719] INFO: bigquant: 命中缓存
[2017-11-02 20:43:14.666412] INFO: bigquant: fast_auto_labeler.v8 运行完成[0.012562s].
[2017-11-02 20:43:14.687188] INFO: bigquant: general_feature_extractor.v5 开始运行..
[2017-11-02 20:43:14.690515] INFO: bigquant: 命中缓存
[2017-11-02 20:43:14.691427] INFO: bigquant: general_feature_extractor.v5 运行完成[0.004238s].
[2017-11-02 20:43:14.705150] INFO: bigquant: transform.v2 开始运行..
[2017-11-02 20:43:14.708772] INFO: bigquant: 命中缓存
[2017-11-02 20:43:14.709625] INFO: bigquant: transform.v2 运行完成[0.004504s].
[2017-11-02 20:43:14.716759] INFO: bigquant: join.v2 开始运行..
[2017-11-02 20:43:14.718918] INFO: bigquant: 命中缓存
[2017-11-02 20:43:14.719684] INFO: bigquant: join.v2 运行完成[0.002919s].
[2017-11-02 20:43:14.761075] INFO: bigquant: stock_ranker_train.v3 开始运行..
[2017-11-02 20:43:14.773541] INFO: stock_ranker_train: 64bfbe9e training: 6 rows
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-69-00955cbf0290> in <module>()
     19 m4=M.join.v2(data1=m1.data,data2=m3.data,on=['date','instrument'],sort=True)
     20 m4.data.read_df()
---> 21 m5=M.stock_ranker_train.v3(training_ds=m4.data,features=features)
     22 #m5.plot_model()
     23 

Exception: output ranker not generated
We cannot build a tree with gain = 负无穷大
In [ ]:
 

就是例子程序,我把时间改了,股票池改了,主要想研究一下这个接口的原理


(神龙斗士) #4

只有三只股票,数据太少了,无法训练出可信的模型,所以报错 gain 无穷大。


(gotojyh) #5

多谢,不研究这个接口,不好研究