Skip to content

我把TradingView上的一个冷门成交量方向指标跑成了策略

作 者:老余捞鱼

原创不易,转载请标明出处及原作者。

文中示例仅用于技术讨论,不构成任何操作建议。
量化策略开发应以学习和技术交流为目的。
本号不荐股、不卖课、不承诺收益。
市场有风险,请合法合规投资。

本文约 2800 字 | 阅读预计需 5-8 分钟

· · ·

我在TradingView上翻到一个挺特别的指标,Zeiierman写的,叫”方向性成交量形态”,英文全名 Directional Volume Shapes

这东西跟一般的RSI、MACD不一样。它不看价格动量,看的是成交量加权K线压力的”形状”。把最近一段时间的买卖压力分布,映射成七种统计分布形态:Bell(正态钟形)、Right-skewed(右偏)、Left-skewed(左偏)、J-shaped(J形)、Reverse-J(反J形)、Bimodal(双峰)、Multimodal(多峰)。然后你可以直接看到当前成交量的方向性格局。

但问题是,它只是个视觉指标,没有入场规则,没有止损,没有策略逻辑。Zeiierman把它设计出来,是让你”看”的,不是让你”做”的。

我做了一件量化人都会做的事。把底层算法转成Python,保持每个计算步骤不动。然后围绕这指标唯一像”信号”的东西,多空极性读数,设计一个极简策略,从头跑到底。

一个没有止损的策略

我们先搞清楚这个指标到底在输出什么。

方向性成交量形态有两个输出维度。形态分类(那七种分布)和多空极性(Bull/Bear)。形态分类只管柱子的高矮轮廓,Bell形状高点,J形矮点。但柱子在零轴上方还是下方,只由极性读数决定。

所以能拿来当策略信号的,只有这个极性读数。Bull=做多,Bear=平仓。

具体设定如下:

  • 股票 AQST(Aquestive Therapeutics),一只小市值医药股
  • K线级别 日线
  • 时间窗口 2018年中 到 2026年中,约8年
  • 初始资金 $100,000
  • 佣金 0.1%,滑点 0.2%
  • 信号执行 下一根K线开盘价入场,不往前偷价格

规则一条,极性翻Bull → 全仓做多。极性翻Bear → 平仓持币。不止损。不止盈。不加仓减仓。就是”跟信号走”的原始版本。

设计成这样是故意的。这就是这个指标能提供的唯一信号。不加任何额外逻辑。为的就是看清楚,指标本身到底值几分钱。

86% 的回报,30% 的胜率

跑了126笔交易。全部平仓。

总回报+86.78%买入持有-74.24%
最大回撤69.91%回撤持续时间1267天(≈3.5年)
总交易数126笔胜率31.75%
最佳单笔+69.99%最差单笔-32.00%
平均盈利+17.00%平均亏损-5.78%
Profit Factor1.18Sharpe0.50
Sortino0.78Calmar0.17

先看好看的。策略赚了86.78%。同期死拿AQST不动,亏74.24%。差了160个点。看起来像赢麻了。

再看没那么好看的。胜率31.75%。126笔里86笔是亏的。最大回撤70%,而且这个坑,整整三年半才爬出来。账户从10万跌到最低只剩2.5万。这要是实盘,几个人撑得住?

赚的钱到底从哪来的

接下来我们来分析这个策略赚的86%里,有多少是因为”AQST暴跌时策略空仓躲过去了”,有多少是因为”真的在上涨前买进去了”?

看回测图的账户净值曲线很直观。

▲ AQST 策略净值曲线(紫)vs 买入持有(灰)

2019年末到2023年中,AQST从20块一路跌到2块以下,股价蒸发了90%以上。这段时间,策略大部分时间持币,因为极性读数一直显示Bear。所以策略没跟跌。等2024年AQST开始反弹,极性翻Bull,策略才重新进场。

换句话说,大部分超额收益来自”没亏那74%”。不是”挑到了更多上涨”。

这就有意思了。换一只走势平稳的股票来测,没有”大崩盘+大反弹”这种极端路径,策略跟买入持有的差距,大概率大幅缩水。

再看盈亏结构。胜率不到三分之一,但策略还能赚钱,靠的是盈亏比不对称,平均盈利+17%,平均亏损-5.8%,赢一次顶亏三次。这是”截断亏损,让利润奔跑”的结构,看着漂亮。

但这里有个坑。没有止损,每一笔亏损都跑到极性反转才平。最差那笔亏了32%,从Bull翻到Bear前,没有任何机制拦住它。极性信号在极端行情下反应慢一拍,单笔亏损只大不小。

风险评估

Sharpe 0.50、Calmar 0.17,这两个数放在一起看,你就知道这不是一个稳定性好的策略。

Sharpe 0.50 意思是,每赚一块钱都伴随不小波动。同期无风险利率3%-4%,超额收益没看起来那么漂亮。

Calmar 0.17 更直接。年化收益除以最大回撤,不到0.2。让人安心的策略,Calmar通常在0.5以上。0.17说明每一分钱都是扛着巨大回撤换来的。

Profit Factor 1.18。刚好在”不亏钱”线上。126笔下来,总盈利除以总亏损才1.18倍。容错空间很薄。

三个数凑一块,说同一件事,信号分得清方向,但不够稳。

▲ 账户净值、回撤、交易订单与单笔盈亏多面板分析

单票的陷阱

AQST是一只小市值医药股,它的价格路径很特殊,先是FDA审批周期带动的长期下跌,后来产品获批又大幅反弹。这种”暴跌→反弹”的剧本,天然适合一个”只在看涨时持仓、看跌时空仓”的长/空仓策略。

在AQST上跑出86%回报,不代表这个信号在任何股票上都有用。

更有可能是,信号碰巧对上了AQST的价格周期。换成AAPL、MSFT这种走势相对平滑的大盘股,或者换成一路阴跌的垃圾股,结果会完全不同。

这是回测里常见的坑。不是策略过拟合,是股票路径的特殊性让你误判了信号的价值

上实盘之前必须做的五件事

第一,多股票扫描。 用同一个策略,跑至少几十只股票,看”看跌时持币”这个行为在不同标的上是不是一致的。只在AQST上有效的信号不叫信号,叫巧合。

第二,加止损层。 当前版本没有任何风险管理。每笔交易跑到极性反转才停,最差亏32%。至少应该补一个波动率止损或ATR止损,以过去N日的波动幅度为基准,亏到一定倍数就平仓。

第三,样本外验证。 滚动窗口推进,用前几年的数据定参数,用后几年的数据检验,看参数稳不稳定。不要把所有数据一股脑放进同一个回测。

第四,归因拆解。 把总回报拆成两部分,空仓避跌贡献了多少、多头择时贡献了多少。方法是构造一个对照策略,只在Bear期持币,Buy期随机入场。对比两者的回报差,就能看出择时到底有没有增值。

第五,蒙特卡洛重抽样。 126笔交易,胜率32%,几笔大盈利占了回报大头。把交易顺序打乱、重新随机抽样一万次,看回报分布。如果换一种交易顺序回报就大幅缩水,说明几笔大盈利的排序位置对结果影响太大,策略不够稳健。

每件都不是”最好做”。是”必须做”。跳过任何一步,看到的数据都可能是幻觉。

观点总结

方向性成交量形态这个指标,本身有点意思。它不是看图猜方向那类,基本思路是把成交量方向性压力映射为分布形态,还是挺别致的。比市面上大多数”金叉死叉套过滤器”的指标有想法。

但这不是一篇”发现宝藏指标”的文章,正相反,它可以看成一面镜子。

86.78%的回报。32%的胜率。70%的回撤。0.17的Calmar。每个数字都在说同一句话,回测里的”好看”,很可能不是策略本身好看

如果你想认真用这个信号,或类似的长/空仓极性信号,先跑完上面五步再说。


#量化回测 #TradingView #成交量分析 #方向性成交量 #策略评估 #回撤风险 #Python量化 #Zeiierman指标 #风险调整收益 #单票陷阱 #胜率不对称 #止损设计

Published inAI&Invest专栏

Be First to Comment

    发表回复