平均日波幅(Average Daily Range,简称 ADR)是一种用于衡量资产价格波动性的技术指标。它通过计算特定时间周期内最高价与最低价之间差额的平均值,帮助交易者识别价格行为的短期显著变化。本文将深入解析 ADR 的计算原理、应用方法及其在现代量化分析中的实践价值。
什么是平均日波幅(ADR)?
平均日波幅的核心功能在于度量资产价格的波动强度。它通过平滑历史数据中的噪音,反映资产在一定周期内的典型价格波动区间。与移动平均线类似,ADR 基于历史数据计算平均值,但聚焦于每日价格振幅的均值化处理。
每日波幅(Daily Range)即单一周期内最高价与最低价之差。交易者通过比较当前每日波幅与过去一段时间的 ADR 值,识别价格是否脱离正常波动区间,进而寻找潜在的入场与出场时机。虽然计算周期可灵活设置,但金融市场中普遍采用 20 日作为标准回溯区间。
ADR 的计算原理与方法
平均日波幅的计算分为四个基本步骤:
- 设定回溯周期(通常记为 K,如 20 日)
- 逐日计算每日波幅:
当日最高价 - 当日最低价 - 累加所有周期内的每日波幅值
- 将总和除以回溯周期长度 K
以下是一组简化示例数据的手动计算过程:
| 周期 | 最高价 | 最低价 | 每日波幅 |
|---|---|---|---|
| 第1日 | 5 | 3 | 2 |
| 第2日 | 7 | 4 | 3 |
| 第3日 | 9 | 6 | 3 |
| 第4日 | 7 | 3 | 4 |
| 第5日 | 8 | 4 | 4 |
5 日 ADR 计算结果为:(2+3+3+4+4) / 5 = 3.2
Python 实现基础 ADR 计算
现代金融分析依赖于程序化工具。以下使用 Python 演示如何实现上述逻辑:
# 示例价格数据(高价、低价)
prices = [(5, 3), (7, 4), (9, 6), (7, 3), (8, 4)]
# 计算 ADR
adr_value = sum(high - low for high, low in prices) / len(prices)
print(adr_value) # 输出:3.2实战案例:以太坊价格波幅分析
我们以以太坊(ETH-USD)为例,获取其过去6个月的价格数据,并计算20日ADR。
数据获取与预处理
使用 yfinance 库获取公开市场数据:
import yfinance as yf
# 获取ETH-USD过去6个月的日线数据(仅保留最高价、最低价)
eth_data = yf.Ticker('ETH-USD').history(period='6mo', interval='1d')[['High', 'Low']]计算每日波幅与ADR
# 计算每日波幅(美元值)
eth_data['dr'] = eth_data.apply(lambda row: row['High'] - row['Low'], axis=1)
# 计算20日平均日波幅
eth_data['adr'] = eth_data['dr'].rolling(window=20).mean()需要注意的是,由于采用20日滚动窗口,前19个交易日无法生成有效的ADR值(显示为NaN)。从第20个交易日开始,每个ADR值均包含当前及前19日的波幅数据。
ADR 的改进:百分比波幅标准化
基础ADR以绝对数值(如美元)衡量波幅,难以直接对比价格差异巨大的资产(如千元股与低价股)。为此,我们引入百分比形式的ADR改进版本:
- 计算每日波幅百分比:
(当日最高价 / 当日最低价 - 1) * 100 - 计算此百分比值的20日移动平均
# 计算百分比每日波幅
eth_data['dr_pct'] = eth_data.apply(lambda row: 100 * (row['High'] / row['Low'] - 1), axis=1)
# 计算改进型ADR(百分比)
eth_data['mod_adr'] = eth_data['dr_pct'].rolling(window=20).mean()改进型ADR使得不同价位的资产之间具有可比性。例如,若资产A的ADR为5%(平均日波幅5%),资产B为2%,则A的波动性显著高于B。
ADR 的解读与交易应用
ADR 值本身反映资产的平均波动强度:
- 高位ADR:表明资产近期波动剧烈,可能源于重大新闻、事件驱动或成交量放大
- 低位ADR:暗示市场处于整理或低波动状态,波动性收缩
- ADR趋势上升:波动性逐步增加,可能预示趋势行情临近
- ADR趋势下降:波动性逐步减弱,市场可能进入盘整
但需注意,ADR 仅衡量日内波动,未考虑隔夜跳空缺口(Gap)。对于存在大量隔夜风险的市场,👉结合更多波动性分析工具可能更为全面。
常见问题
ADR 与平均真实波幅(ATR)有何区别?
ADR 只使用当日最高价和最低价计算波幅,而 ATR 还考虑了前一日收盘价与当日开盘价之间的跳空缺口,因此 ATR 对价格波动的刻画更为全面,尤其在隔夜波动较大的市场中。
ADR 的最佳回溯周期是多久?
20 日是金融市场中的常用标准,但可根据交易策略调整。短线交易者可尝试较短周期(如5-10日),长线投资者或可延长至50日。不同市场特性也可能影响周期选择。
能否仅凭 ADR 制定交易策略?
不建议。ADR 是描述性指标而非预测性指标。它仅反映历史波动情况,需与趋势指标、动量指标(如RSI、MACD)等结合使用,才能构建更为可靠的交易系统。
如何用 ADR 识别突破信号?
当当前日波幅显著超过 ADR 值(例如达到 ADR 的1.5或2倍)时,可能预示着价格突破正常波动范围,值得密切关注。但需结合成交量及其他技术信号综合判断。
ADR 适用于所有金融产品吗?
ADR 概念可应用于任何具有日内价格波动的资产,包括股票、外汇、加密货币、期货等。但不同资产类别的波动特性差异较大,直接对比绝对值时需使用百分比形式改进版。
为何我的 ADR 计算前19天没有数值?
这是因为采用了20日滚动窗口计算平均值。前19天数据不足以填充整个窗口,故无法生成有效均值。这是滚动计算的正常现象,并非错误。
总结
平均日波幅(ADR)作为一个直观有效的波动性度量工具,为交易者提供了资产价格行为的重要视角。无论是基础版本还是百分比改进版本,都能在资产筛选、风险管理和策略开发中发挥作用。但牢记其作为滞后指标的本质,始终结合其他分析手段与市场语境进行综合判断,方能提升决策有效性。