计算 MACD
MACD(12/26/9 默认)via pandas-ta。返回 macd 线、signal 线、histogram。Edge-first 消费上游 close 序列。连到多个 Price Factor 时按标的 fan out 为 by_symbol。
做什么(One-liner)
MACD 三元组(line / signal / histogram),Appel 12/26/9 default —— 基于链式 EMA 的趋势/动量交叉 transform。
输入
fast(number,可选)—— Fast EMA 周期,默认 12。slow(number,可选)—— Slow EMA 周期,默认 26。signal(number,可选)—— Signal 线 EMA 周期,默认 9。
输出
macd——EMA(fast) - EMA(slow)。signal—— MACD 线的 EMA。histogram——MACD - signal。by_symbol—— 连多个 Price Factor 时的 per-ticker 映射。
怎么用
- 上游
price_factor提供 close 序列。 - 可选:覆盖
fast/slow/signal周期。 - 查看
macd/signal/histogram数组。
核心公式
MACD = EMA(close, 12) - EMA(close, 26)
signal = EMA(MACD, 9)
histogram = MACD - signalpandas-ta 返回 columns 是 [MACD_12_26_9, MACDh_12_26_9, MACDs_12_26_9] —— MACD, histogram, signal。之前的 BUG-GOLDEN-002 把 index 1 和 2 搞反;golden test 捕获,现已 fix。
假设与适用场景
假设:Appel defaults 12/26/9 + EMA adjust=False + pandas-ta 1e-10 等价。
适用:trend / divergence / crossover signal;equities、FX、crypto、commodities,daily / weekly 频率。
不适用:intraday tick、n < 35、横盘。
已知局限
- 滞后指标 —— 剧烈反转时偏晚。
- 默认 12/26/9 是惯例,未按资产调参。
- pandas-ta 版本漂移风险(修复前 column ordering 曾 swap;BUG-GOLDEN-002)。
参考文献
Appel (1979) 原始 MACD;Murphy (1999) 标准解释。
Golden Test
tests/golden/fixtures/tier1/compute_macd/ —— 容差 1e-10 absolute,pandas-ta 直接调用 + 手算 EMA 链 cross-check,最后验证 2026-05-25,状态 passing。
Changelog
- 1.0.0 (2026-05-25) —— 作为 Layer-1 规范 transform 激活;并入已弃用 Layer-0
compute_macd卡的治理字段(含 BUG-GOLDEN-002 column-ordering 历史)。

