茉莉花新闻网

中華青年思想與行動的聚合地

如何从零开始构建量化交易系统?

quantkoala的回答

初期入门的量化交易系统用Excel就可以构建了,直观简洁方便理解,还无需编程~

量化交易入门,编程太难了!特别是对于没有任何编程基础的文科童鞋,看着那些个花花绿绿的代码,每一个字母都认识,但堆在一起就不明白TM到底是啥意思。

先别急着放弃啊,有条件可以上,没有条件创造条件也可以上嘛,你有没有想过,不需要专门学Python编程,也不需要零编程规则式的量化平台,仅依靠微软Office办公三件套之一的Excel,便可以走通量化策略的开发和回测的整个流程。

说起来惭愧,我最初做量化的时候,也没学编程,仅用Excel外带几个常用公式就开搞了,因为在我的眼里,量化投资更多是一种投资交易的分析手段,基于金融逻辑和历史数据,发现和验证交易理念,提高决策的胜率,只要能实现这些功能,管他黑猫白猫,抓住老鼠就是好猫,弯下腰,弄脏手,躬身入局。

而且啊,Excel有个好处就是,展示数据非常直观,非常便于咱深入了解整个过程,让量化基础更扎实,闲篇扯完了,撸起袖子开整吧~

无论是主观投资还是量化投资,在新手村的时候,肯定听说过『双均线策略』,以股票为例,就是短均线上穿长均线,形成金叉时买入,短均线下穿长均线,形成死叉时卖出。

挑选近期大涨的股票往回看,发现大涨之前的确是有双均线金叉,大跌的股票也是有双均线死叉,其实这可能是一个“幸存者偏差”,可能是金叉/死叉之后有大涨/大跌的,也有震荡的,只不过是大涨/大跌的被有意或无意地挑选出来。

那到底这个『双均线策略』是真的有效,还是幸存者偏差,咱不能拍大腿拍脑袋就决定了,教员说“ 没有调查,没有发言权”,小平同志说“实践是检验真理的唯一标准”,那咱就用量化的试金石测一下,那就把『双均线策略』作为萌新入门量化的第一个策略吧。

首先要准备一个Excel表格,里面装有你心仪投资标的的行情数据就行,股票可以,数字货币也行,最低配的,有日期和收盘价就可以了,甚至连日期都可以没有,自己知道时间的对应关系就行了。

什么?找不到行情数据?现在可以拿到免费数据的渠道那么多,咱还是不要守着金山当乞丐哟~

我就拿股票为例吧,说说怎么获取免费的股票数据,“通达信”大家知道伐,用的人很多的那个,在电脑端下载安装一个,免费注册使用的。

打开你想测试的个股日K图,为了避免有荐股的嫌疑,我就以沪深300指数为例。

v2 b261f736d91fecb3640c9a231cf0fa70 1440w

点击右上角工具栏【选项】,在弹出的下拉列表中选择【数据导出】,接着就会弹出一个对话框,记得选【Excel文件】,设置好文件的存放路径,自己能找到就行。

v2 b4e82192c5d44729a58a96e1aa4c091d 1440w
v2 e3a852b4626a4bbd5c4c2aa427ea4060 1440w

这里有一个操作小技巧,通达信默认是导出界面所展示的日期范围内的数据,如果想要更多数据,按键盘的向下键『↓』,就可以展示更多日期,我在这里就获取了沪深300能获取的全部数据,日期范围为2005年1月4日至今。

导出的数据当中,除了行情数据之外,还有很多乱七八糟的数据,为了简洁起见,只保留日期和收盘价,其他的内容统统删除掉。为了美观,可以让数据居中对齐和加框线。

v2 b50d590a7a211a94bd4e36d4045438b3 1440w
v2 4f66e38a727ddd6e0ac606ce16156989 720w

有了数据之后,剩下的就好办了,只要懂Excel基本操作,一步一步跟着走就可以完成。

现在咱要算出两根均线的数值,短均线咱就用5日均线(Moving Average 5,MA5),长均线咱就用20日均线(MA20)。每一天的MA5数值,就是用含有当天的5个收盘价计算平均值,MA20就是利用20个。

v2 c084f80b785db1c8bb3ea45b3bda22f8 1440w

2005年至今有4000多个交易日,咱总不能手动一个一个算出来啊,这样会累si人的,为了方便轻松,就需要用到Excel的公式了。

由于计算MA5需要5个收盘价数据,所以在新增一例“MA5”后,在2005年1月10日所在行的单元格里输入“=AVERAGE(B2:B6)”,就可以算出2005年1月10日的MA5数值了,其中B表示“B列”,也就是收盘价所在的列,数字表示行号,由于列名占了一行,所以第一个有效数值从第2行开始,相信懂Excel基本操作的小伙伴都能明白哒,下文不再赘述了。

Excel当中很智能的一点是,你再选中刚才那个单元格,把鼠标移到单元右下方,鼠标会变成一个黑色十字『+』,双击鼠标左键,Excel就会智能地利用这个公式对剩余数据进行计算,文字比较抽象,请看下图的演示。

v2 c6b2b11322af6dd947793186b01c4752 720w

MA20的计算也是同理,只不过MA20的计算需要20天的数据,因此需要在2005年1月31日才能计算第一个数据点,至此,咱就有了MA5和MA20两条均线的数据了。

v2 b866a377089d041dfd87c1040e41cd0e 1440w

有了双均线数据之后,咱就要确定交易信号,就像前面说的那样,金叉买入,死叉卖出,这里要用到Excel的IF判断公式,形式如IF(条件, A, B),如果条件成立的话,单元格就输出A,不成立的话,单元格就输出B,咱在这里,如果MA5高于MA20就输出1,反之就输出0。

于是,新增一列“信号”列,在MA20有第一个数值的那一行对应的单元格里输入“=IF(C21>D21,1,0)”,然后再利用之前的“黑色十字双击”技巧,智能填充另外的信号列数据。

v2 87039880bdafa46343c1ac582358c667 720w

现在交易信号也有了,那怎么统计这个策略的收益率呢?咱现在回过头来看,由0变1的那个日期对应的就是金叉,由1变0的那个日期对应的就是死叉,根据“金叉买入,死叉卖出”的原则,可以简单认为(下文有补充),信号为1的日期都是有持仓的,信号为0的都是空仓。

于是乎,假设咱是全仓买入沪深300指数(有对应ETF可交易),先计算指数的日收益率,然后将每天的收益率与信号相乘,就可以得出策略的日收益率,空仓的日期收益率为0,持仓的日期收益率就是对应指数的收益率,操作演示如下。

v2 74558b48165d3113e16871931da57527 720w

有了日收益率之后,咱就可以进一步得出这个双均线策略的累计收益情况了,每一天的资产金额等于前一日资产金额乘以(1+当日涨幅),假设咱期初有1000块钱,结合前面计算出来的策略日收益率,就可以依次算出每一天的资产金额。

如果按照这个双均线策略操作,在不考虑交易成本的情况下,咱最终能拥有多少钱呢?效果是否比买入并持有沪深300指数好呢?

v2 426ea25d5b400debeff4dd780371e8cf 720w

从最后一个交易日的结果看出,双均线策略从18年前的1000块钱变成了今天的4个达不溜,18年40倍,而买入并一直持有沪深300则是4倍,前者年化收益约22%,后者年化收益约为8%,超额收益14%。

v2 0304886dc31e641451000c79419c3f8b 1440w

在Excel中画图也是非常简单的,选中“日期”、“双均线策略”和“买入并持有”这三列,然后插入折线图,双均线策略的资金曲线就出来啦,从折线图当中更能直观地看出收益情况的对比。

v2 6489dcad2d7924e54614acf33d252622 1440w

小结一下,本文单纯基于Excel进行了双均线计算、交易信号确定、日收益率计算、资产金额计算和资金曲线画图这5个步骤,完成了『双均线策略』的开发和回测,不会编程的萌新也可以利用这套流程,对常见的技术指标在个股和指数/ETF等投资标的上进行有效性验证,只要灵活修改前面“指标计算”和“交易信号确定”这两个步骤就可以了。

补充说明,这个策略的开发和回测流程,主要是启发萌新的量化交易系统构建思路,其实细心的读者已经发现了,在生成交易信号的时候是带有一点“未来函数”的,因为双均线是利用收盘价计算出来的,出现金叉/死叉的时候已经收盘了,无法按照收盘价买入,更不会将当日涨幅纳入进来。

因此更为严谨的操作是,在前一日金叉时,今日按照开盘价买入,策略的日收益率则是开盘价到收盘价的涨幅;在前一日死叉时,今日按照开盘价卖出,策略的日收益率则是前一日收盘价到今日开盘价的涨幅,这需要多增加几列数据进行计算。

因为这种带有一点未来函数的回测方法非常直观和便捷,自己在遇到新指标因子时,可以快速进行测试,如果回测效果好,则进行更深入的研究,如果效果不好,直接放弃说byebye~

更多相关资料请见:

quantkoala:注册制全面推行后,对量化交易的5点影响quantkoala:2022年量化文章合辑 | 量化投资从入门到不放弃quantkoala:如何打造「量化策略兵器库」,策略开发效率提高10倍?222 赞同 · 10 评论文章227 赞同 · 10 评论文章229 赞同 · 10 评论文章231 赞同 · 10 评论文章237 赞同 · 10 评论文章240 赞同 · 10 评论文章259 赞同 · 10 评论文章260 赞同 · 10 评论文章260 赞同 · 10 评论文章261 赞同 · 10 评论文章266 赞同 · 10 评论文章268 赞同 · 10 评论文章269 赞同 · 10 评论文章272 赞同 · 10 评论文章273 赞同 · 10 评论文章276 赞同 · 10 评论文章281 赞同 · 10 评论文章281 赞同 · 12 评论文章284 赞同 · 12 评论文章284 赞同 · 12 评论文章289 赞同 · 12 评论文章298 赞同 · 12 评论文章299 赞同 · 12 评论文章306 赞同 · 12 评论文章316 赞同 · 12 评论文章324 赞同 · 12 评论文章quantkoala:“28岁了,做了两年量化,没有做出策略,该怎么办?”47 赞同 · 2 评论文章55 赞同 · 2 评论文章55 赞同 · 2 评论文章57 赞同 · 2 评论文章61 赞同 · 2 评论文章61 赞同 · 2 评论文章64 赞同 · 2 评论文章68 赞同 · 2 评论文章69 赞同 · 2 评论文章quantkoala:探索利用价格概率密度函数,构建趋势突破策略quantkoala:两个简单的GARP因子,帮这位量化基金经理,跻身同类Top10(含复现)quantkoala:又来唠一个另类异质量化策略:20后的Trendflex策略quantkoala:CTA策略中的Alpha:期限结构之展期收益率策略55 赞同 · 10 评论文章quantkoala:ETF轮动策略在阻力支撑相对强度RSRS指标加持下起飞(年化91.6%)93 赞同 · 10 评论文章quantkoala:唠一个异质化另类量化策略:K线面积交易法(盈亏比1.83)122 赞同 · 22 评论文章quantkoala:Barra太复杂,唠一个适合萌新Quant上手的量化基本面多因子模型F-Score(策略Alpha:23.4%,附源码)135 赞同 · 7 评论文章quantkoala:手把手教你,利用机器学习模型,构建量化择时策略(附全流程代码)quantkoala:唠一唠曾在全球量化策略热榜上排名第9的TrendModelSys策略(年化34.3%)366 赞同 · 18 评论文章quantkoala:八年实盘100万到1000万的跨周期突破策略源码Q01174 赞同 · 26 评论文章quantkoala:2个量化小技巧,双均线策略盈亏比从1.2提升到1.9(大神请绕行)152 赞同 · 16 评论文章

同类信息

查看全部

茉莉花论坛作为一个开放社区,允许您发表任何符合社区规定的文章和评论。

茉莉花新闻网

        中国茉莉花革命网始创于2011年2月20日,受阿拉伯之春的感召,大家共同组织、发起了中国茉莉花革命。后由数名义工无偿坚持至今,并发展成为广受翻墙网民欢迎的新闻聚合网站并提供论坛服务。

新闻汇总

邮件订阅

输入您的邮件地址:

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram