主要框架 为了计量过拟合的概率,David H. Bailey等人使用了一种类似交叉验证的方法来对一个经过参数优化的策略回报矩阵重采样。第一步 我们在其参数空间上随机采样,得到N组不同的参数以及它们所对应的收益率序列,将其拼接成一个大矩阵M,其形状为TxN,T即是策略的回测时长。第二步 我们将矩阵M以一定的步长L按行分割为S个不同的区块,如从第1行到第L行为第一个区块,第L+1行到第2L行为第二个区块等。第三步 我们对这些不同的小矩阵随机分为两组,一组代表随机抽样产生的样本内组,另一组便是样本外组。我们将这些分块矩阵重新按照时间顺序拼接起来,得到了抽样的样本内收益率序列以及相应的抽样的样本外收益率序列。
第四步 我们计算重新抽样后N个不同参数的策略的样本内收益率序列评价指标(如夏普比率),以及相应的N个样本外收益率序列评价指标。计算完成后,我们需要观察样本内最优策略对应的样本外策略的表现。在这里,我们使用Rank以及Relative Rank = Rank / (N + 1)来评价样本外策略的表现。此外,我们还使用Logit = Log(Relative Rank / (1 - Relative Rank))作为样本外策略表现的评价指标,注意到它是关于Relative Rank的增函数,是故样本外策略表现越好,其评价值便越大。此外,我们也能够获得样本内的最优夏普比率以及样本外相应的夏普比率。
第五步 我们需要估计第四步中Logit统计量的分布,是故我们需要对第三步~第四步进行重复操作,操作的次数由我们自己决定,次数越多,其估计所得分布越稳健。
本文使用Python3 + WinPython初步实现了该方法,其所用到的包主要为numpy。此外,对于结果的可视化展示以及进一步分析还使用了pandas,matplotlib,seaborn以及sklearn。
首先,实现该方法的代码如下:
View Code
我们来进一步分析一下这段代码:
这一段代码定义了回测中我们从参数空间抽取参数进行回测的次数N,以及区块的长度block_len和区块的个数S,并且如果rets的行不能整除S,我们便舍去除不尽的部分,最后得到的矩阵为M。Ms为一个三维矩阵,是经过分块的矩阵的组合。training_part_block是我们在第三步中需要抽取的小矩阵的个数。rd,ratios分别是最终结果统计量Logit以及夏普比率的预分配空间。
这一段代码主要实现了框架中的第三步以及第四步,如重新采样等。首先我们生成一串长度为S的随机数,利用argsort函数得到其下标的排序rnd_num。其次,我们利用前training_part_block个下标作为组成样本内矩阵的下标TPartOrder,并且重新拼接形成TJ。VPartOrder以及VJ同理。
然后,我们计算样本内所有策略的夏普比率TSharpe以及样本外所有策略的夏普比率VSharpe,并且计算得到代表样本外策略表现的Relative Rank的Vrelative_rank。
接下来,我们能够计算得到最优样本内策略对应的样本外Realative Rank以及Logit统计量,并且将其赋值给预先分配好的空间。
最后,我们计算出过拟合的概率PBO,即为Logit统计量小于0的概率。POS为样本外策略夏普比率为负的概率,即优化出亏损策略的概率。
View Code
利用回测函数,我们能够得到相应的收益率序列以及净值曲线。
我们对该策略进行参数的重采样,有:
便能够得到我们需要的收益率序列矩阵,对其进行策略参数过拟合测试:
我们得到了其过拟合的概率以及亏损的概率。在该例子中,他们分别为70.2%以及 56.3%。此外,我们可以对结果进行进一步的分析:
该图显示了Logit统计量的分布。
该图形象地显示出了随着样本内夏普比率的上升,样本外的夏普比率的变化趋势。
本文实现了David H. Bailey等人的方法对策略过拟合的概率进行了测试。该方法有一个特点,那便是我们仅仅需要回测收益率序列便能够对其是否过拟合进行测试,其测试的本质实质上是看样本内以及样本外策略的盈利能力的延续性,以及优化过程中是否所有的时间段的策略表现都会随着参数的变化而同时被优化。利用该方法,我们通过估计过拟合的概率,能够在一定程度上评估策略的稳健性。
作者:时风_瞬
Python函数如何传入任意个参数?在Python编程中,有时我们需要创建能接受不确定数量参数的函数。Python提供了两种特殊语法来实现这一功能:*args和**kwargs。1. 使用*args传入任意数量的位置参数*args语法允许函数接收任意数量的位置参数,这些参数会被打包成一个元组。def sum_all(*args): """计算所有传入
函数是一段代码块,只有在调用时才会运行。您可以将数据(称为参数)传递给函数。函数可以返回数据作为结果。创建函数在Python中,使用def关键字定义函数:示例def my_function(): print("Hello from a function")调用函数要调用函数,请使用函数名称后跟括号:示例def my_function(): print("Hello from a funct
# 用 Python 进行非参数检验的入门指南## 引言在统计学中,非参数检验是一种不依赖于数据分布假设的检验方法。这种方法尤其适用于样本容量较小或数据不符合正态分布的情况下。作为一名新手,了解如何使用 Python 进行非参数检验将帮助你在数据分析的过程中更加灵活。## 流程概述下面的表格展示了使用 Python 进行非参数检验的基本步骤:| 步骤 | 描述 ||-----
参数检验、非参数检验、方差分析1.导语2.参数检验2.1 数据分布2.1.1 正态分布
# Java XSS 参数检验入门指南在现代Web开发中,跨站脚本攻击(XSS)是一个常见的安全漏洞。作为开发者,了解如何进行XSS参数检验是非常重要的。本文将带你一步一步地实现Java XSS参数检验,通过以下流程帮助你更好地理解。## 流程概述我们将整个实现过程分为几个步骤,具体如下:| 步骤 | 描述 ||------|-------
# Java 参数检验工具:提高代码质量的利器在软件开发中,参数检验是确保程序按预期运行的重要环节。本文将介绍Java中几种常用的参数检验工具,帮助开发者提高代码的可维护性和可靠性。同时,我们也会展示一些代码示例和状态图,方便您更好地理解这一主题。## 为什么需要参数检验?在许多情况下,方法会接收外部输入作为参数。如果这些参数无效,可能导致程序崩溃、逻辑错误,甚至数据损坏。因此,通过合
之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest、nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架。本文想针对测试中一种很常见的测试场景,即参数化测试,继续聊聊关于测试的话题,并尝试将这几个测试框架串联起来,做一个横向的比对,加深理解。1、什么是参数化测试?对于普通测试来说,一个测试方法只需要运行一遍,而参数化测试对于一个测试方法,可能需要传
?今天就来记录一下自己学习的统计学的知识,介绍几种参数检验,并用python来进行实践,并进行解释,有错误的地方,或者不足的地方还请大家指正。 目录在这:1.常见概念的介绍1.1 常见的检验方式1.2 原假设和备择假设1.3 两类错误1.4 常见的差异分析方法2.卡方检验3.T检验4.方差检验参考资料 1.常见概念的介绍1.1 常见的检验方式参数检验:在总体分布形式已知的情况下,对总体分布的参数如
编写自定义python函数后,一般有一个参数检查过程,检查输入的参数是否是定义的类型,参数检查可以避免一些明显错误,也可以提高代码调试时的效率。本文用装饰器加注释表达式的方式,对函数做参数检查。1 装饰器在python中,常常看到@符号,后面的函数就是装饰器,比如在定义一个类的时候,会用到@property,作用是将一个方法转换为类的属性,也是一个装饰器。装饰器可以理解为对函数外加一个行为,这个行
python有时候很麻烦的一点,为了运算速度,不给你做类型检查。这个特性被各路大佬当成重载的秘宝,但是有时候对工程性的项目来说并不安全。这里介绍一个notice工具,会对函数形参标注类型和实参类型不一样时进行输出提醒(不报错,不影响运行)1 from typing import get_type_hints 2 from functools import wraps 3 from inspec
Python:核岭回归预测,KRR 结合实用数据分析该书,整理了下代码,记录以作备忘和分享:注:其中用到mlpy(机器学习库),安装会出现问题,可参考文末引用文章的处理方法。1 # -*- coding: utf-8 -*- 2 """ 3 Created on Wed Oct 17 21:14:44 2018 4 5 @author:
目录一、基本概念二、对比三、具体方法对比1、参数检验2、非参数检验一、基本概念参数检验是在总体分布形式已知的情况下,对总体分布的参数如均值、方差等进行推断的方法。但是,在数据分析过程中,由于种种原因,我们往往无法对总体分布形态作简单假定,此时参数检验的方法就不再适用了。非参数检验正是一类基于这种考虑,在总体方差未知或知道甚少的情况下,利用样本数据对总体分布形态等进行推断的方法。二、对比 参数检验非
如何在python中检查函数参数值?(How to check function argument values in python?)Python初学者在这里。 对不起超级基本问题。我想检查我的所有参数值,以便我可以将值转换为None,如果它是一个空字符串。我想出了如何获取参数列表,但我无法弄清楚如何获取参数的值。我现在拥有的是:def __init__(self, first, middle,
Mann-Kendall 检验法简称为 M-K 法, 是一种非参数统计检验方法, 可适用于不具有正态分布特征变量的趋势分析[38]。假定X1,X2,...Xn为时间序列变量[1],n为时间序列的长度,M-K 法定义统计量S为其中 式中, xj、xk 分别为第j、k年对应的观测值,且j< k。标准化的检验统计量Z为 当n≥10时,统计量S近似服从正态分
非参数检验(卡方(Chi-square)检验、二项分布(Binomial)检验、单样本K-S(Kolmogorov-Smirnov)检验、单样本变量值随机性检验(Runs Test)、两独立样本非参数检验、多独立样本非参数检验、两配对样本非参数检验、多配对样本非参数检验)参数检验:T检验、F检验等常用来估计或检验总体参数,统称为参数检验非参数检验:这种不是针对总体参数,而是针对总体的某些一般性假设
validator出色的服务端校验框架validator,功能齐全、简单易用完善的校验方式,支持单参数连写校验、POJO对象校验、分组校验丰富的校验注解,更贴切国内校验场景友好的异常提示,错误迅速定位,开发简单易懂一、功能简介主要提供便捷的后台数据校验功能,支持单个字段或参数校验,也支持通过注解校验对象,用法简单。 提供基本的非空、长度、大小等校验方法,也提供一些特殊的正则校验、身份证、电话、邮箱
展开全部参数检62616964757a686964616fe59b9ee7ad9431333366303234验是针对参数做的假设,非参数检验是针对总体分布情况做的假设,这个是区分参数检验和非参数检验的一个重要特征。参数检验和非参数检验的本质区别:1.参数检验要利用到总体的信息(总体分布、总体的一些参数特征如方差),以总体分布和样本信息对总体参数作出推断;非参数检验不需要利用总体的信息(总体分布、
检验问题可划分为两大类:参数检验和非参数检验,其中总体分布的具体函数形式的前提下,只是其中若干个参数未知称为参数检验,否则称为非参数检验。一、研究场景非参数检验用于研究定类数据与定量数据之间的关系情况。例如研究人员想知道不同性别学生的购买意愿是否有显著差异。如果购买意愿呈现出正态性,则建议使用方差分析,如果购买意愿没有呈现出正态性特质,此时建议可使用非参数检验。二、非参数检验方法类型SPSSAU整
符号检验利用了观察值和原假设的中心位置之差的符号来进行检验,但是没有利用这些差值的大小所包含的信息。不同的符号代表了在中心位置的哪一边,而差的绝对值的秩的大小代表了距离中心的远近。1. 统计量秩1.1. 秩的概念简单来说,对一组有序的数,其中的每个元素都有一个顺序号,可以称为“秩次”。import numpy as npimport pandas as pdx=[-5,-3,-1,0,1,3,
本文设计了一种基于51单片机的全自动洗衣机控制系统,通过模块化硬件设计和状态机软件架构实现洗衣全流程自动化。系统以STC89C52为核心,集成按键输入、LCD显示、继电器控制和蜂鸣提示等功能模块。用户可设置10-30分钟总洗涤时间,系统自动分配三次循环洗涤并交替正反转电机。硬件设计注重可靠性和低功耗,软件采用模块化编程实现状态切换和定时控制。实验表明系统能稳定完成进水、洗涤、排水、脱水全流程,具有操作简便、自动化程度高的特点,适用于家用洗衣机智能化改造。
本文深入讲解了Django视图的进阶用法,包括错误视图定制、异步视图开发、快捷函数使用、请求/响应对象解析和文件上传功能。主要内容包括:1)自定义错误页面处理404/500等错误;2)异步视图提升I/O密集型任务性能;3)render/redirect等快捷函数简化代码;4)解析请求数据与定制响应内容;5)实现安全的文件上传功能。这些知识点覆盖了Web开发的核心场景,为构建完整的Django应用打下坚实基础。
新手小白电脑常用快捷键键盘功能键:Tab、Shift、Ctrl、Alt、空格、Enter、Window、↑↓←键盘快捷键:全选、复制、粘贴、撤销、保存、关闭窗口、运行、永久删除......基础快捷键Ctrl + C :复制Ctrl + V :粘贴Ctrl + A:全选Ctrl + X:剪切Ctrl + Z:撤销(可以多次撤销,部分软件支持Ctrl + Y恢复)Ctrl + S:保存Alt +F4
声明:欢迎批评指正 易宝典: 兼容性问题五大原因及对策(下) 适用于: