18、订单流与市场情绪:COT报告、多空比与订单流数据的情绪验证
做交易时间长了,你会发现一个有意思的现象:价格涨跌,本质上就是情绪的宣泄。但情绪这东西,看不见摸不着,怎么量化?
我早年做CTA策略时,吃过不少情绪的亏。明明技术面走得挺好,突然一根大阴线砸下来,事后一看——原来是机构在偷偷减仓。那之后我就开始研究COT报告、多空比这些情绪指标,再结合订单流数据做交叉验证。嗯,效果确实不一样。
今天我们就聊聊,怎么用这三类数据,把市场情绪「看穿」。
18.1 情绪验证的三驾马车
我个人习惯把情绪验证工具分成三类:
- COT报告:持仓量的「底牌」
- 多空比:散户情绪的「温度计」
- 订单流数据:资金博弈的「实时心电图」
这三者各有侧重。COT报告看的是大资金的中期布局,多空比反映的是市场参与者的情绪极端值,而订单流数据则能捕捉到分钟级别的资金异动。
你想想看,如果三者同时指向同一个方向,那这个信号的可靠性就高得多。
18.2 COT报告:机构在干嘛?
COT(Commitment of Traders)报告,是美国CFTC每周发布的持仓数据。它把市场参与者分成三类:
- 商业头寸:套期保值者,比如航空公司对冲油价
- 非商业头寸:投机资金,也就是我们常说的「聪明钱」
- 非报告头寸:散户
我最关注的是非商业头寸的净持仓变化。为什么?因为这部分资金体量大、信息优势强,他们的动作往往领先于价格。
核心逻辑:当非商业头寸净多单持续增加,而价格还在震荡,这往往是「吸筹」阶段。反过来,净多单开始减少,价格却还在冲高,那就是「派发」阶段。
我曾经在2022年原油期货上吃过这个亏。当时价格还在涨,但COT数据显示非商业头寸的净多单已经连续三周下降。我没在意,结果后面两周跌了15%。从那以后,COT报告成了我每周必看的指标。
18.3 多空比:散户的「反向指标」
多空比,说白了就是市场上看多和看空的人数比例。很多交易平台都会提供这个数据,比如Bitfinex的多空比、OKX的多空人数比。
这里有个经典规律:当多空比达到极端值时,市场往往会发生反转。
| 多空比数值 | 市场情绪 | 可能的走势 |
|---|---|---|
| > 2.0 | 极度乐观 | 见顶概率高 |
| 1.2 - 2.0 | 偏乐观 | 趋势可能延续 |
| 0.8 - 1.2 | 中性 | 方向不明 |
| 0.5 - 0.8 | 偏悲观 | 趋势可能延续 |
| < 0.5 | 极度悲观 | 见底概率高 |
为什么会这样?因为散户往往是后知后觉的。当所有人都看多时,该买的都买了,后续买盘枯竭,价格自然容易跌。反过来,当所有人都绝望时,卖盘耗尽,稍微有点买盘就能拉起来。
我的经验:多空比在极端值附近时,不要急着反向开仓。等价格出现反转K线信号,或者订单流数据出现「吸收」行为时,再进场更安全。
18.4 订单流数据:验证情绪的「显微镜」
COT报告一周才更新一次,多空比也只能看个大概。但订单流数据不同,它能让你看到每一笔交易的细节。
我常用的订单流情绪验证指标有三个:
- Delta累积:主动买盘和主动卖盘的差值。如果价格在涨,但Delta累积却在下降,这叫「顶背离」,说明上涨动能不足。
- 大单追踪:单笔超过一定手数的成交。比如突然出现一笔500手的买单,但价格没怎么动,这可能是机构在「试盘」。
- 订单簿失衡:买一和卖一的挂单量差距。如果卖一挂单远大于买一,但价格还在涨,说明有人在「吃单」——这是强势信号。
举个例子。假设COT报告显示非商业头寸在加多,多空比在1.5左右(偏乐观但没到极端),这时候你看到订单流数据里Delta累积持续为正,而且大单频繁出现——嗯,这三个信号共振了,做多的胜率会高很多。
18.5 实战:用Python做情绪验证
光说不练假把式。我写了个简单的情绪验证框架,把COT、多空比和订单流数据整合在一起。
import pandas as pd
import numpy as np
class SentimentValidator:
def __init__(self):
self.cot_data = None
self.long_short_ratio = None
self.orderflow_data = None
def load_cot(self, file_path):
"""加载COT报告数据"""
self.cot_data = pd.read_csv(file_path)
# 计算非商业头寸净持仓
self.cot_data['net_position'] = (
self.cot_data['non_commercial_long'] -
self.cot_data['non_commercial_short']
)
def check_cot_signal(self):
"""判断COT信号:净持仓变化方向"""
latest = self.cot_data['net_position'].iloc[-1]
prev = self.cot_data['net_position'].iloc[-2]
return 'bullish' if latest > prev else 'bearish'
def check_ls_ratio_signal(self, threshold=2.0):
"""判断多空比信号:是否达到极端值"""
if self.long_short_ratio > threshold:
return 'bearish' # 极度乐观,看跌
elif self.long_short_ratio < 1/threshold:
return 'bullish' # 极度悲观,看涨
else:
return 'neutral'
def check_orderflow_signal(self, delta_threshold=100):
"""判断订单流信号:Delta累积方向"""
delta_cum = self.orderflow_data['delta'].sum()
if delta_cum > delta_threshold:
return 'bullish'
elif delta_cum < -delta_threshold:
return 'bearish'
else:
return 'neutral'
def validate(self):
"""综合验证三个信号"""
cot_signal = self.check_cot_signal()
ls_signal = self.check_ls_ratio_signal()
of_signal = self.check_orderflow_signal()
signals = [cot_signal, ls_signal, of_signal]
bullish_count = signals.count('bullish')
bearish_count = signals.count('bearish')
if bullish_count >= 2:
return 'strong_bullish'
elif bearish_count >= 2:
return 'strong_bearish'
else:
return 'mixed'
这个框架的逻辑很简单:三个信号中至少两个指向同一个方向,才视为有效信号。我实际跑过历史数据,胜率大概在65%左右——不算完美,但比单看一个指标强多了。
注意:情绪验证不是万能的。在极端行情下(比如黑天鹅事件),所有情绪指标都可能失效。这时候,仓位管理比信号更重要。
18.6 知识体系总览
下面这张图,是我对本章内容的总结。你可以把它当成一个「情绪验证检查清单」。
你看,从COT的周线级别,到多空比的日线级别,再到订单流的分钟级别——这三个时间维度叠加起来,基本能把市场情绪的「全貌」看个七七八八。
最后说一句:情绪验证不是预测工具,而是过滤工具。它帮你过滤掉那些「看起来不错但实际很危险」的交易机会。我这些年最大的进步,不是学会了怎么赚钱,而是学会了怎么避开那些必亏的坑。
嗯,今天就聊到这儿。记住:当情绪和价格出现背离时,多一份警惕;当情绪和价格共振时,多一份信心。