百天计划之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=index data = 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计划适合多数人。