样本很短权重却极端,收缩协方差怎样改变解的稳定性
短样本中相邻资产几乎同步,最小方差权重可能对很小的输入变化极其敏感。本例只把第四条B收益由一点九改到二点三个百分点,不收缩的受限解就从全B翻为全A;固定收缩二分之一后,权重L1漂移约零点零七九七六八。它展示稳定性变化,不证明未来风险下降。
四条样本和一个预先声明的扰动
构造A、B两项资产,四个教学日收益以百分点记录,不乘任何年化因子。A为负二、负一、一、二,B为负一点九、负零点九、一点一、一点九。各列先减自己的样本均值,再以三作分母估计协方差。扰动只改最后一项B为二点三,其他七个输入值不变;这是一组预先指定的敏感性测试,不是从多个结果中挑出最能证明收缩有效的一次。
| 序号 | 原A收益 | 原B收益 | 扰动后B收益 |
|---|---|---|---|
| 1 | -2 | -1.900000 | -1.900000 |
| 2 | -1 | -0.900000 | -0.900000 |
| 3 | 1 | 1.100000 | 1.100000 |
| 4 | 2 | 1.900000 | 2.300000 |
组合要求A、B非负且合计一,忽略现金、费用、预期收益和交易容量,只比较最小方差。样本非常短是特意构造的教学条件,不应将某个权重当作可投资配置。收益单位为百分点,所以协方差与组合方差的单位都是百分点平方;若把收益统一改成小数,矩阵整体缩小一万倍,最小方差权重不变,但方差数值会改变,不能跨单位直接比较。
样本矩阵与对角目标怎样区分
| 矩阵 | AA | AB | BA | BB |
|---|---|---|---|---|
| 原样本S | 3.333333 | 3.200000 | 3.200000 | 3.076667 |
| 扰动S | 3.333333 | 3.466667 | 3.466667 | 3.610000 |
| 原目标T | 3.205000 | 0 | 0 | 3.205000 |
| 扰动目标T | 3.471667 | 0 | 0 | 3.471667 |
原样本矩阵的AA约三点三三三三三三,AB为三点二,BB约三点零七六六六七;扰动后AA不变,AB约三点四六六六六七,BB为三点六一。收缩目标T定义为样本矩阵迹除以二乘单位矩阵,因此原对角目标两项均为三点二零五,扰动后目标两项约三点四七一六六七。这里对角目标不是把两个原方差各自原封不动保留,而是同一平均方差的球形目标。
每个收缩矩阵为一减lambda乘S,加lambda乘T,lambda固定取零、四分之一、二分之一、一。对照中扰动样本会重新估计S及它自己的T,但lambda绝不重新拟合。这样比较的是相同估计规则对一条输入变化的反应;若只改变S却固定原T,也能做另一种实验,不过要明确是不同目标规则,不能把两种流程的漂移混在一列。
scikit-learn 1.9.1的LedoitWolf说明列出迹均值单位矩阵形式,并说明该估计器的系数由Ledoit与Wolf公式估计。本文只采用同类目标结构,四个lambda是编辑预设的固定对照,没有实现该系数估计器,不能把零点五称为LW最优系数,更不能把四样本的演示称作统计最优保证。
两资产受限最小方差可以直接求导
设矩阵为AA等于a、BB等于b、交叉项等于c,A权重为x,B为一减x。组合方差展开为a乘x平方,加二c乘x乘一减x,再加b乘一减x平方。二次项系数为a加b减二c,未受限驻点为b减c再除以该系数;最后把x限制在零到一之间。这里所有矩阵正定,分母为正,因此解析解是此连续区间上的全局最小值,不是网格挑出的候选。
原样本中b小于c,驻点在零左侧,受限解为全B;扰动后c大于a,驻点在一右侧,受限解为全A。两资产都看起来与对方很像,却因很小的差异把连续驻点推到不同边界。这不是方差公式算错,而是接近奇异方向的估计误差被优化过程放大。若取消非负限制,驻点可能对应很大的多空权重,本例没有展示或认可那类仓位。
特征值、权重与漂移一起保留
| lambda | 最小特征值 | 最大特征值 | 原A权重 | 原B权重 | 扰动A权重 | 扰动B权重 | L1漂移 | 原模型方差 |
|---|---|---|---|---|---|---|---|---|
| 0 | 0.002428 | 6.407572 | 0 | 1 | 1 | 0 | 2 | 3.076667 |
| 0.250000 | 0.803071 | 5.606929 | 0.440217 | 0.559783 | 0.559512 | 0.440488 | 0.238590 | 2.796746 |
| 0.500000 | 1.603714 | 4.806286 | 0.480010 | 0.519990 | 0.519895 | 0.480105 | 0.079768 | 2.401217 |
| 1 | 3.205000 | 3.205000 | 0.500000 | 0.500000 | 0.500000 | 0.500000 | 0.000000 | 1.602500 |
原矩阵最小特征值约零点零零二四二八,最大约六点四零七五七二,两者相差很大。lambda四分之一时,最小特征值升到约零点八零三零七一,原A权重约零点四四零二一七,扰动后约零点五五九五一二,L1漂移约零点二三八五九零。lambda二分之一时,原A约零点四八零零一零,扰动后约零点五一九八九五,L1漂移进一步减小。
L1漂移定义为两项新旧权重差的绝对值之和,所以从全B翻到全A是二,并非一;如果读者希望报告单边变化,可以另除二,但应保留名称。lambda为一时只剩球形目标,两项权重固定各半,漂移为零。这种完美稳定来自完全抹去两项差异,不代表信息利用最好;只把稳定性作为唯一指标,会偏好忽略全部数据的规则。
| lambda | 输入版本 | AA | AB=BA | BB | 特征值对 |
|---|---|---|---|---|---|
| 0 | original | 3.333333 | 3.200000 | 3.076667 | [0.0024276831827134693,6.407572316817287] |
| 0 | perturbed | 3.333333 | 3.466667 | 3.610000 | [0.0022410818055518256,6.941092251527781] |
| 0.250000 | original | 3.301250 | 2.400000 | 3.108750 | [0.8030707623870352,5.606929237612965] |
| 0.250000 | perturbed | 3.367917 | 2.600000 | 3.575417 | [0.8695974780208306,6.073735855312503] |
| 0.500000 | original | 3.269167 | 1.600000 | 3.140833 | [1.6037138415913568,4.806286158408644] |
| 0.500000 | perturbed | 3.402500 | 1.733333 | 3.540833 | [1.7369538742361093,5.206379459097224] |
| 1 | original | 3.205000 | 0.000000 | 3.205000 | [3.205,3.205] |
| 1 | perturbed | 3.471667 | 0.000000 | 3.471667 | [3.4716666666666667,3.4716666666666667] |
完整矩阵表允许读者用二乘二特征值公式复核:迹加减根号下对角差平方加四倍交叉项平方,再除以二。方差表是在各自收缩模型下计算的最小值,不是用同一真实协方差评估的未来风险。lambda增加时模型方差下降,包含目标本身改变的影响,不能据此断言持有该组合的实际波动一定下降,也不能用训练样本方差最低倒选lambda。
怎样报告估计规则的可用范围
先保存原始样本、样本分母、中心化方式、目标定义和固定lambda,再记录输入扰动、特征值、受限解与权重漂移。矩阵若本来含缺失拼接错误,应先修数据来源;收缩不能自动解释缺失机制。若全部样本相同,迹可能为零,球形目标也为零,最小方差会有多解,不能沿用本例唯一解结论;公开模型的二资产公式对极小分母作中间点约定,正文分析只限当前严格正定输入。
本篇交付的不是选择哪只资产,而是同一约束下估计矩阵到解的敏感性证据。实际使用还应在独立期间检验预测风险,并把收益、费用、行业和可交易性纳入各自规则。固定收缩能改善本例数值条件,却不提供收益保证,稳定的错误估计同样可能把组合长期推向不合适的风险方向。
从分数到持仓的母题可了解组合构建背景;组合波动率基础工具只核给定输入的基础风险,本页新增模型在教学表中核算,不表示工具已增加优化能力。相关条件可继续核对缺失收益协方差非半正定与收益预测误差稳健组合,分别保留各题输入,避免把不同约束的结论混用。
道积君编辑组,AI辅助编写与核算。本文编号DJ4-086,构造教学数据不对应真实账户;来源支持所注明方法,不证明参数、预测或执行条件真实成立。
复算资料
本篇编号DJ4-086。下载Python复算脚本(文本)与构造输入输出JSON,按编号核对本篇。脚本改存为.py后可用Python标准库运行,数据不是实际用户记录。