本文主要是介绍海龟策略深入研究-策略回测系列-8 品种选择检验(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
策略回测操作
运行run.ipynb文件
首先进入“examples\TurtleStrategy”文件夹,通过Jupyter Notebook中打开run.ipynb可以执行策略回测。
1)调用海龟回测引擎
%matplotlib inline
from datetime import datetime
import numpy as np
import matplotlib.pyplot as plt
from turtleEngine import BacktestingEngine
2) 设置回测时间区间和起始资金,读取Csv文件的合约信息进行策略回测,然后显示逐日统计的相关指标和资金图,如图所示。
engine = BacktestingEngine()
engine.setPeriod(datetime(2014, 1, 1), datetime(2018, 12, 30))
engine.initPortfolio('setting.csv', 10000000)engine.loadData()
engine.runBacktesting()
engine.showResult()
3)针对投资组合里面单个品种,查阅其逐步开平仓记录,如图所示。
tradeList = engine.getTradeData('J99')
for trade in tradeList:print '%s %s %s %s@%s' %(trade.vtSymbol, trade.direction, trade.offset,trade.volume, trade.price)
配置json文件
在运行海龟策略回测会读取在同一文件夹内的Csv文件,下面以setting.csv为例说明一下,如下图
需要配置的合约信息包括:合约品种、合约规模、最小价格变动、手续费率(如每一手0.00003)、固定手续费(如每一手12块钱)、滑点。其中手续费率与固定手续费是二选一关系。以PTA合约为例,其品种信息为TA99,合约规模是5吨,最小价格变动是2元/吨,手续费率为0,固定手续费为12块,滑点为2元。
(《海龟交易法则》明确表示其交易信号源于期货指数合约,故用“99”结尾的RQData合约进行策略,等挑选完投资组合品种后,再用主连合约(“88”和“888”结尾)测试观察其差异性。)
原版投资组合测试
原版海龟策略选择标准主要是流动性强品种,若简单地理解为交易所成交量巨大的热门品种。
根据交易所分类所构建的组合历史回测如图所示(测试环境是无手续费,无滑点),图中显示
- 上期所热门品种组合夏普比率达到1.01,
- 郑商所的达到0.8,
- 大商所的达1.31,
- 中金所因为只有IF股指期货成交量较高,故中金所只测试了一个品种,其夏普比率达0.88。
总体来看,原版海龟测试夏普比率都不错,有着一定的稳健性。
因为国内四大交易所其品种包含了金融产品,工业品,农业品,金属,化工等不同品种分类,为了分散投资组合各个头寸的风险,从而提高组合的夏普比率,故海龟策略投资组合品种必须涵盖四大交易所的品种,现在简单的把四大交易所热门品种组合起来进行测试,其效果如图1-14所示。
新组合的夏普比率达到1.34,要高于上面四个组合,年化收益43.91%,百分比最大回撤达到-29.84%,表现出来高风险高收益的特点,与原版海龟策略基本吻合。
当前品种选择的检验非常顺利,那么就有一个问题:能否在新组合中继续筛选,剔除一下表现不好的品种,去构建一个具有更高夏普比率的组合呢?
答案是否定的。这是一个思维误区,对过去历史表现进行优化,然后筛选出拟合历史行情最优品种,显然没有注意到未来函数的过拟合的问题。
那么,下一章将讲述通过样本内外测试来筛选海龟组合。
这篇关于海龟策略深入研究-策略回测系列-8 品种选择检验(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!