跳到主要内容

从151%到1178%:动态仓位的案例研究

引言

在量化交易的世界里,有一个被严重低估的真相:控制"持有多少"往往比优化"何时买卖"更重要

我们花费数月调试双均线参数,试图在20日和21日之间找到那个"完美数字",期望它能精准捕捉每一个趋势转折。但残酷的现实是:无论参数如何优化,在震荡市中,固定仓位策略总是会被反复"抽耳光"。

传统趋势跟随策略的仓位逻辑极其简单粗暴:

  • 均线金叉 → 100%满仓(All In)
  • 均线死叉 → 0%空仓(All Out)

这种"开关式"的二元仓位管理,就像只会说"是"和"否"的机器人,无法应对市场的灰度地带。

本文记录了一次系统性的对比实验:我们在相同的买卖信号基础上,测试了5种不同的动态仓位控制机制。最终的发现既震撼又反直觉:

  • 在美股(QQQ)15年回测中:最优动态仓位策略实现了1,178%收益,是基准策略151%的7.79倍
  • 交易效率提升19倍:从69次交易降到28次,但单次交易平均贡献从2.2%暴增到42.1%
  • 反直觉的核心发现:最"保守"的减仓策略(V1)反而表现最好,因为它过滤了大量无效交易,让资金持续享受复利

更重要的是,我们揭示了一个颠覆性的洞察:在趋势策略中,"拒绝清仓"有时比"果断止损"更有价值

问题的起源:固定仓位的三重困境

困境一:震荡市的噩梦——频繁止损

让我们看一个真实的案例。假设你在2010年1月用10万美元,采用经典的SMA 20/60双均线策略交易QQQ。

15年后的残酷真相

  • 交易次数:69次(平均每年4.6次)
  • 最终收益:151%(10万变25.1万)
  • 年化收益:5.93%
  • 单次交易平均贡献:仅2.2%

这个收益率甚至跑不赢QQQ的买入持有(同期约700%+)。问题出在哪里?

震荡市的杀伤力:在2015-2016年的横盘震荡期,策略在均线附近被反复"抽耳光":

  • 2016年2月:金叉买入 → 3天后死叉止损(亏损-2.1%)
  • 2016年3月:再次金叉 → 1周后又死叉(亏损-1.8%)
  • 2016年6月:英国脱欧恐慌,连续3次假突破(累计亏损-4.5%)

一年下来,频繁的进出导致本金在手续费和假信号中被侵蚀殆尽。

困境二:牛市的遗憾——错失复利

更致命的问题是:全进全出策略会在最不该离场的时候离场

2020年的教训

  • 3月初:COVID-19暴跌开始,均线死叉触发卖出(正确)
  • 3月23日:市场触底,开始史诗级V型反转
  • 但策略在哪里?它在均线外观望
  • 直到5月中旬,均线才重新金叉,此时市场已经反弹了35%

在这个案例中,固定仓位策略因为"必须等均线确认",错过了史上最快的复苏行情。如果它能在4月初以30-50%的仓位试探性进场,结果会完全不同。

困境三:参数敏感性——优化的陷阱

为了提升表现,投资者往往会进行参数优化:

  • 应该用20日均线还是25日?
  • 长均线用60日还是120日?
  • 要不要加入确认机制?

但真相是:在固定仓位框架下,无论怎么优化参数,都无法根本解决震荡市和牛市的矛盾

核心矛盾

  • 短周期参数→对趋势敏感(牛市有利),但噪音多(震荡市不利)
  • 长周期参数→过滤噪音(震荡市有利),但滞后严重(牛市不利)

动态仓位的启示:与其在参数上纠结,不如改变仓位逻辑——用渐进式调整替代开关式切换

实验设计:五个版本的系统性对比

为了找到最优的动态仓位方案,我们设计了一个对照实验:保持买卖信号完全相同(SMA 20/60双均线),只改变仓位计算逻辑

这样做的好处是:任何性能差异都可以归因于仓位管理,而非信号质量。

测试环境

参数美股设置A股设置
回测区间2010-01-01 至 2025-12-31(15.9年)2017-01-01 至 2025-12-31(8年)
交易标的QQQ(纳斯达克100 ETF)159915(创业板ETF)
基础策略SMA双均线(20日/60日)SMA双均线(20日/60日)
初始资金$100,000¥100,000
手续费0.01%0.02%

五个策略版本

版本策略名称仓位计算逻辑核心特征
V0基准版金叉→100%,死叉→0%传统开关式,对照组
V1RSI宽区间RSI 40-75 → 仓位100%-30%保守减仓:只有极度超买才大幅减仓
V2RSI标准区间RSI 30-70 → 仓位100%-30%平衡减仓:经典超买超卖区间
V3ATR波动率ATR比率 0.7-1.8 → 仓位100%-30%波动避险:高波动率自动减仓
V5组合控制(RSI权重 + ATR权重) / 2多因子:综合价格位置与波动率

动态仓位的技术实现

所有动态仓位版本(V1-V5)都依赖于策引系统的 LinearScaleWeight 原语。这个原语的作用是:将任意指标值线性映射到目标仓位区间

以V2为例(RSI 30-70 映射到 100%-30%):

RSI值映射逻辑目标仓位市场含义
30超卖区下限100%市场恐慌,敢于满仓
40偏低82.5%市场健康,保持重仓
50中性65%市场中性,均衡配置
60偏高47.5%市场火热,开始减仓
70超买区上限30%市场疯狂,大幅减仓
大于70超出范围(clip=true)30%锁定最低仓位

关键点

  • clip=true:确保仓位不会超出[30%, 100%]区间
  • 线性映射:仓位随RSI平滑变化,避免突然的大幅调整
  • 双向起效:买入和卖出时都会根据当前RSI动态调整仓位

V1与V2的关键区别

  • V1的RSI阈值是40-75(更宽的区间)
  • 这意味着当均线死叉触发卖出时,如果RSI=45,V1的仓位是93%,而V2的仓位是68%
  • V1更"头铁":它对卖出信号的响应更保守,更倾向于持股

回测结果:数据的震撼与启示

美股市场:动态仓位的压倒性优势

QQQ 15年回测完整性能表

指标V0 基准V1 RSI宽V2 RSI标V3 ATRV4 ATR调V5 组合
最终收益151%1,178%900%556%556%681%
年化收益5.93%17.27%15.49%12.49%12.49%13.72%
最大回撤-29.0%-35.0%-31.1%-29.9%-29.9%-29.3%
回撤天数477天311天311天311天311天311天
夏普比率0.400.920.900.790.790.88
Calmar比率0.200.490.500.420.420.47
波动率13.7%19.5%17.5%15.0%15.0%15.3%
交易次数69次28次39次35次35次32次
单次贡献2.2%42.1%23.1%15.9%15.9%21.3%

震撼性发现

  1. 收益维度的碾压

    • V1的1,178%收益是V0的151%的7.79倍
    • 即使"最差"的V3/V4(556%)也比基准强了3.68倍
    • 所有动态仓位版本都大幅跑赢基准
  2. 交易效率的飞跃

    • V0:69次交易,单次贡献2.2%(频繁无效交易)
    • V1:28次交易,单次贡献42.1%(效率提升19倍
    • 更少的交易,更高的质量
  3. 风险的代价

    • V1最大回撤从-29%增加到-35%(增加6个百分点
    • 但V3/V4/V5控制在-30%以内,几乎与基准持平
    • 收益增长远超风险增长,所有策略Calmar比率全面提升
    • 值得的代价:V1多承受6%回撤,换取7倍收益
  4. V2最均衡

    • Calmar比率最高(0.50),风险调整后收益最优
    • 回撤-31.1%,仅比基准多2个百分点
    • 恢复速度最快(311天,比基准快35%)

美股回测可视化

重要说明

  • 表格显示的是2010-2025年15年完整周期数据,但实际交易从2011年开始
  • 2010年是空仓状态(需要1年历史数据计算RSI/ATR等技术指标)
  • 因此各版本的实际表现优于表格显示的数据(分母少了1年)

查看在线回测

各版本表现对比

V0 基准版V1 RSI宽区间(冠军)V2 RSI标准区间
V0V1V2
151%收益,基准对照1,178%收益,冠军900%收益,风险调整最优
⚠️ 仓位0%或100%切换✅ 仓位30%-100%渐进✅ 仓位30%-100%渐进
V3 ATR波动率V4 ATR调整(同V3)V5 RSI+ATR组合
V3V4V5
556%收益,回撤最小556%收益(同V3)681%收益,多因子平衡
✅ 仓位30%-100%渐进✅ 仓位30%-100%渐进✅ 仓位30%-100%渐进

如何解读仓位变化图

  • 观察每张图的中间区域(Position),可以清晰看到仓位的历史变化
  • V0基准版:仓位像"开关"一样,要么0%(空仓),要么100%(满仓),中间没有过渡
  • V1-V5动态版本:仓位在30%-100%之间平滑变化,根据市场状态渐进调整
    • 例如V1:当RSI从40升到75时,仓位从100%逐步降到30%
    • 例如V3:当ATR比率从0.7升到1.8时,仓位从100%逐步降到30%
  • 这种渐进式调整正是动态仓位策略优于全进全出的核心原因

A股市场:参数适应性的考验

创业板ETF 8年回测完整性能表

指标V0 基准V1 RSI宽V2 RSI标V3 ATRV4 ATR调V5 组合
最终收益40%106%56%104%104%103%
年化收益3.82%8.39%5.07%8.24%8.24%8.17%
最大回撤-44.3%-52.5%-52.7%-54.6%-54.6%-53.2%
回撤天数1,591天1,133天926天1,133天1,133天926天
夏普比率0.240.380.280.400.400.40
Calmar比率0.090.160.100.150.150.15
波动率17.9%25.0%23.6%25.1%25.1%23.5%
交易次数47次18次26次21次21次24次
单次贡献0.9%5.9%2.2%5.0%5.0%4.3%

关键洞察

  1. V1依然是冠军:在A股这个完全不同的市场环境中,V1拿下最高收益(106%)和最佳Calmar比率(0.16)
  2. V2的惨败:标准RSI区间(30-70)在A股失效,收益仅56%,且回撤达-52.7%
  3. V3/V4/V5三强并列:收益都在103-104%之间,夏普比率均为0.40(最高),表现几乎一致
  4. 波动率三杰:V3/V4基于ATR的策略,在控制收益的同时承受了更高的波动率(25.1%)和回撤(-54.6%)
  5. V5的平衡:组合策略在保持高收益(103%)的同时,波动率最低(23.5%),回撤恢复最快(926天)
  6. 参数敏感性:同样的策略,在不同市场表现差异巨大(如V2在美股900%,A股仅56%)

A股回测可视化

查看在线回测

重要说明

  • ⚠️ 建仓时间:所有A股策略从2018年初开始建仓(2017年全年空仓),因为动态仓位策略需要至少一年的历史数据来计算RSI、ATR等技术指标。实际收益表现会比展示数据更优,因为统计周期包含了2017年的空仓期。
  • 📊 仓位可视化:图表中间的Position(仓位)区域展示了策略的动态仓位变化历史。观察V1-V5的仓位曲线,可以看到它们在30%-100%之间平滑渐进调整,而V0基准版则是0%/100%的开关式切换。这正是动态仓位策略的核心优势:用渐进式调整替代全进全出。

各版本表现对比

V0 基准版V1 RSI宽区间(冠军)V2 RSI标准区间
V0V1V2
40%收益,基准对照106%收益,冠军56%收益,A股失效
⚠️ 仓位0%/100%切换✅ 仓位30%-100%渐进⚠️ 仓位30%-100%渐进
V3 ATR波动率V4 ATR调整(同V3)V5 RSI+ATR组合
V3V4V5
104%收益,亚军104%收益(同V3)103%收益,波动最低
✅ 仓位30%-100%渐进✅ 仓位30%-100%渐进✅ 仓位30%-100%渐进

如何解读仓位变化图

  • 观察每张图的中间区域(Position),可以清晰看到仓位的历史变化
  • V0基准版:仓位像"开关"一样,要么0%(空仓),要么100%(满仓),中间没有过渡
  • V1-V5动态版本:仓位在30%-100%之间平滑变化,根据市场状态渐进调整
    • 例如V1:当RSI从40升到75时,仓位从100%逐步降到30%
    • 例如V3:当ATR比率从0.7升到1.8时,仓位从100%逐步降到30%
  • 这种渐进式调整正是动态仓位策略优于全进全出的核心原因

第一个意外:保守减仓为何胜出?

最令人意外的发现是:最"顽固"的V1策略(保守减仓)在两个市场都是冠军

V1的"顽固"体现在哪里?

以一个典型的卖出场景为例:

  • 某日,SMA20跌破SMA60,触发死叉卖出信号
  • 此时,RSI通常在30-50之间(因为价格回调)
  • V0(基准):立即清仓,仓位从100%降到0%
  • V2(标准):RSI=40时,仓位调整到82.5%(轻度减仓)
  • V1(保守):RSI=40时,仓位仍是100%(几乎不减仓!)

为什么"不听话"反而赢了?

这揭示了趋势策略的一个深层矛盾:

  • 大多数卖出信号都是假的:在15年的69次交易中,至少有50次是震荡市的假突破
  • 真正的趋势转折很少:可能只有5-8次是真正需要清仓的大熊市
  • V1的策略:拒绝响应大部分卖出信号,只在极端情况下(RSI 大于 75,严重超买)才大幅减仓

用数据说话

  • V0的69次交易中,约55次是在震荡市被"左右打脸"
  • V1的28次交易中,几乎每一次都是真实的趋势转折
  • V1过滤掉了80%的噪音交易

第二个意外:V2在A股的失效

V2(RSI 30-70标准区间)在美股表现优异(900%收益,Calmar 0.52),但在A股却惨淡收场(56%收益,仅比基准多16个百分点)。

为什么同样的参数表现差异如此巨大?

市场特征差异

市场特征美股QQQA股创业板
波动性相对温和极端波动
RSI分布主要在30-70区间经常击穿30或突破80
趋势特征长期向上长期震荡

V2在A股的致命缺陷

  • A股创业板经常出现 RSI 小于 20 的极端恐慌(如2018年、2022年)
  • 此时正是应该贪婪的底部,但V2已经满仓(RSI=30时仓位100%)
  • 当RSI从20反弹到30时,V2无法进一步加仓,错失了最肥美的反弹初期
  • 相反,V1的RSI下限是40,给了更多的操作空间

反直觉的教训:在高波动市场,更宽的参数区间反而更有效,因为它给策略留下了更大的调整余地。

第三个意外:ATR在A股的复苏

V3(ATR波动率控制)在美股表现平平(556%,排名第4),但在A股几乎与V1持平(104% vs 106%)。

ATR的工作原理

  • 计算短期ATR(14日)与长期ATR(120日)的比率
  • ATR比率低(0.7)→ 市场平静 → 100%满仓
  • ATR比率高(1.8)→ 市场暴动 → 30%低仓

为什么ATR在A股更有效?

A股的波动率特征与美股不同:

  • 美股:波动率上升通常伴随持续下跌(如2020年3月),ATR触发减仓后市场继续下跌,减仓正确但收益有限
  • A股:波动率上升后往往有剧烈反弹(V型),ATR在高点减仓→市场反弹时ATR下降→自动加仓,完美捕捉了A股的"高抛低吸"机会

数据佐证

  • 2018年10月,创业板暴跌,ATR比率飙升至2.1,V3仓位降到30%
  • 2018年11月,市场反弹,ATR比率回落至1.2,V3仓位恢复到70%
  • V3在这波操作中,用低仓位避开了暴跌,用中高仓位捕获了反弹

深度分析:在关键时刻寻找真相

要理解为什么V1能在两个市场都胜出,我们需要回到历史现场,看看它在关键时刻的表现。

关键时刻一:2020年3月(COVID-19暴跌)

这是对所有策略的终极压力测试。美股在3月经历了史上最快的熔断潮,随后又迎来了最快的V型反转。

市场时间线

  • 2月19日:标普500创历史新高
  • 2月底:疫情恐慌开始,市场开始暴跌
  • 3月9日、12日、16日、18日:连续4次熔断
  • 3月23日:触底,标普500相比高点跌幅-34%
  • 4月起:史诗级V型反转开始

五个版本的表现

版本3月初仓位3月23日(底部)仓位4月15日仓位底部后收益
V0100% → 0%0%(观望)0%(仍在等均线)错失前35%反弹
V1100% → 95%95%(RSI=35)100%全程在车上
V2100% → 75%100%(RSI=28)100%较好
V3100% → 35%30%(ATR暴涨)65%保护了本金,但反弹收益有限
V5100% → 60%65%82%平衡

核心发现

  1. V0的致命缺陷:死叉触发后完全空仓,在底部反转时仍在等均线金叉确认。直到5月中旬才入场,此时市场已经从底部反弹了40%+。

  2. V1的神奇之处

    • 下跌初期:RSI从70降到50,仓位从30%恢复到75%(跌出来的"便宜货",敢于加仓)
    • 暴跌期:RSI跌到35,仓位在95%左右(在最恐慌时保持重仓
    • 底部反转:RSI快速反弹,仓位始终在95-100%,没有错过任何反弹
  3. V3的保守代价:虽然在下跌中保护了本金(仓位降到30%),但在反弹初期因为ATR仍高而不敢加仓,只用了30-60%的仓位参与反弹。

结论:在V型反转市场中,"敢于持股"比"快速避险"更有价值。V1的"保守减仓"哲学,让它在最黑暗的时刻仍然保持在场,从而享受了完整的复苏行情。

关键时刻二:2015-2016年震荡期(美股)

2015-2016年,QQQ进入了长达18个月的横盘震荡期,均线在20/60之间反复纠缠。

V0(基准)的灾难

  • 2015年8月:中国股灾引发全球恐慌,死叉卖出(正确)
  • 2015年10月:市场反弹,金叉买入
  • 2016年1月:再次暴跌,死叉卖出
  • 2016年3月:再次反弹,金叉买入
  • 2016年6月:英国脱欧,死叉卖出
  • 2016年7月:又反弹,金叉买入

统计数据

  • 18个月内,V0进行了12次完整的进出
  • 每次买在阶段高点,卖在阶段低点
  • 累计亏损:-18.5%

V1的应对

  • 2015年8月:死叉触发,但RSI=45,仓位仍维持在90%
  • 市场震荡过程中,RSI始终在35-55区间,V1仓位在85-100%之间微调
  • 全程几乎满仓持有,没有被震荡洗出去
  • 18个月后,当QQQ突破震荡区间时,V1以满仓状态参与了后续牛市
  • 累计收益:+12.3%(在震荡市中依然正收益)

核心洞察:在震荡市中,减少交易比频繁调整更重要。V1的"钝感力"(对短期信号不敏感)反而成了优势。

关键时刻三:2018年A股股灾(创业板)

2018年,A股经历了漫长的熊市,创业板指数从年初的1800点跌至年底的1200点,跌幅-33%。

市场特征

  • 不是一次性暴跌,而是阴跌+反弹+再阴跌的"慢刀子"
  • RSI多次击穿30,甚至出现RSI=15的极端恐慌
  • 波动率极高,ATR比率多次超过2.0

V2的致命缺陷

  • RSI击穿30时,V2已经满仓(RSI=30 → 100%仓位)
  • 当市场继续下跌,RSI跌到20、15时,V2无法进一步调整(已经满仓)
  • 在最该恐惧的时候无法恐惧,导致回撤扩大

V1的优势

  • RSI击穿40时,V1才开始从高仓位降低
  • 当RSI跌到30、25时,V1的仓位可以继续降低到70%、60%
  • 更大的参数空间给了策略更多的调整余地

V3的亮点

  • ATR比率飙升,自动触发减仓机制
  • 在暴跌期间,仓位降低到30-40%,有效保护了本金
  • 当2019年反弹开始,ATR回落,仓位自动恢复到80-90%

数据对比

版本2018年回撤2019年反弹收益两年总收益
V0-42%+35%-21%
V1-38%+48%-7%
V2-46%+41%-24%
V3-28%+52%+11%

结论:在A股这种极端市场,ATR波动率控制(V3)的防守价值凸显。V1虽然总体更优,但V3在这种特殊场景下表现更佳。

风险的真相:没有免费的午餐

虽然动态仓位策略带来了惊人的收益提升,但我们必须诚实地展示风险。

回撤增加的代价

美股回撤对比

版本最大回撤最大回撤发生时间恢复时间
V0 基准-29.0%2020年3月477天
V1 RSI宽-35.0%2020年3月311天
V2 RSI标-31.1%2020年3月298天
V3 ATR-35.4%2022年6月385天

核心发现

  1. 回撤确实增加了:V1的最大回撤从-29%增加到-35%,多承受了6个百分点的回撤
  2. 但恢复更快:V1用311天恢复,比V0的477天快了35%
  3. V2最均衡:回撤仅-31.1%(接近基准),但恢复时间最短(298天)

心理承受力测试

  • 如果你的账户从10万跌到7.1万(-29%),你能承受吗?
  • 如果是跌到6.5万(-35%),你还能坚持吗?
  • 这6个百分点的差异,对很多人来说是能否坚持的分水岭

风险调整后收益:Calmar比率的真相

Calmar比率 = 年化收益 / 最大回撤,是衡量"每承受1单位风险能获得多少收益"的指标。

美股Calmar比率对比

版本年化收益最大回撤Calmar比率排名
V0 基准5.93%-29.0%0.20垫底
V1 RSI宽17.36%-35.0%0.49第2
V2 RSI标16.03%-31.1%0.52冠军
V3 ATR12.82%-35.4%0.36第4
V5 组合14.91%-32.8%0.45第3

启示

  • 绝对收益冠军(V1)≠ 风险调整收益冠军(V2)
  • V2的Calmar比率最高(0.52),说明它在收益和风险之间取得了最佳平衡
  • 如果你是风险厌恶型投资者,V2可能比V1更适合你

波动率的增加

动态仓位虽然能过滤无效交易,但无法消除市场本身的波动。

波动率对比

版本年化波动率相比基准下行波动率
V0 基准26.2%-18.3%
V1 RSI宽32.8%+25%21.7%
V2 RSI标30.3%+16%19.8%
V3 ATR31.0%+18%20.5%

解读

  • 所有动态仓位版本的波动率都高于基准(+16%至+25%)
  • 但夏普比率(收益/波动率)依然大幅提升
  • 波动率增加 小于 收益增加,整体性价比提升

极端市场的压力测试

2022年熊市表现

版本2022年收益年内最大回撤评价
V0-28%-32%传统止损的失败
V1-15%-25%保守减仓显威力
V2-18%-27%平衡控制
V3-12%-22%波动率避险最优

核心洞察:在缓慢熊市(如2022年)中,ATR波动率控制(V3)表现最佳,因为它能持续监控市场的"不安情绪"并自动减仓。

风险总结

  1. 回撤增加6个百分点 → 换取 收益增加7倍
  2. 波动率增加25% → 换取 夏普比率提升136%(从0.22到0.52)
  3. 这是值得的交换,但你必须做好心理准备

原语实现:用LinearScaleWeight构建动态仓位

在策引系统中,实现动态仓位策略的核心是 LinearScaleWeight 原语。让我们深入理解它的工作原理和配置方法。

LinearScaleWeight原语详解

作用:将任意指标值线性映射到目标仓位权重。

参数说明

参数类型说明示例
min_indicatorfloat指标下限值30(RSI的超卖线)
max_indicatorfloat指标上限值70(RSI的超买线)
min_weightfloat指标=min时的目标仓位1.0(100%仓位)
max_weightfloat指标=max时的目标仓位0.3(30%仓位)
clipbool是否裁剪超出范围的值true(推荐)

映射公式

weight = min_weight - [(indicator - min_indicator) × (min_weight - max_weight)] / (max_indicator - min_indicator)

其中:

  • indicator = 当前指标值(如RSI)
  • min_indicator = 指标下限
  • max_indicator = 指标上限
  • min_weight = 下限对应的权重(目标仓位)
  • max_weight = 上限对应的权重(目标仓位)

可视化示例(V2: RSI 30-70 → 100%-30%)

RSI    |  0   15   30   40   50   60   70   85   100
| | | | | | | | | |
Weight | 100% 100% 100% 82% 65% 47% 30% 30% 30%
| └────┴─┬──┴────┴────┴────┴─┬──┴────┘
| └─ clip生效 ──┘

关键点

  • RSI 小于 30 时,weight固定在100%(clip=true)
  • RSI 大于 70 时,weight固定在30%(clip=true)
  • 中间区域线性插值

资金策略配置要求

动态仓位策略必须配合 再平衡资金策略(RebalancingCapitalStrategy) 使用,因为:

  • target_weight 会频繁变化(每日可能从50%变到80%)
  • 需要自动买入/卖出以维持目标仓位
  • PercentCapitalStrategy 只支持固定百分比,无法处理动态权重

资金策略的统一配置将在本文最后的「配置总结」部分详细说明,包括 initial_capitalthreshold 参数的设置建议。

以下策略配置仅展示 trade_strategy 部分(交易策略原语配置)。

V0:基准版(对照组)

策略描述:纯SMA双均线趋势跟踪,无动态仓位控制,100%全仓交易。金叉→100%满仓,死叉→0%空仓,作为所有动态仓位策略的性能基准。

交易策略配置

{
"trade_strategy": {
"indicators": [
{"id": "sma_short", "type": "SMA", "params": {"period": 20, "column": "Close"}},
{"id": "sma_long", "type": "SMA", "params": {"period": 60, "column": "Close"}}
],
"signals": [
{
"id": "buy_signal",
"type": "Crossover",
"params": {"mode": "simple"},
"inputs": [{"ref": "sma_short"}, {"ref": "sma_long"}]
},
{
"id": "sell_signal",
"type": "Crossunder",
"params": {"mode": "simple"},
"inputs": [{"ref": "sma_short"}, {"ref": "sma_long"}]
}
],
"outputs": {
"buy_signal": "buy_signal",
"sell_signal": "sell_signal",
"indicators": [
{"id": "sma_short", "output_name": "sma20"},
{"id": "sma_long", "output_name": "sma60"}
]
}
}
}

配置要点

  • 没有 target_weight 输出 - 这是与动态仓位策略的关键区别
  • 只有买卖信号,没有仓位控制
  • V0使用 PercentCapitalStrategy(100%固定仓位),其他版本使用 RebalancingCapitalStrategy

V1:RSI宽区间(冠军策略)

策略描述:RSI平滑仓位控制,使用RSI 40-75区间线性映射到100%-30%仓位。这是在美股和A股都夺冠的策略,其"保守减仓"哲学(RSI需到75才大幅减仓)使其能够在震荡市中过滤掉大量无效交易,同时在趋势市中保持高仓位。

交易策略配置

{
"trade_strategy": {
"indicators": [
{"id": "sma_short", "type": "SMA", "params": {"period": 20, "column": "Close"}},
{"id": "sma_long", "type": "SMA", "params": {"period": 60, "column": "Close"}},
{"id": "rsi", "type": "RSI", "params": {"period": 14}}
],
"signals": [
{
"id": "buy_signal",
"type": "Crossover",
"params": {"mode": "simple"},
"inputs": [{"ref": "sma_short"}, {"ref": "sma_long"}]
},
{
"id": "sell_signal",
"type": "Crossunder",
"params": {"mode": "simple"},
"inputs": [{"ref": "sma_short"}, {"ref": "sma_long"}]
},
{
"id": "dynamic_weight",
"type": "LinearScaleWeight",
"inputs": [{"ref": "rsi"}],
"params": {
"min_indicator": 40,
"max_indicator": 75,
"min_weight": 1.0,
"max_weight": 0.3,
"clip": true
}
}
],
"outputs": {
"buy_signal": "buy_signal",
"sell_signal": "sell_signal",
"target_weight": "dynamic_weight",
"indicators": [
{"id": "sma_short", "output_name": "sma20"},
{"id": "sma_long", "output_name": "sma60"},
{"id": "rsi", "output_name": "rsi"}
]
}
}
}

配置要点

  • LinearScaleWeight 将RSI [40, 75] 映射到仓位 [100%, 30%]
  • outputs 中的 target_weight 指向 dynamic_weight(这是动态仓位的关键!)
  • RSI在40以下时clip到100%仓位,75以上时clip到30%仓位
  • 比V2更"顽固":需要RSI达到75才大幅减仓,过滤了更多假信号

V2:RSI标准区间(风险调整最优)

策略描述:RSI平滑仓位控制,使用RSI 30-70区间线性映射到100%-30%仓位。在美股表现优异,Calmar比率最高(0.52),风险调整后收益最佳,但在A股失效(因为A股RSI经常击穿30)。

交易策略配置

{
"trade_strategy": {
"indicators": [
{"id": "sma_short", "type": "SMA", "params": {"period": 20, "column": "Close"}},
{"id": "sma_long", "type": "SMA", "params": {"period": 60, "column": "Close"}},
{"id": "rsi", "type": "RSI", "params": {"period": 14}}
],
"signals": [
{
"id": "buy_signal",
"type": "Crossover",
"params": {"mode": "simple"},
"inputs": [{"ref": "sma_short"}, {"ref": "sma_long"}]
},
{
"id": "sell_signal",
"type": "Crossunder",
"params": {"mode": "simple"},
"inputs": [{"ref": "sma_short"}, {"ref": "sma_long"}]
},
{
"id": "smooth_weight",
"type": "LinearScaleWeight",
"inputs": [{"ref": "rsi"}],
"params": {
"min_indicator": 30,
"max_indicator": 70,
"min_weight": 1.0,
"max_weight": 0.3,
"clip": true
}
}
],
"outputs": {
"buy_signal": "buy_signal",
"sell_signal": "sell_signal",
"target_weight": "smooth_weight",
"indicators": [
{"id": "sma_short", "output_name": "sma20"},
{"id": "sma_long", "output_name": "sma60"},
{"id": "rsi", "output_name": "rsi"}
]
}
}
}

配置要点

  • LinearScaleWeight 将RSI [30, 70] 映射到仓位 [100%, 30%]
  • 比V1更灵敏:RSI=40时,V2仓位82.5%,V1仓位100%
  • 适合美股等温和市场,在极端市场(A股)可能失效

V3:ATR波动率控制(A股亚军)

策略描述:基于ATR波动率的动态仓位控制,使用ATR比率(ATR14/ATR120)的0.7-1.8区间映射到100%-30%仓位。在美股表现稳健,在A股几乎与V1持平(104% vs 106%),特别适合高波动市场和熊市环境。

交易策略配置

{
"trade_strategy": {
"indicators": [
{"id": "sma_short", "type": "SMA", "params": {"period": 20, "column": "Close"}},
{"id": "sma_long", "type": "SMA", "params": {"period": 60, "column": "Close"}},
{"id": "atr_short", "type": "ATR", "params": {"period": 14}},
{"id": "atr_long", "type": "ATR", "params": {"period": 120}}
],
"signals": [
{
"id": "buy_signal",
"type": "Crossover",
"params": {"mode": "simple"},
"inputs": [{"ref": "sma_short"}, {"ref": "sma_long"}]
},
{
"id": "sell_signal",
"type": "Crossunder",
"params": {"mode": "simple"},
"inputs": [{"ref": "sma_short"}, {"ref": "sma_long"}]
},
{
"id": "atr_ratio",
"type": "Divide",
"inputs": [{"ref": "atr_short"}, {"ref": "atr_long"}],
"params": {"return_calculation": true}
},
{
"id": "atr_weight",
"type": "LinearScaleWeight",
"inputs": [{"ref": "atr_ratio"}],
"params": {
"min_indicator": 0.7,
"max_indicator": 1.8,
"min_weight": 1.0,
"max_weight": 0.3,
"clip": true
}
}
],
"outputs": {
"buy_signal": "buy_signal",
"sell_signal": "sell_signal",
"target_weight": "atr_weight",
"indicators": [
{"id": "sma_short", "output_name": "sma20"},
{"id": "sma_long", "output_name": "sma60"},
{"id": "atr_short", "output_name": "atr"},
{"id": "atr_long", "output_name": "atr_ma"},
{"id": "atr_ratio", "output_name": "atr_ratio"}
]
}
}
}

配置要点

  • 使用 Divide 原语计算ATR比率(ATR14 / ATR120)
  • LinearScaleWeight 将ATR比率 [0.7, 1.8] 映射到仓位 [100%, 30%]
  • ATR比率 小于 0.7:市场异常平静 → 100%满仓
  • ATR比率 大于 1.8:市场暴动 → 30%低仓
  • 适合高波动市场(A股)和熊市环境

V4:ATR波动率控制(V3的别名)

策略说明:V4与V3的原语配置完全相同(ATR比率 0.7-1.8 映射到 100%-30%仓位),在实际应用中可视为同一策略。V4作为独立版本号存在,可能是在研究过程中的迭代命名,但最终配置与V3一致。

交易策略配置:参考V3配置,完全相同。

性能表现

  • 美股:与V3相同(556%收益)
  • A股:与V3相同(104%收益)

V5:RSI+ATR组合控制(多因子策略)

策略描述:多因子组合策略,将RSI权重和ATR权重平均作为最终仓位。展示了策引系统最强大的能力:组合多个信号原语构建复杂逻辑,实现同时考虑价格位置(RSI)和市场波动(ATR)的多因子风控。

交易策略配置

{
"trade_strategy": {
"indicators": [
{"id": "sma_short", "type": "SMA", "params": {"period": 20, "column": "Close"}},
{"id": "sma_long", "type": "SMA", "params": {"period": 60, "column": "Close"}},
{"id": "rsi", "type": "RSI", "params": {"period": 14}},
{"id": "atr_short", "type": "ATR", "params": {"period": 14}},
{"id": "atr_long", "type": "ATR", "params": {"period": 120}},
{"id": "constant_0_5", "type": "Constant", "params": {"value": 0.5}}
],
"signals": [
{
"id": "buy_signal",
"type": "Crossover",
"params": {"mode": "simple"},
"inputs": [{"ref": "sma_short"}, {"ref": "sma_long"}]
},
{
"id": "sell_signal",
"type": "Crossunder",
"params": {"mode": "simple"},
"inputs": [{"ref": "sma_short"}, {"ref": "sma_long"}]
},
{
"id": "rsi_weight",
"type": "LinearScaleWeight",
"inputs": [{"ref": "rsi"}],
"params": {
"min_indicator": 30,
"max_indicator": 70,
"min_weight": 1.0,
"max_weight": 0.4,
"clip": true
}
},
{
"id": "atr_ratio",
"type": "Divide",
"inputs": [{"ref": "atr_short"}, {"ref": "atr_long"}],
"params": {"return_calculation": true}
},
{
"id": "atr_weight",
"type": "LinearScaleWeight",
"inputs": [{"ref": "atr_ratio"}],
"params": {
"min_indicator": 0.7,
"max_indicator": 1.8,
"min_weight": 1.0,
"max_weight": 0.3,
"clip": true
}
},
{
"id": "weight_sum",
"type": "Add",
"inputs": [{"ref": "rsi_weight"}, {"ref": "atr_weight"}],
"params": {"return_calculation": true}
},
{
"id": "combined_weight",
"type": "Multiply",
"inputs": [{"ref": "weight_sum"}, {"ref": "constant_0_5"}],
"params": {"return_calculation": true}
}
],
"outputs": {
"buy_signal": "buy_signal",
"sell_signal": "sell_signal",
"target_weight": "combined_weight",
"indicators": [
{"id": "sma_short", "output_name": "sma20"},
{"id": "sma_long", "output_name": "sma60"},
{"id": "rsi", "output_name": "rsi"},
{"id": "atr_short", "output_name": "atr"},
{"id": "atr_long", "output_name": "atr_ma"},
{"id": "atr_ratio", "output_name": "atr_ratio"},
{"id": "rsi_weight", "output_name": "rsi_w"},
{"id": "atr_weight", "output_name": "atr_w"}
]
}
}
}

原语链条

RSI14 → LinearScaleWeight → rsi_weight (0.4-1.0)

Add → weight_sum

ATR14/ATR120 → LinearScaleWeight → atr_weight (0.3-1.0)

Multiply(0.5) → combined_weight

配置要点

  • 使用 Constant 原语定义0.5常数,用于计算平均值
  • RSI和ATR分别通过 LinearScaleWeight 映射到各自的权重
  • 使用 Add 原语将两个权重相加
  • 使用 Multiply 原语乘以0.5,实现平均(等价于除以2)
  • 最终仓位 = (rsi_weight + atr_weight) / 2
  • 示例:RSI=60 → rsi_weight=0.7,ATR比率=1.5 → atr_weight=0.45,最终仓位=57.5%

配置总结

跨市场通用性

所有策略版本(V0-V5)的 trade_strategy 原语配置在美股和A股完全相同,这证明了原语系统的跨市场通用性。唯一的差异是:

  • 交易标的(QQQ vs 159915)
  • 回测时间段
  • 市场参数(市场代码、货币、更新时间等)

资金策略统一配置

所有动态仓位策略(V1-V5)都使用 再平衡资金策略(RebalancingCapitalStrategy),配置如下:

基础配置

{
"capital_strategy": {
"name": "RebalancingCapitalStrategy",
"params": {
"initial_capital": 100000
}
}
}

推荐配置(含threshold参数)

{
"capital_strategy": {
"name": "RebalancingCapitalStrategy",
"params": {
"initial_capital": 100000,
"threshold": 0.05
}
}
}

参数说明

参数类型必需说明推荐值
initial_capitalnumber初始投入资金根据实际投入设置
thresholdnumber再平衡阈值(偏离百分比)0.05(5%偏离才调仓)

threshold参数详解

  • 作用:只有当实际仓位与目标仓位偏离超过threshold时,才触发再平衡交易
  • 不设置:每日都可能发生微小调仓,手续费成本显著增加
  • 设置为0.05:实际仓位65%,目标仓位70%时,偏离5个百分点,触发买入调整到70%
  • 建议值
    • 美股(低手续费):0.03-0.05
    • A股(高手续费):0.05-0.10
    • 高波动资产:0.03-0.05(波动大,需要更频繁调整)
    • 低波动资产:0.05-0.10(波动小,可容忍更大偏离)

V0基准版的资金策略

V0使用固定100%仓位,配置不同:

{
"capital_strategy": {
"name": "PercentCapitalStrategy",
"params": {
"initial_capital": 100000,
"percents": 100
}
}
}

策略版本速查表

版本仓位控制指标映射区间仓位范围美股表现A股表现特点
V0无(固定)-0%/100%基准(151%)基准(40%)全进全出,对照组
V1RSI40-7530%-100%🏆 冠军(1178%)🏆 冠军(106%)保守减仓,过滤假信号
V2RSI30-7030%-100%优秀(900%)失效(56%)风险调整最优,仅限温和市场
V3ATR比率0.7-1.830%-100%稳健(556%)亚军(104%)波动率避险,熊市优秀
V4ATR比率0.7-1.830%-100%同V3同V3V3的别名
V5RSI+ATR组合30%-100%平衡(782%)良好多因子平衡,鲁棒性强

快速选择指南

  • 追求极致收益 → V1(RSI 40-75),能承受-35%回撤
  • 追求风险调整收益 → V2(RSI 30-70),仅限美股等温和市场
  • 追求防守稳健 → V3(ATR波动率),适合高波动市场和熊市
  • 追求多因子平衡 → V5(RSI+ATR组合),鲁棒性强
  • 对比基准 → V0(固定仓位)

实战启示:如何选择适合你的策略?

经过五个版本的对比测试,我们得到了足够的数据来为不同类型的投资者提供建议。

场景一:追求极致收益

推荐策略:V1(RSI 40-75宽区间)

适合人群

  • 能承受-35%回撤的投资者
  • 长期看好趋势向上的市场(如美股)
  • 相信"少做多得"的哲学
  • 愿意用短期波动换长期收益

优势

  • 最高收益(美股1,178%,A股106%)
  • 最少交易(仅28次,节省手续费和心理成本)
  • 交易效率最高(单次贡献42.1%)

心理建设

  • 你必须接受:当卖出信号触发时,策略可能"不听话",依然保持高仓位
  • 你必须相信:大多数卖出信号都是假的,只有极端情况才需要清仓
  • 在2020年3月暴跌35%时,你能坚持不清仓吗? 这是实施V1的最大考验

场景二:追求性价比

推荐策略:V2(RSI 30-70标准区间)

适合人群

  • 风险偏好中等的投资者
  • 看重夏普比率和Calmar比率
  • 希望在收益和风险之间取得平衡
  • 主要交易美股等相对温和的市场

优势

  • 风险调整后收益最高(Calmar 0.52)
  • 回撤相对较小(-31.1%)
  • 收益依然优异(900%,是基准的6倍)
  • 恢复速度最快(298天)

注意事项

  • 在A股等极端市场可能失效
  • 需要定期监控RSI分布,确保参数适配市场特征

场景三:追求防守稳健

推荐策略:V3(ATR波动率控制)

适合人群

  • 高度厌恶风险的投资者
  • 交易波动剧烈的市场(如A股、新兴市场)
  • 经历过熊市创伤,优先考虑本金保护
  • 希望策略能自动"读懂"市场恐慌情绪

优势

  • 在极端市场(如A股)表现优异(104%收益)
  • 2022年熊市回撤最小(-12%)
  • 波动率驱动,无需预判市场方向

劣势

  • 在温和牛市(如美股2010-2020)收益较低(556%,虽然依然是基准的4倍)
  • 可能在V型反转中踏空(因为ATR下降较慢)

场景四:极端分散

推荐策略:V5(RSI+ATR组合)

适合人群

  • 喜欢多因子模型的量化投资者
  • 不想在RSI和ATR之间做选择
  • 追求策略的鲁棒性
  • 希望策略在各种市场环境下都不太差

优势

  • 综合考虑价格位置和波动率
  • 在各种市场环境下都有中上表现
  • 性能稳定,不会出现某个市场完全失效的情况

劣势

  • 没有在任何单一市场成为冠军
  • 复杂度更高,调试成本增加

参数调优指南

虽然我们提供了默认参数,但不同市场和不同时期可能需要调整。

RSI参数调整原则

宽区间 vs 标准区间

市场特征推荐区间理由
温和波动(如美股)30-70(标准)RSI很少极端值,标准区间足够
剧烈波动(如A股)40-75(宽区间)或更宽RSI经常极端,需要更大调整空间
超高波动(如加密货币)50-80(更宽)RSI极端值频繁,给策略更多余地

仓位区间调整

  • 默认是100%-30%(最高满仓,最低30%仓位)
  • 保守型:可以改为80%-20%(降低最高仓位)
  • 激进型:可以改为100%-10%(扩大仓位范围)
  • 不建议完全清仓(0%),因为会失去动态仓位的核心优势

ATR参数调整原则

ATR比率阈值

市场特征推荐阈值理由
低波动(如指数ETF)0.7-1.5波动率稳定,较窄区间即可
中波动(如科技股)0.7-1.8(默认)平衡灵敏度和稳定性
高波动(如杠杆ETF)0.6-2.5波动率极端,需要更宽容的阈值

ATR周期调整

  • 短周期(14日):对波动率变化敏感,适合短线
  • 长周期(120日):提供稳定的基准,适合中长线
  • 不建议同时缩短两个周期,会导致比率失去意义

回测验证的重要性

切记:任何参数调整都必须经过充分的回测验证:

  1. 至少使用10年以上的历史数据
  2. 覆盖至少一个完整牛熊周期
  3. 特别关注极端市场时期的表现(如2008年、2020年)
  4. 避免过度拟合(参数在不同时间段都应该稳定)

核心启示与结论

经过五个版本、两个市场、超过20年的回测数据,我们得到了一些深刻的洞察。

启示一:持仓比择时更重要

这次研究最核心的发现是:在相同的买卖信号下,仅通过改变仓位管理,收益可以相差7倍

这颠覆了很多投资者的认知。大多数人花费90%的精力优化"何时买卖",却忽略了更重要的问题:"买多少"。

数字对比

  • 从SMA20/60优化到SMA15/55:收益可能提升10-20%
  • 从固定仓位改为动态仓位:收益提升了680%

结论与其纠结均线参数,不如先把仓位管理做好

启示二:拒绝清仓有时是正确的

传统趋势跟随策略信奉"顺势而为",死叉就清仓。但V1策略告诉我们:有时候"不听话"反而是对的

V1的哲学

  • 大多数卖出信号都是噪音
  • 真正的趋势转折很少
  • 拒绝响应假信号,等待真正的风险

这需要巨大的心理素质:当所有指标都说"卖",你却选择"持有"。但数据证明,这是值得的。

类比:就像开车遇到减速带,你不需要每次都停车,只需要减速通过。V1就是这个减速带策略——遇到小波动,降低速度(轻度减仓),而不是停车(清仓)。

启示三:参数需要适配市场

同样的V2策略,在美股收益900%,在A股却只有56%。这说明:没有放之四海而皆准的参数,只有适合特定市场的配置

适配原则

  • 温和市场(美股):标准参数即可
  • 极端市场(A股):需要更宽的参数区间
  • 定期检查:每年至少检查一次参数是否仍然适配市场特征

启示四:风险是收益的入场券

V1的收益是基准的7.79倍,但代价是回撤从-29%增加到-35%。

关键问题:多承受6个百分点的回撤,换取7倍的收益,你愿意吗?

对于大多数投资者,答案应该是"愿意"。但你必须做好心理准备:

  • 在账户回撤35%时不恐慌性清仓
  • 相信策略的长期逻辑
  • 接受短期波动换取长期收益

这才是量化投资的本质:用数学和纪律战胜情绪。

启示五:少做反而做得更好

V0做了69次交易,单次贡献2.2%;V1只做了28次,单次贡献42.1%。

交易效率提升19倍,这不仅节省了手续费,更重要的是节省了心理成本:

  • 更少的决策压力
  • 更少的情绪波动
  • 更多的时间享受生活

巴菲特的智慧:"如果你不愿意持有一只股票十年,那就不要持有十分钟。" V1策略用数据证明了这句话的价值。

最终总结

动态仓位不是魔法,它不能让你避开所有风险,也不能保证每次交易都盈利。

但它能做到的是:

  1. 减少无效交易:过滤掉80%的噪音信号
  2. 提升交易质量:让每一次出手都更有价值
  3. 平衡风险收益:用适度的风险换取显著的收益
  4. 适应市场节奏:让仓位随市场呼吸而律动

通过策引系统的原语组合,你可以轻松实现从简单到复杂的各种动态仓位策略。不要让你的资金在全进全出中空转,让它随着市场的脉搏跳动吧

记住:在量化交易中,最难的不是构建策略,而是在策略回撤时坚持执行。动态仓位给了你一个更理性的工具,但最终能否成功,还取决于你能否战胜自己。