【华泰金工】人工智能7:人工智能选股之Python实战20170919.pdf
《【华泰金工】人工智能7:人工智能选股之Python实战20170919.pdf》由会员分享,可在线阅读,更多相关《【华泰金工】人工智能7:人工智能选股之Python实战20170919.pdf(39页珍藏版)》请在冰豆网上搜索。
谨请参阅尾页重要声明及华泰证券股票和行业评级标准1证券研究报告证券研究报告金工研究/深度研究2017年09月19日林晓明林晓明执业证书编号:
S0570516010001研究员0755-82080134陈烨陈烨010-56793927联系人1金工金工:
人工智能选股之人工智能选股之Boosting模型模型2017.092金工金工:
人工智能选股之随机森林模型人工智能选股之随机森林模型2017.083金工金工:
周期三因子定价与资产配置模型周期三因子定价与资产配置模型2017.08人工智能选股之人工智能选股之Python实战实战华泰人工智能系列之七介绍介绍Python安装方法、安装方法、与机器学习相关的包与机器学习相关的包以及常用命令以及常用命令Python语言是目前机器学习领域使用最广泛的编程语言之一,拥有众多优秀的包和模块,并且相对简单易学。
我们将简单介绍Python语言的特性,常用命令,以及和机器学习相关的包,例如NumPy,pandas,scikit-learn等,希望帮助有一定编程基础的读者迅速上手Python语言。
机器学习机器学习选股选股框架框架与多因子选股框架类似,具有一定优越性与多因子选股框架类似,具有一定优越性机器学习中最为主流的方法监督学习,其核心思想是挖掘自变量和因变量之间的规律。
我们将经典多因子模型稍加改造,以机器学习的语言描述。
在训练阶段,根据历史的因子值X和收益r,训练监督学习模型r=g(X,f),得到模型自由参数的估计量f。
在测试阶段:
根据最新的因子值X、参数估计量f和监督学习模型g,预测下期收益r。
机器学习方法相较于线性回归的优越之处在于:
首先,机器学习可以挖掘数据中的非线性规律;其次,正则化的引入能够筛选出最有效的自变量;再次,参数优化的过程能够遴选出预测力最强的模型。
将机器学习选股将机器学习选股代码拆分成十代码拆分成十二二个子模块个子模块进行详尽进行详尽讲解讲解我们将机器学习选股代码拆分成十二个子模块,包括:
模块导入、参数设置、数据读入、数据标记、数据预处理、模型设置、模型训练、模型预测、模型评价、策略构建、策略评价和结果保存。
每个子模块我们将展示代码并且逐句进行讲解。
报告中展示的代码是完备且成体系的,可以根据需要进行整合,构建一套完整的机器学习选股模型。
风险提示:
通过Python编写人工智能选股算法受到数据库架构、网络环境、计算机硬件条件限制,报告中代码经移植后可能不能正常运行;通过人工智能算法构建选股策略是历史经验的总结,存在失效的可能。
相关研究相关研究金工研究/深度研究|2017年09月19日谨请参阅尾页重要声明及华泰证券股票和行业评级标准2图表目录图表目录图表1:
AnacondaPrompt命令行窗口.5图表2:
AnacondaPrompt安装包.6图表3:
AnacondaPrompt更新包.6图表4:
help命令.7图表5:
列表的操作.7图表6:
调入NumPy包.8图表7:
创建数组.8图表8:
构建等差数列.8图表9:
数组重塑.9图表10:
计算平方根.9图表11:
计算算术平均值.9图表12:
计算标准差.9图表13:
矩阵乘法.10图表14:
数组各元素相乘.10图表15:
四舍五入取整.10图表16:
调入pandas包.11图表17:
构建Series.11图表18:
构建DataFrame.12图表19:
DataFrame排序.12图表20:
去除缺失值.13图表21:
数据切片.13图表22:
DataFrame合并.14图表23:
csv数据文件展示.16图表24:
机器学习程序架构.16图表25:
模块导入代码实例.17图表26:
参数设置代码实例.17图表27:
数据标记代码实例.19图表28:
数据读取代码实例.20图表29:
数据预处理代码实例.22图表30:
回归模型的数据预处理.23图表31:
数据标准化代码实例.23图表32:
SVM模型设置代码实例.23图表33:
线性回归模型设置代码实例.24图表34:
SGD模型设置代码实例.24图表35:
SVM模型训练代码实例.24图表36:
线性回归模型训练代码实例.25图表37:
SGD模型训练代码实例.25图表38:
SVM模型预测代码实例.26图表39:
线性回归模型预测代码实例.27图表40:
SGD模型预测代码实例.27金工研究/深度研究|2017年09月19日谨请参阅尾页重要声明及华泰证券股票和行业评级标准3图表41:
模型评价代码实例.28图表42:
训练集和交叉验证集模型评价结果展示.28图表43:
测试集模型评价结果展示.30图表44:
策略构建代码实例.30图表45:
策略评价代码实例.31图表46:
累积超额收益净值图.32图表47:
策略评价结果展示.33图表48:
数据保存代码实例.33图表49:
csv结果文件展示.34图表50:
XGBoost编译-命令行调用.35图表51:
XGBoost编译结果.36图表52:
XGBoost安装-命令行图示.36图表53:
XGBoostmodule命令行信息.37金工研究/深度研究|2017年09月19日谨请参阅尾页重要声明及华泰证券股票和行业评级标准4本文研究导读本文研究导读在华泰人工智能系列的前六篇报告中,我们首先对经典的机器学习方法进行了全面梳理,随后系统地测试了广义线性模型、支持向量机、朴素贝叶斯方法、随机森林和Boosting模型,同时围绕机器学习模型构建选股策略。
为了使更多的读者有机会接触到机器学习选股的实务化操作,本篇报告我们将对机器学习选股的完整代码进行详细讲解,希望对本领域的投资者产生有实用意义的参考价值。
本文主要包含以下几个环节:
1.Python语言是目前机器学习领域使用最广泛的编程语言之一,拥有众多优秀的包和模块,并且相对简单易学。
本篇报告的第一部分,我们将简单介绍Python语言的特性,常用命令,以及与数据分析、机器学习相关的包和模块,例如NumPy,pandas,scikit-learn等,希望帮助有一定编程基础的读者迅速上手Python语言。
2.第二部分,我们将介绍机器学习多因子模型的问题背景,将经典的多因子模型转换成机器学习的语言进行描述。
同时我们也将初探机器学习多因子模型的数据格式和程序框架,为后续的代码实现部分作铺垫。
3.第三部分,我们将机器学习选股代码拆分成12个子模块,包括:
模块导入、参数设置、数据读入、数据标记、数据预处理、模型设置、模型训练、模型预测、模型评价、策略构建、策略评价和结果保存。
每个子模块我们将展示代码并且逐句讲解。
金工研究/深度研究|2017年09月19日谨请参阅尾页重要声明及华泰证券股票和行业评级标准5Python介绍介绍Python语言语言“Lifeisshort,youneedPython.”BruceEckel自从1991年诞生以来,Python已经成为一种非常受欢迎的编程语言。
与C/C+等编译型语言不同,Python是一门解释性语言,即Python程序不需要编译,在运行时才翻译成机器语言,每执行一次都需要翻译一次,因此在运算效率方面不如编译型语言。
但是,Python不需要关注程序的编译和库的链接等问题,开发工作相比于编译型语言更加轻松;同时,解释型语言易于移植,适合跨平台的开发。
作为一门简单易学、适合阅读的编程语言,Python在机器学习的实践中得到了广泛的应用,其主要有以下优点:
1.免费,开源,有大量的社区讨论交流资料。
2.可以专注于逻辑、算法本身,而不是纠结于如何实现某个数据结构。
自身的数据结构应用简单方便,可以大大提高开发效率。
3.包(package)、库(library)和模块(module)众多,例如NumPy、SciPy、pandas、Matplotlib可以很方便地进行数据处理,scikit-learn、TensorFlow、Theano、Keras都是机器学习领域流行的包。
Anaconda及包的安装及包的安装安装安装AnacondaAnaconda是一个用于科学计算的Python发行版本,支持Linux、Mac、Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本Python并存、切换以及各种第三方包安装问题,并且已经包含了Python和相关的配套工具。
Anaconda界面友好、使用方便、具有强大的包管理与环境管理功能,推荐本领域的研究者使用。
Anaconda的下载安装可以通过以下两个途径:
1.官网安装:
https:
/www.continuum.io/downloads按照提示,下载并安装Anaconda。
2.清华镜像源:
https:
/Anaconda已经内嵌了很多包,但在实际运用中,我们可能会用到一些非自带的包。
接下来我们学习在Windows下如何安装和更新包:
首先,Windows用户在“开始”中打开Anaconda的文件夹,点击AnacondaPrompt,得到如下图的命令行窗口。
图表图表1:
AnacondaPrompt命令行窗口命令行窗口资料来源:
华泰证券研究所金工研究/深度研究|2017年09月19日谨请参阅尾页重要声明及华泰证券股票和行业评级标准6安装包安装包安装包的命令为condainstall,具体用法为在AnacondaPrompt中输入condainstall+包的名字。
下图展示了安装scikit-learn包的过程,Anaconda将自动搜取包的源。
当出现对话“Proceed?
”时,输入“y”,表示确认安装,等待Anaconda自动安装即可。
图表图表2:
AnacondaPrompt安装包安装包资料来源:
华泰证券研究所更新包更新包更新包的命令为condaupdate。
具体用法为在AnacondaPrompt中输入condaupdate+包的名称。
下图展示了更新pandas包的过程。
当出现对话“Proceed?
”时,输入“y”,表示确认更新,等待Anaconda自动更新即可。
图表图表3:
AnacondaPrompt更新包更新包资料来源:
华泰证券研究所金工研究/深度研究|2017年09月19日谨请参阅尾页重要声明及华泰证券股票和行业评级标准7Python和常用包和常用包初探初探获取帮助获取帮助授人以鱼不如授人以渔。
当我们不清楚某个命令或者函数的用法时,使用help命令获取帮助是不错的选择,具体用法为help(函数名)。
图表图表4:
help命令命令资料来源:
华泰证券研究所上面的例子中,我们使用help查询print函数的用法。
Python返回print的语法以及每个参数的用法。
由于Python和包的迭代较快,很多纸质和网络教材编写时依据的Python版本难以保证是最新版,有的函数已被弃用或者用法发生改动,因此我们推荐有一定英语阅读能力的读者使用help命令获取最新版的帮助信息。
缩进缩进在介绍Python常用包和数据类型之前,我们首先介绍Python代码的缩进。
Python的一大特色就是严格的代码缩进要求,与别的语言中缩进只是为了方便代码阅读与修改不同,在Python中每行代码前的缩进都有语法和逻辑上的意义。
这样的强制要求增加了代码的可读性,也使得代码总体较为美观。
通常我们选择4个空格或1个Tab来进行缩进,Anaconda中的SpyderIDE也会在写代码过程中自动进行缩进。
如果要进行多行代码的