玩Python这么久了,小编写过Python基础教程,写过技巧经验,写过爬虫,数据库,数据分析,趣味案例等等。今天我们来写一个量化的小策略,一起领略一下Python的强大魅力。
01.金融股市基础知识介绍
金融工具主要包括了股票,期货,黄金,外汇,基金等几种手段。对于个人来讲,基金和股票是大家接触到最多的金融工具。基金是指将自己的钱财交付给基金经理,由基金经理帮助我们来实现理财。这样的理财方式优点就是比较稳妥,但是收益一般较小。而股票则是个人通过购买上市公司的股份,来获得该公司的收益,从而获得利益。
这里,我们按照地区来对股票进行分类。
按照地区分类,股票分为了A股,B股等几种常见的股票类型,其中“T+1”指的是当天买入的股票,要到下一个交易日才能卖出,同时A股还设置了涨跌幅,避免了股票过快的上涨和下跌。
上图中展现的就是K线图,其中,收盘价高于开盘价的被称为阳线,反之则被称为为阴线。在很多的股票软件上,我们都可以看到K线图的身影。
MA线(均线):MA线指的是移动平均线,它是由一段时间的开盘价(也可以是收盘价)之和除以这段时间的交易日总天数得到的数据连接成一条线得到的,例如日线MA5指的是前5个交易日的开盘价的和除以5。
可以看到,计算的交易日越长,MA线呈现出更加平滑的状态,波动幅度也就越小。根据计算的交易日数量的不同,又可分为日均线指标,季均线指标以及年均线指标。
-
5天和10天的是短线操作的参照指标,叫做日均线指标;
-
30天和60天的是中期均线指标,叫做季均线指标;
-
120天和240天的是长期均线指标,叫做年均线指标。
02.量化策略
对金融以及股票的基础知识有了一个了解之后,接下来就进入到我们的量化投资主题。所谓的量化投资,是利用计算机技术并且用一定的数学模型去实践投资理念,实现投资策略的过程。而量化投资也有以下的几点优势:
-
能够避免主观情绪,人性的弱点和认知偏差,更加客观
-
能够同时包括多角度的观察和多层次的模型
-
及时跟踪市场变化,不断发现新的统计模型,寻找交易机会。
-
在决定投资策略后,通过回测验证量化策略的效果。
所谓的一个量化策略,就是指通过一套固定的逻辑来分析、判断和决策,自动化的进行股票交易。
而量化策略的周期也包含了五个部分:
A:产生策略想法,学习相关的知识;
B:利用程序实现量化策略;
C:进行量化策略的回测/模拟交易
D:实盘交易
E:根据表现来判断是优化策略还是放弃策略。
03.实战分析
接下来,我们就先简单的实现一个策略,看一下效果如何。
本次的量化策略,我们针对的是茅台的股票(代码:600519)。这里,菜鸟哥向大家介绍一个非常好用的库Tushare。我们可以借助Tushare库来获取到指定股票的开盘价,收盘价,最高价以及最低价的信息。
为了养成良好的量化策略周期意识,我们按照量化策略的周期,来进行策略的执行。
1).策略的制定
我们的策略很简单,从2015年1月1日开始,每月的第一个交易日都买入100股的股票,每年的最后一个交易日卖出所有的股票,到今天为止,收益是多少钱?
2).程序实现量化策略
明确策略之后,接下来就是对于策略的实现,程序用到的库如下图所示。
首先,我们利用Tushare库来获取茅台股票的信息,然后通过pandas保存到本地,并进行读取。
上图的程序中,需要注意的是在读取csv文件时,将date列作为我们的索引,同时将date列按照日期格式进行读取,并只读取开盘价,收盘价等四列内容,因为我们后续的策略只需要用到这四列的内容。读取到内容可以看到,茅台股票的第一个交易日是从2001年的8月27日开始。
通过对于策略的分析,我们首先需要将股票的数据缩小到2015年以后,然后获取到每月第一个交易日的信息,以及每年最后一个交易日的信息。程序如下图所示。
接下来就是对于策略的实现,程序如下图所示:
-
程序的第5行是从2015年开始进行循环;
-
第6行计算的是当年买股票所花的成本;
-
第7行计算的则是一年所购买的股票总量。
-
如果当年不是2021年的话,就在当年最后一个交易日将一年所买到的股票全部卖出,并计算所赚的收益(8-12);
-
第14行和第15行代码分别给出的是2021年的股票收益以及将2021年购买股票所花的钱加到总开销上去;
程序最后输出的结果可以看到。自2015年开始到现在,买股票花费了618.7万元,收益则是达到了92.5万元。
这一个最为简单的策略,也能够得到正的收益,这也是得益于茅台股票的好行情,要是换一个股票,很可能这种简单的策略就会得到负的收益。
双均线策略
在简单的策略验证完成后,接下来,我们就来实现一个经典的量化策略:双均线策略。
双均线策略可以概括为两句话:
金叉:短期均线上穿长期均线,买入信号
死叉:短期均线下穿长期均线,卖出信号
那么何为金叉,何为死叉呢?我们来看下面这张图。
上图中,MA5在8月5日附近从下向上穿过MA60的线,这叫做上穿长期均线,两条线的交汇称为金叉,是买入的信号;在8月26日左右,MA5在从上向下穿过MA60的线,叫做下穿长期均线,两条线的交汇称为死叉,是卖出的信号。
而金叉和死叉利用的就是短期均线的波动幅度大于长期均线。同时,金叉和死叉的日期一定是按照101010的方式出现的,即金叉后面一定是死叉,然后后面又是金叉。否则的话,两条线是不可能存在交点的,大家可以仔细想想是不是这个道理呢?
04.模拟交易
明确了双均线策略的原理后,接下来就是量化策略的制定。
初始资金10万元,从2015年1月1日开始,每碰到一次金叉,就尽可能的买入股票(按照100股为计算单位,例如买100股,200股,300股),每碰到一个死叉就将所有的股票卖出,到今天为止,收益是多少钱?
我们还是以茅台股票为例。为了让大家更加清楚程序,菜鸟哥使用python语法来实现量化的策略,不去使用高阶的pandas函数。
首先,我们的短期均线采用ma5,长期均线采用ma30。下图程序就是ma5以及ma30的节点计算。
程序中的第3行和第6行,分别以前5天以及前30天的交易日数据来计算均线数值,并保存到df当中。然后我们画出ma5和ma30以及收盘价的曲线,来直观的观察金叉和死叉。
图中展示的是2015年4月到8月一段时间内的ma5和ma30的曲线。接下来我们通过程序来将金叉和死叉的日期提取出来。
程序中,通过判断前一个交易日与后一个交易日中,ma5和ma30的数值对比来判断交易日是否为金叉或者是死叉,然后将它们的时间分别添加到相应的列表中去。
最后,我们根据策略来进行模拟交易,程序如下图所示。
第6行程序按照一个金叉一个死叉的规律,将金叉日期和死叉日期进行了融合;
然后针对每一个交叉点(第8行),计算当日的股价(第9行);
如果当天是金叉,则尽可能多的买入股票,并将本金减去买入的股票金额,同时计算买入了多少股。(10-13行)
如果当天是死叉,则将全部的股票卖出,并将本金加上卖出股票所赚的钱,同时将持股数量清零。(14-16行)
最后是计算到今天的交易日为止,卖出所有股票,将所有的资金进行计算后,减去最初的本金10万元后,就是赚取的金钱(18-20行)。
可以看到,利用双均线策略的量化交易,从2015年至今,依靠10万元本金,就能赚取57万元。相比于第一个随意指定的策略,收益提高了很多。体现了量化交易策略的重要性和强大的能力。
5.总结
小编今天从基础的金融和股票的知识介绍,再到量化策略的制定,手把手的带领大家进行了一个经典的量化策略的实现。上面的分享只是给大家展现了Python的强大魅力,并不能作为投资参考。
关于Python学习指南
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。
👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费
】
点击免费领取《CSDN大礼包》:Python入门到进阶资料 & 实战源码 & 兼职接单方法 安全链接免费领取
![](https://i-blog.csdnimg.cn/blog_migrate/039ce0c890de8abf5b267e611f5c4fbf.png)