购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 要想富,先配库

我们在前面小节中唠叨了很多内容,相信很多读者朋友也有和小瓦有一样的想法:说了这么多,我们到底怎么开始呢?下面就给小瓦安排一些动手的环节。过去人们常说“要想富,先修路”。也就是说,只有搞好基础设施建设,才能带动经济发展。在量化交易这个环节,基础设施就是我们使用的工具了。下面咱们就带小瓦一起,把需要的软件环境配置好。

1.3.1 Anaconda的下载和安装

鉴于小瓦唯一会使用的编程语言是Python,我们选择可以支持Python的工具。目前比较主流的编辑器包括PyCharm、Jupyter Notebook等。考虑到小瓦现在主要使用的操作系统是Windows,所以强烈建议小瓦直接安装Anaconda。原因很简单,Anaconda内置了Python解释器和Jupyter Notebook,而且习惯使用PyCharm的读者朋友也可以直接调用Anaconda中的Python解释器,非常方便;更重要的是,Anaconda内置了很多常用的数据科学库,免去了我们手动安装这些库的过程(要知道如果自己在Windows系统中手动安装这些库是非常痛苦的)!

下面我们就来教会小瓦如何下载和安装Anaconda,对这部分已经有了解的读者朋友可以跳过本小节,直接阅读后面的内容。

首先,小瓦需要访问Anaconda官方网站:http://www.anaconda.com,单击右上角的Download按钮,如图1.1所示。

图1.1 Anaconda官网

单击Download按钮之后,会进入版本选择页面。小瓦使用的是Windows系统,所以这里选择了Python 3.x的Windows 64位版本,如图1.2所示。

图1.2 选择正确的Anaconda版本

这里,读者朋友可以根据自己操作系统的情况来选择版本:如果你使用的是苹果电脑,就选择macOS版本的Anaconda;如果是Ubuntu或Linux系统,就选择Linux版本的Anaconda。

等Anaconda的安装文件下载完毕后,双击“安装文件”即可开始安装程序。在安装过程中,各选项均保持默认设置即可。安装完成后,小瓦的“开始”菜单里就会出现图1.3所示的新图标。

图1.3 “开始”菜单中的新图标

Anaconda3(64-bit)目录下有若干个快捷方式。小瓦可以单击Anaconda Navigator来启动程序,也可以单击Jupyter Notebook来单独启动Notebook程序;如果需要安装新的库,可以启动Anaconda Prompt并使用“pip install”命令来进行安装。

在后面的内容中,小瓦使用最多的就是Jupyter Notebook了,所以下面我们简单来介绍一下Jupyter Notebook的基本操作。

1.3.2 Jupyter Notebook的基本使用方法

小瓦在单击图1.3中的Anaconda Navigator图标之后,就可以看到如图1.4所示的界面。

图1.4 Anaconda Navigator界面

在图1.4中,单击Jupyter Notebook图标下方的Launch按钮,就可以启动Jupyter Notebook,如图1.5所示。

图1.5 Jupyter Notebook的启动按钮

单击Launch按钮,系统默认浏览器会自动弹出,并进入Jupyter Notebook的初始页面,如图1.6所示。

图1.6 Jupyter Notebook的初始页面

在进入图1.6所示的页面之后,通过单击右上方的New按钮可以新建一个Notebook文件,如图1.7所示。

图1.7 新建Python 3的Notebook文件

单击New下拉按钮之后,会出现一个下拉菜单,我们在下拉菜单中选择Python 3,就会打开一个新的浏览器选项卡,如图1.8所示。

图1.8 新建的Python 3 Notebook文件

现在新的Python 3 Notebook文件就创建成功了。接下来我们来输入第一行代码:

     print('小瓦加油!你会成功的!')

按Shift+Enter组合键,就可以在Jupyter Notebook中执行代码,如图1.9所示。

图1.9 使用Jupyter Notebook执行的第一行代码

到此,小瓦对于在Jupyter Notebook中创建Python 3文件,以及如何输入和执行代码已经掌握了。下面我们给小瓦增加一点难度——针对真实的股票数据集进行一些简单的操作。

1.3.3 用真实股票数据练练手

在这一小节中,小瓦就开始使用真实数据集来进行练习了。这里需要用到一个获取金融数据的库——pandas_datareader。需要注意的是,编写本书时,Anaconda并没有内置这个库,因此小瓦需要单独安装这个库。这个库的安装非常简单,只要在Jupyter Notebook的单元格中输入下面这行代码就可以了:

     !pip3 install pandas_datareader –-upgrade

运行这行代码,程序会自动下载这个库并完成安装。

注意:由于写作本书所使用的环境是Python 2.x和Python 3.x并存的,因此此处指定使用pip3 install。如果读者朋友的电脑只安装了Python 3.x,则直接使用pip install即可。

如果想检查datareader是否安装成功,则可以输入下面的代码:

     #导入datareader并重命名为web
     import pandas_datareader as web
     #查看datareader的版本信息
     web.__version__

运行代码,可以看到程序给我们返回datareader的版本号如下:

     '0.8.1'
1.下载股票数据

如果读者朋友也得到了这个结果,说明datareader已经安装成功。接下来我们使用datareader获取一只股票的数据,输入代码如下:

运行代码,会得到如表1.1所示的结果。

表1.1 使用datareader获取的股票交易数据

【结果分析】 如果读者朋友也得到了与表1.1相同的结果,说明数据下载成功。在表1.1中,第一列Date是交易日的时期,后面依次是当日股票的最高价、最低价、开盘价、收盘价、成交量和调整后的收盘价。由于1月1日是元旦,这一天是没有交易数据的。

2.最简单的数据处理

下面我们来做一点简单的处理工作。大家知道,股票每日的涨跌是用当日的收盘价减去前一个交易日的收盘价来计算的。例如,2020年1月3日的收盘价约为86.20元,1月2日的收盘价约为86.12元,则1月3日当天,该股票较前一个工作日上涨了8分钱。这样的话,可以在数据表中添加一个字段,用来表示当日股价较前一日的变化。输入代码如下:

     #将新的字段命名为diff,代表difference
     #用.diff()方法来计算每日股价变化情况
     data['diff'] = data['Close'].diff()
     #检查一下前5行
     data.head()

运行代码,会得到如表1.2所示的结果。

表1.2 添加diff字段的数据表

注:NaN表示无数据。

【结果分析】 从表1.2中可以看到,我们成功地添加了diff字段,以表示该股票每日的价格变化情况。例如,在1月6日当天,该股票收盘价较上一交易日下跌了约6角;而1月7日当天,该股收盘价较上一交易日上涨了约5角5分。通过添加这个字段,我们即可直观地看出股票每日的价格变动。

注意:为了便于展示,表1.2中省略了部分字段。

3.设计最简单的交易策略

到这里,小瓦提出了一个问题。我们可以设置一个最简单的交易策略:如果当日股价下跌,我们就在下一个交易日开盘前挂单买入;反之,如果当日股价上涨,我们就在下一个交易日开盘前挂单卖出。循环进行这个步骤,我们不就可以赚钱了吗?

说实话,这个策略听起来还挺不错。我们先不论其是否可行,就单纯地用代码来试试。要实现这个策略,首先我们来创建一个新的字段——Signal(交易信号)。如果diff字段大于0,则Signal标记为1;如果diff字段小于或等于0,则Signal标记为0。输入代码如下:

     #此处会用到numpy,故导入
     import numpy as np
     #创建交易信号字段,命名为Signal
     #如果diff值大于0,则Signal为1,否则为0
     data['Signal'] = np.where(data['diff'] > 0, 1, 0)
     #检查是否成功
     data.head()

运行代码,我们会得到如表1.3所示的结果。

表1.3 添加了Signal字段的数据表

【结果分析】 从表1.3中可以看到,使用np.where()可以让程序判断每日股价是上涨还是下跌:如果上涨,则交易信号为1,代表卖出;否则交易信号为0,代表买入。这样我们就得到了最简单的交易信号。

4.交易信号可视化

在得到了交易信号之后,我们可以再来实现最简单的可视化,这样我们就可以在图像中直观地看到什么时候买入,什么时候卖出了。可视化的代码部分如下:

运行代码,我们会得到如图1.10所示的结果。

图1.10 交易信号的可视化

【结果分析】 从图1.10中可以看到,倒三角所处的位置是股票收盘价较上一个交易日上涨的时刻,代表卖出;正三角所处的位置是股票收盘价较上一个交易日下跌的时刻,代表买入。直观来看,在这个时间范围内,股价整体呈现出下跌天数大于上涨天数的情况。假设小瓦使用这个交易策略,且每次买入和卖出的股票数量相同的话,那么她持有这只股票的仓位会越来越高。

当然,我们不会真的让小瓦使用这个简单的策略去进行实盘交易,只是通过这些步骤帮助她熟悉一下使用Python进行一些简单的交易数据处理与可视化的方法。至于某种策略会带来怎样的回报,还要通过回测(backtesting)来进行评估。关于回测的具体方法,我们会在后面的章节进行介绍。 9veGy33T3uB/8w2YXdIIzo6gWmiAM36IlF0TuLA7UnUf5BHBwYVkjaVu8GQRwP9W

点击中间区域
呼出菜单
上一章
目录
下一章
×