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=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计划适合多数人。

### 使用自定义数据集 为了在Qlib中加载并使用自定义数据集,需遵循特定流程来准备和处理这些数据。首先,确保所使用的数据已经按照Qlib的要求进行了预处理[^3]。 #### 数据转换 对于自定义数据集而言,其原始格式可能各异,因此需要将其转化为Qlib能够识别的形式。这一步骤主要依赖于`dump_bin.py`脚本完成。该脚本负责读取源文件中的金融时间序列信息,并依据指定配置生成`.bin`二进制文件作为目标存储介质。此过程仅保留基本字段如开盘价(open)、最高价(high)、最低价(low)、收盘价(close)以及成交量(volume)[^3]。 ```bash python dump_bin.py --input_path /path/to/custom/data.csv --output_dir ~/.qlib/qlib_data/my_custom_dataset/ ``` 上述命令假设输入是一个CSV表格形式的市场行情记录;而输出路径则指向本地磁盘上的某个目录用于保存转换后的二进制版本。 #### 加载器设置 一旦完成了从外部资源到内部表示法之间的转变之后,则可以通过调整默认参数的方式让QLib知道新加入的数据位置: ```yaml data_loader: class: "QlibDataLoader" module_path: "qlib.data.dataset.loader" kwargs: freq: "day" inst_list_file: "~/.qlib/qlib_data/my_custom_dataset/instruments.lst" feature_root: "~/.qlib/qlib_data/my_custom_dataset/features/" label_root: "" ``` 这段YAML片段展示了如何修改`QlibDataLoader`类实例化时所需的初始化选项,特别是指定了新的股票列表(`inst_list_file`)特征提取结果存放处(`feature_root`)[^1]。 #### 配置环境变量 为了让程序能够在运行期间自动定位至正确的资料库地址,在启动实验之前还需适当设定几个重要的环境变量: ```shell export QLIB_ROOT_PATH=~/.qlib/qlib_data/my_custom_dataset export QLIB_DATA_DIR=$QLIB_ROOT_PATH/dataset/day ``` 以上操作使得后续调用API接口获取历史报价变得简单快捷,同时也便于维护多套不同类型的测试样本集合[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI量化投资实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值