量化投资策略回测框架(一):胜率的估算

上次简单介绍了回测之前的一些准备工作。这里,将进一步介绍如何对一个投资策略就行完整的回测。


杂言:人啊,还是要做自己喜欢做的事情。勇于尝试,是非常好的,当感觉不合适的时候,要尽早跳出。年轻人,还是不要太安逸,所以从财富跳到了私募。事情也是自己喜欢做的了。有时你会纠结,你是要一份体面的实习,或者工作,还是有挑战性的,喜欢做的。和别人交流时,说你在一个小私募,和说你在某某总部,完全是不一样的概念。结果,貌似自己把两个某某总部都拒了。年轻人,还是累点好,多闯闯,安逸什么的,不太合适哦。


回测一般分为两种:胜率的估算和收益风险比的估算。胜率,指的是一个策略运行固定的周期,在所有的交易次数中,盈利的次数所占的百分比。收益风险比的估算,指的是设定策略回测周期,给定初始资金,假定按完全按策略执行,结束时的收益风险比情况,包括收益率、最大回撤等。(就是通常意义上的回测,例如优矿、米匡和聚宽等给出的策略回测结果)。在进行回测时,必须合理的进行评估,如果对策略不是很确定,或者策略的一些参数还很模糊,可以先进行胜率的估算,查看其结果,以评估策略是否可能有效,再决定是否进行完整的回测。毕竟,相对而言,胜率的估算较为简单。


以双均线策略为例,简要说明如何搭建胜率估算的框架。所用工具:

  • anaconda 3.5(windows环境下搭建python环境)

  • python + eclipse + pydev(python编译环境)

  • wind资讯金融终端(应用量化接口,获取相应数据)


策略逻辑:

  • 全市场选股,股本大于1亿,流通市值小于50亿

  • 5日均线上穿10日均线,次日收盘买入,持有三天卖出

  • 新股成立的两月内不做考虑

  • 回测时间:2015.03.01 — 2015.08.05


回测过程中,大部分的时间往往消耗在与wind的通讯中,为节约时间,同时便于检测回测结果是否正确,一般尽可能的将可能重复利用的数据,以及重要数据保存到本地。


简单流程如下所示。主要分为四部分:

  1. 获取待选标的,这里待选标的为全市场股票

  2. 对标的进行基本面筛选,这里限制条件为股本和流通市值

  3. 下载行情数据到本地,这里下载的数据为【日期 股票代码  收盘价  ma5  ma10】

  4. 根据行情数据,确定每次的买点和卖点

  5. 估算胜率,将结果保存到本地,进行进一步的分析。


对于其他策略而言,无外乎这几大步骤,进行具体策略的估算时,对相应部分进行逻辑的重构即可。示例的胜率估算为44.88%。(最后给出示例代码)。


对于44.88%的胜率而言,则要具体问题具体分析了。记得参加宽客聚会时,一位大佬说过,商品期货的胜率可能连50都不到,这样的情况下,必须设置严格的止盈止损。设置点位可能为止损5%,止盈10%。也就是判断准确地时候,尽可能多赚点。所以,个人感觉,胜率要根据个人经验来看了,通过设置止盈止损,或者说严格的风险控制,可能胜率不高也可以接受哦。


附上拙略的代码吧,工程目录结构如下,主要应用函数式编程,尽可能将各功能模块分离,以期重复利用。

getStock.py(获取全市场股票):


selectStock.py(基本面筛选):


tradeStock.py(下载行情数据到本地):


tradeData.py(筛选买点和卖点):



calWin.py(估算胜率):




示例代码至此结束。结果就懒的贴出来了。上述代码,不仅对于估算胜率有用,在进行收益风险比的估算的时候,同样会用到。后续再搭建吧。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值