1. 理解Qlib特征工程的核心价值
如果你正在探索量化投资领域,一定会遇到一个关键问题:如何从原始的市场数据中提取有效的特征?传统方法可能需要依赖TA-Lib这样的技术指标库,或者手动编写复杂的计算逻辑。而Qlib提供的表达式引擎,彻底改变了这个局面。
我第一次接触Qlib时,最让我惊喜的是它统一了特征计算和标签生成的流程。想象一下,你不再需要为每个指标单独编写代码,而是可以用类似Excel公式的方式,直接表达复杂的计算逻辑。比如计算5日动量,只需要写$close/Ref($close,5)-1,系统就会自动处理所有股票、所有时间点的计算。
这种设计带来的最大优势是可扩展性。在机器学习场景中,我们经常需要同时计算上百个特征。如果用传统方法,光是管理这些指标的代码就会成为噩梦。而Qlib的表达式系统让这一切变得异常简单——你只需要维护一个清晰的表达式列表,剩下的工作都交给框架处理。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从基础表达式到复杂因子
2.1 表达式引擎基础操作
Qlib的表达式语法非常直观。基本运算符包括加减乘除(+, -, *, /),逻辑比较(>, <, ==等),以及各种数学函数。举个例子,计算当日振幅可以写成:
python复制amplitude = '($high - $low)/$close'
更强大的是内置的时间序列函数。比如计算20日移动平均:
python复制ma20 = 'Mean($close, 20)'
这些表达式可以直接用在QlibDataLoader中:
python复制from qlib.data.dataset.loader import QlibDataLoader
fields = ['$close', '($high - $low)/$close', 'Mean($close, 20)']
names = ['close', 'amplitude', 'ma20']
data_loader_config = {
"feature": (fields, names),
"label": (['Ref($close, -2)/Ref($close, -1) - 1'], ['label'])
}
data_loader
