负成交量NVI指标的基本原理
负成交量NVI(Negative Volume Index)由保罗·迪萨克提出,核心逻辑是当成交量较前一日减少时,价格的变化更能反映主力资金的行为。市场普遍认为,成交量放大时散户参与度高,而成交量萎缩时聪明资金往往在操作。NVI通过累加成交量减少日的价格百分比变化,形成一条曲线,用以追踪聪明资金的足迹。
计算NVI的步骤:

初始值通常设为1000。
当日成交量小于前一日成交量时,NVI = 前一日NVI × (1 + 当日收盘价 / 前一日收盘价 - 1)。
当日成交量大于或等于前一日成交量时,NVI保持不变。
在股票和期货市场中,NVI的上升意味着在成交量萎缩时价格仍在上涨,暗示主力在吸筹;NVI下降则意味着在成交量萎缩时价格下跌,暗示主力在派发。
NVI在股票期货交易中的研判方法
趋势判断
NVI曲线与价格走势的背离是重要信号。当价格创新低而NVI未创新低,表明聪明资金并未跟随抛售,可能形成底部。当价格创新高而NVI未创新高,表明主力并未追涨,可能形成顶部。
在期货市场,由于杠杆效应,NVI的背离信号往往比股票市场更早出现。交易者可以结合持仓量变化,若NVI上升且持仓量增加,确认多头主力入场;若NVI下降且持仓量增加,确认空头主力入场。
均线系统辅助
NVI通常搭配250日移动平均线使用。当NVI上穿其250日均线,视为牛市信号;当NVI下穿其250日均线,视为熊市信号。股票市场适用250日,期货市场因交易周期短,可调整为60日或120日。
代码演示(Python):
import pandas as pd
import numpy as np
def calculate_nvi(df, initial=1000):
df = df.copy()
df['price_change'] = df['close'].pct_change()
df['volume_decrease'] = df['volume'] < df['volume'].shift(1)
df['nvi'] = initial
for i in range(1, len(df)):
if df.loc[i, 'volume_decrease']:
df.loc[i, 'nvi'] = df.loc[i-1, 'nvi'] * (1 + df.loc[i, 'price_change'])
else:
df.loc[i, 'nvi'] = df.loc[i-1, 'nvi']
return df
# 示例数据
data = {'close': [10, 10.5, 10.3, 10.8, 11], 'volume': [1000, 1200, 800, 900, 1100]}
df = pd.DataFrame(data)
nvi_df = calculate_nvi(df)
print(nvi_df[['close', 'volume', 'nvi']])
结合正成交量PVI
NVI与正成交量PVI(Positive Volume Index)结合使用,可全面观察市场。PVI在成交量增加时计算,反映散户行为。当NVI上升而PVI下降,表明聪明资金在买入而散户在卖出,后市看涨。当NVI下降而PVI上升,表明聪明资金在卖出而散户在买入,后市看跌。
实战应用要点
股票市场
在股票市场中,NVI适用于识别中长期趋势。当NVI持续位于250日均线上方,且价格未大幅上涨,可视为建仓时机。当NVI跌破250日均线,且价格处于高位,应减仓或离场。
注意NVI对成交量数据质量要求较高,停牌或涨跌停导致的成交量异常需处理。建议使用复权价格计算,避免除权除息干扰。
期货市场
期货市场T+0交易,NVI可应用于日内或短线。由于期货成交量受主力合约切换影响,需使用连续合约数据。NVI在期货中的参数可优化,通过回测寻找最佳均线周期。
代码演示(期货NVI策略回测框架):
import backtrader as bt
class NVIStrategy(bt.Strategy):
params = (('nvi_period', 60),)
def __init__(self):
self.nvi = bt.indicators.NegativeVolumeIndex(self.data)
self.sma_nvi = bt.indicators.SMA(self.nvi, period=self.params.nvi_period)
def next(self):
if self.nvi[0] > self.sma_nvi[0] and not self.position:
self.buy()
elif self.nvi[0] < self.sma_nvi[0] and self.position:
self.close()
风险控制
NVI信号滞后于价格,需结合止损。股票市场止损可设5%-8%,期货市场因杠杆,止损应更严格,如2%-3%。NVI在震荡市中易产生假信号,可加入ADX指标过滤,ADX低于20时忽略NVI信号。
NVI的局限性
NVI仅关注成交量减少日,可能遗漏关键信息。在成交量持续放大的趋势中,NVI长时间不变,失去参考价值。期货市场主力合约换月时,成交量突变会导致NVI计算偏差。交易者需结合价格形态、资金流向等综合判断。
量化交易中,NVI可作为因子之一,通过多因子模型提升稳健性。股票市场可结合基本面因子,期货市场可结合期限结构因子。NVI的独特视角在于捕捉聪明资金,但单一指标不足以稳定盈利,需系统化运用。