引言:

邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助。

下图中橙色曲线是等比缩放的沪深300指数。

(6年4倍策略)

蓝色曲线是一个择时策略的资金曲线。该策略对沪深300进行择时,即明确选择出针对大盘的买、卖时机。

(策略信号)

比如上图中,8月25至8月28日策略是看涨的,那此时就买入指数,同期指数上涨9.84%,获得相应收益(已扣除手续费)。

随后,8月31至9月8日策略看跌指数,此时就卖出指数。同期指数下跌0.97%,而策略因为卖出避免了亏损

上述买卖信号都是策略自动产生的。如严格按策略操作,假设初始投入1元,扣除手续费,从2015年至今会变成3.90元。

6年翻4倍年化收益高达24.73%。总体表现还行,远远跑赢大盘。

那这个策略的原理是什么?看涨和看跌的信号是如何产生的?用到了哪些数据、数据又是如何获取的?本文将会就此进行详细讲解。

01

什么是北向资金?

这个策略是基于「北向资金」数据开发的择时策略

关于北向资金有一定交易经验的朋友多少都会有所耳闻,这里做简单的说明。

(北向资金图解)

如上图所示,在香港的港交所,投资者可以使用港币交易其上市股票;在大陆的深交所上交所,可以使用人民币交易在A股上市的股票。

从2014年起,A股和港交所开始尝试部分互通。全世界投资者可以用港币在港交所通过沪股通及深股通直接购买A股。

而因为上交所和深交所都在香港的北边,所以这些来自香港的投资被形象的称为北向资金

1.北向资金特征

(北向资金交易限制)

随着越来越多的北向资金正在购买A股,其成交额占A股总成交额的比例,已经稳定维持在10%以上,影响力逐渐扩大

(北向资金影响力日益扩大)

2.北向资金数据获取

而对于我们量化投资者非常友好的是,在香港交易所官网上会每日披露北向资金的交易明细数据

(港交所www.hkex.com.hk公布每日北向数据)

例如上图中,2021年6月18日当天北向资金总共买入291亿、卖出309亿,总成交额为600亿,净流入负18亿(291-309)。

我们收集了这些数据,每日实时更新。并且放在了网站上供大家下载。

有了这些数据过后,我们就可以对北向资金进行深入研究,看看对投资是否有帮助。

3.北向资金的市场研究

如上图中研究展示的,北向资金单日净流入大于0的情况下,未来1、3、5日沪深300的平均涨跌幅都为正,同时上涨的概率也都大于50%。

千万不要小看这个数据,要知道在X场庄家的胜率可能也就只有51%+,但这已经能让他赚的盆满钵满了。

再看我去年发在朋友圈的一张图:

(朋友圈很多优质内容,要统一整理下吗?)

上方的深色曲线,代表北向为主的外资持股比例最高的100支A股等权重指数,它的涨幅远超代表剩余所有A股的下方浅色曲线。

4.学会抄北向作业

以上的初步研究,都很好的证明了北向资金作为整体的投资能力。

投资最幸福的事情,就是在这个市场上有个人一直对,你照着抄就可以。

虽然北向资金不是每次都赚钱,但的确是「聪明钱」,跟着买成功率较高。

(做量化,就图一个懒字)

当然,市场上也不止北向一个学霸,我们还有其它资金的作业可以抄:如公募基金、产业资金、国家队......

如果文章阅读量超过100的话,之后会再讲一下如何抄其它资金的作业。

插个题外话。刚刚说了第一幸福的事,那么第二幸福的事是什么呢?聪明的朋友已经想到了:

有人一直错,那我反着抄就可以了。

他卖我买他买我卖。那么是哪股资金一直错呢?这说出来就有点伤人了,咱们私下交流,私下交流。

02

如何抄北向作业?

前面我们已经看到,北向资金很强的择时选股能力,那该如何通过北向资金来开发出文章开头的择时策略呢?

1.数据整理

首先获取北向资金数据(2014年11月17日至今):

再将数据再按照净流入从大到小排列,如下图:

(将数据按净流入从大到小排序)

可以看出最大的一天(2021.05.25)净流入247亿;最小的一天(2020.07.14)净流出150亿。

2.情绪划分

将排序后的数据平均分为三份:

(划分市场情绪)

如头部的509天(乐观情绪),北向资金一直净流入总体较大,可以认为市场情绪比较乐观。

中间的509天(中性情绪),北向资金净流入在2.9520.41亿之间,没有明确的看好或看跌。

最后的509天(悲观情绪),数据显示北向资金大部分处于净流出的状态,可以认为这些天是比较悲观的。

3.策略构建

划分好市场情绪过后,再根据三等分数据的阈值(2.95与20.41),构建我们的投资策略:

(将沪深300作为投资对象,构建策略)

每日收盘后计算当天北向资金的净流入值。再阈值(20.41、2.95)比较,进行不同的选择:

①净流入值 ≥ 20.41亿(乐观情绪),则次日开盘买入沪深300的ETF。

②净流入值 ≤ 2.95亿(悲观情绪),次日开盘卖出沪深300的ETF。

③2.95亿 ≤ 净流入值 ≤ 20.41亿(中性情绪),次日开盘保持原有仓位不操作。

4.举例说明

举个例子来详细说明下。

比如2017年6月6日这天,净流入为21.26,大于阈值20.41,属于乐观情绪则次日买入。6月7日净流入仍大于20.41,但之前已经买过了,继续持有。

到了6月9日,属于中性情绪。我们不进行任何操作,即继续持有。

等到12日,北向资金净流入为负,小于阈值2.95。属于悲观情绪,则于次日卖出。

5.策略表现

那这个策略的表现到底如何?我们通过Python用数据和代码来验证。

(代码运行结果)

代码运行结果具体得到上图,代表策略的蓝色曲线远远跑赢了代表沪深300的橙色曲线。北向资金择时策略的确效果斐然。

但你以为到这里就结束了吗?

真正重要的硬核内容还没开始呢!

不知道敏感的小伙伴们有没有看出来,其实我们这个策略的设计存在一个错误。

03
正确抄作业操作

1.策略陷阱

这个错误主要是两个阈值(2.95、20.41)的选择造成的。

我们基于2014年至2021年整段的数据,计算出参数2.95、20.41,并在整个策略回测过程中使用。这就有问题了。

假设现在时间回到2018年,我们使用该参数进行策略交易。但仔细想想,在2018年我们是无法获得后续数据来计算出该参数的。

使用该参数就相当于开了上帝视角。我们在设计策略的时候不自觉的使用了未来函数

未来函数:回测中使用了该时点无法得到的未来的数据。

未来函数就等于一个人带着现有的数据穿越回了过去。如果此时你还不能乱杀,就有点说不过去了。

2.新策略构建

那怎么修改策略才能避免使用未来函数呢?

在计算阈值的时候,我们只能使用过去的数据。

比如现在是2020年12月31日,此时计算阈值只能使用这一天之前的所有数据。

同样三等分后,得到和之前不同的阈值(2.33、18.88)。

同样的,我们可以得到在2018年、2016年、2015年随意选取的时间点的结果,如下图所示:

可以发现因为每一天都只使用截至当日的历史数据,所以每次得到的阈值都不同。

这就避免了未来函数的使用,这样开发出来的策略才是可靠可信的。

最后,重新修改我们的原策略:

(完善后策略)

每日收盘后,使用当日北向资金的最新数据和之前所有的历史数据,通过三等分的方法计算出每天的阈值a和b。其他步骤不变。

那么改进后的策略效果如何呢?我们用数据和代码来验证一下。

(策略所需代码)

我们可以发现,修正后策略所代表的橙色曲线仍是大幅跑赢代表沪深300的绿色曲线,且比使用了未来函数的蓝色曲线走势更好(这并不常见)。

在正确的策略中,净值从1涨到了3.9,6年大概翻了4倍;最大回撤20.35%,收益回撤比(年化收益/最大回撤)1.22。

只要收益回撤比大于1,就是值得进一步研究的策略。感兴趣的同学可以要了代码和数据后进一步优化,形成自己的策略。

04
策略查看方法

上述北向资金择时策略已经上线到我们网站,并且可以免费查阅

页面左侧是实时更新资金曲线,且每日资金曲线数据的完整Excel也可供下载。

同时你可以订阅右上角提醒,以便随时接收策略信号变更信息。

页面最下方是2015年至今每笔交易的详细历史记录。如果想要完全熟悉策略,强烈推荐你对照着行情软件揣摩每一笔交易。

(策略历史信号)

另外页面也展示了策略及同期大盘每年的收益对比。

(策略历年收益)

我们可以发现这个策略并不是每年都赚钱

2017年的时候它并没有跑赢大盘,当年沪深300涨了22%,这个策略却只涨了16%。

所以说,量化交易策略从来不是稳赚不赔的。

(策略风险分析)

再看上图的策略风险分析,它不仅可以给出最大回撤、胜率,还包括最大连续看错(8次)/看对(9次)次数等。

这个数据更多的告诉我们策略是有风险的,量化投资是追求大概率上的胜率。

妙用北向资金找出大盘买点、卖点,跟着操作6年4倍【附代码】- 邢不行相关推荐

  1. 4 妙用北向资金,跟着操作5年4倍

    本文是根据邢不行老师的视频实现的完整代码,请先学习邢老师的这一堂课: 妙用北向资金找出大盘买点 卖点,跟着操作5年4倍[量化投资邢不行啊]_哔哩哔哩_bilibili 第一步,使用同花顺的免费接口,下 ...

  2. mysql 创建相同数据库_mysql数据库找出相同数据MySQL常用操作

    一.MYSQL的命令行模式的设置:桌面->我的电脑->属性->环境变量->新建-> Path=";pathmysqlbin;"其中path为MySQL ...

  3. 北向资金能预示大盘涨跌?【附Python源码】

    01 引言 中国证监会于 2014 年和 2016 年分别批准了沪港通和深港通,建立了大陆和香港股市的互联互通机制,市场通常把沪股通和深股通的合计流入资金称为北向资金.换句话说,北上资金就是指从香港流 ...

  4. 从Excel文件中找出在TXT文件中没有出现的 行之_代码片段

    #从data.txt(Excel文件)中找出一些不在target.txt(TXT文件)文件行中出现的行. #定义一个函数,判断ls中的每个单词是否出现在了mystring中了.如果全部都在,返回真de ...

  5. java编程找出吸血鬼数字,Java 找到四位数的所有吸血鬼数字 基础代码实例

    Java 找出四位数的所有吸血鬼数字 基础代码实例 /** * 找出四位数的所有吸血鬼数字 * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最 ...

  6. java中两短行代码合并一行_帮忙啊!!!!找出两个Java文件相似程度超过某一%的代码行。...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 题目的要求是两个文件的行数相同是吗 百分比怎么算,根据字符来比较,以短的为准,计算两行代码拥有相同的字符数然后再除以短的那行代码的总字符数? 纯手打,可能 ...

  7. c语言12个小球,12个球找出其中一个坏球,不知道轻重,求详细代码谢了。。尽量加上注释...

    满意答案 #include #include /* lf:left side; rt:right side; ans:up/down/equal */ char lf[3][7], rt[3][7], ...

  8. Java黑皮书课后题第10章:*10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数

    10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 题目 破题 代码 运行结果 题目 10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 破题 类似编程 ...

  9. python counter 出现次数最少的元素_[PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法...

    问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...

最新文章

  1. Unity 摄像机搭配陀螺仪的使用
  2. easy ui example
  3. 《3》CentOS7.0+OpenStack+kvm云平台部署—配置Glance
  4. Android--Activity四种启动模式
  5. 魔百盒配置服务器信息,移动魔百盒网络设置方法
  6. Abstract class 与Interface 抽象类和接口
  7. 服务器固态盘装系统,怎么把固态硬盘设置为系统盘
  8. 如何正确在CSDN问答进行提问
  9. Ubuntu20.04--开机自动运行脚本(命令)--方法/实例
  10. Exchange会议室邮箱4种常见会议预定场景的介绍和设置
  11. php excel 导入图片,利用php实现读取excel中的图片
  12. 用电脑看电视的方法!!
  13. 复合牛奶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  14. Redis介绍与安装
  15. Android——自建CA证书,实现https请求
  16. 领域驱动设计实践框架-COLA的解读
  17. 集线器、网桥、交换机简介
  18. 【九九归一|算法强化】HOT 算法①
  19. python 读取邮件内容_python获取邮件内容(邮件内容为html)
  20. AT24C02和AT24C32的区别 I2C调试小技巧

热门文章

  1. 易观千帆 | 2022年10月银行APP月活跃用户规模盘点
  2. Android相机,YV12ToRGB24,rgbToBitmap
  3. 两台计算机只换硬盘可以吗,交换俩台不同配置电脑的硬盘急我想把俩个电脑的硬盘换一下,但是我 爱问知识人...
  4. python excel xlwt_Python读写Excel,擅用xlwt模块
  5. php公告栏系统,不间断上下循环滚动的公告栏效果
  6. docker Couldn‘t create temporary file /tmp/apt.conf.
  7. Java注解之 @Target、@Retention、@Documented简介
  8. python-pyperclip模块
  9. 当你输入一个网址的时候,实际会发生什么?
  10. 大数据分析结果告诉你:如何打造“爆款”文章?