把收益一天天打乱会丢掉什么:循环块抽样怎样保留局部关系
把每日收益独立抽取,容易打散相邻日的共同状态;循环块抽样先抽连续索引块,再把块拼成同长度新序列,从而保留块内部的局部关系。它不是原序列的随机换序,样本允许重复和遗漏。本页公开固定种子、每块起点、环绕位置和全部十六次均值,说明区间怎样从有限构造分布取出。
十二期收益和抽样目标
构造十二个等间隔实验日,收益以百分数点输入,依次为3、4、5、4、负3、负4、负5、负4、2、3、4、3。这里的3表示百分之三,计算均值后仍以百分数点显示,不先换成增长因子,也不连乘复利。目标是这段日收益算术均值的不确定性演示,不是最大回撤或资金路径的概率。
原始均值为1个百分点,负收益连续四天出现,正收益也聚集。循环块长三时,每次抽四个起点;每个起点扩展成连续三个零基索引,越过十一就从零继续。四个块连起来恰好十二个观测。固定Python标准库Random种子6061,每种块长各自重新初始化同一随机源,抽样次数固定十六,不声称与其他库随机数算法逐条一致。
| 零基原索引 | 日收益百分数点 |
|---|---|
| 0 | 3 |
| 1 | 4 |
| 2 | 5 |
| 3 | 4 |
| 4 | -3 |
| 5 | -4 |
| 6 | -5 |
| 7 | -4 |
| 8 | 2 |
| 9 | 3 |
| 10 | 4 |
| 11 | 3 |
块起点、环绕和截断怎样复算
对于起点s、块内偏移j,取索引(s+j)模十二。起点十、块长三就给出十、十一、零,最后一项是环绕;这人为接上了样本尾部与头部,目的是让各观测被块覆盖的机会对称,不代表真实市场第十二日之后回到第一日。若长度不是块长的整数倍,则先抽足ceil(n/L)块,拼接后只保留前n项,不能让样本长度随最后一块多出几行。
下表列出块长三全部十六次抽样。starts是四个块首,blocks给出扩展后的分块索引,wrap与四块一一对应;均值直接从最终十二个索引查回原始收益再相加除十二。遇到同一原日重复出现,不要去重;有放回抽样就是需要允许重复。
| 重复号 | 块起点 | 块内索引 | 每块是否环绕 | 最终样本索引 | 均值百分数点 |
|---|---|---|---|---|---|
| 1 | [11, 5, 2, 3] | [[11, 0, 1], [5, 6, 7], [2, 3, 4], [3, 4, 5]] | [是, 否, 否, 否] | [11, 0, 1, 5, 6, 7, 2, 3, 4, 3, 4, 5] | 0 |
| 2 | [7, 10, 4, 7] | [[7, 8, 9], [10, 11, 0], [4, 5, 6], [7, 8, 9]] | [否, 是, 否, 否] | [7, 8, 9, 10, 11, 0, 4, 5, 6, 7, 8, 9] | 0 |
| 3 | [1, 4, 3, 9] | [[1, 2, 3], [4, 5, 6], [3, 4, 5], [9, 10, 11]] | [否, 否, 否, 否] | [1, 2, 3, 4, 5, 6, 3, 4, 5, 9, 10, 11] | 0.66666667 |
| 4 | [10, 3, 11, 3] | [[10, 11, 0], [3, 4, 5], [11, 0, 1], [3, 4, 5]] | [是, 否, 是, 否] | [10, 11, 0, 3, 4, 5, 11, 0, 1, 3, 4, 5] | 1.16666667 |
| 5 | [11, 2, 1, 10] | [[11, 0, 1], [2, 3, 4], [1, 2, 3], [10, 11, 0]] | [是, 否, 否, 是] | [11, 0, 1, 2, 3, 4, 1, 2, 3, 10, 11, 0] | 3.25 |
| 6 | [9, 7, 2, 4] | [[9, 10, 11], [7, 8, 9], [2, 3, 4], [4, 5, 6]] | [否, 否, 否, 否] | [9, 10, 11, 7, 8, 9, 2, 3, 4, 4, 5, 6] | 0.41666667 |
| 7 | [4, 4, 6, 2] | [[4, 5, 6], [4, 5, 6], [6, 7, 8], [2, 3, 4]] | [否, 否, 否, 否] | [4, 5, 6, 4, 5, 6, 6, 7, 8, 2, 3, 4] | -2.08333333 |
| 8 | [1, 10, 3, 6] | [[1, 2, 3], [10, 11, 0], [3, 4, 5], [6, 7, 8]] | [否, 是, 否, 否] | [1, 2, 3, 10, 11, 0, 3, 4, 5, 6, 7, 8] | 1.08333333 |
| 9 | [4, 6, 6, 5] | [[4, 5, 6], [6, 7, 8], [6, 7, 8], [5, 6, 7]] | [否, 否, 否, 否] | [4, 5, 6, 6, 7, 8, 6, 7, 8, 5, 6, 7] | -3.25 |
| 10 | [9, 0, 3, 5] | [[9, 10, 11], [0, 1, 2], [3, 4, 5], [5, 6, 7]] | [否, 否, 否, 否] | [9, 10, 11, 0, 1, 2, 3, 4, 5, 5, 6, 7] | 0.5 |
| 11 | [8, 3, 3, 11] | [[8, 9, 10], [3, 4, 5], [3, 4, 5], [11, 0, 1]] | [否, 否, 否, 是] | [8, 9, 10, 3, 4, 5, 3, 4, 5, 11, 0, 1] | 1.08333333 |
| 12 | [1, 9, 0, 11] | [[1, 2, 3], [9, 10, 11], [0, 1, 2], [11, 0, 1]] | [否, 否, 否, 是] | [1, 2, 3, 9, 10, 11, 0, 1, 2, 11, 0, 1] | 3.75 |
| 13 | [2, 11, 8, 0] | [[2, 3, 4], [11, 0, 1], [8, 9, 10], [0, 1, 2]] | [否, 是, 否, 否] | [2, 3, 4, 11, 0, 1, 8, 9, 10, 0, 1, 2] | 3.08333333 |
| 14 | [11, 3, 2, 0] | [[11, 0, 1], [3, 4, 5], [2, 3, 4], [0, 1, 2]] | [是, 否, 否, 否] | [11, 0, 1, 3, 4, 5, 2, 3, 4, 0, 1, 2] | 2.08333333 |
| 15 | [0, 11, 3, 6] | [[0, 1, 2], [11, 0, 1], [3, 4, 5], [6, 7, 8]] | [否, 是, 否, 否] | [0, 1, 2, 11, 0, 1, 3, 4, 5, 6, 7, 8] | 1 |
| 16 | [5, 0, 2, 0] | [[5, 6, 7], [0, 1, 2], [2, 3, 4], [0, 1, 2]] | [否, 否, 否, 否] | [5, 6, 7, 0, 1, 2, 2, 3, 4, 0, 1, 2] | 1.41666667 |
十六次分布和块长变化
块长一等于逐日有放回抽样,会破坏本例相邻收益聚集。块长三保留每块内部两次相邻关系,块长六保留更长局部状态,但每次只有两个块,抽到的组合更少。块与块的接缝仍会人为制造邻接,不存在“选择任意块长就完整保留所有依赖”的承诺。
| 重复号 | 块长1均值 | 块长3均值 | 块长6均值 |
|---|---|---|---|
| 1 | 0.75 | 0 | 1 |
| 2 | 2.66666667 | 0 | -1.41666667 |
| 3 | -1.33333333 | 0.66666667 | 2.83333333 |
| 4 | 2.66666667 | 1.16666667 | 0 |
| 5 | 2.75 | 3.25 | -0.83333333 |
| 6 | 0.41666667 | 0.41666667 | 1 |
| 7 | 1.66666667 | -2.08333333 | 1.08333333 |
| 8 | 1 | 1.08333333 | 0.5 |
| 9 | -0.58333333 | -3.25 | 0.75 |
| 10 | 1.75 | 0.5 | 2 |
| 11 | 1.75 | 1.08333333 | 2.75 |
| 12 | -0.5 | 3.75 | -1.5 |
| 13 | 0.83333333 | 3.08333333 | -1.83333333 |
| 14 | 1.75 | 2.08333333 | -0.33333333 |
| 15 | 0.08333333 | 1 | 2 |
| 16 | 3.83333333 | 1.41666667 | -0.58333333 |
| 块长 | 重复数 | 重复均值平均 | 2.5%分位 | 97.5%分位 | 最小 | 最大 |
|---|---|---|---|---|---|---|
| 1 | 16 | 1.21875 | -1.05208333 | 3.42708333 | -1.33333333 | 3.83333333 |
| 3 | 16 | 0.88541667 | -2.8125 | 3.5625 | -3.25 | 3.75 |
| 6 | 16 | 0.46354167 | -1.70833333 | 2.80208333 | -1.83333333 | 2.83333333 |
分位点使用排序位置(B-1)q线性插值,B为十六。块长三的演示百分位区间为负2.8125至3.5625个百分点;块长一和六并列,显示选择块长会改变结果。它们不必按块长单调变宽:有限随机抽样、原始周期结构与可用组合共同影响端点。不能从本例块长六区间更窄推导“长块更准确”。
区间叫什么,不能说成什么
我们把两端分位数称作本次构造bootstrap百分位区间,标名义百分之九十五只是说明取了百分之二点五与九十七点五分位。十六次重复远不足以稳定估计尾部分位,输入也只有十二期;固定种子保证复算一致,不保证区间具有百分之九十五真实覆盖率。覆盖率是反复从目标数据生成机制采样时覆盖真参数的频率,需要另行理论条件或校准实验,本页没有执行。
增加重复次数只减少给定经验重抽分布的蒙特卡洛误差,不会凭空增加原始市场信息。把十六改成十万,仍只有这十二个原始日和块内模式。样本没出现过的极端事件、交易成本跳升或流动性枯竭,不会从索引里自己生成。趋势和结构突变还可能破坏局部平稳近似,循环首尾连接尤其需要谨慎解释。
百分位区间跨零也不能直接翻译成某个零均值检验的精确p值;bootstrap分布以样本经验结构为中心,不是已经强制满足零均值的原假设分布。若要检验零均值,需要明确重中心化、检验统计量和依赖假设。本文故意只做均值估计演示,不输出策略显著性或未来盈利概率。
怎样发现索引实现错误
先检查每次最终索引长度都为十二,所有索引在零到十一之间;再从任意一个wrap为真的块核对模运算,确认尾部不会直接丢弃。其次人工挑一次重复,把十二个收益相加并除十二,与表中mean比较。最后核对三个块长都从原始数组读取,而不是在上一次已抽样结果上继续抽,后者会悄悄改变实验定义。
实践中还应记录序列频率、交易日缺口、抽样统计量、块长选择方法与原数据版本。多资产组合要在同一索引下同步抽所有资产列,分别抽各列会破坏共同市场冲击。若比较两套模型,应同步抽它们的配对日期,而不是各自造一条互不相关的历史。
arch时间序列bootstrap官方说明区分固定长度循环块、固定长度非循环块与随机长度平稳bootstrap,支持本文的首尾环绕定义。它没有为本例十二期、十六次重复提供覆盖率保证;程序仅用标准库重建这里的透明索引,不宣称重现arch库的随机数实现或完整置信区间功能。
环绕优势与代价应分别看
非循环固定块只允许完整落在样本内的起点,边缘日进入候选块的机会往往少于中部日;循环方案让每个位置都能作为块首,修正这种几何不对称。但是它把末尾正收益和开头正收益连接起来,也额外保留了原样本不存在的接缝。两种方法的差异来自抽样设计,不能因为循环名字更完整就认为所有数据都应采用。真实序列若首尾处于不同状态,应先评估拼接的可解释性,并将块长和环绕政策写进研究方案。
继续核对研究流程时,可回到时序交叉验证母题;遇到相邻任务,再分别查看IC均值Newey West标准误、因子多重检验Holm与BH。本文的滚动验证工具链接仅作基础流程说明,新增审计和统计计算由本页独立表格与模型交付。
道积君编辑组,AI辅助编写与核算。本文为构造教学实验,来源说明方法,数字由明示输入计算,不代表真实策略、收益预测或统计审定。
复算资料
本篇编号DJ4-061。下载Python复算脚本(文本)与构造输入输出JSON,按编号核对本篇。脚本改存为.py后可用Python标准库运行,数据不是实际用户记录。