1、安装:
pip install pyqlib
pyqlib依赖的包比较大,它的定位不只是一个量化开发包了,而是一个量化平台。
从数据存储,指标计算,量化模型,回测,模型,结果分析等都有完整的覆盖。
>>> import qlib
>>> qlib.__version__
0.8.6
特别说明,它依赖pytorch和lighgtGBM,一个是深度学习框架,一个是传统机器学习的前沿,说明这个框架定位AI量化平台是非常合适的。
2、数据准备
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn
scripts/get_data.py这个安装完成pip包是没有的,我从github上直接下载整个代码包,搁到开发环境中,一是里边有示例,脚本,二来这份代码还是值得好好读一读的。
把代码包下载到qlib-main里,当前目录创建文件夹:data,
使用如下命令,下载A股所有的日线数据(有没有包含退市的?):
python qlib-main/scripts/get_data.py qlib_data --target_dir ./data/cn_data --region cn
import qlib
# region in [REG_CN, REG_US]
from qlib.constant import REG_CN
provider_uri = "./data/cn_data" # target_dir
qlib.init(provider_uri=provider_uri, region=REG_CN)
把provider_uri指定我们的数据目录即可。
可以直接从数据中把某几支股票的数据读出来,返回来是一个复杂索引的pandas的dataframe,与我们自有的分析生态可以很好的结合,纯粹把qlib的数据层当做数据库也不错,由于是本地及内存计算,所以速度很快:
data = D.features(["sh600519"], ['$close'], start_time="20200101")
print(data)
data['$close'].plot()
import matplotlib.pyplot as plt
plt.show()
建立自己的数据——以可转债为例。
先通过tushare把400多支可转债的日线数据下载到本地csv,
python scripts/dump_bin.py dump_all --csv_path ~/.qlib/csv_data/my_data --qlib_dir ~/.qlib/qlib_data/my_data --include_fields open,close,high,low,volume,factor
python qlib-main/scripts/dump_bin.py dump_all --csv_path ./cb_quotes --qlib_dir ./data//cb_data --include_fields open,close,high,low,volume,factor --symbol_field_name ts_code --date_field_name trade_date
#使用--symbol_field_name可以指数symbole列,--date_field_name可以指定date列
筛选出可交易的列表:
比如昨天收盘价在120块以下的可转债的列表。
expressionDFilter = ExpressionDFilter(rule_expression='$close<130')
instruments = D.instruments(market='all', filter_pipe=[expressionDFilter])
instu = D.list_instruments(instruments=instruments, start_time='2022-08-02', end_time='2022-08-03', as_list=True)
print(instu)
这里的表达式,可以使用各种复合计算:
比如就是 ”收盘价比前一天收盘价高“
expressionDFilter = ExpressionDFilter(rule_expression='$close>Ref($close,1)')
假如我们这700多支转债是存在mongo库里,我们要先筛选出日期。然后对这些日期计算 今天收盘比昨天高这个规则。而且可以是一段时间如此的。
这里就很难预先计算了。