3、头寸规模计算:基于ATR(平均真实波幅)的动态仓位计算、基于固定金额的仓位计算
头寸规模计算,说白了就是「这一把我要下多少注」。很多新手一上来就盯着选股、择时,结果仓位管理一塌糊涂——要么一把梭哈,要么买得太少赚不到钱。我见过太多人,策略回测曲线漂亮得像艺术品,实盘一跑就崩,为什么?仓位没算好。
今天咱们就聊两种最实用的方法:基于ATR的动态仓位和基于固定金额的仓位。这两种思路,一个看市场波动,一个看账户本金,各有各的适用场景。
3.1 固定金额仓位:简单但别轻视
固定金额仓位,就是每笔交易都投入相同的钱。比如你账户有100万,每次买股票都固定花2万。听起来简单吧?但这里有个坑——资金规模不同,效果天差地别。
我曾经帮一个朋友优化策略,他账户50万,每次固定买1万。回测下来年化收益15%,他觉得不错。但我一看交易记录,发现他买了40多只股票,每只就几千块。手续费吃掉了一大半利润。嗯,这里要注意:固定金额法在小资金账户里,容易被手续费拖死。
交易股数 = 固定金额 / 当前价格
例如:固定金额20000元,股价50元,则买入400股。
固定金额的优点很明显:
- 心理压力小——每笔亏多少心里有数
- 执行简单——不用算波动率,不用看ATR
- 适合新手——先活下来,再谈赚钱
但缺点也致命:
- 无视市场波动——波动大的股票和波动小的股票,投入一样多,风险完全不对等
- 资金利用率低——行情好时不敢加仓,行情差时不敢减仓
3.2 ATR动态仓位:让市场告诉你该下多少注
ATR,全称Average True Range,平均真实波幅。它衡量的是「这只股票最近一天平均波动多少」。波动大,ATR就大;波动小,ATR就小。
为什么用ATR算仓位?你想想看,一只股票每天上下5%,另一只每天只波动0.5%,你投入同样的钱,风险能一样吗?显然不能。ATR动态仓位就是解决这个问题的——波动大的少买点,波动小的多买点。
3.2.1 ATR的计算
先看ATR怎么算。其实很简单,就三步:
- 计算每个交易日的真实波幅(TR)
- TR = max(当日最高 - 当日最低, |当日最高 - 前日收盘|, |当日最低 - 前日收盘|)
- 对TR取N日移动平均,得到ATR
代码实现也不复杂:
def calc_atr(df, period=14):
high = df['high']
low = df['low']
close = df['close']
# 计算三个TR候选值
tr1 = high - low
tr2 = abs(high - close.shift(1))
tr3 = abs(low - close.shift(1))
# 取最大值
tr = pd.concat([tr1, tr2, tr3], axis=1).max(axis=1)
# 移动平均
atr = tr.rolling(window=period).mean()
return atr
3.2.2 基于ATR的动态仓位公式
有了ATR,仓位怎么算?核心公式如下:
头寸规模 = (账户风险金额) / (ATR × 每点价值)
其中:
账户风险金额 = 账户总资金 × 单笔风险比例
每点价值 = 股票每波动1元,你账户变动多少钱(通常就是1股1元)
举个例子:
- 账户总资金:100万
- 单笔风险比例:2%(即每笔最多亏2万)
- 股票ATR:2.5元(说明每天平均波动2.5元)
- 每点价值:1元(A股标准)
那么:
头寸规模 = 20000 / (2.5 × 1) = 8000股
也就是说,这只股票你应该买8000股。如果股价是20元,那总投入就是16万。你看,ATR越大,买的股数越少;ATR越小,买的股数越多。这就是「动态」的含义。
3.3 两种方法的对比
| 对比维度 | 固定金额法 | ATR动态法 |
|---|---|---|
| 核心逻辑 | 每笔投入固定资金 | 根据波动调整头寸 |
| 风险控制 | 弱(无视波动) | 强(波动大少买) |
| 执行难度 | 极低 | 中等(需计算ATR) |
| 资金利用率 | 低 | 高 |
| 适用场景 | 新手、小资金、底仓 | 老手、大资金、趋势策略 |
3.4 避坑指南:我踩过的几个坑
讲到这里,我得说说自己曾经犯过的错。你们别走我的老路。
坑一:ATR参数不调整
我曾经在期货上直接用14天ATR算仓位,结果遇到极端行情,ATR突然飙升,仓位一下子缩到原来的十分之一。其实这时候应该用「平滑ATR」或者「截断ATR」,避免单日波动过度影响仓位。我现在一般会加一个上下限,比如ATR不能超过前20日均值的3倍。
坑二:固定金额法忽略复利
固定金额法最大的问题不是风险,而是资金增长后效率下降。你账户从100万涨到200万,还是每次投2万,那资金利用率直接腰斩。我建议每季度或每月重新评估一次固定金额,让它跟着账户规模走。
坑三:动态仓位回测时忘记滑点
ATR动态仓位算出来的股数往往不是整手,回测时如果直接取整,结果会偏差很大。我习惯在回测代码里加一个「取整到100股」的逻辑,这样更贴近实盘。
3.5 核心逻辑图:头寸规模计算体系
下面这张图,把两种方法的逻辑关系画清楚了。你可以看到,固定金额法是「静态分配」,ATR法是「动态调整」。两者并不冲突,甚至可以结合使用。
3.6 实战建议:怎么选?
最后给点实在的建议。我个人习惯是:
- 账户资金小于50万:用固定金额法,每笔投入总资金的1%-2%。别折腾ATR,先跑起来再说。
- 账户资金50万-500万:用ATR动态法,单笔风险控制在1%-2%。这时候波动管理比什么都重要。
- 账户资金大于500万:两种方法结合。固定金额打底(30%仓位),ATR动态调仓(70%仓位)。
好了,头寸规模计算这块就聊到这儿。记住一句话:仓位管理不是让你赚更多,而是让你活更久。下次咱们聊聊再平衡的具体执行细节。
公众号:蓝海资料掘金营,微信deep3321