qlib高阶应用之财务数据库与自定义表达式

百天计划之22天,关于“AI量化,财富自由与个人成长”。

今天要涉及一些qlib的高级特性的使用: 财务数据库(PIT)以及自定义表达式的注册。


01 qlib之金融财务数据库

qlib的tutorial对于交易数据(日线)讲得比较清楚,就是把一堆标的的时间序列数据,写入到一个文件夹下的csv里,然后使用dump_bin就可以生成qlib格式的数据库。


我把qlib源代码里的scripts目录拷贝到 我的开源项目(gittee ailabx)的core目录下:


dump_bin是处理传统时间序列,dump_pit是处理金融财务数据,两者的输入都是csv格式。

金融数据库的csv格式如下:


需要特别说明的是,data_collector是qlib的作者用来采集试验数据的,可以不用,而且数据质量也不保证。

若要使用,里头的requirements需要单独安装的,里边连电子货币的数据都有:


合并之后,会多一个financial的文件夹如下:



数据查询:

instruments = ["sh600519"]fields = ["P($roewa_q)",          "P(Ref($roewa_q, 1))",          "P($yoyni_q)",          "$close",          "P($roewa_q) * $close"          ]# Mao Tai published 2019Q2 report at 2019-07-13 & 2019-07-18# - http://www.cninfo.com.cn/new/commonUrl/pageOfSearch?url=disclosure/list/search&lastPage=indexdata = D.features(instruments, fields, start_time="2019-01-01", end_time="2019-07-19", freq="day")pprint(data)

查询到的数据由”季度“频次变成按”天“的,方便我们回测时使用:


如下地址有详细的脚本使用说明:

https://github.com/microsoft/qlib/tree/main/scripts/data_collector/pit


02 自定义表达式

qlib内置了很多表达式,但我们经常有需求扩充自己的,这个相对简单:

class Distance(PairOperator):    """Feature Distance    Parameters    ----------    feature : Expression        feature instance    Returns    ----------    Expression        a feature instance with distance    """    def _load_internal(self, instrument, start_index, end_index, freq):        series_left = self.feature_left.load(instrument, start_index, end_index, freq)        series_right = self.feature_right.load(instrument, start_index, end_index, freq)        return np.abs(series_left - series_right)

只需要实现_load_internal之后,注册给初始化函数即可:

cls._setup_kwargs.update({"custom_ops": [Diff, Distance]})



03 成长感悟——ABZ的人生规划体系


ABZ适合多数工薪族出身的普通人。

ABZ是呢?

就是人生需要三个计划:

A计划是你的正职,就是你的工作,你谋生的岗位工作,有公司给你发工资。

B计划就是当下流行的“斜杠”计划。即不冒裸辞的风险,又可以探索人生更多的可能性。

Z计划是保底计划,这里特别指被动收入在你收入结构中的占比。

试想,一个人如果失业或者创业失败,但还有两套房可以收租,那么对于他而言,压力还好。这里的房租就是“被动收入”。我之前定制过一个“500万年化10%的大类资产配置计划”。如果达到这样一个金融资产状况,这里的Z计划相当于有一个小财务自由的兜底,那你做很多事情,选择起来是比较有底气的。

Z计划一般就是理财计划为主。

其实在有了一些的储蓄积累之后,多数人都有一些理财计划,收益率高低与冒多少风险的区别罢了。


好的A与B计划,是可以相互支撑的。

李笑来做新东方教英语,业余写了两本教学相关的书,一是单词二是作文。准备B计划的过程可以有效提升在A正职中的能力,A中积累的人气和经验,又可以很好的支撑B计划的展开。这是非常棒的“斜杠”。


有人在互联网公司做运营,然后把运营经验形成教程,在公众号,专栏里输出,与李笑来的例子类似,把正职中的经验形成自媒体时代的产品。


另外还有一种就是海量阅读,比如宋鸿兵写货币战争,涂子沛写大数据,彭小六教阅读等。


B计划之核心还是”独家“技能的产品化。

李笑来的技能是英语培训能力,时间管理,做时间的朋友的思考。

宋鸿兵读过很多财经历史的书以及有讲故事的能力。

彭小六是自己读过的几千本书,总结出的阅读方法论。


有某个技能独家以及成体系的思考,借媒体的杠杆将其产品化。

如果正好有一个独家技能最好,比如算法能力,编程能力,设计,运营,销售等,另外还有一个普适的方法就是“海量阅读”,这个技能对所有人适用


小结:

qlib做了不少贴心的,智能量化里需要使用的功能,值得好好深度挖掘。

中年焦虑与危机,还是由于没有好好规划,ABZ计划适合多数人。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章