我一直都知道我会变得富有。
我认为自己从来没对此产生过一丝怀疑。 ——巴菲特
“菜鸟学Python”,第“520”篇原创
玩Python这么久了,菜鸟哥写过Python基础教程,写过技巧经验,写过爬虫,数据库,数据分析,趣味案例等等。已经不知不觉写了500多篇了,今天我们来写一个量化的小策略,一起领略一下Python的强大魅力。
金融工具主要包括了股票,期货,黄金,外汇,基金等几种手段。对于个人来讲,基金和股票是大家接触到最多的金融工具。基金是指将自己的钱财交付给基金经理,由基金经理帮助我们来实现理财。这样的理财方式优点就是比较稳妥,但是收益一般较小。而股票则是个人通过购买上市公司的股份,来获得该公司的收益,从而获得利益。
这里,我们按照地区来对股票进行分类。
按照地区分类,股票分为了A股,B股等几种常见的股票类型,其中“T+1”指的是当天买入的股票,要到下一个交易日才能卖出,同时A股还设置了涨跌幅,避免了股票过快的上涨和下跌。
上图中展现的就是K线图,其中,收盘价高于开盘价的被称为阳线,反之则被称为为阴线。在很多的股票软件上,我们都可以看到K线图的身影。
MA线(均线):MA线指的是移动平均线,它是由一段时间的开盘价(也可以是收盘价)之和除以这段时间的交易日总天数得到的数据连接成一条线得到的,例如日线MA5指的是前5个交易日的开盘价的和除以5。
可以看到,计算的交易日越长,MA线呈现出更加平滑的状态,波动幅度也就越小。根据计算的交易日数量的不同,又可分为日均线指标,季均线指标以及年均线指标。
5天和10天的是短线操作的参照指标,叫做日均线指标;
30天和60天的是中期均线指标,叫做季均线指标;
120天和240天的是长期均线指标,叫做年均线指标。
对金融以及股票的基础知识有了一个了解之后,接下来就进入到我们的量化投资主题。所谓的量化投资,是利用计算机技术并且用一定的数学模型去实践投资理念,实现投资策略的过程。而量化投资也有以下的几点优势:
能够避免主观情绪,人性的弱点和认知偏差,更加客观
能够同时包括多角度的观察和多层次的模型
及时跟踪市场变化,不断发现新的统计模型,寻找交易机会。
在决定投资策略后,通过回测验证量化策略的效果。
所谓的一个量化策略,就是指通过一套固定的逻辑来分析、判断和决策,自动化的进行股票交易。
而量化策略的周期也包含了五个部分:
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万元。相比于第一个随意指定的策略,收益提高了很多。体现了量化交易策略的重要性和强大的能力。
菜鸟哥今天从基础的金融和股票的知识介绍,再到量化策略的制定,手把手的带领大家进行了一个经典的量化策略的实现。上面的分享只是给大家展现了Python的强大魅力,并不能作为投资参考。
投资是一个艺术也是一门学问,其实量化菜鸟哥已经玩了有2年了,感受也是五味杂陈,量化是一把双刃剑,后面我会写一篇感悟篇。今天只是从技术上给大家的一个分享,好了,欢迎大家在留言区吱一声,记得给个三连,你的支持,才是我原创的动力。
大家也可以在留言区说说你想要了解的内容,也是我创作的一个方向。目前我和一些小伙伴组建了一个投资星球,一起讨论交流心得,我们已经默默的佛系运作了2个月。感兴趣也可以看看,不强求加入。
推荐阅读:
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|
年度爆款文案
1).卧槽!Pdf转Word用Python轻松搞定!
2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃
3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密
4).80行代码!用Python做一个哆来A梦分身
5).你必须掌握的20个python代码,短小精悍,用处无穷
6).30个Python奇淫技巧集
7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货
8).再见Python!我要学Go了!2500字深度分析!
9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片
点阅读原文,领AI全套资料