qlib+mongo实现转债金融时间序列数据查询

持续行动1期 39/100,“AI技术应用于量化投资研资”之可转债投资。

截至昨天,我们基本把可转债需要的基础数据,时间序列数据都入库mongo,并且生成qlib格式的数据库,并且整合的可转债的转股价,正股价。

现在我们可以来实现转债里有基础但有用的“双低”策略。

轮动的逻辑,就是永远持有目前“得分”最高的标的。”双低“意味着转债的股性和债性综合得分最高,也就是性价比最好。

qlib+mongo实现转债金融时间序列数据查询_第1张图片

01 qlib查询双低值

从qlib数据库里查询 转债价格$close,转股价$chg_price,正股价$stk_close,

转股溢价率:$close/(100/$chg_price*$stk_close)-1,

双低值:$close+ ($close/(100/$chg_price*$stk_close)-1)*100

fields = ['$close','$close+ ($close/(100/$chg_price*$stk_close)-1)*100', '$close/(100/$chg_price*$stk_close)-1']
data_loader_config = {
    "feature": (fields, ['转债价格', '双低值', '转股溢价率']),
    # "label": (labels, label_names)
}
data_loader = QlibDataLoader(config=data_loader_config, )
df = data_loader.load(instruments=instruments, start_time=start_date)
df = df['feature']
df.sort_values(by='双低值', ascending=True, inplace=True)
pprint(df)
return df

查询的数据如下:

qlib+mongo实现转债金融时间序列数据查询_第2张图片

与集思录里的数据做下对比,差不多(日期不同,我们的数据是09-05的)

接下来我们需要查询最新的日期里,按“双低”值从小到大排序

这里带出一个问题,qlib适合做模型训练和回测,比如当前这个数据集,直接把双低值当作pred_score就可以回测了。包括机器学习的模型训练,但作为数据呈现(当数据库使用)就会有诸多不便。

后续可以考虑调研一下其余的金融时间序列数据库。

02 目前看数据需求

一个列表页的查询功能,这些功能可以通过预计算。

主要是需要把正股的信息整合起来,还有涨跌幅度,双低值等。

列表的作用只能查询最新的数据,比如不方便(需要重新计算)“穿越”到历史上某一天。

把mongo基础表的信息整合起来,形成一上完整的列表:

df_basic = mongo_utils.get_db()['bond_basic'].find({'ts_code': {'$in': list(df['instrument'])}},
                                        {
                                            'bond_short_name': 1,
                                            'stk_short_name': 1,
                                            '_id': 0,
                                            'maturity_date': 1,
                                            'ts_code':1
                                        })
df_basic = pd.DataFrame(list(df_basic))
df_basic.index = df_basic['ts_code']

df = pd.concat([df, df_basic], axis=1)

结合mongo的basic表和qlib的时间序列表,后续财务数据都可以整合进来。

除了考虑时间序列数据库(暂时不考虑,会引入更多的技术复杂性)。

qlib后续回测有大用途,目前性能还有优化的空间,包括qlib启用缓存等等。

简言之——qlib的数据库作为高性能时间序列数据库的一个替代,是一个很好的选择!

小结:

把qlib当作时间序列数据是一个正确选择。

qlib+mongo足够处理海量的金融时间序列数据。(qlib数据结构就是为此而生的)。之前有朋友问我为何为自己写一个,客观讲很耗时,未必做得比人家好。

后续:(还需要继续优化性能,导入基本面数据,财务指标等,就可以指导可转债的投资了)

qlib格式的可转债数据:正股价,转股价的整合

飞狐,科技公司CTO,用AI技术做量化投资;以投资视角观历史,解时事;专注个人成长与财富自由。

你可能感兴趣的:(建立自己的算法交易事业,金融,数据库)