- 存活者偏差:你的回测收益被系统性高估了多少
存活者偏差:你的回测收益被系统性高估了多少 - halo的技术博客
8 min Chinese - 波动率目标择时股债配置:用已实现波动开关风险敞口
传统 60/40 股债组合的风险敞口是焊死的——市场平静时它嫌不够猛,崩盘时它嫌太暴露。波动目标(Vol-Target)策略用过去 20 日已实现波动估计下期波动,把组合目标年化波动钉在 10%,于是崩盘前波动飙升、自动砍掉 equity 敞口、转配债券。本文 numpy 合成含 2020-03 风格崩盘的 15 年日度数据,对比 VM 与 60/40:VM Sharpe 0.16、最大回撤 -43%,60/40 Sharpe ~0、回撤 -59%。附完整 Python 与四张真实计算图。
10 min Chinese - 下行 beta 与下偏矩:标准 beta 看不见的那一半风险
下行beta与下偏矩 - halo的技术博客
10 min Chinese - Gram-Schmidt 因子正交化:把相关因子拆成互不重叠的纯净信号
多因子模型里因子天然相关——价值因子和盈利因子、动量因子和反转因子经常缠在一起,导致截面回归系数互相污染、SE 膨胀、因子重要性排不出来。本文 numpy 从零实现 Gram-Schmidt 正交化,把 4 个被随机矩阵搅到最大相关 0.95 的因子拆成完全正交(离对角相关≈0)的纯净分量,量化「增量方差解释各 25%、被前驱解释 R² 从 0.98 降到 0」,并演示截面回归系数 SE 从 [0.16,0.07,0.54,0.54] 收缩到四个相等且最小的 0.98——正交后系数可加、可解释。附完整 Python 与四张真实计算图。
12 min Chinese - 限价单簿隐马尔可夫建模:用 HMM 把盘口状态分成安静与挤兑
限价单簿不是一直一个样——平静时价差薄、成交稀疏,受压时( toxic flow、挤兑、闪崩前)订单流失衡、价差瞬间拉开。这个『状态切换』恰恰是马尔可夫的:今天的状态只取决于上一刻。本文用 numpy 从零实现 2 状态高斯 HMM(缩放 Baum-Welch EM + Viterbi 解码),在 1500 步合成盘口数据上把隐藏状态恢复出来,Viterbi 解码准确率 99.4%、转移矩阵 [[0.99,0.01],[0.055,0.945]] 几乎还原真值;并把状态后验概率接到一个做市商策略上——受压时减仓+加宽价差,库存风险(σ)从 50.3 砍到 19.6(−61%)、最大回撤从 −22.4% 收到 −8.6%(−62%)。附完整 Python 与四张真实仿真图。
11 min Chinese - 最大熵投资组合:在「什么都不确定」时给出最不偏见的权重
最大熵组合用 w_i ∝ exp(λ·μ_i) 把「观点强度」编码成一个温度参数:观点越空、权重越接近等权(熵最大、最不偏见);观点越强、权重越集中。本文 numpy 从零实现最大熵组合 + 收益约束,量化「倾斜中档 λ=51 时归一化熵从 1.00 降到 0.84、年化 Sharpe 3.80→3.47」;300 次 OOS 蒙特卡洛诚实显示熵倾斜并不比等权更赚,但它把组合方差从 2.37% 拉到 3.4%、把权重集中度和尾部风险压在可控区间——它卖的是「可解释的不确定性量化」而非超额收益。附完整 Python 与四张真实计算图。
14 min Chinese - GAS 得分驱动波动率:为什么波动模型不该被固定形状绑架
GAS 得分驱动波动率 - halo的技术博客
10 min Chinese - 半方差与下行风险组合:只用亏损那半边方差做优化
方差把上涨和下跌对称对待,于是它把『安静但会崩盘』的资产当成低风险。半方差(semivariance)只统计跌破目标那半边的波动,把真正的左尾风险挑出来。本文用 numpy 从零实现下行半协方差矩阵与最小半方差组合,在 8 个『总波动相同、下行不对称』的合成资产上证明:最小方差组合重仓了低波动的崩盘组(权重 0.12–0.14),最小半方差组合反手改仓几乎不崩的高波动组(权重 0.17–0.25),下行半偏差降 9.6%、最大回撤中位数降 47%、Sortino 从 0.076 升到 0.436。附完整 Python 与四张真实计算图。
11 min Chinese
返回