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库里,我们要先筛选出日期。然后对这些日期计算 今天收盘比昨天高这个规则。而且可以是一段时间如此的。

这里就很难预先计算了。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐