想看期货波动,平均真实波幅(ATR)和历史波动率(HV)都能提供信息,却不宜拿两个数直接比较谁大谁小。你若关心一段行情通常跨过多少报价距离,与关心收盘价格的比例变化有多分散,实际上是在问不同的问题。
前一个问题更贴近ATR的价格尺度,后一个更贴近历史波动率的收盘变化尺度。选择的关键不是哪个名字听起来更专业,而是它保留了什么输入、最后这个数能帮你解释什么。TqSdk分别提供这两类计算入口,适合把它们各自的用途放清楚。
关心报价距离,ATR保留的是幅度这一面
ATR的基础是真实波幅TR。TqSdk的ta.ATR(df, n)返回tr和atr两列;在3.10.4实现中,先计算每根TR,再对TR作n期简单移动平均得到ATR。
单根TR取以下三个距离中的最大值:本根最高价减最低价、最高价与前收盘价之差的绝对值、最低价与前收盘价之差的绝对值。因此,它不只看本根高低差,也把本根价格与前一根收盘价的位置关系纳入考虑。
如果你的问题是“最近这些K线通常跨过多大的报价距离”,这种构造就很贴切。它保留价格单位,能帮助你理解图上一段幅度相对过去波幅处在什么位置,而不必把每个价格距离都直接称为百分比波动。
但ATR不是未来每根K线必须遵守的活动半径。过去的平均幅度可以作为观察参照,不等于下一根最高、最低价的保证,更不会单独给出最优止损距离。
关心比例变化,历史波动率看另一组关系
历史波动率更关注过去收盘价格的相邻比例变化及其离散程度。TqSdk的tafunc.get_his_volatility(df, quote)以K线序列和该序列对应合约的Quote为输入,返回一个浮点数。
这里的Quote不只是装饰参数。相应实现除收盘价外,还使用K线周期,并在合约匹配、适用时结合交易时段进行缩放。比较不同计算结果,应保持窗口、周期、对应合约及时段口径可比,不能只把两条不同周期的收盘序列塞进去,就默认数值已经处在同一种尺度上。
如果你要研究的是“价格相对自身水平怎样变化”,历史波动率比直接拿一段报价距离更对题。它不是价格高低的平均值,也不是把ATR随手除以某个价格就能无条件替代的东西。
这种指标仍来自过去样本。历史比例波动较大,不能直接改写成下一天必然波动多少,也没有给出未来某个区间的确定概率。
收盘走法一样,盘中范围仍可能不同
用一组纸面样本能看清两种输入的差别。假设同一合约、相同周期和时段,所看范围的收盘价都依次为100、101、100、102;只改变末根K线的最高、最低价,其他条件保持一致:
| 假设样本 | 末根最高价 | 末根最低价 | 末根TR |
|---|---|---|---|
| 范围较窄 | 103 | 99 | 4 |
| 范围较宽 | 110 | 90 | 20 |
末根前收为100。较窄样本的三个距离是4、3、1,最大为4;较宽样本的三个距离是20、10、10,最大为20。末根都收在102,但单根真实波幅明显不同。
表中的4与20只是单根TR,不是整段ATR。ATR还要按照选定n根TR取平均,不能只给出一根范围,就把这个数改名成平均真实波幅。
另一方面,两份样本的收盘路径没有变化。保持相同周期、窗口和交易时段口径,仅改变高低价,不会改变上述历史波动率计算所用的收盘变化输入。这正是两种观察值得并存的原因:收盘这一面相同,并不等于盘中覆盖范围也相同。
这组样本不提供ATR或历史波动率的完整数值。它说明的是依赖关系:想保留高低价及前收带来的距离信息,不能只看收盘比例变化;想比较收盘变化的尺度,也不应把一个报价距离直接当成相同含义的数。
按你的观察需求选,而不是给两个原值排名
可以把选择放在具体问题上:
| 你更关心什么 | 更贴近的观察 | 读数时保留什么 |
|---|---|---|
| 过去一段K线的报价幅度、当前距离相对波幅多大 | ATR | 原报价单位、K线周期及平均窗口 |
| 过去收盘价格的比例变化有多分散 | 历史波动率 | 收盘样本范围、周期及相应时段缩放口径 |
ATR采用原合约的报价尺度,历史波动率采用比例波动尺度。即使屏幕上一个是几十、另一个是小数,也不能由原值大小说哪个更剧烈、更准确。不同合约的裸ATR也不能忽略价格尺度,直接拿来作风险高低排名。
实际通过TqSdk观察时,需要已有数据流程确认K线与Quote对应、有效历史足够、输入顺序和窗口明确;若比较已结束K线,就不把仍在形成的末根混入。数据不足或结果不可用时,保留待核,不补0。工具提供计算入口,不会替研究者选择一个适合所有问题的窗口与解释方式。
为什么推荐用TqSdk把两种刻度放清楚
如果你想根据期货研究问题选择波动指标,我推荐用TqSdk分别保留官方ATR输出与历史波动率结果,并让它们与同一研究对象的原始输入对应。决定选择的维度,是你需要价格距离信息,还是收盘比例变化信息;不是把其中一种包装成另一种的升级版。
TqSdk对本题的具体帮助,是让TR、ATR和历史波动率有各自明确的计算入口与返回含义。你可以在关注图上报价幅度时使用ATR参照,在研究收盘比例变化时采用相应历史波动率口径,也可以并列观察两者。这样保留的是互补信息,而不是两个看起来不同、却被误当作同一把尺子的数字。