海龟策略深入研究-策略回测系列-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元。

 
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%,表现出来高风险高收益的特点,与原版海龟策略基本吻合。

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

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为AI语言模型,我无法编写实际的程序代码,但我可以提供一些基本的思路和步骤: 1. 定义海龟交易策略海龟交易策略是一种趋势跟踪策略,基于价格的移动平均线和波动率进行交易决策。在海龟交易策略中,通过定义长期和短期两条移动平均线,来判断市场走势是否处于上涨或下跌趋势中。同时,通过计算历史价格的波动率,来控制仓位大小和止损点的设置。具体的交易规则如下: - 当短期移动平均线上穿长期移动平均线时,认为市场处于上涨趋势中,买入。 - 当短期移动平均线下穿长期移动平均线时,认为市场处于下跌趋势中,卖出。 - 每次交易时,通过计算历史价格的波动率,来设定仓位大小和止损点。 2. 连接交易所API:连接交易所API,获取市场行情数据和账户信息。常见的交易所API包括Binance、Huobi、OKEx等。 3. 编写交易逻辑:根据海龟交易策略,编写自动交易逻辑。具体包括以下几个步骤: - 获取市场行情数据,计算移动平均线和波动率。 - 根据移动平均线的交叉情况,判断市场走势。 - 根据波动率计算仓位大小和止损点。 - 根据账户余额和仓位大小,计算交易数量。 - 根据交易数量和市场价格,下单买入或卖出。 - 定时循环执行以上步骤。 4. 添加风控措施:自动交易程序需要添加一些风控措施,以避免出现极端情况下的亏损。常见的风控措施包括设置最大亏损额度、最大持仓比例和最大交易频率等。 5. 运行程序并监控交易:将程序部署到云服务器上,保持程序的稳定运行,并及时监控交易情况。可以使用一些交易数据分析工具,如Python的Pandas库和Matplotlib库,来帮助监控交易情况和调整交易策略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值