请问为什么总报KEYERROR的错?

策略分享
标签: #<Tag:0x00007f60adb69238>

(amparoj) #1

克隆了https://community.bigquant.com/t/BigQuant%E5%B9%B3%E5%8F%B0%E5%AD%A6%E4%B9%A0%E7%AC%AC%E4%B8%89%E7%AF%87%EF%BC%9A%E5%A6%82%E4%BD%95%E5%BC%80%E5%8F%91AI%E7%AD%96%E7%95%A5%EF%BC%88%E4%B8%8B%EF%BC%89/88 学习,但运行时总报错,请问这个keyerror是什么状况?详见下面notebook, 谢谢~~

克隆策略
In [10]:
class conf:
    # 定义一个conf类,存储需要使用的变量
    start_date = '2014-01-01'  # 日期,作为训练集的起始日期
    end_date = '2017-10-17'  # 日期,作为测试集的结束日期
    instruments = D.instruments(start_date, end_date)  # 股票池
    # 数据标注规则
    label_expr = ['(return - benchmark_return) * 100',
                 'where(label > {0}, {0},  where(label < -{0}, -{0}, label)) + {0}'.format(20)]
    # 10日收益率
    hold_days = 10
    # 以沪深300为基准的相对收益
    benchmark = '000300.SHA'
    # 股票特征因子
    features = ['high_10-low_10']

# 标注数据
m1 = M.fast_auto_labeler.v4(instruments=conf.instruments,
                            start_date=conf.start_date,
                            end_date=conf.end_date,
                            label_expr=conf.label_expr,
                            hold_days=conf.hold_days,
                            benchmark='000300.SHA',
                            sell_at='open',
                            buy_at='open')
# 抽取特征因子
m2 = M.general_feature_extractor.v4(instruments=conf.instruments,
                                    start_date=conf.start_date,
                                    end_date=conf.end_date,
                                    features=conf.features)
# 将特征因子进行处理
m3 = M.transform.v1(data=m2.data,
                    transforms=T.get_stock_ranker_default_transforms(),
                    drop_null=True, astype='int32',
                    except_columns=['date', 'instrument'])

# 特征因子数据和标注数据合并
m4 = M.join.v1(data1=m1.data,
               data2=m3.data,
               on=['date', 'instrument'],
               sort=True)
[2017-10-25 10:57:21.390634] WARNING: bigquant: 此模块版本 M.fast_auto_labeler.v4 已不再维护。你仍然可以使用,但建议升级到最新版本:请更新到 fast_auto_labeler 最新版本
[2017-10-25 10:57:21.392701] INFO: bigquant: fast_auto_labeler.v4 开始运行..
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-10-b0b344c2f94c> in <module>()
     22                             benchmark='000300.SHA',
     23                             sell_at='open',
---> 24                             buy_at='open')
     25 # 抽取特征因子
     26 m2 = M.general_feature_extractor.v4(instruments=conf.instruments,

KeyError: 'id'
In [ ]:
 


(iQuant) #2

部分模块太旧。
M.fast_auto_labeler.改成最新的模块M.fast_auto_labeler.v8 就不会有报错了。
当你使用各个模块的时候,你可以通过直接输入模块名查询最新版本,然后使用最新版本。

可以参考这篇文章:AI策略详解


(amparoj) #3

好哒,谢谢!