作者 独鹤先生

◆ ◆ ◆  ◆ ◆

近日,鹤先生在尝试,如何用 Matlab 来对交易市场(主要是股票)进行量化分析。

众所周知,对于大数据的处理一直是Python编程更方便,那我为什么不用呢?原因很简单,因为Python还不熟练。

所谓量化分析,就是将一些不具体,模糊的因素用具体的数据来表示,从而达到分析比较的目的。

技术上来说,就是指把平时我们对股票的各种主观买卖标准,变成一条条明确的机械指令。

例如“股价回落到20日均线处买入”、“股价上涨7%后卖出”,这些都属于量化的范畴。

只要量化,都很容易用机器实现,没什么神秘的,稍微会写点代码,你我都能够进行分析。

这里真正的差距,其实是大家的量化算法。

在我看来,量化分析的有效性,有以下几条前提:

1、市场环境短期内没有剧烈消息的影响;

2、算法可以客观描述,且在较长一段时间内不会变动;

3、算法使用的原始数据仅限于每天的股价和成交量信息。

简单解释下原因:

1、 市场环境包括经济大势、公司公告、意外事件等,比如贸易战、疫苗事件、超预期的财报等。短期内消息面会对市场造成不小的影响,但在长期来看,我们还是认为股价的走势,代表了公司实际价值的变化。

2、 我们假设,每个人的长期投资是遵循一定纪律的,且该纪律可以用数据表示的。哪怕是经常改变策略的人,本质上就是随机化的操作,或许这种人短期内能因为运气好而获得超额回报,但长期收益一定等于市场收益的数学期望,这种回归数学期望的行为,也算是一种纪律。

3、 诚然,对于某一公司来说,还有很多指标可以用来观察,但在量化分析的机器眼里,我们只能使用股价和成交量信息作为原始数据,各种技术指标都是从这里衍生出来的,而企业的市盈率、市净率等信息在短期内是不变的,一旦发生变化即可归因于前提1的情况中。

在此前提下,我用了3种不同的方法对股价进行了分析,其实得出的结论都差不多。为了本文的简洁无脑,咱们只介绍一种最low逼的方法——均线法。

以下是小白科普时间,大神可以略过蓝色的部分:

某支股票在市场上某天的X日均值,等于前X个交易日的平均收盘价格。所谓X日均线,就是指每个股票每天的X日均值连起来的那条线。

例如,8月13日(周一)的5日均线值,就等于8月6日到8月10日(周一到周五)五天收盘价的平均值。所谓五日均线,就是把之前每个交易日的5日均值点,连起来看到的那条线。

从上面的描述可以发现,这种算法只需要用到“收盘价”这一组数据即可,假设我们对于股票的买卖都在每日收盘前2-3分钟进行,这个误差应该是很小的。

用均线法买卖股票的人一般是这个套路:股价运行到X日均线之上,目前呈上升趋势,买入,若股价运行到X日均线之下,目前呈下跌趋势,卖出。

这种玩法简单无脑的地方就在于:除去少量当天跌破次日涨破、当天涨破次日跌破的情况以外,只要股价在均线上方或者下方长期运行,就会不断拉高或者拉低均线。

上升趋势的时候可以浮盈不抛,下跌趋势的时候没有反转不入,这种方法或许在入场时机上不具备成本优势,但总体的安全性很高。

设定好既定套路,那么,我们要开动了。

第一步 下载数据

在东方财富的Choice终端上,下载到了中国A股3534支股票,在过去27个月的收盘价数据,以及中国港股2266支股票,在过去36个月的数据。

(其实这里面是有每个公司上市以来的每日数据的,但是单次下载的数据量要小于200万条,所以这里选了27个月、36个月的临界值)。

这共计5800家上市公司,总共数据量还是蛮大的,

然后,我们看到的数据是这样的(A股):

以及,这样的(港股):

图中有很多股价显示了许多位小数,这是因为我采用的是“前复权”的方式表示价格,才可以保证股价变化过程的连续性,避免后来的麻烦,虽然“后复权”的显示方式也可以连续,但是那样会导致大部分的股票都上天了,数字太大怕吓着你们。

第二步 构造均值矩阵

我们用matlab读取该表格,例如读完A股数据之后会得到一个大约556*3535(多了一列是日期,所以是3534+1列)的数据矩阵,表示3534只股票在556个交易日的收盘价,然后我们再新构造一个矩阵B,存储每个交易日的X日均线值。

这里的X,后来我取值为3~180,共178个值,也就是说,新构造的矩阵,要循环178次,处理A股数据时,总共产生的数据量就是556*3534*178,数据量还是很大的。

不过,在我们强大的matlab面前,这点数据量,小case啦。

第三步 买卖点设置

找出每只股票的每个买卖点也不难,只需要定义:

1、当日收盘价在5日均线上,即买入,然后一直持有,买入日做标记;

2、直到某日跌到5日线以下,即卖出,然后一直空仓,卖出日做标记。

再新建一个矩阵C,第一列数值为3~180,第二、三列接下来要用。

第四步 计算均线法收益

为计算方便,每次只买卖一股,且要将手续费记入,手续费大致按照4‰计算,假设进出各赔千分之二。

买入时自己损失金钱,于是买入的金额权重定义为-1.002,卖出时得到金钱,于是卖出时,金额权重定义为+0.998,如果权重变为±1,同样的价格买卖一次好像不亏不赚,这显然是不符合实情的。

持仓和空仓的日子,金额权重定义为0,因为这些日子不涉及买卖。

最后,将每一天的收盘价乘以每一天的金额权重,累加起来即是总体收益,用178种均线法会获得178个总收益数值,将该收益填入矩阵C的第二列。

第五步 计算佛系收益

佛系收益,即计算将股票买入后一直持有不动的情况下的收益。

每种均线法都可以获得许多个买入点和卖出点,我们取该组买卖点中的最后一个卖点对应的股价,减去第一个买点对应的股价,这样就得到佛系收益,将该收益填入C矩阵的第三列。

第六步 数据可视化

可视化就是做个简单的图,直观地表示结论。所以,接下来,多图慎划。

这一步只需要使用matlab自带的plot函数即可,注意事项有两点:

1、为了让两列数据画在同一个图上,需要使用hold on函数让图像暂

2、在一次循环结束时,还需要用cla函数清除已画出来的图像。

其他方面,注释上X轴,Y轴的坐标和图像的标题即可。

X轴即为我们之前提到过的X日均线法中的X值。

Y轴为“每股收益”(暂将各个公司股价不一致的信息放在一边)。

最终的结果,是这样的:

还有,这样的:

对于港股,我只打算展示一个图:

(图3:没错,正是腾讯)

图形概述:

1、横轴为均线法中的X日,纵轴为“每股收益”;

2、蓝线为均线法收益,绿线或红线为佛系收益;

3、如果只看蓝线,横向比较,可以从这178种均线法当中,找到长期来看收益最高的一种均线法;

4、选中蓝线上某一点,纵向和红/绿线比较,可以发现在X日均线法中的收益和佛系收益哪个高;

5、由于佛系收益在不同情况下买卖点不一样,所以横向比较红线或绿线没有意义。

当然,我们的分析不会这么简单。

图形推论:

1、若某股票的两线长期在Y的0轴以上运行,则说明这个股票不管怎么玩,大概率是可以赚钱的,反之则说明大概率亏钱;

2、佛系收益体现的是股票长期的走势,牛股长期收益必然为正,熊股长期收益为负或者极低。因此,佛系收益可以作为牛股和熊股的分水岭。

3、均线收益体现的是股票短期波动的剧烈程度,短期波动大的,在X比较小的时候,均线法收益高;短期波动小的,在X比较大的时候,均线法收益高。

4、若某股的佛系收益>均线法收益>0,这说明该股票的趋势长期向上走,属于比较稳定的慢牛股,短期操作空间也有,不论是做波段还是做长期都能赚钱,你的财富可以和好公司一起成长。在我们的资金量不是很大的时候,只关注这一类股票就够了。

5、若某股的佛系收益>0>均线法收益,这说明该股票的趋势长期向上走,属于不太稳定的慢牛股,短期波动相对不大,因此做波段不赚钱,这种股票最好就是拿着不动,你的财富可以和好公司一起成长。

6、如果均线法收益>佛系收益>0,则一般来说该股股价受短期波动较大,虽然长期持有也可以盈利,但是做波段盈利更高。

7、如果均线法收益>0>佛系收益,则一般来说该公司不咋地,长期持有居然不赚钱,且股价受短期波动较大,虽然波段持有也可以盈利,但是有那么多好股票可以选择,干嘛碰它呢。

8、如0>均线法收益>佛系收益,或者如0>佛系收益>均线法收益,那这种股看都别看,这么坑爹的公司就该直接退市。

结果分析:

1、从上述结果来看,还是那些有业绩保障,且长期来看股价上行的公司才能让我们赚钱,也就是我们通俗来说的好公司,例如美的、格力、茅台、伊利、海康威视等等。

点评:该结论符合我们的预期,好公司就像是一个上升的飞车,站在风口上,猪都能飞起来。

2、用长远的角度来看,不论是好公司还是差公司,都是长期持有比短期持有更赚钱,或者说长期持有比短期持有亏得更少,我们可以看到图中大多数的图形,在大多数的时间里,都是佛系收益要大于均线收益。

点评:该结论也符合我们的预期。经济在向上走,中国在发展壮大,那么这些公司也会分到中国发展的红利,随着经济一起上行。

3、第三点发现,也是一个比较超出预期的发现:对于某些周期股来说,例如煤炭、钢铁、有色金属,短线炒作的方式,其收益要比长期持有更大,例如亿纬锂能、中国铝业,老牌妖股名家汇和煌上煌。

点评:这是我事先没有想到的。这条结论再告诉我们:即便面对一个长期来看不赚钱的股票,短期内面对周期股,也是有机会利用大幅震荡来赚钱的,站在波段的风口上,有技术的人也能赚钱。

作者后记

这是我公众号里面第一篇原创的技术贴(虽然技术含量并不高),近几年来,鹤先生正在努力地做一种转型:既要文史哲,也要数理化;既要朝十晚十,也要以梦为马;既要做好一个科研人,也要做好一个社会人;既要热血童心的文艺青年,又要做投资界冷血无情的镰刀手;既要做踏遍千山终无悔的行者,也要做一个技术宅和程序猿;既要做一个讨好自己的人,也要做一个对社会有用的人。

这边技术贴只是一个开始,之后我会尽其所能,给大家提供更加优质和烧脑的内容,咱们最终的目的是认识世界的真相,好在这个世界有许多面的真相,值得我们穷其一生去探索。

感谢朋友们能看到这里,你们的关注是对我极大的支持,愿你能在财富自由的路上,有最朴素的生活,和最遥远的梦想。

就像那只独鹤一样。

爱思考,爱烧脑|就来关注“双子鹤”