利用Excel进行最简单的策略回测

利用Excel进行最简单的策略回测

前言

谈到金融量化,大部分人的第一个想到的工具就是python,对于excel则比较瞧不起。其实这种使用工具之间的优越感倒是真不必,任何工具都有其擅长的范围,我们需要根据不同的应用场景加以考察。

策略回测

下面以最简单的520策略为例,选择平安银行(000001.SZ)的2017-01-01至2019-05-13为时间段,在Excel上进行回测,看一下这个策略在这段时间的表现如何。

买入:5日均线上穿20日均线(金叉)
卖出:5日均线下穿20日均线(死叉)

简单起见,限定交易环境:

  • 只考虑做多
  • 买卖单边手续费0.03%,不考虑印花税
  • 每手100股
  • 不考虑分红
  • 买卖全仓操作,不考虑资金管理
  • 初始资金100万元

要计算最终策略的收益,设定了如下变量:

  • 当前市值:前一日的市值+当日净收益
  • 当前持仓:当日持有的股票数量
  • 价格变化:当日价格-前一日价格
  • 价格变动收益:就是当日股价变动带来的浮动收益
  • 手续费:如果当日出现买卖,则计算手续费
  • 净收益:价格变动收益-手续费

注意事项

1. 注意未来函数,不要在当前周期还没有结束前交易

以日线为例,是以一天的收盘价计算的买卖信号,也就是说当一天的交易结束之后才能判断出是否满足了买卖条件,例如2017-05-25结束后,才能计算得5日均线>20日均线,并且前一日的5日均线<20日均线,可知满足了买入条件,但是当天的交易已经结束,只能等到明天才能进行买卖操作,为简单起见,我将第二日的收盘价作为了买卖的价格,即在收盘那刻成交。
同时需要注意,第二日(2017-05-26)的价格变动收益就不能用"(当日收盘价-前一日收盘价)*当前持仓",我这里设为零。

2.excel的公式编写

上述各个变量之间存在关联,需要理清其中的先后关系,考虑实际交易环境:

2.1 当天收盘后计算浮动盈亏

情况一:当天持仓没有变化

浮动盈亏=价格变化*当前持仓

情况二:当天持仓发生了变化
不论是多头开仓,还是多头平仓,均只有手续费,不计算当天的价格变动收益,此时

浮动盈亏= -手续费

2.2 当天的市值

当前市值 = 前一日的市值 + 当日浮动盈亏

2.3 判断当天是否给出买卖信号

如果当天没有给出买卖信号,则第二天不做操作,否则第二天需要调整仓位(买入或卖出),需要注意这里调整的仓位依赖于前一日计算的市值

结果

一些excel的函数细节比较琐碎,就不一一展开了,文件的截图以及净值收益率曲线如下:
在这里是描述
在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值