引言:
邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助。
如果有人说你是百年难得一见的量化投资天才,要送你一本秘籍,你信还是不信?
你是否有量化投资天赋我不知道,也没有秘籍。但本文可以测试你是否有量化编程的天赋。
我会用一个实际案例逐行讲解量化代码,编程零基础也能完全理解。
如果你看完后觉得很容易,甚至有一点热血沸腾想学编程,至少说明你对这方面是感兴趣的,并且可能还有一些天赋。
01
编程问题描述
1、某神秘事件
很多人会费心寻找股市上涨的征兆,并以此作为自己的买入依据。
这里就有一个神秘征兆,只要这些征兆发生,大盘未来5日会有较大的概率上涨。具体统计如下表:
事件发生后未来5日沪深300指数(代指大盘)平均涨幅0.7%左右,上涨概率也都大于55%,最多能到60%+
要知道在X场庄家靠51%+的胜率都能赚得盆满钵满,55%胜率的事件代表什么也就不言而喻了。
那这类神秘事件究竟是什么呢?
它就是「北向资金」单日净流入事件。图中事件1-4分别代表了北向资金单日净流入大于40亿、50亿、60亿和70亿。
北向资金大幅度净流入事件
北向资金大幅度净流入事件一旦北向资金单日净流入达到一定标准,我们就认为是一个不错的上涨征兆。
2、北向资金说明
可能还有朋友不了解北向资金是什么,这里做简单的说明。
北向资金图解
如上图所示,在香港的港交所,投资者可以使用港币交易其上市股票;在大陆的深交所和上交所,可以使用人民币交易在A股上市的股票。
从2014年起,A股和港交所开始尝试部分互通。全世界投资者可以用港币在港交所通过沪股通及深股通直接购买A股。
而因为上交所和深交所都在香港的北边,所以这些来自香港的投资被形象的称为北向资金。
3、北向资金数据统计
并且对于我们量化投资者非常友好的是,在香港交易所官网上会每日披露北向资金的交易明细数据。
香港交易所网址https://www.hkex.com.hk
例如上图中,2021年6月18日当天北向资金总共买入291亿、卖出309亿,总成交额为600亿,净流入负18亿(291-309)。
通过数据就能统计出北向资金单日净流入大于0的天数,观察大盘次日表现:上涨概率55%,平均涨幅0.15%。
统计时间:2014.11.17-2021.05.31
为了全面了解北向资金净流入,我继续统计了事件发生后大盘未来3日和5日的表现,同时将净流入标准从0依次扩大至100亿。
北向资金统计
观察上图发现,北向资金一旦发生净流入,未来几日大盘确实表现较好。这是一个很不错的股市征兆。
接下来,本文就会从数据收集开始,详细讲解如何运用Python写代码逐步得到上文统计图。
当然单凭统计结果是无法形成明确的买点、卖点的。关于用北向资金数据构建交易策略,可以看我这期视频。
点击文字观看视频
02
量化数据获取
在编写代码前我们首先要知道如何获取北向资金数据。
1、财经网站
最基本的可以去港交所官网下载北向资金交易明细数据。
港交所网址:www.hkex.com.hk
但上面的数据并未整理且无法直接下载,你需要用Python写爬虫代码去抓取相关数据。
所以我更建议你从主流财经网站上爬取数据,如东方财富网、新浪财经等。
上面有每日更新整理好的数据,爬取内容比港交所更优质。
东财数据网址:data.eastmoney.com/hsgt
2、量化小课堂
也可以到我们量化小讲堂网站进行下载,上面有各类A股和数字货币相关数据,其中就包含北向资金数据。
量化小讲堂:quantclass.cn/data/stock
需要的话可以加我xbx719,我会无偿送你一份最新数据。
3、数据展示
下载数据后得到可以直接使用的沪股通和深股通的Excel文件。
沪股通Excel
运用文件中包含的当日成交净买额(净流入)字段,可以统计不同情况下北向资金单日净流入的出现次数。
此外还需沪深300指数每日收盘价数据来计算涨跌幅,以统计大盘未来几日表现。
量化小讲堂同样提供指数的历史日线数据,且能永久免费获取。
量化小讲堂:quantclass.cn/data/stock
加我获取网址后,下载的数据如图所示,包含了2005年至今沪深300指数每日开高收低的价格数据。
沪深300指数历史日线数据
这样我们就整理好了所需数据:北向净流入和指数收盘价。
接下来就是我们真正硬核的内容:如何通过Python编程得到下方统计图。
真正的勇士可以继续看完逐行的代码讲解
03
编程思路
下面就是完整的编程思路文字版,需要的话也可以看视频版本:
60%胜率的短线信号!零基础python量化代码详解【量化投资邢不行啊】
编程部分从7:52起
1、数据初步处理
我们下载的数据(沪股通/深股通/沪深300)都以CSV格式存储,可用Excel打开。
正式讲解编程前,我先用Excel来演示数据处理的思路,看完就会发现编程操作大抵如此。
首先新建一个Excel,将沪深300表格中2014年11月17日之后的日期与close列(收盘价)数据复制过去。
沪深300指数数据
同样将沪股通和深股通的当日成交净买额列对照日期复制过去。
沪股通
深股通
沪、深当日成交净买额列相加形成北向资金当日净流入列,如下表:
初步处理后数据表格
2、数据统计
根据以上数据计算大盘在北向资金单日净流入事件触发后未来几日的表现。
要求次日表现,就用(次日收盘价-当日收盘价)/当日收盘价得到。如11月17日则为(2541.42-2567.1)/2567.1 = -1%,即跌幅1%。
同理可计算大盘未来3日和5日表现。
11月17日未来5日表现计算方式
选中北向资金当日净流入列,使用筛选功能,如要求大于10亿的事件出现次数(表中单位为百万),则输入1000。
筛选条件
筛选后如下图计数所示该事件出现655次,扣除表头后则为654次。
同理可得北向资金单日净流入各事件出现次数。
再次筛选各事件对应的次日/未来3日/未来5日的上涨次数,即涨跌幅大于0的次数。
继而用上涨次数/出现次数得到上涨概率。
最后针对未来N日表现列求平均值即可计算出对应的平均涨跌幅。
完成上述所有步骤后即可求出前文的统计图。
通过Excel处理数据其实并不麻烦,但思路却至关重要。写代码时你就会发现编程思路和手工操作Excel的思路完全一致。
04
代码详解
到此我们正式进入代码逐行讲解环节,有了上面的铺垫,零基础也可以轻松听懂。
如果有朋友连Python都不会安装,可以看我这期文章。 收藏|最最最最简单、最最最最详细的Python和Pandas安装教程
这个教程经过千锤百炼,可以帮你避免很多不必要的坑。你可以加我xbx719,我把这篇文章及相应的安装包发给你。
按照文章流程安装好Python后,打开Anaconda程序中的Spyder。
Spyder界面
接下来就是真枪实弹的操作部分了。
先用read_csv函数读取原始数据,并将数据时间段定在2014年11月17日以后,代码如下:
读取数据代码
接着用sum函数将代表沪/深股通数据的当日成交净买额h和当日成交净买额s相加得到北向资金净流入。
计算净流入
之后用Excel讲解中提到的公式计算出N日涨跌幅数据,只要会简单的数学运算即可。
N日涨跌幅
最后写出筛选数据的代码,计算北向资金单日净流入各事件出现次数以及未来几日上涨次数、上涨概率、平均涨跌幅等信息。
完整代码运行结果如下:
05
后记
我强烈建议你看完文章、视频后亲自写一下代码加深感受。这样才能对整个流程有更直观的认识。
本文相关代码和数据都可以加我xbx719获取。
以上就是本次代码讲解的大致内容。碍于篇幅还有许多细节无法一一展开。更详细的内容推荐你去看本文的相关视频:
60%胜率的短线信号!零基础python量化代码详解【量化投资邢不行啊】
联系作者: