量化交易(也称自动化交易)是一种应用数学模型帮助投资者进行判断,并且根据计算机程序发送的指令进行交易的投资方式,它极大地减少了投资者情绪波动的影响。量化交易的主要优势如下:
量化交易的核心是筛选策略,策略也是依靠数学或物理模型来创造,把数学语言变成计算机语言。量化交易的流程是从数据的获取到数据的分析、处理。
因为我们不生产数据,所以只能从外部获取数据。其获取途径是第三方开源库tushare。
使用tushare获取历史股票数据
tushare是一个免费、开源的Python财经数据接口包。其主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程,能够为金融分析人员提供快速、整洁和多样的便于分析的数据,以减轻他们在数据获取方面的工作量。
安装tushare库,在JupterNotebook下输入以下命令:
重启kernel,然后输入以下命令。
返回值说明如下。
turnover:换手率(注:指数无此项)。
使用tushare获取所有股票即时数据
个股历史交易数据属于延迟数据。面对即时变动的价格数据,我们可以使用更加便捷的当日实时行情,以便在Python量化中快速把握行情,选择出当目符合条件的优秀股票。
下面使用第三方库tushare中的get_today_all()两数获取所有股票的即时数据(如果是节假日,即为上一交易日)。代码如下:
因为先前本书采集的都是规整股票数据,因此本章要介绍的数据预处理就是预先剔除掉不符合条件的股票数据,然后对剩余股票进行优化筛选。本章主要使用的是Pandas库,读者应该着重理解筛选思路。
清洗掉ST股票
ST股票通常表示对财务状况或其他状况出现异常的上市公司股票,对其交易要进行特别处理(SpecialTreatment)。由于“特别处理”,在简称前冠以ST,因此这类股票称为ST股。
哪支股票的名称前加上ST,就是给市场一个警示,该股票存在投资风险,起警告作用,但这种股票风险大,收益也大,如果加上*ST,就表示该股票有退市风险,要警惕的意思,具体就是在2021年4月左右,如果公司向证监会交的财务报表连续了年亏损,就有退市的风险。股票的交易规则也由报价日涨跌幅限制为涨幅5%、跌幅5%。
我们要回避这类“地雷股”(ST股票),因而可以使用如下代码来清洗掉ST股票。
清洗掉没成交量的股票
下面开始清洗没成交量的股票,在原来的基础上增加代码如下:
其运行结果为:
Index出现了调行现象,即为去掉成交量小手15万手的股票。
清洗掉成交额过小的股票
成交额是成交价格与成交数量的乘积,它是指当天已成交股票的金额总数。成交最的至少取决于市场的投资热情。我们每天看大盘,一个重要的指标就是大A股成交量是否超过一万亿元,超过即为成交活跃。
筛选成交额超过1亿元的股票,代码如下:
用户可以对1亿元这个参数进行调参,不过笔者不是特别支持。因为将成交额变大即是对大盘股产生偏重,而前面成交量的筛选也己经对大盘股的成交量进行了偏重筛选,这样双重筛选下来,就会全部变成大盘股,数据偏置严重,没有合理性。预处理的思想也是先将数据进行简单的筛选。笔者认为后期的策略相对于这里的调参更为重要,策略是日后交易的核心。
清洗掉换手率低的股票
换手率=某一段时期内的成交量/流通总股数×100%。一般情况下,大多数股票每日换手率在1%~2.5%之间(不包括初上市的股票)。70%股票的换手率基本在3%以下,3%就成为一种分界。
当一支股票的换手率在3%~7%之间时,该股进入相对活跃状态。当换手率在7%~10%之间时,则为强势股的出现,股价处于高度活跃中。
筛选换手率超过3的股票,代码如下:
换手率商一般意味股票流通性好,进出市场比较容易,不会出现想买买不到、想卖卖不出的现象,具有我较强的变现能力。然而值得注意的是,换手率较高的股票,往往也是短线资金追逐的对象,投机性较强,股价起伏较大,风险也相对较大。
将换手率降序排列并保存数据
换手率是最重要的一个指标,所以将筛选出来的股票换手率进行降序排列并保存,以备日后取证与研究。
将序排列用sort_values()两数,保存用to_csv()函数。这两个函数都很常用,也比较简单。代码如下:
以后,只要运行如下代码,就会将得到的csv_data显示出来:
模块化后,将去掉大量重复代码,重加专注一个功能,也会增强代码的可读性。
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!