qlib 使用一
2 min read396 words

qlib 使用一

Finance

首先安装 pip install pyqlib

数据处理,每日更新维护的数据集 https://github.com/chenditc/investment_data/releases

wget https://github.com/chenditc/investment_data/releases/download/2025-10-15/qlib_bin.tar.gz mkdir -p ~/.qlib/qlib_data/cn_data tar -zxvf qlib_bin.tar.gz -C ~/.qlib/qlib_data/cn_data --strip-components=1 rm -f qlib_bin.tar.gz

https://gh-proxy.org/https://github.com/chenditc/investment_data/releases/download/2025-12-03/qlib_bin.tar.gz

获取指定时间的交易数据

import qlib from qlib.constant import REG_CN from qlib.data import D # 初始化 Qlib 环境 qlib.init(provider_uri="~/.qlib/qlib_data/cn_data", region=REG_CN) start_time = "2025-11-01" end_time = "2025-10-15" instruments = ["sz000651"] # 格力电器代码 fields = ["$open", "$close", "$volume", "$factor"] data = D.features(instruments, fields, start_time=start_time, end_time=end_time) data.columns = ['open', 'close', 'volume', 'factor'] print(data)
backtest_config = { # 1. 数据处理器配置(避免全局数据范围超界) "data_handler_config": { "start_time": "2010-01-01", # 数据加载起始时间 "end_time": "2020-12-31", # 数据加载结束时间 "fit_start_time": "2010-01-01", # 特征拟合起始时间(防数据泄露) "fit_end_time": "2015-12-31", # 特征拟合结束时间 "instruments": "csi300", # 标的池(沪深300) "freq": "day", # 数据频率(日线,与回测频率一致) # 特征配置(关键:所有 last() 必须带 offset) "feature": { "expr": [ "$close.last(1)", # 当日收盘价(last(1) 必传 offset=1) "$open.last(1)", # 当日开盘价 "$high.last(5).max()",# 最近5日最高价的最大值 "$volume.last(10).mean()" # 最近10日成交量均值 ], "names": ["close", "open", "high_5d_max", "volume_10d_mean"] } }, # 2. 信号配置(解决你之前的重采样报错) "signal_config": { "signal_expr": "close > open", # 信号逻辑:收盘价>开盘价(当日收阳) "resample": "last", # 信号重采样方法(若频率不一致时用) "resample_args": {"offset": 1}, # 关键:给 last() 传 offset=1(0.9.6 必加) "signal_name": "bull_signal" # 信号名称(自定义) }, # 3. 回测执行配置 "strategy_config": { "class": "TopkDropoutStrategy", # 策略类(Qlib内置:选前N个信号标的) "kwargs": { "topk": 50, # 选信号最强的50个标的 "n_drop": 5, # 每次调仓剔除5个最差标的 "signal_col": "bull_signal"# 关联信号列名 } }, # 4. 回测参数(手续费、调仓频率等) "backtest_config": { "start_time": "2016-01-01", # 回测起始时间(需在 data_handler 范围内) "end_time": "2020-12-31", # 回测结束时间 "freq": "day", # 回测频率(与数据频率一致,避免重采样) "account": 1000000, # 初始资金(100万) "benchmark": "SH000300", # 基准指数(沪深300) "commission_ratio": 0.0003, # 手续费(0.03%) "slippage_ratio": 0.0001 # 滑点(0.01%) } }

cum bench 基准累积收益率

cum return wo cost 不含交易费的投资组合累积收益率

cum return w cost 包含交易费的投资组合累积收益率

return wo mdd 不含交易费的累积收益最大回撤

return w cost mdd 包含交易费的累积收益最大回撤

cum ex return wo cost 不含交易成本基准下,投资组合的总超额收益

cum ex return w cost 计入交易成本基准下,投资组合的总超额收益

turnover 换手率

cum ex return wo cost mdd 不计交易成本,投资组合超额收益的最大跌幅

cum ex return w cost mdd 计入交易成本,投资组合超额收益的最大跌幅

上半部分的阴影表示 不含交易成本的累积收益所对应的最大亏损

下半部分的阴影表示 不含交易成本的超额收益对应的最大回撤

std 标准差

annualized_return 年化收益率

information_ratio 信息比率(Information Ratio – IR).

max_drawdown 最大回撤

excess_return_without_cost 不计交易成本累计超额收益 (CAR)

excess_return_with_cost 含交易成本的累计超额收益 (CAR)

ic 标签和预测分数之间的皮尔逊相关系数,在例子被公式化为 Ref($close, -2)/Ref($close, -1)-1

rank_ic 标签和预测分数之间的斯皮尔曼等级相关系数

https://blog.hejiangda.top/2024/02/04/22-06-00/

https://www.wuzao.com/document/qlib/component/report.html

https://zhuanlan.zhihu.com/p/553812642

link_preview

link_preview