海龟策略深入研究-策略回测系列-8 品种选择检验(一)

2024-04-21 09:48

本文主要是介绍海龟策略深入研究-策略回测系列-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%,表现出来高风险高收益的特点,与原版海龟策略基本吻合。

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

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

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

这篇关于海龟策略深入研究-策略回测系列-8 品种选择检验(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/922776

相关文章

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

SpringBoot中的404错误:原因、影响及解决策略

《SpringBoot中的404错误:原因、影响及解决策略》本文详细介绍了SpringBoot中404错误的出现原因、影响以及处理策略,404错误常见于URL路径错误、控制器配置问题、静态资源配置错误... 目录Spring Boot中的404错误:原因、影响及处理策略404错误的出现原因1. URL路径错

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)