vn.py量化社区
By Traders, For Traders.
Administrator
avatar
加入于:
帖子: 163
声望: 18

策略回测操作


运行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元。

 
enter image description here
 

(《海龟交易法则》明确表示其交易信号源于期货指数合约,故用“99”结尾的RQData合约进行策略,等挑选完投资组合品种后,再用主连合约(“88”和“888”结尾)测试观察其差异性。)

 
 

原版投资组合测试


原版海龟策略选择标准主要是流动性强品种,若简单地理解为交易所成交量巨大的热门品种
 
根据交易所分类所构建的组合历史回测如图所示(测试环境是无手续费,无滑点),图中显示

  • 上期所热门品种组合夏普比率达到1.01,
  • 郑商所的达到0.8,
  • 大商所的达1.31,
  • 中金所因为只有IF股指期货成交量较高,故中金所只测试了一个品种,其夏普比率达0.88。

 
enter image description here
 

总体来看,原版海龟测试夏普比率都不错,有着一定的稳健性。

因为国内四大交易所其品种包含了金融产品,工业品,农业品,金属,化工等不同品种分类,为了分散投资组合各个头寸的风险,从而提高组合的夏普比率,故海龟策略投资组合品种必须涵盖四大交易所的品种,现在简单的把四大交易所热门品种组合起来进行测试,其效果如图1-14所示。
 
enter image description here
 

新组合的夏普比率达到1.34,要高于上面四个组合,年化收益43.91%,百分比最大回撤达到-29.84%,表现出来高风险高收益的特点,与原版海龟策略基本吻合。

当前品种选择的检验非常顺利,那么就有一个问题:能否在新组合中继续筛选,剔除一下表现不好的品种,去构建一个具有更高夏普比率的组合呢?

答案是否定的。这是一个思维误区,对过去历史表现进行优化,然后筛选出拟合历史行情最优品种,显然没有注意到未来函数的过拟合的问题。

那么,下一章将讲述通过样本内外测试来筛选海龟组合。

Administrator
avatar
加入于:
帖子: 1711
声望: 80

无脑干海龟,都能有1.34的Sharpe,大部分国内的CTA基金都远远不到这个业绩,更不用说再加一些短周期策略了。

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3