量化往期推荐

Easytrader 超简单的股市自动交易神器

Lean — 优秀好用的开源量化交易平台

30分钟教你搭建普罗监控系统—股票人气榜实时变化!

可转债交易薅羊毛策略 — Python 量化投资实战教程(10)

自定义MySQL数据流 — Python 量化投资实战教程(9)

A股回测“孕线”策略 — Python 量化投资实战教程(8)

Python 量化投资实战教程(7) — 孕线真的有用吗?

Python 量化投资原来这么简单(6) — 交易平均收益率

Python 量化投资原来这么简单(5) — A股回测KDJ策略

Python 量化投资原来这么简单(4) —KDJ 策略

量化投资原来这么简单(3) —A股回测MACD策略

量化投资原来这么简单(2)—MACD策略(+26.9%)

量化投资原来这么简单(1)

2020年9月,微软开源了AI量化投资平台Qlib的源代码,随后得到了不少的关注,Qlib的主要优势在于:

1.Python覆盖量化投资全过程,用户无需切换语言;内置许多深度学习算法模型,降低AI算法使用的门槛。

2.内置A股、美股数据接入通道,基于qrun能够自动运行整个工作流程,大大提高开发效率。

3.每个组件都是松耦合可以独立使用,用户能够自行选用某些组件。

Qlib相比于我们之前介绍的backtrader,那功能完善太多。backtrader相当于给你提供一个基本的量化框架,数据、策略、算法,你全部自己搞定。而Qlib则从数据、到策略、到算法都给了你全套的解决方案,你只需要加一点自己的想法,不需要管其他细枝末节的东西就能完成AI量化研究,非常方便。

下面我们就来试一下 Qlib 的安装和运行内置算法策略。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,请访问这篇文章:《超详细Python安装指南(传统)》或 《Python数据分析与挖掘好帮手—Anaconda》 进行安装,本文建议使用Anaconda。

由于qlib有许多许多依赖,如果你不想安装过程中出现问题,或者引起其他程序的运行问题,建议使用Conda创建一个你的量化投资虚拟环境:

conda create -n my_quant python=3.8

Qlib 仅支持 Python3.7 以上的版本且暂不支持 Python3.10; 另外 Python 3.9 版本不支持模型性能绘制,因此我选择创建Python3.8版本的虚拟环境。

(安装方式一)pip 安装:

pip install pyqlib

在pip安装的过程中如果遇到任何问题,请搜索引擎解决,如果无法解决,可以尝试下面的源码安装:

(安装方式二 (推荐))源码安装:

# 提前安装一些依赖
pip install numpy
pip install --upgrade cython# clone and install qlib
git clone https://github.com/microsoft/qlib.git && cd qlib
python setup.py install

如果你由于网络问题无法成功Clone项目,请在Python实用宝典公众号后台回复 Qlib 下载源代码。

Windows 机器在安装的时候可能会遇到下面这个问题:

这是因为安装 qlib 的依赖 — tables 时出现了编译错误,原因很多,我选择逃学,因此建议使用 tables 的 wheel 文件进行安装,这样就不需要编译了:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pytables

在上述网站下载适合你系统的 wheel 文件:

下载完毕后,输入以下命令:

pip install 你的文件路径/tables-3.6.1-cp39-cp39-win_amd64.whl

即可完成 tables 的安装,然后再执行一遍 python setup.py install 即可。

2. 数据准备

由于这套量化开源平台的作者是中国人,所以非常贴心地准备好了A股数据,大家可以输入命令直接下载:

# 1天级别数据
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn# 1分钟级别数据
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data_1min --region cn --interval 1min

如果你需要其他分钟级的数据,修改interval即可。

你可以使用crontab定时自动更新数据(来自雅虎财经):

* * * * 1-5 python <script path> update_data_to_bin --qlib_data_1d_dir <user data dir>

手动更新数据:

python scripts/data_collector/yahoo/collector.py update_data_to_bin --qlib_data_1d_dir <user data dir> --trading_date <start date> --end_date <end date>

3. 运行量化回测流程示例

Qlib 提供了一个名为  qrun  自动运行整个工作流程的工具(包括构建数据集、训练模型、回测和评估)。

你可以按照以下步骤启动自动量化研究工作流程并进行图形报告分析,Quant Research 工作流程:

Qrun  运行 lightgbm 工作流程的配置 workflow_config_lightgbm_Alpha158.yaml 如下所示:

cd examples # Avoid running program under the directory contains `qlib`
qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml

结果如下:

可以看到这里包括三个统计分析:benchmark return (基准收益) / excess return without cost(除去手续费的超额收益)) / excess return with cost(包含手续费的超额收益)。每个统计分析中都有如下5个参数:

  • mean: 异常收益的平均值

  • std: 异常收益的标准差

  • annualized_return: 年化回报

  • information_ratio: 信息比率

  • max_drawdown: 最大回撤

大家可以看到,这个内置的算法和策略,在不包括手续费的情况下,相比于基准收益年化回报略高,但是在把手续费等费用算上之后,比沪深300基准收益略逊一筹。

如果你想要自定义这个策略和算法的回测参数,你可以查看 workflow_config_lightgbm_Alpha158.yaml 的内容:

上滑查看更多代码

qlib_init:provider_uri: "~/.qlib/qlib_data/cn_data"region: cn
market: &market csi300
benchmark: &benchmark SH000300
data_handler_config: &data_handler_configstart_time: 2008-01-01end_time: 2020-08-01fit_start_time: 2008-01-01fit_end_time: 2014-12-31instruments: *market
port_analysis_config: &port_analysis_configstrategy:class: TopkDropoutStrategymodule_path: qlib.contrib.strategykwargs:model: <MODEL>dataset: <DATASET>topk: 50n_drop: 5backtest:start_time: 2017-01-01end_time: 2020-08-01account: 100000000benchmark: *benchmarkexchange_kwargs:limit_threshold: 0.095deal_price: closeopen_cost: 0.0005close_cost: 0.0015min_cost: 5
task:model:class: LGBModelmodule_path: qlib.contrib.model.gbdtkwargs:loss: msecolsample_bytree: 0.8879learning_rate: 0.2subsample: 0.8789lambda_l1: 205.6999lambda_l2: 580.9768max_depth: 8num_leaves: 210num_threads: 20dataset:class: DatasetHmodule_path: qlib.data.datasetkwargs:handler:class: Alpha158module_path: qlib.contrib.data.handlerkwargs: *data_handler_configsegments:train: [2008-01-01, 2014-12-31]valid: [2015-01-01, 2016-12-31]test: [2017-01-01, 2020-08-01]record: - class: SignalRecordmodule_path: qlib.workflow.record_tempkwargs: model: <MODEL>dataset: <DATASET>- class: SigAnaRecordmodule_path: qlib.workflow.record_tempkwargs: ana_long_short: Falseann_scaler: 252- class: PortAnaRecordmodule_path: qlib.workflow.record_tempkwargs: config: *port_analysis_config

参数比较多,大家借助翻译工具应该都能看懂。这里摘取华泰的一个研究报告,里面对参数做了具体的翻译:

为了方便用户使用,微软内置了许多模型,如上文我们用到的 gbdt 位于克隆的文件夹下的 qlib/contrib/model/gbdt.py:

注意:pytorch 开头的模型需要预先安装pytorch.

一个小问题,Qlib里,策略和算法的区别是什么?

大家注意到,Qlib这里,必须定义策略和算法两个配置,而在backtrader里面,我们更加重视策略,而非“算法”这个概念。那么这两者在Qlib中的区别是什么?我们看默认TOPK策略的源代码:

可以看到,默认的这个策略,选择了算法预测分数结果中排名 TOP K 的股票,也就是策略从算法得到的结果中去做筛选需要交易的股票。算法相当于生成一个新的可用于判断买入卖出的评判标准。这就是策略和AI算法这两者的最重要区别。

最后,得益于松耦合的代码设计,我认为 Qlib 是一个能够让不同层次的研究者各取所需的开源项目,是一个不可多得的量化开源平台,特别适合重度Python使用者,有兴趣的朋友可以试一下,未来我也会考虑出 Qlib 相关的使用教程,敬请期待。

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。

有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。

原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!

点击下方阅读原文可获得更好的阅读体验

Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

微软开源!世界首个AI量化投资平台 Qlib 基本使用教程相关推荐

  1. 微软 AI 量化投资平台 Qlib 体验

    华泰人工智能系列之四十 核心观点 本文介绍微软 AI 量化投资平台 Qlib 基础和进阶功能,对比传统量化策略 开发流程和 Qlib 提供的解决方案,提炼 Qlib 特色及优势,并探讨笔者使用 体会. ...

  2. 大白话微软人工智能AI量化投资平台Qlib试用体验

    进qq群 1125384417 ,交流Qlib技术 点此查看Qlib视频教程 ============================================= 最近微软研究院发布了一个融合了 ...

  3. 微矿Qlib:业内首个AI量化投资开源平台

    近期,微软亚洲研究院正式发布了 AI 量化投资开源平台"微矿 Qlib".这是微软亚洲研究院成立"创新汇"三年以来,在与金融行业的成员企业合作研究的基础之上,打 ...

  4. 三分钟玩转微软AI量化投资开源库QLib

    数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数 ...

  5. AI量化投资开源平台——Qlib(微矿)的学习使用笔记(随缘更新)

    零.Qlib的简介 可以查看以下链接了解Qlib的功能以及结构框架. 微矿Qlib:业内首个AI量化投资开源平台 官方GitHub仓库 一.Qlib环境安装 安装过程非常艰难,主要参考了以下资料,在此 ...

  6. ETF场内基金:AI量化投资最佳切入点(数据篇)

    原创文章第77篇,专注"个人成长与财富自由.世界运作的逻辑, AI量化投资". 关于量化的基础知识,前面说得差不多了. 后面要开始实战. 量化的细分市场很多,如下图所示: 再从风险 ...

  7. 《跟我学习AI量化投资》通过chatgpt进行选股,简单易懂,降低人为操作风险

    打开chatgpt,向其提问题,内容如下: 写一个Python程序,能够统计最近一个月涨幅达到30%以上的股票在最近一个月前的市值.成交额.阳线数量.振幅和继续形态(使用TA-Lib),请把每一个维度 ...

  8. 1分钟快速了解人工智能量化投资平台

    导语:欢迎大家来到BigQuant人工智能量化投资平台,本文将通过简短的介绍帮助大家快速认识BigQuant,快速了解人工智可以为投资者带来哪些价值,希望可以帮助大家快速建立起对BigQuant人工智 ...

  9. 国内主要量化投资平台

    这里记录一下国内主要的量化投资平台 JoinQuant聚宽量化交易平台 https://www.joinquant.com/ BigQuant - 人工智能量化投资平台 https://bigquan ...

最新文章

  1. JAVA GUI重要知识点学习心得
  2. shell自动安装mysql_RPM包安装mysql,采用shell脚本实现自动安装、配置与卸载
  3. [云炬python3玩转机器学习笔记] 3-12 数据加载和简单的数据探索
  4. android 随手记代码,用ExpandableListView写的随手记实例
  5. python的xpath用法_Python爬虫杂记 - Xpath高级用法
  6. 设置qt的QChart曲线背景色透明
  7. JavaScript 事件:Web 表单如何实现禁用右键、复制粘贴/剪切和输入框自动填充?
  8. php recordarray,php5.5新数组函数array-column使用实例
  9. final finally finalize 区别
  10. php里边的join,thinkphp中join用法
  11. NAACL 2018 | 最佳论文:艾伦人工智能研究所提出新型深度语境化词表征
  12. Unity怎么变中文
  13. 16进制发送 mqtt客户端调试工具_MQTT测试工具下载
  14. (10) IFC中的构件与空间结构(IfcRelContainedInSpatialStructure) (Industry Foundation Class)
  15. 关于Mac上无法进入/var/lib/docker/volumes/的解决方法
  16. 【Linux】ssh支持的加密算法有哪些?
  17. 信任,是从心底产生的感觉
  18. ZOJ 2975 Kinds of Fuwas(暴力)
  19. 神经网络中的矩阵运算,神经网络的神经元结构
  20. 模拟器录制视频 小技巧

热门文章

  1. 3344avd_AVD生根
  2. 多智能体中的图论——图论中的定义(一)
  3. BP神经网络的Java实现
  4. 大数据预测:未来最吸金的领域
  5. 基于Flexlive.CQP.Framework的C# 酷Q UDP实现
  6. java获取本周第一天的日期
  7. 【从RL到DRL】深度强化学习基础(四)——策略梯度中的Baseline,Reinforce与A2C的对比
  8. Oracle的定时任务
  9. 高并发写场景:秒杀系统库存扣减
  10. 买笔记本电脑如何避坑之接口篇