4、波动率与仓位:如何用ATR动态调整头寸?
做量化交易这些年,我见过太多人栽在同一个坑里——仓位一成不变。市场波动大的时候,他们重仓猛干,结果一个回调就爆仓。波动小的时候,他们轻仓慢跑,白白浪费行情。说白了,这就是没搞懂波动率和仓位的关系。
我个人习惯用ATR(Average True Range,平均真实波幅)来解决这个问题。它就像一个波动率温度计,告诉你市场今天到底有多"躁动"。
什么是ATR?
ATR不是算价格涨跌方向,它只算波动幅度。你想想看,一个股票今天涨了5%,明天跌了4%,ATR可能只有3%。但另一个股票今天涨1%,明天跌1%,ATR可能只有0.5%。
计算公式其实不复杂:
TR = max(今日最高 - 今日最低, |今日最高 - 昨日收盘|, |今日最低 - 昨日收盘|)
ATR = (前一日ATR * 13 + 今日TR) / 14
嗯,这里要注意——TR取的是三个值中的最大值。为什么?因为跳空缺口也会造成实际波动,不能只看日内振幅。
我在项目中遇到过一种情况:某只股票隔夜出了大利空,直接低开5%。如果只看日内振幅,波动率数据会严重失真。所以ATR的设计者Wilder先生特意把跳空也算进去了,这个细节很关键。
ATR如何指导仓位?
核心逻辑就一句话:波动越大,仓位越小;波动越小,仓位越大。
为什么?因为我们要控制的是"每笔交易的风险金额",而不是"每笔交易的股数"。你想想看,同样亏2%,波动大的品种可能一天就达到,波动小的品种可能要磨一周。所以仓位必须跟着波动率走。
我常用的公式是这样的:
仓位 = 账户总风险金额 / (ATR * 合约乘数)
举个例子:
| 参数 | 数值 |
|---|---|
| 账户总资金 | 100万 |
| 单笔风险比例 | 2% |
| 单笔风险金额 | 2万 |
| ATR(螺纹钢) | 50点 |
| 合约乘数 | 10吨/手 |
| 计算仓位 | 20000 / (50 * 10) = 40手 |
如果ATR变成100点,仓位就变成20手。波动翻倍,仓位减半。这个逻辑很直观吧?
核心原则:固定风险金额,浮动仓位大小。而不是反过来。
ATR周期怎么选?
这个问题我经常被问到。说实话,没有标准答案,但我可以分享我的经验。
- 短线交易(日内/隔夜):用14周期ATR,敏感度适中
- 中线交易(数天到数周):用20周期ATR,平滑一些
- 长线交易(数月):用50周期ATR,过滤掉短期噪音
我个人习惯用20周期。为什么?因为14周期太敏感,经常被突发事件干扰。50周期又太迟钝,行情变了半天仓位还没调。20周期是个不错的折中。
不过,我曾经犯过一个错误——直接用日线ATR去指导分钟线交易。结果呢?日线ATR可能只有0.5%,但分钟线上一个消息就能波动2%。仓位算出来严重偏大,差点爆仓。后来我学乖了:ATR的周期要和你的交易周期匹配。
小技巧:如果你做15分钟级别的交易,就用15分钟K线算ATR。别偷懒用日线数据去算,那会出大问题。
ATR动态调整的实战流程
我一般按这个步骤来:
- 每天收盘后计算ATR——用最近20天的数据
- 根据ATR重新计算仓位——公式上面已经给了
- 如果仓位变化超过20%——执行调整
- 如果仓位变化小于20%——维持不动,避免频繁交易
为什么要设20%的阈值?因为ATR本身就在波动,今天大一点明天小一点很正常。如果每次微调都去动仓位,手续费和滑点会吃掉你的利润。我刚开始做的时候就是太勤快,每天调仓位,结果一年下来手续费比利润还高。
警告:ATR调整仓位不是越频繁越好。建议至少持有3-5个交易日再调整一次。频繁调整只会增加交易成本,不会提高收益。
一个完整的例子
假设我们交易沪深300股指期货,账户资金200万,单笔风险1%。
# 伪代码示例
账户资金 = 2000000
风险比例 = 0.01
单笔风险 = 账户资金 * 风险比例 # 20000元
# 计算ATR(假设用20日数据)
atr = 计算ATR(最近20根日K线) # 假设结果是40点
# 合约乘数
乘数 = 300 # 沪深300股指期货每点300元
# 计算仓位
仓位 = 单笔风险 / (atr * 乘数)
仓位 = 20000 / (40 * 300)
仓位 = 1.67 # 取整为1手
# 如果ATR变成60点
仓位 = 20000 / (60 * 300)
仓位 = 1.11 # 还是1手
# 如果ATR变成80点
仓位 = 20000 / (80 * 300)
仓位 = 0.83 # 取整为0手,不开仓
你看,当ATR从40涨到80,波动翻倍,仓位从1手变成0手。这就是动态调整的效果——市场风险大了,我们就躲一躲。
ATR调整的进阶用法
除了直接算仓位,ATR还能用来做止损。我个人习惯把止损设在入场价加减2倍ATR的位置。为什么是2倍?因为统计上,价格在2倍ATR范围内波动的概率大约是95%。超过这个范围,说明趋势可能变了。
举个例子:
- 入场做多:价格5000点
- ATR:40点
- 止损位:5000 - 2 * 40 = 4920点
- 止盈位:5000 + 3 * 40 = 5120点(盈亏比1.5:1)
这里止盈用3倍ATR,止损用2倍ATR,盈亏比1.5。这个比例是我自己测试下来比较舒服的。你可以根据自己的胜率去调整。
记住:ATR不是预测工具,它是描述工具。它告诉你市场现在是什么状态,而不是接下来会怎样。别指望用ATR去预测涨跌,它做不到。
ATR动态调整的核心逻辑图
下面这张图展示了整个流程:
这个流程看起来简单,但执行起来需要纪律。我见过太多人算好了仓位,结果一开盘看到行情猛涨,脑子一热就加仓了。嗯,这就是典型的"知道做不到"。
最后说一句:ATR动态调整不是万能药。它解决的是"仓位和波动率匹配"的问题,但解决不了"方向判断错误"的问题。如果你方向看反了,仓位再小也是亏。所以,ATR是帮你控制亏损幅度的工具,不是帮你赚钱的工具。
我的建议:刚开始用ATR调整仓位时,先做模拟盘跑三个月。看看在不同波动率环境下,你的仓位是怎么变化的。等心里有数了,再上实盘。别一上来就真金白银地干,学费太贵。
公众号:蓝海资料掘金营,微信deep3321