回测一般分为两种:胜率的估算和收益风险比的估算。胜率,指的是一个策略运行固定的周期,在所有的交易次数中,盈利的次数所占的百分比。收益风险比的估算,指的是设定策略回测周期,给定初始资金,假定按完全按策略执行,结束时的收益风险比情况,包括收益率、最大回撤等。(就是通常意义上的回测,例如优矿、米匡和聚宽等给出的策略回测结果)。在进行回测时,必须合理的进行评估,如果对策略不是很确定,或者策略的一些参数还很模糊,可以先进行胜率的估算,查看其结果,以评估策略是否可能有效,再决定是否进行完整的回测。毕竟,相对而言,胜率的估算较为简单。
以双均线策略为例,简要说明如何搭建胜率估算的框架。所用工具:
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(估算胜率):
示例代码至此结束。结果就懒的贴出来了。上述代码,不仅对于估算胜率有用,在进行收益风险比的估算的时候,同样会用到。后续再搭建吧。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/70872
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!