Zhuang's Diary

言之有物,持之以恒

一、V21 阿尔法引擎:纯截面因子定价

世界观

超额收益源于横截面因子暴露的持续性分化。 市场贝塔是外生给定的常数(恒定满仓),Alpha 的生成不依赖于对市场方向的预测,而是依赖于因子信号在横截面上的排序能力。系统默认市场状态不可预测且无需预测,收益的方差全部由选股截面的离散度解释。

方法论

  • 收益模型:严格基于截面因子模型。每月对全市场候选池进行单维或多维因子排序,选取 Top N 等权持有。Alpha 的数学期望等于因子多空收益,风险等于因子收益的时间序列波动率。
  • 核心假设:因子溢价在时间序列上平稳,截面排名的领先性在持有期内(月度)不会发生均值回归或反转。
  • 风控逻辑:纯粹的事前过滤。流动性阈值、异常收益率剔除、行业集中度上限,均用于保证截面排序的输入数据质量,而非管理组合的尾部风险。不设组合级止损、不管理市场贝塔暴露、不预留现金缓冲。风控的本质是维持因子暴露的纯洁性,而非控制下行风险。
  • 对前视偏差的零容忍:如 Bad-Returns Filter 仅使用 $i_{global-2} \to i_{global-1}$ 的历史数据,严格切断当期数据对当期选股的污染,即使对 Sharpe 的边际贡献极小(<0.01)也绝不妥协。

二、WIF v5.9 贝塔框架:宏观状态条件下的动态风险预算

世界观

组合收益的决定性变量是宏观 Regime 切换时的贝塔暴露度,而非资产类别内部的标的选择。 Alpha 是贝塔动态再分配的副产品。系统的核心命题不是”在给定暴露下选谁”,而是”在当前宏观状态下给多少暴露”。

方法论

  • 收益模型:基于宏观状态转移模型。Phase 1(CSI/F33b/F29)判断系统性风险状态,Phase 2(PMI/CPI/Yield Curve)判定宏观象限,两相结合输出三轨制贝塔预算(股票/固收/另类的上限比例)。Alpha 来自 Regime 切换的领先识别与时滞套利。
  • 核心假设:宏观经济状态具有惯性,象限转换存在可识别的领先信号(如信用利差扩张、PMI 趋势反转),且信号触发后的配置调整能在摩擦成本约束下捕获 Regime 溢价。
  • 风控逻辑:分层阻断。Phase 1 是系统性风险的硬阻断器(EMERGENCY 绕过所有后续 Phase,强制 SHV+GLD),Phase 3.0 MCI 矩阵是贝塔暴露的软上限,Phase 5B CVaR 是组合尾部风险的统计审查。风控的本质是管理贝塔暴露的方向和大小,而非筛选标的的质量。
  • 对执行摩擦的精确建模:3% 申购费的硬编码、VIX 自适应再平衡带、非对称调仓阈值(超配宽/低配窄),承认 Alpha 会被交易成本反噬,将执行层纳入收益模型。

三、核心分歧总结

维度 V21 阿尔法 WIF v5.9 贝塔
收益归因 截面因子溢价(选股) 状态转移溢价(择时/配比)
时间维度 静态(月度截面快照,不考虑时序演变) 动态(状态转移的领先与滞后)
风险定义 输入数据噪声与因子失效 系统性贝塔错配与尾部崩塌
风控目标 维持因子暴露的纯洁性与统计有效性 控制贝塔暴露与宏观状态的偏离度
现金定位 零(空仓=放弃因子暴露=机会成本) 核心防御工具(SHV 是贝塔收缩的载体)
容错机制 分散化(10只等权吸收个股特异性风险) Hysteresis(5日持续确认过滤假信号)

本质对立:V21 假设市场方向不可知且无需知,将全部赌注押在截面分化上;WIF 假设市场方向可模糊识别且必须识别,将主要赌注押在贝塔分配上。前者信奉”分散化是唯一免费午餐”,后者信奉”Regime 切换是最大 Alpha 来源”。两者在数学框架和风控逻辑上互不兼容,分别回答了投资组合构建中两个正交的问题。

Ernie Chan《算法交易:制胜策略与原理》第四章读书笔记。市场已经经历了大量的“统计套利”算法和策略工程师,均值回归模式已经被竭尽所能地开发出来,所以,均值回归策略相关的收益率一般都降低很多了。2015 年英文版本出版。

第四章:股票与ETF基金的均值回归模式

一、 标的分散化:从个股配对到ETF组合

在第二章和第三章中,我们讨论的主要是两只股票的配对交易。但在实盘中,个股配对存在极大的“特质风险”。

  1. 个股配对的致命缺陷:基本面冲击
    • 原理:即使两只股票(如可口可乐与百事可乐)在历史上高度协整,一旦其中一家发生黑天鹅事件(如财报造假、CEO突发离职、产品致癌丑闻),其基本面发生永久性改变,导致价差永久发散,均值回归策略将面临毁灭性打击。这种风险,再顶尖的回测系统也无法预测。
  2. ETF组合的降维打击:分散特质风险
    • 实战优势:ETF是一篮子股票的组合。当我们在两个具有协整关系的ETF之间(例如金融行业ETF XLF 与 区域银行ETF KRE)进行套利时,单只股票的个体风险被充分分散。
    • 数值对比:假设KRE中某家小银行倒闭,可能只导致KRE净值下跌0.5%,价差略微偏离;但如果是配对交易这两家银行的个股,价差可能瞬间偏离20%直接触发强平。ETF组合的协整关系在样本外(OOS)的存活率和稳定性远高于个股。

二、 衍生品对冲的隐含成本:滚动收益

当使用期货合约替代ETF现货进行均值回归交易时(为了获得杠杆或方便做空),不能只看价格走势,必须将滚动收益纳入总收益的计算。

  1. 期货定价公式与升贴水
    • 理论公式:$F = S \times e^{(r-d)T}$ (其中 $F$ 为期货价格,$S$ 为现货价格,$r$ 为无风险利率,$d$ 为股息率,$T$ 为到期时间)。
    • 常态:通常 $r > d$,因此远月期货价格 $F > S$(处于升水状态,Contango)。
  2. 滚动收益的实战计算
    • 定义:当你做空昂贵的远月合约,并在到期前平仓、买入更便宜的近月合约时,由于价格向现货收敛所赚取的隐含收益。
    • 数值案例:标普500现货 $S=4000$,6个月后期货 $F=4040$(升水40点)。你做空期货。1个月后,现货没涨没跌仍为4000,但期货由于时间流逝,价格变成 $4020$。此时你平仓,虽然现货没动,但你赚取了20点的滚动收益
    • 实战铁律:在回测ETF与期货的套利策略时,必须明确区分现货收益滚动收益。如果忽视滚动收益,你会错误评估策略的真实Alpha,尤其是在高利率环境下,升水带来的滚动收益可能占到大头。

三、 日内与季节性均值回归的特殊性

并非所有的均值回归都能用ADF检验或约翰森检验来证明。

  1. 统计检验的失效
    • 原因:日内数据(Tick或分钟级)充满了微观结构噪音(买卖价差跳动、延迟)。季节性数据(如每年1月份效应)样本点太少。传统的协整检验要求大样本连续数据,在此类场景下会失效(即无法得出“平稳”的统计学结论)。
  2. 实战替代方案:经验法则与规则驱动
    • 做法:放弃寻找数学上的协整性,转而寻找经验上的均值回归
    • 案例:“如果标普500迷你期货在开盘前15分钟内下跌超过0.5%,则在接下来的1小时内做多,收盘前平仓。” 这种策略通不过ADF检验,但由于日内流动性断裂导致的过度反应,其实盘收益可以非常好

四、 策略增强:均值回归与动量的融合

纯粹的均值回归最怕遇到“单边下跌趋势”(即所谓“接飞刀”)。引入动量过滤可以显著提高策略的胜率和一致性。

  • 实战机制:只有当标的的短期动量指标不处于极度恶化状态时,才允许执行均值回归做多信号。
  • 数值案例:假设你的策略发现股票A相对于指数严重超跌(Z-Score < -2),发出做多A的信号。
    • 无过滤:直接买入。结果A是因为业绩暴雷被机构砸盘,继续跌停,策略巨亏。
    • 动量过滤:在执行前,检查股票A过去5天的动量(如5日收益率)。如果5日跌幅超过-10%(动量极度恶化),说明处于强趋势中,拒绝执行该均值回归信号。只有当5日跌幅在-2%以内(只是随大盘轻微拖累)时,才执行做多。这有效剔除了“基本面崩塌”导致的假信号。

五、 指数套利的降维打击与横截面策略

传统的股票指数与期货之间的指数套利,已经沦为高频交易(HFT)的领地,中低频策略必须寻找新的战场。

  1. 指数套利的破局点:成分股子集
    • 现状:直接交易 SPY(标普500 ETF)与 ES(标普500期货)的价差,毫秒级内就会被HFT抹平,无利可图。
    • 实战策略:不要交易全样本指数。挑选指数内受特定宏观因子驱动最强烈的子集。例如,只挑选标普500中前50大科技股,合成一个“微型科技指数”,再与纳斯达克期货(NQ)进行套利。子集的噪音更小,定价效率相对较低,中频策略仍有套利空间。
  2. 横截面均值回归:最经典的线性多空策略
    • 定义:不再寻找特定股票之间的配对关系,而是将整个股票池(如沪深300)作为一个整体,通过某个变量进行横截面排名,做多排名最靠后的,做空排名最靠前的。
    • 核心变量:相对收益率
      • 操作:计算沪深300所有成分股过去5天的收益率。排名前10%(涨得最多的)大概率短期超涨,做空;排名后10%(跌得最多的)大概率短期超跌,做多。每隔一段时间(如5天)进行一次再平衡。这本质上是在赌“涨多了的会跌,跌多了的会涨”。
    • 扩展变量:基本面因子
      • 横截面排名的变量不限于收益率,也可以是**市盈率(P/E)、市净率(P/B)**等。
      • 实战应用:在同一个行业内(如银行业),按市盈率排名。做空PE最高的10%股票(高估),做多PE最低的10%股票(低估)。此时,均值回归策略在形式上已经演变成了传统的价值投资多空策略,但其数学执行逻辑依然是基于统计平均的回归。

Ernie Chan《算法交易:制胜策略与原理》第三章读书笔记。

第三章:均值回归策略的运行机制

一、 对冲比率的精确计算(OLS回归法)

在构建协整投资组合时,对冲比率(Hedge Ratio, 即 $\beta$)的计算方式直接决定了组合是否真正平稳。根据交易意图的不同,必须严格区分价格与对数价格的使用场景:

  1. 固定股数对冲(按数量交易)
    • 方法:直接对两个资产的价格序列 $Y$ 和 $X$ 进行普通最小二乘法(OLS)线性回归:$Y = \beta X + \epsilon$。
    • 实战意义:回归得到的斜率 $\beta$ 即为对冲比率。意味着每交易1股 $X$ 资产,需要交易 $\beta$ 股 $Y$ 资产来构建平稳价差。
  2. 固定市值对冲(按金额交易)
    • 方法:对两个资产价格序列的自然对数 $\ln(Y)$ 和 $\ln(X)$ 进行OLS回归。
    • 数值样例:假设我们要配对交易贵州茅台(Y)和五粮液(X)。茅台价格1700元,五粮液价格150元。
      • 错误做法(用价格OLS):假设算出 $\beta = 2$。策略要求“买1股五粮液,卖2股茅台”。实际资金占用:做多 150元,做空 3400元。资金占比极度失衡,组合收益完全被茅台的单边风险主导,并非真正的均值回归。
      • 正确做法(用对数价格OLS):对 $\ln(1700)$ 和 $\ln(150)$ 回归。假设算出 $\beta = 1.2$(代表价格弹性)。实盘中,我们设定总资金为100万元,则做多五粮液分配50万(买入3333股),做空茅台分配50万(卖出294股)。此时无论两者绝对价格差多远,组合中多空两边的市值是完全对等的
  3. 货币对的特殊处理
    • 原则:货币对(如EUR/USD)本质已经是相对报价,其“价差”没有直接的经济学意义。
    • 实战指标:应直接使用价格比率(Price Ratio, $P_A / P_B$)或对数价差($\ln(P_A) - \ln(P_B)$)作为均值回归的指标,而非算术价差($P_A - P_B$)。

二、 参数漂移与卡尔曼滤波

静态的协整检验假设对冲比率 $\beta$ 是恒定的,但这在实盘中不存在。初级做法是用“移动窗口(如20天)”,但存在断崖式跳变的问题。高级做法是引入卡尔曼滤波。

  • 卡尔曼滤波动态对冲样例
    假设我们在交易AMD(Y)和英伟达(X)的价差。
    • 状态方程(预测):$\beta_t = \beta_{t-1} + \omega$ (假设今天的对冲比率等于昨天,加上微小随机噪声 $\omega$)
    • 观测方程(实测):$Y_t = \beta_t X_t + v$ (实际价格关系,$v$ 为观测噪声)
    • 卡尔曼增益(核心公式):$K_t = \frac{P_{t|t-1}}{P_{t|t-1} + R}$
      (注:$P_{t|t-1}$ 是预测误差方差,$R$ 是市场观测噪声方差。$K_t$ 决定了我们多大程度上相信新数据)
    • 数据推演
      • T-1日:模型估算 $\beta_{t-1} = 0.5$(即1股NVDA对冲0.5股AMD)。预测误差方差 $P = 0.01$,市场噪声方差设定为 $R = 1.0$。
      • T日新Tick到来:NVDA暴涨,$X_t = 800$;AMD跟涨,$Y_t = 450$。
      • 计算卡尔曼增益:$K_t = 0.01 / (0.01 + 1.0) \approx 0.0098$ (因为市场价格噪声极大,所以 $K$ 很小,模型选择“不信谣不传谣”)。
      • 计算残差(意外幅度):实际AMD价格 - 预测AMD价格 = $450 - (0.5 \times 800) = 50$ 美元。
      • 更新对冲比率:$\beta_{new} = 0.5 + 0.0098 \times 50 = 0.5 + 0.49 = 0.99$。
    • 实战优势:如果用静态20天窗口,$\beta$ 会突然从0.5跳变到1.0,导致巨量换手;而卡尔曼滤波通过 $K_t$ 的调节,将其平滑过渡到了0.99,完美解决了参数漂移引发的实盘冲击成本问题。

三、 仓位管理与波动率自适应

标准线性Z-Score策略(仓位 = $-k \times Z$)假设方差恒定。实盘中必须引入布林带(动态标准差),并深刻理解“加仓”在动态系统中的双刃剑效应。

  • 布林带与被动加仓的数值推演
    假设我们交易一个股指期货价差组合,历史均值 = 0点。
    • 初始建仓(T1):过去20天标准差 $\sigma = 10$ 点。价差突然扩大到 $+20$ 点。
      • 静态Z-Score = $(20-0)/10 = 2.0$。触发做空信号,建立空头底仓。
    • 极端行情演化(T2):价差继续单边发散,涨到了 $+30$ 点。此时实盘波动率剧增,布林带带宽被撑大,最近10天的实际标准差变成了 $\sigma = 15$ 点
    • 策略分化
      • 静态模型的灾难:如果死板使用历史 $\sigma=10$,此时的 $Z = 30/10 = 3.0$。模型认为“偏离更大了,更值得做空”,从而盲目加仓。这往往是实盘爆仓的元凶(逆势死扛)。
      • 布林带模型的自救:使用动态 $\sigma=15$,此时 $Z = 30/15 = 2.0$。Z-Score并没有进一步放大,模型拒绝加仓,甚至如果均值发生微小漂移,还会发出减仓信号。
    • 何为“被动加仓的有效性”?
      在上述T2场景中,如果交易员采用网格交易法(不依赖Z-Score,而是设定每上涨5点手动加仓一次)。当价格从20涨到30时,交易员“被动”地在25和30加了空单。
      • 为何回测中无效? 回测假设波动率恒定,一次性在20点做空是最优的,后续加仓增加了手续费且拉低了平均收益。
      • 为何实盘中有效? 因为实盘的波动率和概率分布实时变化。如果在30点被动加仓后,价差真的从30点回归到0点,这种分批建仓法有效降低了整体持仓的平均成本(从20点降至了25点左右),提高了安全垫。
      • 致命前提:这种“被动加仓”必须配合严格的止损线(例如价差突破40点无条件全部平仓)。因为如果价差从30点涨到100点,网格加仓会让你在错误方向上越陷越深。

四、 数据误差对均值回归的致命影响

数据质量是均值回归策略的生死线,其对数据的敏感度远高于动量策略。

  1. 均值回归 vs. 动量:对误差的容忍度
    • 动量策略:只关心价格的方向(今天涨还是跌),对绝对数值的误差不敏感。即使某个价格点被错误记录,只要趋势方向对,策略依然有效。
    • 均值回归策略:极其依赖价格的绝对水平(当前价格偏离均值有多远)。
  2. 误差的“膨胀效应”数值案例
    • 案例:某股票因除权除息,价格在一天内从 100元 真实下跌到 90元。但你的数据供应商漏掉了这笔分红,未做后复权处理。
    • 后果
      • 动量策略:看到一根-10%的大阴线,视为一次普通的下跌趋势,可能不做交易或顺势做空,影响有限。
      • 均值回归策略:假设该股与另一只平稳股票的价差历史均值为 5元,标准差为 2元。由于未复权,价差瞬间变成了 $-5$ 元。Z-Score计算为 $(-5 - 5) / 2 = -5.0$。策略会认为出现了“千年一遇”的极度低估,触发满仓逆势做多信号,最终造成灾难性亏损。
    • 实战铁律:在运行基于价差的均值回归策略前,必须对输入数据进行极其严格的异常值剔除(如MAD法)复权处理。即使是非常微小的数据误差(如几分钱的偏差),在高频或高杠杆的价差交易中也会被急剧放大。

Ernie Chan《算法交易:制胜策略与原理》第二章读书笔记。

第二章:均值回归与平稳性

一、 核心概念与统计检验

  1. 均值回归
    • 定义:价格的变化与“平均价格”和“当前价格”之差成正比。即跌多了会涨,涨多了会跌。
    • 公式:$dY(t) = \lambda (Y_{mean} - Y(t-1)) dt + dW$ (其中 $\lambda$ 为回归速度,$dW$ 为随机噪声)
  2. 平稳性
    • 定义:价格序列的统计特性(均值、方差)不随时间漂移。价格离散的速率小于几何随机游走的速率。
  3. ADF检验
    • 目的:测试单只股票/资产是否具备均值回归特性。
    • 实战阈值:计算出的ADF统计量需小于临界值(如1%显著性水平下的-3.43),或 P值 < 0.05,才认为序列具备均值回归性。注:单只股票极少通过ADF检验,通常呈现随机游走。
  4. 赫斯特指数与方差比率检验
    • 目的:测试平稳性及长期记忆性。
    • 实战阈值:赫斯特指数 $H$。
      • $H = 0.5$:纯随机游走。
      • $H < 0.5$:具备均值回归性(越小越强,实战中寻找 $H$ 在 0.3 - 0.45 之间的标的)。
      • $H > 0.5$:具备动量/趋势延续性。

二、 均值回归的实战指标

  1. 半衰期
    • 定义:测定价格向其均值回归的速度有多快(即偏离均值后,回归一半所需的时间)。
    • 实战意义与阈值:半衰期决定了持仓周期。实战中,半衰期通常应在 1 到 50 个交易日之间。若半衰期 < 1,回归太快,多为噪音,交易成本吞噬利润;若半衰期 > 50,回归太慢,资金占用成本过高。
  2. 线性交易策略(Z-Score策略)
    • 定义:投资组合的仓位份数与其Z分数的负值成正比。
    • 公式:$Z = \frac{Price - SMA(Price)}{Std(Price)}$
    • 实战阈值:当 $Z > +2$ 时做空(高估),当 $Z < -2$ 时做多(低估),当 $Z$ 回归至 0 附近平仓。

三、 协整:多资产的均值回归

  1. 协整
    • 定义:两只(或多只)非平稳的价格序列(如股票A和股票B各自随机游走),如果它们的某种线性组合是平稳的,则称它们协整。这意味着尽管各自价格发散,但它们之间的“价差”会均值回归。
  2. 检验方法
    • CADF检验:用于测试两个序列的协整性。
    • 约翰森检验:用于测试三个及以上序列的协整性。
  3. 实战应用:特征向量与对冲比例
    • 原理解析:约翰森检验生成的特征向量,即为资产间的对冲比例。将各资产价格乘以对应的特征向量权重,即可合成一条平稳的“价差序列”。
    • 实战阈值:约翰森检验会输出多个特征值和特征向量。应选择最大特征值对应的特征向量,因为最大特征值对应最平稳的组合和最短的半衰期,最适合用于套利交易。

Ernie Chan《算法交易:制胜策略与原理》第一章读书笔记。

第一章:回测系统的陷阱与统计学应用

一、 回测的核心目的与常见缺陷

回测系统的终极目标是预测未来交易策略的绩效,但过程中潜藏的诸多陷阱会严重削弱其预测能力。常见的缺陷及实战清除策略如下:

  1. 前视偏差
    • 原理:使用了回测当时根本无法获取的未来数据。
    • 实战修复:回测生成信号与执行交易的代码逻辑必须完全一致。通常采用“T日收盘生成信号,T+1日开盘执行交易”的严格时序。
  2. 数据探测偏差
    • 原理:在大量历史数据中反复测试不同参数,碰巧找到一段表现极佳的参数组合(过度拟合)。
    • 实战修复
      • 样本外测试(OOS)与交叉验证:将数据分为训练集(如2010-2018)和测试集(如2019-2023),仅在训练集调参。
      • 模型简化原则:参数越少越好,拒绝过度复杂的拟合曲线。
      • Deflated Sharpe Ratio( deflate 夏普比率):根据尝试的参数组合数量对夏普比率进行惩罚。
  3. 数据质量缺陷(生存者偏差与公司行动)
    • 案例:“为什么2021年7月9日会生成做空THQI的信号?哦,因为忘了按1:10的比例调整历史复权价格。”
    • 实战修复:必须使用后复权价格计算收益率;必须在回测引擎中引入退市、并购、ST特别处理等状态标记,剔除当前已退市的股票会导致回测收益虚高(生存者偏差)。
  4. 流动性约束与微观结构缺陷
    • 案例:“回测用收盘价效果很好,但实盘用真实市场数据却大幅缩水。”
    • 实战修复:回测必须考虑滑点交易佣金。对于容量有限的策略(如小盘股),需设置单笔交易量不超过该标的日均成交量的X%(如5%)的阈值限制。
  5. 制度性与规则性限制
    • 案例:“模型在2008年11月做空很多股票表现很好,但当时美国SEC禁止裸卖空。”或“高频交易忽视了涨跌停板限制。”
    • 实战修复:回测引擎必须内置历史交易规则变更(如限制做空名单、涨跌停板限制、T+1制度)。

二、 回测系统的统计学假设检验

仅仅依靠高夏普比率不能证明策略有效,必须通过统计学假设检验(零假设:策略收益率为0)。

  1. 夏普比率的T检验
    • 公式:$T = \frac{Mean(R)}{Std(R)} \times \sqrt{N}$ (其中N为交易次数/样本数)
    • 实战阈值:通常要求 $T > 2$(对应95%置信水平),即策略的收益并非随机产生。但若收益率序列存在自相关,需使用Newey-West调整后的标准差,否则会高估夏普比率。
  2. 蒙特卡洛模拟与P值检验
    • 场景:策略年化收益10%,如何证明这不是碰运气?
    • 方法一(随机入场法):保持交易次数和持仓时间不变,但随机改变入场时间,生成10,000次模拟。如果其中只有100次模拟的年化收益大于10%,则P值 = 100/10000 = 1%。
    • 方法二(价格序列重采样法):对历史价格进行打乱重排,运行策略10,000次。
    • 实战判断P值必须 < 0.05(甚至<0.01),才能拒绝零假设,证明策略具备真正的Alpha。