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

海龟交易法--本地回测(Python) 他不仅适用于股市,也适用于一切容易形成趋势的交易标的,如期货,股指,加密货币,外汇等。他的交易思想是,趋势形成后赚取的利润会高于下跌周期中损失的本金,所以从整体上看海龟交易法能通过合理设置交易参数带来可观的盈利。设置海龟交易法需要用到的参数,其中n1表示长周期的天数(用于判断做多和做空的进入点),n2表示短周期的天数(用于判断看多或看空趋势结束的点),atr_parameter则是观察和计算平均波幅的天数,平均波幅和每次交易量成一定比例。接着进行交易过程的可视化,包括k线,唐安奇通道及买入卖出点等。 阅读详情

本章主要讲述构建海龟组合的痛点和解决方案

构建海龟组合痛点


在追求策略稳健性前提下,通过传统的滚动测试的方法不能筛选出盈利组合,即这种适用于日内CTA策略的检验方法针对海龟组合是无效的。
构建海龟组合困难表现为以下几点:

 

a. 历史数据过于少

从2014年到2018年这5年间,其日线数据仅仅是1,200根。其数据过少导致调整回望周期的灵活性降低,即最多回望周期只能设置为2年、3年、4年;同时数据少很难检验出策略的稳健性和有效性。(原版海龟策略历史回测周期是10年)

反观传统日内CTA策略,该策略是基于分钟级别的,1年的分钟K线就接近6,000根。用传统的筛选品种的方法,2年回望周期K线达到12,000根,在数据足够大的情况下更易于体现出策略的稳健性。

 

b. 回撤过大

海龟策略属于高风险高收益的中低频策略,夸张的比喻就是“3年不开张,开张吃3年”,在设定回测区间可能表现出持续的亏损,但也有可能在之后出现一波大行情,短期的盈利能够快速覆盖长期的亏损。但是滚动回测筛选品种时因为夏普过低而剔除该品种,导致错过隐含策略收益。

 

c. 筛选指标不稳健

本次滚动回测筛选标准是夏普比率,但是夏普比率对于策略回测时间区间起始点和终点非常敏感,对于趋势的把握不足。举例说明:在2年时间区间夏普比率是1.3,若整体回测区间向后移动3个月,得到的夏普比率可能是0.9。

故夏普比率不适应于海龟策略这种波动性大的类型,必须找到一种指标可以预测其趋势,比如“新式夏普比率”,在2年间比值是1.3,整体向前或者向后滚动3个月,其比值也接近1.3。

 

d. 样品数量噪音过大

尽管通过历史行情,其2014年前上市品种,已经把检测样本从51个降低到35个。但是对巨大的样品数量检验也造成很大的操作负担。例如一些低流动性或者持续走震荡行数的品种,没有必要来进行海龟策略的测试。

 
 

海龟组合筛选的解决方案


1. 重新进行初步筛选

从新对“流动性强”进行定义,在统计意义上,可以指行情波动巨大和具有大趋势,故通过2个指标来专门对35个品种重新进行筛选,这2个指标分别是:
 
a. 调整后波动率比值:

计算公式是收盘价的标准差/(合约最小价格变动 *100),调整后波动率比值越大,代表其品种的相对波动幅度越大,趋势跟踪策略的盈利能力越强。

举个例子说明,假设趋势跟踪策略正确预测行情的概率是x%,其固定交易成本为c,那么收益率r = (x% * 波动幅度) - 固定成本。所以当波动幅度足够大时,交易才有利可图,否则交易盈利覆盖不了交易成本,导致单子做得越多,亏的也越多。

 

b. ADF值

这是推论统计学概念,通过ADF检验来得出其ADF值,然后与10%进行比较,若ADF值要大于10%,证明完全不能拒绝原假设,即原假设成立。
原假设为存在单位根,有单位根代表着品种自相关性强,具有趋势行情。

 

总结一下,增加了两个初步筛选的标准,分别是

  • 调整后波动率比值>1
  • ADF值>10%

 
代码实现步骤

在jupter notebook上运行下面脚本代码,逐个测试样本

import numpy as np
import pandas as pd
import statsmodels.tsa.stattools as ts

#################################################
def volPriceTick (SYM, PT):
    c=pymongo.MongoClient()
    symbol = SYM          #合约代号
    col = c['VnTrader_Daily_Db'][symbol]
    cx = col.find()
    l = list(cx)
    d = {}
    for key in l[0].keys():
        d[key] = []
    for  data in l:
        for k, v in data.items():
            d[k].append(v)
    df = pd.DataFrame.from_dict(d)
    PriceTick = PT        #最小价格变动           
    close = df['close']
    var = np.std(close)               #收盘价的标准差

    ratio = var/(PriceTick*100)       # 定义调整后波动率比值
    adfresult = ts.adfuller(close)    # 得到ADF值 
    return ratio,adfresult

 
调用定义好的函数进行测试,如图所示,品种是沪深300股指期货(IF99),其最小价格变动是0.02。

enter image description here

得到的调整后波动率比值为342.19,比值远大于1说明品种价格变化挺活跃的;然后ADF值是0.36,同样大于10%说明其自相关性强,适用于趋势跟踪类型策略。
 
 

2 回测时使用新的指标

在上面已经提到,夏普比率不稳健的特点,导致其很难去识别一些行情趋势,而且对于回撤承受度不高,难于应用于像海龟策略这种高风险高收益的策略。所以产生了新筛选指标的需求。
 
新的指标应该具有3方面特点:

  • 稳健性强
  • 能够判断出整体趋势
  • 对回撤容忍度高

 

故开发“回归夏普比率”用于品种筛选,其步骤如下:
 

  1. 用最小二乘法对累计资金曲线求得线性回归方程,得到斜率slope 和截距intercept。斜率为平均每天的盈亏资金,截距为回归起始资金(注意,仅仅是数学概念,可以大于或者少于1千万,资金曲线表现得特别好的时候截距可以为负数)
  2. 通过斜率,截距与时间求得期末的回归资金RegendBalance
  3. 通过期末回归资金和截距的比值得到回归年化收益RegtotalReturn
  4. 把单利转换为复利,得到回归年化收益
  5. 直接除以年化系数annualDays(240天)转化为回归日收益
  6. 在计算夏普比率公式中,把标准的日收益换成回归日收益,得到回归夏普比率(注意,由于回归线是笔直的,无标准差,故以原始标准差计算)

 
在海龟策略回测引擎的calculateResult中加入上面逻辑即可,其代码如下:
 

        #计算回归总收益 
        daysList = range(1,totalDays+1)

        #slope , intercept = np.polyfit (changduList , balanceList , 1)  #numpy方法
        slope, intercept, r_value, p_value, slope_std_error = stats.linregress(daysList , balanceList)  #scipy方法

        RegendBalance = intercept + totalDays * slope
        RegtotalReturn = (RegendBalance / intercept - 1) * 100

        计算回归年化收益
        if RegtotalReturn > 0:
            RegannualizedReturn = (((1+RegtotalReturn/100) **(annualDays/totalDays) )-1)*100
        else:
            RegannualizedReturn =  -(((1-RegtotalReturn/100) **(annualDays/totalDays) )-1)*100

        #计算回归日收益
        RegdailyReturn = RegannualizedReturn/annualDays

        #计算回归夏普比率
        if returnStd:
            sharpeRatio = dailyReturn / returnStd * np.sqrt(annualDays)
            RegsharpeRatio = RegdailyReturn / returnStd * np.sqrt(annualDays)
        else:
            sharpeRatio = 0
            RegsharpeRatio = 0

 

新指标的缺点:

  • 高估资金低估表现非常好的品种:资金曲线非常好,其回归线的截距(即回归起始资金)可能远远少于1千万,其斜率变大,故标准夏普率可能是1.3,回归夏普比率可以达到3.3。
  • 低估资金曲线表现非常差的品种:资金曲线在某个时间段剧烈向下移动,其回归线的截取可能远远大于1千万,其斜率变小,故标准夏普比率可能是-3,其回归夏普比率可以达-0.6。

 
综合回归夏普比率的优势和缺点,我们得知其对回撤的容忍度高,可以摒弃噪声从而捕捉到趋势,故适用于作为一个筛选标准;另一方面有时候会出现高估或者低估行情表现,故不能作为判断业绩表现的指标(如标准的夏普比率)。

 
 

3.多种回望周期测试

把回望周期分别设置为2年,3年和4年。

理论上较短回测周期使用较为宽松的筛选标准(如回归夏普比率大于0.4),较长回测周期使用较为苛刻的筛选标准(如回归夏普比率大于0.8)。
当然为了测试的全面新,通过3个不同的回望周期(如:2年、3年、4年),通过不同的回归夏普比率(如:0.4、0.6、0.8)进行筛选,力求新的海龟组合能够较好地预测2018年行情。(即表现出较高的稳健性)

【《深入浅出python量化交易交易实战》Python复现(第二章:(三)海龟策略+小结)】 海龟交易策略 阅读详情

相关推荐

海龟交易法-期货

海龟交易法 1. 原理 1.1 起源 海龟交易思想起源于上世纪八十年代的美国。理查德丹尼斯与好友比尔打赌,主题是一个成功的交易员是天生的还是后天的。理查德用十年时间证明了通过日常系统培训,交易员可以通过后天培训成为一名优秀的交易者。这套培训系统就是海龟交易系统。 海龟交易系统是一个完整的、机械的交易思想,可以系统地完成整个交易过程。它包括了买卖什么、头寸规模、何时买卖、何时退出等一系列交易策略,是一个趋势交易策略。它最显著的特点是捕捉中长期趋势,力求在短期内获得最大的收益。 1.2 建仓资金 海

小壁虎的春天 1242

【手把手教你】用backtrader量化回测海龟交易策略

01引言海龟交易策略是比较经典的趋势交易系统之一,涵盖了从入场交易(品种选择)、仓位管理(基于ATR加减仓)、离场(触发条件)的整个过程。机械套用海龟交易法则在A股上进行交易可能效果不佳...

Python金融量化 1万+

量化策略深入研究

摘要:本文系统解析量化交易策略体系,涵盖趋势跟踪、均值回归、统计套利、高频交易和机器学习五大核心策略。详细阐述各类策略的数学模型(如双均线、布林带、协整套利)、适用场景及风险特征,并提供完整的策略评估指标体系(夏普比率、卡玛比率等)。重点强调风险控制体系,包括资金管理模型和止损策略。最后指出深度学习、另类数据等前沿方向,并推荐经典论文与开源工具。核心观点:量化策略开发是持续优化的系统工程,需兼顾逻辑驱动、严格风控和技术支撑,多策略组合是穿越市场周期的关键。

几十年资深高级架构师,技术专家的技术笔记。专注C、Java、Python、微服务、云原生、AI工程化及高并发系统分布式架构实战,分享源码剖析、性能调优与架构治理经验。 789

海龟策略深入研究-策略回测系列-3:原版海龟策略(下)

首先呢,还是那副图,现在介绍剩下的3个关键要素 5.逐步建仓 在突破点建立1个单位的头寸,然后按0.5*ATR的价格间隔一步步扩大头寸。(1/2的间隔以上一份订单的实际成交价格为基础的) 这个过程将继续下去,直到头寸规模达到上限,即单个合约最大4个单位头寸。 该书举了纽约商品交易所(COMEX)黄金期货指数的例子作为说明 6.止损 止损曾经在入场信号中简单提及,即价格反方向偏离2*A...

智能量化交易 1473

C++坦克大战源代码

【代码】C++坦克大战源代码。

强国豪,林中霖 2613

雷达回波仿真

文章目录前言一、基础理解1.慢时间维度和快时间维度2.脉冲压缩3.MTI4. 脉冲多普勒处理5.cacfar检测二、具体流程1.产生回波信息加入目标时延以及噪声2.解调回波得到基带信号3.脉冲压缩 MTI MTD cafar检测 前言 雷达算法仿真学习,主要流程包括生成目标回波,将基带信号加在载波上其次是加上目标信息和干扰信号后发射,解调回波信号得到基带信号然后MTI,MTD,最后再检测。 一、基础理解 1.慢时间维度和快时间维度 连续M个脉冲回波经过相干解调之后的基带数据形成的一个二维数据矩阵,.

qq_42961235的博客 1万+

海龟策略深入研究-策略回测系列-1:海龟的历史

(本系列主要在于探讨海龟策略在国内市场的可行性,目标群体是有一定基础的量化新手。)   海龟策略的故事 海龟策略是一个基于日线级别期货数据的中低频趋势跟踪策略。其高盈利性名扬海外,同时也创造出非常多赚钱的案例。 其实海龟策略背后还隐藏一个有趣的故事,而且与赌局有关,你信么? 1983年两位交易大师理查德.丹尼斯与威廉.埃克哈特之间的一次赌约,赌约的内容是伟大的期货交易者能否通过后天的培养产...

智能量化交易 3410

独立游戏开发者的新武器:实测腾讯混元3D自动绑骨,搭配Mixamo让角色动画制作效率翻倍

本文实测腾讯混元3D自动绑骨功能与Mixamo动画库的协同使用,显著提升独立游戏开发者的角色动画制作效率。通过解决卡通角色绑骨偏差、优化骨骼权重及动画状态机配置,使原本两周的流程缩短至三天,并分享Unity中的性能优化与版权合规要点。

weixin_42662605的博客 502

基于海龟交易策略的简单回测系统

TurtleTraderAnalyzer是一个基于Web的A股海龟交易策略回测系统,主要功能包括: 数据获取:通过AKShare API获取实时股票数据 技术指标计算:包括ATR、唐奇安通道等 交易信号生成:根据突破规则识别买卖点 回测引擎:支持仓位管理和风险控制 绩效分析:提供收益率、回撤等指标 系统采用Python技术栈,包括Streamlit、Pandas等,实现了完整的海龟交易策略流程,包含改良后的建仓、加仓、止损规则。通过可视化界面展示资金曲线和策略表现,为交易者提供直观的回测分析工具。 项目特色

py_0821的博客 1520

黑金ZYNQ7010开发板开箱实测:从接线到串口通信的保姆级指南

本文提供黑金ZYNQ7010开发板从开箱到串口通信的完整实操指南。详细介绍了硬件连接、驱动安装、启动模式设置及串口终端配置等关键步骤,并针对常见问题提供排查思路,帮助FPGA开发者快速上手ZYNQ平台,建立稳定的调试通道。

weixin_29266749的博客 467

VTK的编译和部署,配合c++和visual studio2022,VTK开发环境的配置

在官网选择最新的版本下载之后进行解压,然后再里面创建build目录,方便后面使用cmake进行编译。

dz131lsq的博客 3223

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

传统筛选品种的方法 传统意义上,为保证策略的稳健性,应该进行样本内外检验,其具体步骤如下: 设定好历史回测周期,如2年的回望周期 设置固定的筛选标准,如夏普比率大于0.6 基于筛选标准,对每个品种进行策略回测,然后选择合格的品种组成投资组合 通过样本内筛选出来的组合,去预测其未来表现,如预测1年的策略表现 回望周期向后滚动,基于新组合再次筛选品种,直到预测最新年份未知     1 初...

智能量化交易 1266

SAP 调用Ftp服务器

FTP(File transfer protocol)是一种标准的网络协议,可以用于在互联网上传递文件。SAP系统中可通过系列配置和提供的些标准函数,用于查看、更新、下载FTP服务器上的文件。提示:以下是本篇文章正文内容,下面案例可供参考。

qq_38304013的博客 1418

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

策略回测操作 运行run.ipynb文件 首先进入“examples\TurtleStrategy”文件夹,通过Jupyter Notebook中打开run.ipynb可以执行策略回测。   1)调用海龟回测引擎   %matplotlib inline from datetime import datetime import numpy as np import matplotlib.p...

智能量化交易 1500

网络系统管理专栏-配套练习+知识点详解

网络系统管理专栏-配套练习+知识点详解

bfq05234214的博客 684

鸿宇多用户商城user.php RCE漏洞复现

鸿宇多用户商城 user.php 存在任意命令执行漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。

0xSec 1625

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

重新构建投资组合 1)初步筛选 初步筛选从仅仅基于历史行情外,还加多了品种波动率和自相关性的要求,故总的来说其初步筛选条件为三点: 历史行情:2014年1月1日前上市 调整后波动率比值>1 ADF值>10% 根据初步筛选标准,剔除了不符合要求品种后,测试样本从调整前的35个缩小至27个,根据其调整后波动率比值的大小按从大到小排序,如图所示。 结合高成交量特征,...

智能量化交易 1069

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

3)3年回望周期测试 选择标准:回归夏普比率>0.4 a.2014-2016测试 对初步筛选出来的样本进行2014-2016年回测,选择回归夏普比率>0.4的品种,然后构成组合,如图所示。 根据回归夏普比率>0.4的准则,筛选出了17个品种,其历史表现和2017年预测表现如图6-31所示。投资组合在2014-2016年年化收益73.7%,百分比最大回撤-22.9...

智能量化交易 926

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

海龟策略深入研究-策略回测系列-16 单位头寸限制检验

vn.py实现了2个维度上的单位头寸限制,分别是单品种头寸上限是4,单个方向整体头寸上限是10。那么现在测试一下适用于国内期货品种的新海龟策略,其最优单位头寸限制数值是否与原版海龟策略一致。 实现步骤: 对单品种头寸上限分类,直接分成3、4、5, 然后基于各自的单品种头寸上限再对当个方向的整体头寸上限进行细分,分别是8、9、10、12、14、无限大。 故一共构成了3*6 = 18个测...

智能量化交易 910

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

海龟策略深入研究-策略回测系列-13 长短周期信号检验

原版海龟策略的出入场交易信号分成2个版本: 短周期版本:1)入场信号:若期货指数价格突破20日最高价/最低价,买入/卖出1个头寸单位。过滤条件是上一次突破是盈利性突破,则当前入市信号无效(其保障性突破点为在55日通道入市)。 2)离场信号:采用10日唐奇安通道突破退出法则,即多头价格跌破10日最低点离场,空头价格超过10日最高点离场。 长周期版本:1)入场信号若价格突破55日最高价...

智能量化交易 1178

海龟策略深入研究-策略回测系列-14 上一笔盈利过滤检验

上一笔盈利过滤的意思是,若上一次交易为盈利的,则当前的交易信号无效,即当前不进行交易。 基于20日唐奇安通道,费思认为若上一次突破是盈利的,那么新突破点可能离当前价格,因为有可能跑到55日突破点上面去;若上一次突破点亏损,那么新突破点将更加接近当前价格。 若基于传统日内中高频CTA策略的视角,这是非常主观的解释:费思认为这几乎不可能连续2次出现大行情,但是事实是分钟级别的CTA策略有可...

智能量化交易 1138

海龟策略深入研究-策略回测系列-15 手续费滑点检验

理论上,基于日线数据的中低频趋势跟踪策略,手续费和滑点是可以忽略不计的。为了验证这个结论,进行对比测试,如图所示。 右图为包含手续费和滑点版本的海龟策略,其中手续费设置为交易所手续费的1.1倍,滑点设置为期货合约的最小价格变动。 其结果是总手续费为635364,总滑点为636794,加上手续费和滑点后,其影响在于: 结束资金从77605953降低至76333794, 年化收...

智能量化交易 1186

不借助三方平台自主搭建量化回测系统 ——以海龟交易策略为例

手把手教你搭建自主回测平台

sljsz的博客 1811

量化交易之回测篇 - 海龟交易策略(初版)

""" 这个模型写了小半天, 还没来得及测试, 先开源出来; 等期货回测器的cta分支没问题后,再测试该模型; PS: 为了方便模型的回测, 价格设置上确实有不合理的地方, 勿用于实盘, 请见谅; """ from tqz_strategy.template import CtaTemplate from public_module.object import StopOrder, TickData, BarData, TradeData, OrderData from public_module.ut.

1171

海龟策略深入研究-策略回测系列-6 理解海龟策略代码

海龟策略文档 在运行策略回测前,至少要对策略代码有一个整体的概念,便于以后的策略调试以及改进。 v1.9.1提供了两个版本的海龟策略,分别是基于ctaTemple开发的,针对单标的的简化版,以及针对多标的的完整版。 这里只介绍完整版的海龟策略,该模块在"examples\TurtleStrategy"文件夹下,打开如图2-4所示。在这里只需关注4个文件     setting.csv:用于...

智能量化交易 2118

海龟策略深入研究-策略回测系列-2:原版海龟策略(上)

海龟策略7大要素 原版海龟策略出现在《海龟交易法则》最后章节的附录中,有兴趣的朋友可以详细看看,在这里我们概况一下海龟策略的7大要素,如图所示。 (由于内容有点多,故拆分成上下两部分,这里只介绍到第四大要素,即入场信号) 1.品种选择 书中明确表示海龟策略选择标准是流动性高的期货品种,另外两个隐含的条件是具有历史大波动并且无人为干预的品种(例子:肉类交易厅场内交易员腐败问题)。 在国内,...

智能量化交易 3089
上一篇: 海龟策略深入研究-策略回测系列-9 品种选择检验(二)
下一篇: VNPY策略加密教程
Trader_Python
博客等级 码龄11年 392粉丝 0原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值