3、头寸规模计算:基于ATR(平均真实波幅)的动态仓位计算、基于固定金额的仓位计算

头寸规模计算,说白了就是「这一把我要下多少注」。很多新手一上来就盯着选股、择时,结果仓位管理一塌糊涂——要么一把梭哈,要么买得太少赚不到钱。我见过太多人,策略回测曲线漂亮得像艺术品,实盘一跑就崩,为什么?仓位没算好。

今天咱们就聊两种最实用的方法:基于ATR的动态仓位基于固定金额的仓位。这两种思路,一个看市场波动,一个看账户本金,各有各的适用场景。

3.1 固定金额仓位:简单但别轻视

固定金额仓位,就是每笔交易都投入相同的钱。比如你账户有100万,每次买股票都固定花2万。听起来简单吧?但这里有个坑——资金规模不同,效果天差地别

我曾经帮一个朋友优化策略,他账户50万,每次固定买1万。回测下来年化收益15%,他觉得不错。但我一看交易记录,发现他买了40多只股票,每只就几千块。手续费吃掉了一大半利润。嗯,这里要注意:固定金额法在小资金账户里,容易被手续费拖死

核心公式:
交易股数 = 固定金额 / 当前价格
例如:固定金额20000元,股价50元,则买入400股。

固定金额的优点很明显:

  • 心理压力小——每笔亏多少心里有数
  • 执行简单——不用算波动率,不用看ATR
  • 适合新手——先活下来,再谈赚钱

但缺点也致命:

  • 无视市场波动——波动大的股票和波动小的股票,投入一样多,风险完全不对等
  • 资金利用率低——行情好时不敢加仓,行情差时不敢减仓
我的建议:固定金额法适合作为「底仓」策略。比如你总资金的30%用固定金额打底,剩下的用动态仓位去博收益。我自己的实盘就是这么干的。

3.2 ATR动态仓位:让市场告诉你该下多少注

ATR,全称Average True Range,平均真实波幅。它衡量的是「这只股票最近一天平均波动多少」。波动大,ATR就大;波动小,ATR就小。

为什么用ATR算仓位?你想想看,一只股票每天上下5%,另一只每天只波动0.5%,你投入同样的钱,风险能一样吗?显然不能。ATR动态仓位就是解决这个问题的——波动大的少买点,波动小的多买点

3.2.1 ATR的计算

先看ATR怎么算。其实很简单,就三步:

  1. 计算每个交易日的真实波幅(TR)
  2. TR = max(当日最高 - 当日最低, |当日最高 - 前日收盘|, |当日最低 - 前日收盘|)
  3. 对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
注意:ATR的周期一般用14天,这是 Wilder 原书推荐的。但如果你做短线,可以缩短到7天;做长线,可以拉到20天。我自己的习惯是:日线用14,小时线用10。

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法是「动态调整」。两者并不冲突,甚至可以结合使用。

头寸规模计算体系 头寸规模计算 固定金额法 ATR动态法 每笔固定金额 价格决定股数 无视波动 计算ATR 风险金额/ATR 波动大少买 核心原则:风险优先,波动适配 固定金额保底 + ATR动态调仓 = 稳健组合

3.6 实战建议:怎么选?

最后给点实在的建议。我个人习惯是:

  • 账户资金小于50万:用固定金额法,每笔投入总资金的1%-2%。别折腾ATR,先跑起来再说。
  • 账户资金50万-500万:用ATR动态法,单笔风险控制在1%-2%。这时候波动管理比什么都重要。
  • 账户资金大于500万:两种方法结合。固定金额打底(30%仓位),ATR动态调仓(70%仓位)。
一个小技巧:如果你用ATR动态法,建议把「单笔风险比例」设成固定值,比如1.5%。这样不管市场怎么变,你每笔交易的最大亏损都是可控的。我自己的实盘,单笔风险从来没超过2%。

好了,头寸规模计算这块就聊到这儿。记住一句话:仓位管理不是让你赚更多,而是让你活更久。下次咱们聊聊再平衡的具体执行细节。


公众号:蓝海资料掘金营,微信deep3321