logo资料库

零基础python代码策略模型实战(中信建投证券).pdf

第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
资料共36页,剩余部分请下载后查看
C H I N A S E C U R I T I E S R E S E A R C H 证券研究报告·金融工程深度报告 [table_main] 零基础 python 代码策略模型实战: 金融工程专题报告模板 ——大数据人工智能研究之七 重要观点 本文概述 本文主要介绍了 python 基础、爬虫、与数据库交互、调用机器学 习、深度学习、NLP 等。分别介绍了各个模块的安装,环境的搭 建等。并且以机器学习选股为例,把各个模块连贯起来,核心代 码基本都有详尽的解释。 大数据 AI 时代,python 无往不胜 Python 的包装能力、可组合性、可嵌入性都很好,可以把各种复 杂性包装在 Python 模块里,非常友好的供调用。Python 资源丰富, 深度学习如 keras,机器学习如 sk-learn,科学计算如 numpy、 pandas,自然语言处理如 jieba 等。 Python 将极大提高工作效率 无论是科学计算,还是图形界面显示;无论是机器学习还是深度 学习;无论是操作 excel,txt 等还是连接数据库;无论是搭建网站 还是爬虫;无论是自然语言处理还是打包成 exe 执行文件,python 都能快速完成。以最少的代码,最高效的完成。 人人可编写人工智能模型 人工智能给人感觉难于入手,重要原因是机器学习、深度学习、 自然语言处理等门槛太高;python 则以最简洁的方式,让你快速 使用人工智能相关算法。本文以实战为目的,对模块的安装,搭 建环境,核心代码等进行了详细的介绍。 人工智能选股模型策略 以传统因子滚动 12 个月值为特征值,个股下一期按收益大小排 序,排名前 30%作为强势股,排名靠后 30%作为弱势股。用机器 学习算法进行训练预测。用当期因子作为输入,预测未来一个月 个股相对走势的强弱。根据个股的相对强势,我们把排名靠前 20%的作为多头,排名后 20%的作为空头进行了研究,样本外 20090105 到 20171130 期间,行业中性等权年化多空收益差为 16.45%,年化波动率为 7.34%,最大回撤为 10.84%。 金融工程研究 [table_invest] 丁鲁明 dingluming@csc.com.cn 021-68821623 执业证书编号:S1440515020001 研究助理:喻银尤 yuyinyou@csc.com.cn 021-68821600-808 发布日期: 2018 年 03 月 08 日 市场表现 [table_indextrend] 相关研究报告 [table_report] 18.02.02 大数据人工智能研究之六:机器学习因 子有效性分析 17.10.18 大数据研究之五:大数据、机器学习、 深度学习在投资领域应用的方法论概述 17.08.16 大数据研究之四:基于新闻热度的周期、 成长、消费风格轮动配置 17.03.08 大数据研究之三:新闻情绪选股的多空 差策略 17.03.02 大数据研究之指标构建:机器学习之贝 叶斯文本分类算法的实现 16.10.12 大数据研究体系之择时篇:基于新闻热 度的多空策略 请参阅最后一页的重要声明 HTTP://RESEARCH.CSC.COM.CN
金融工程研究 金融工程专题报告 目录 一、Python 介绍 ....................................................................................................................................................... 4 1.1 Anaconda(Python IDE)的安装 ................................................................................................................ 4 1.2 Python 基础知识简介 ............................................................................................................................... 5 二、Python 的科学计算库 ....................................................................................................................................... 7 2.1 Numpy 库 ..................................................................................................................................................... 7 2.2 Pandas 库 ................................................................................................................................................... 7 2.3 Scipy 库 ..................................................................................................................................................... 9 2.4 Matplotlib 库 ......................................................................................................................................... 10 三、Python 的爬虫相关库 ......................................................................................................................................11 3.1 Scrapy 库 ................................................................................................................................................. 12 3.2 BeautifulSoup 库 ................................................................................................................................... 13 3.3 Pyquery 库 ............................................................................................................................................... 14 四、Python 的数据交互 ......................................................................................................................................... 14 4.1 Python 与数据库的交互 ......................................................................................................................... 14 4.2 Python 与 csv、excel 和 txt 文件的交互 ............................................................................................ 15 4.3 Python 与 Wind 客户端的交互 .............................................................................................................. 17 五、Python 自然语言的处理 ................................................................................................................................. 17 5.1 jieba 库 ................................................................................................................................................... 17 六、Python 与机器学习 ......................................................................................................................................... 19 6.1 Scikit-learn 库 ..................................................................................................................................... 19 6.2 分类算法,以朴素 Bayes 为例 .............................................................................................................. 20 6.3 回归算法:以 Logistic 为例 ............................................................................................................... 21 6.4 聚类算法:以 k-means 为例 ................................................................................................................. 22 七、Python 与深度学习 ......................................................................................................................................... 23 7.1 Keras 框架 ............................................................................................................................................... 23 7.2 长短期记忆网络 ...................................................................................................................................... 24 7.3 卷积神经网络 .......................................................................................................................................... 26 八、人工智能因子打分策略 ................................................................................................................................. 27 8.1 策略代码实战 ......................................................................................................................................... 27 8.2 策略结果(以 Logistic 为例) ............................................................................................................... 31 九、Python 股票策略打包成 Exe 文件 ................................................................................................................. 32 9.1 运用 pyinstaller 打包成 exe .............................................................................................................. 32 十、模型代码编写建议 ......................................................................................................................................... 32 请参阅最后一页的重要声明 HTTP://RESEARCH.CSC.COM.CN 1
金融工程研究 金融工程专题报告 图目录 图 1:Anaconda 界面介绍 ............................................................................................................................... 4 图 2:Matplotlib 库示例图 .............................................................................................................................11 图 3:简单爬虫流程图 .................................................................................................................................. 12 图 4:csv、excel 数据示例 ............................................................................................................................ 16 图 5:txt 数据示例 ......................................................................................................................................... 16 图 6:LSTM 神经元结构 ............................................................................................................................... 25 图 7:人工智能选股多空收益差策略净值 .................................................................................................. 31 请参阅最后一页的重要声明 HTTP://RESEARCH.CSC.COM.CN 2
金融工程研究 金融工程专题报告 表目录 表 1:Python 数据类型 .................................................................................................................................... 5 表 2:Python 函数语法 .................................................................................................................................... 5 表 3:Python 函数举例 .................................................................................................................................... 6 表 4:Python lambda 表达式举例 ................................................................................................................... 6 表 5:Python math 模块举例 ........................................................................................................................... 6 表 6:Python numpy 库函数举例 .................................................................................................................... 7 表 7:Python pandas 库函数举例 .................................................................................................................... 9 表 8:Python Scipy 库函数举例 .................................................................................................................... 10 表 9:Python Matplotlib 库示例 .................................................................................................................... 10 表 10:Python Scrapy 库爬虫举例 ................................................................................................................ 13 表 11:BeautifulSoup 库操作步骤 ................................................................................................................ 13 表 12:BeautifulSoup 爬虫案例 .................................................................................................................... 13 表 13:pyquery 爬虫案例 .............................................................................................................................. 14 表 14:Python 与 MySQL 的交互操作条目 ................................................................................................. 15 表 15:Python 与 SQL Server 的交互操作条目 ........................................................................................... 15 表 16:Python 与 csv、excel 的交互 ............................................................................................................ 16 表 17:Python 与 txt 的交互 .......................................................................................................................... 17 表 18:Python 与 windPy 的交互 .................................................................................................................. 17 表 19:Python jieba 库常见的操作 ............................................................................................................... 18 表 20:sklearn 库示例(以线性回归为例子) ................................................................................................. 20 表 21:朴素 Bayes 算法 sklearn 库实现 ....................................................................................................... 21 表 22:Logistic 回归算法 sklearn 库实现 ..................................................................................................... 22 表 23:kmeans 算法 sklearn 库实现 .............................................................................................................. 23 表 24:LSTM 示例 ......................................................................................................................................... 26 表 25:卷积神经网络代码示例 .................................................................................................................... 27 表 26:提取数据库核心代码 ........................................................................................................................ 28 表 27:数据预处理核心代码 ........................................................................................................................ 29 表 28:机器学习模块(以 knn 为例) ........................................................................................................ 30 表 29:计算 IC 核心代码 .............................................................................................................................. 30 表 30:结果入库核心代码 ............................................................................................................................ 31 请参阅最后一页的重要声明 HTTP://RESEARCH.CSC.COM.CN 3
一、Python 介绍 金融工程研究 金融工程专题报告 Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于 1989 年发明。有以 下优点简单、易学、免费开源、可移植性、解释性强;缺点为单行语句输出、同 C++和 Matlab 比运行速度较慢。 Python 有较为强大的标准库和模块,方便用户进行调用:如科学计算的 Numpy、Pandas、Scipy 库;如机器学 习和深度学习的 Scikit-learn、Keras 库;如爬虫的 Pyquery、BeautifulSoup、Scrapy 库。Python 的应用领域较为 广泛包括 Web 开发、人工智能、云计算、网络爬虫,游戏开发等。 1.1 Anaconda(Python IDE)的安装 Python 的集成开发环境(IDE)有很多,如 Pycharm、Anaconda、eclipse。其中 Anaconda 是用于科学计算较好 的 IDE,支持多种操作系统如 windows、Mac、Linux 等。Anaconda 有如下优势:使用方便,可以自由转化成 Matlab、R 等相关类似界面,非常友好;自带安装了一些计算标准库和模块,可以直接调用而且具有强大的库 管理器。 下载以及安装 anaconda 可以从以下资源中获取: •anaconda 官方网站:https://www.anaconda.com/download/#macos。 下载安装完成后,打开 Spyder 图标,可以看到如下图的界面:其中①为编辑栏菜单,可以进行 run 等各项 操作;②为脚本编辑框,即在里面编写代码;③为变量观察框,可以单独查看变量的情况;④为结果控制窗口, 可以看到运行结果,也可以在其中执行语句。 图 1:Anaconda 界面介绍 数据来源:中信建投证券研究发展部 请参阅最后一页的重要声明 HTTP://RESEARCH.CSC.COM.CN 4
1.2 Python 基础知识简介 1)Python 内置数据类型 金融工程研究 金融工程专题报告 ① Python 的内置数据类型有很多种,包括 Number(数字)、String(字符串)、List(列表)、Tuple(元组)、 Dictionary(字典)、Bool(布尔)等。数字类型主要分为 int(整数型)、long(长整型)、float(浮点 型)和 complex(复杂型);列表是一种可修改的集合类型,其元素可以是数字、字符串等基本类型, 也可以是列表、元组、字典等集合对象,甚至可以是自定义的类型;元组类型和列表一样,也是一种 序列,与列表不同的是,元组是不可修改的;字典类型是一种键值对的集合。 表 1:Python 数据类型 数据类型 Number(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) Bool(布尔) 数据来源:中信建投证券研究发展部 2)Python 函数 举例 25 'Hello World!' ['name', 2, [1, 2]] ('age', 1, 2) {'a': 1, 2: ['a_a']} True, False 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段。函数的作用是提高应用的模块性 和代码的重复利用率。Python 提供了许多内建函数,比如 print()。但也可以自己创建函数,这被叫做用户自定 义函数。定义函数的规则如下: ① 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(); ② 任何传入参数和自变量必须放在圆括号中间,圆括号中间可以用于定义参数; ③ 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明; ④ 函数内容以冒号起始,并且缩进; ⑤ Python 函数的语法格式如下表 2,具体函数举例如表 3: return[表达式]结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。 表 2:Python 函数语法 def function_name(parameters): """函数_文档字符串""" function_suite return [expression] 数据来源:中信建投证券研究发展部 请参阅最后一页的重要声明 HTTP://RESEARCH.CSC.COM.CN 5
金融工程研究 金融工程专题报告 表 3:Python 函数举例 >>>import math >>>def quadratic(a, b, c): """二次方程求根""" x1 = (-b + math.sqrt(b * b - 4 * a * c)) / (2 * a) x2 = (-b - math.sqrt(b * b - 4 * a * c)) / (2 * a) return x1, x2 >>>answer = quadratic(1, 2, 1) >>>print(answer) (-1.0, -1.0) 数据来源:中信建投证券研究发展部 Python 除了正常的函数调用之外,还使用 lambda 来创建匿名函数。其特点如下:1.lambda 只是一个表达式, 函数体比 def 简单很多;2.lambda 的主体是一个表达式,而不是一个代码块;3.lambda 函数拥有自己的命名空间, 且不能访问自有参数列表之外或全局命名空间里的参数;4.虽然 lambda 函数看起来只能写一行,却不等同于 C 或 C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。lambda 表达式举例如表 4: 表 4:Python lambda 表达式举例 >>>y = lambda x: x - 1 >>>print(y(2)): 1 数据来源:中信建投证券研究发展部 3)Python 模块 Python 中有一个概念叫做模块(module),这个和 C 语言中的头文件以及 Java 中的包很类似,比如在 Python 中要调用 sqrt 函数,必须导入 math 这个模块。在 Python 中用关键字 import 来导入某个模块,比如 import math 就导入了 math 模块。在调用 math 模块中的函数时,必须这样引用:模块名.函数名。在 Python 中,每个 Python 文件都可以作为一个模块,模块的名字就是文件的名字。 表 5:Python math 模块举例 math.exp(x) 返回 e 的 x 次方 math.pow(x, y) 返回 x 的 y 次方 math.floor(x) 返回不大于 x 的整数 math.fabs(x) 返回 x 的绝对值 math.fmod(x, y) 返回 x%y(取余) 数据来源:中信建投证券研究发展部 请参阅最后一页的重要声明 >>> math.exp(2) 7.38905609893065 >>> math.pow(5,3) 125.0 >>> math.floor(5.8) 5.0 >>> math.fabs(-5) 5.0 >>> math.fmod(5,2) 1.0 HTTP://RESEARCH.CSC.COM.CN 6
金融工程研究 金融工程专题报告 二、Python 的科学计算库 Python 的科学计算包有很多,常见的有 Numpy 库,Pandas 库,Scipy 库和 Matplotlib 库,其中 Numpy 库主 要提供矩阵计算的功能;Pandas 库主要提供带标签列(columns)和索引(index)的数据结构之间的计算功能;Scipy 库可以当做是 Numpy 库的升级,是基于 Numpy 构建的一个集成了多种数学算法和方便的函数的 Python 模块; Matplotlib 库主要提供图形可视化的功能。 2.1 Numpy 库 Numpy 是 Python 的一个科学计算的库,提供了矩阵运算的功能,其一般与 Scipy、matplotlib 一起使用。其 实,list 已经提供了类似于矩阵的表示形式,不过 Numpy 为我们提供了更多的函数。操作方法有以下几种: 1) 导入模块; 2) 以 list 或 tuple 变量为参数产生一维或者多维度的数组; 3) 通过 reshape 方法,创建一个只改变原数组尺寸的新数组,原数组的 shape 保持不变; 4) arange 函数通过指定开始值、终值(不包括)和步长来创建一维数组; linspace 函数通过指定开始值、终值(包括)和元素个数来创建一维数组; 5) 6) 合并数组可以分为 vstack(垂直方向)和 hstack(水平方向)操作; 表 6:Python numpy 库函数举例 >>>import numpy as np >>>a = np.array([1, 2, 3, 4]) >>>print(a) [1 2 3 4] >>>b = a.reshape((2, 2)) >>>print(b) [[1 2] [3 4]] >>>c = np.arange(0, 1, 0.2) >>>print(c) [0 0.2 0.4 0.6 0.8] >>>d = np.linspace(0, 3, 4) >>>print(d) [0 1 2 3] >>>e = np.hstack((b, b)) >>>print(e) [[1 2 1 2] [3 4 3 4]] 数据来源:中信建投证券研究发展部 2.2 Pandas 库 请参阅最后一页的重要声明 HTTP://RESEARCH.CSC.COM.CN 7
分享到:
收藏