流动性在金融市场中具有重要的价值。它涉及交易的执行成本、交易的可行性和风险管理。高流动性市场具有较低的交易成本,投资者能够以较低的成本进行买卖。此外,高流动性市场使得交易更加可行,投资者能够更容易地买入或卖出资产,而不会对市场价格产生显著影响。流动性还对风险管理至关重要,低流动性市场可能面临更大的价格波动风险。因此,了解和评估流动性对投资者来说至关重要,它帮助投资者降低交易成本、增加交易可行性,并更好地管理风险。
缺乏流动性的指数或面临剧烈波动的风险。股市流动性高是指股市能够迅速、低成本地执行大量交易,并且不会导致价格大幅波动。对于即将进行交易的投资者来说,如果流动性不足,可能无法顺利完成交易;对于已经持有指数的投资者来说,缺乏流动性可能会导致短期内价格大幅波动,从而带来浮亏的风险。
本文复现了六个学术文献中提到的流动性指标,并将其应用于市场上主要的宽基指数。这些指标包括非流动性指标、非流动性漂移量、负收益日的非流动性、异常换手率、换手率波动和成交额波动。其中非流动性指标和非流动性漂移量指示了指数的波动风险,当它们处于较高位时,需要注意指数可能面临的大幅波动。负收益日的非流动性指标反映了指数下跌所需的成交量,较高的数值意味着下跌所需的成交量较小。异常换手率指标是市场状态变化的指示器,当该指标较高时,表示市场状态可能发生较大变化。而换手率波动和成交额波动指标的增大则意味着流动性风险增加,可能导致交易成本上升和市场价格波动加剧。
指标1:非流动性指标
非流动性指标是用于度量市场流动性的指标,它通过比较价格和成交量之间的关系来衡量流动性的强弱。具体来说,在该指标中,我们使用了指数的收益率和成交额来计算。指标的计算方法是取过去20个交易日的数据,然后绝对收益率除以成交额,然后求均值。这个值越高,意味着较小的成交额就可以引起较大的价格波动,表明流动性较弱(非流动性较强)。相反,如果较大的成交额只引起较小的价格波动,表明流动性较强(非流动性较弱)。
当非流动性指标处于高位时,我们需要注意指数的波动风险。根据对上证指数的历史数据观察,当非流动性指标持续处于高位时,通常伴随着指数的下跌。这可能与我国股市没有做空机制有关。当股价下跌时,由于处置效应和市场的悲观情绪,成交量往往较低,导致流动性减弱,这进一步加剧了股价的下跌。相反,上涨通常需要更高的流动性来持续推动。
代码实现:
def calculate_illiq(data, window=20):
# 计算绝对收益率
data['abs_return'] = data['close'].pct_change().abs()
# 计算非流动性指标
data['illiq'] = (data['abs_return'] / data['vol']).rolling(window).mean()
return data
指标2:非流动性漂移量
非流动性漂移量是一种用于度量市场非流动性变化的指标。它通过比较短期和长期非流动性指标之间的差异来衡量非流动性的漂移情况。具体来说,非流动性漂移量指标是将短期非流动性指标与长期非流动性指标的平均值进行比较。
当非流动性漂移量处于高位时,我们需要注意指数的波动风险。具体来说,当非流动性漂移量为正值,即短期非流动性高于长期均值时,通常意味着指数面临下跌的可能性。这与非流动性指标的原理相似。当非流动性较高时,较小的交易量就可能引起较大的价格波动,从而增加了指数下跌的风险。
代码实现:
def calculate_abilliq(data, window_1=20,window_2=120):
# 计算绝对收益率
data['abs_return'] = data['close'].pct_change().abs()
# 计算非流动性指标
data['illiq'] = (data['abs_return'] / data['vol']).rolling(window_1).mean()
# 计算非流动性指标的均值
data['avg_illiq'] = data['illiq'].rolling(window_2).mean()
# 计算非流动性漂移量指标
data['abilliq'] = data['illiq'] - data['avg_illiq']
return data
指标3:负收益日的非流动性指标
负收益日的非流动性指标,用于衡量市场在出现负收益的交易日的非流动性情况。与之前的非流动性指标类似,但不同之处在于只计算收益率为负的交易日的数据。计算负收益日的非流动性指标的方法与之前的非流动性指标类似。首先,计算负收益日的收益率的绝对值,然后用绝对收益率除以负收益日的成交额并取均值,得到了负收益日的非流动性指标。当负收益日的非流动性指标处于高位时,说明指数在下跌时所需的成交量较小。
代码实现:
def calculate_negative_returns_illiq(data, window=20):
# 筛选出负收益日
negative_returns_data = data[data['return'] < 0]
# 计算负收益日的绝对收益率
negative_returns_data['abs_return'] = negative_returns_data['return'].abs()
# 计算负收益日的非流动性指标
negative_returns_data['negative_returns_illiq'] = (negative_returns_data['abs_return'] / negative_returns_data['vol']).rolling(window).mean()
return negative_returns_data
指标4:异常换手率指标
异常换手率的指标,用于衡量短期换手率相对于长期换手率的差异程度。计算异常换手率指标的方法如下:首先,计算短期换手率的平均值,然后计算短期换手率的绝对值与长期换手率的平均值的比值。
异常换手率指标的本质是度量短期换手率相对于长期换手率的差异程度。当异常换手率拉升到高点时,通常意味着市场状态的切换。换手率指标反映了投资者对投资标的的交易热情。如果换手率一直保持在一定水平,意味着市场的状态相对稳定;但当换手率短期急剧上升到较高水平时,可能意味着市场状态的转变。代码实现:
def calculate_abnormal_turnover(data, short_window=20, long_window=120):
# 计算短期换手率的平均值
data['short_avg'] = data['turnover'].rolling(short_window).mean()
# 计算长期换手率的平均值
data['long_avg'] = data['turnover'].rolling(long_window).mean()
# 计算异常换手率指标
data['abnormal_turnover'] = data['short_avg'] / data['long_avg']
return data
指标5:换手率波动指标
换手率波动指标是通过计算滚动20个交易日的换手率的标准差得出的。换手率波动指标的增大意味着流动性风险的增加。一方面,换手率的剧烈波动意味着换手率可能随时下降到较低水平,这对应着较高的流动性风险。另一方面,当换手率波动指标上升到高点时,通常意味着指数走势的拐点,即市场状态的切换。
代码实现:
def calculate_turnover_volatility(data, window=20):
# 计算滚动窗口的换手率标准差
data['turnover_volatility'] = data['turnover'].rolling(window).std()
return data
指标6:成交额波动率指标
成交额波动率指标是通过计算滚动20个交易日的成交额的标准差得出的。成交额波动率指标的增大意味着流动性风险的增加。类似于换手率波动指标,当成交额的波动程度增大时,通常意味着市场的流动性风险也增加。
代码实现:
def calculate_volume_volatility(data, window=20):
# 计算滚动窗口的成交额标准差
data['volume_volatility'] = data['volume'].rolling(window).std()
return data
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/111022
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!