流动性调整 VaR:买卖价差、市场冲击、平仓时间
标准 VaR 假设你能按中间价、瞬间、零成本地平仓。三个假设全错。把价差、市场冲击和平仓时间加回风险数字里,就是 L-VaR。
标准 VaR 悄悄做了三个假设:你能按中间价成交,你的单子不会推动价格,平仓不花时间。真实市场里三个都不成立。买价和卖价之间隔着一个价差;你想卖一个大头寸,“卖”这个动作本身会把价格压下去;把一亿美元的小盘头寸清出来,要几天到几周。
这三个假设值多少钱,取决于你持有的是什么。大银行日频交易账簿的 VaR 里,1% 的价格变动远大于 0.05% 的买卖价差,流动性成本可以不管。但换成一个有压力的公司债基金,或者一笔要清好几天的集中头寸,流动性成本就占了主导。忽略它们会系统性低估真实平仓成本,幅度从几个百分点到与价格风险本身同量级都有可能(Bangia, Diebold, Schuermann & Viswanath, 1999)。
这篇文章就按这三个假设崩塌的顺序走:先算价差的账,再算冲击的账,再算时间的账,最后拼出流动性调整 VaR(L-VaR),并且说清楚为什么这套数字在压力下还得再打折扣。
标准 VaR 在哪里骗你
回忆标准 VaR 的定义:
对中间价 、持仓 的组合,盯市 P&L 的变化是
标准 VaR 估计的是 的 分位数,假设仓位可以按中间价平掉。多头实际得在 bid 卖出,空头得在 ask 买入,跨越半个价差的成本被这个定义直接吃掉了。
这笔被吃掉的成本有多大,量一下就知道。买卖价差 5 个基点的流动股票,平仓付半价差约 2.5 个基点;对 1% 的日 VaR,这是 VaR 的 2.5%,可以忽略。但一只买卖价差 1% 的非流动公司债,半价差成本是仓位的 0.5%;对 5% 的月 VaR,这已经是 VaR 的 10%。同一个”忽略价差”的近似,在流动股票上是圆整误差,在非流动信用上是一成的风险没算。
顺着这个逻辑往下推,标准 VaR 失效最严重的头寸也就清楚了:小盘股、公司债(尤其困境信用)、需要大额清仓的衍生品、一天清不掉的单只集中头寸、正在退出的封闭式基金。共同点是价差宽、成交量薄、仓位相对市场深度大。对这类头寸,标准 VaR 低估平仓成本可以到一个数量级。
第一笔账:半价差
最简单的流动性调整就是把上面那笔被吃掉的成本加回去。对规模 的仓位、买卖价差 (十进制,比如 表示 10 bps 价差),期望价差成本大约是 。Bangia、Diebold、Schuermann & Viswanath (1999) 的流动性调整 VaR 是
对美元计价的多资产组合:
其中 是资产 的价差, 是价格, 是持仓。
注意半价差是未受信息驱动的交易者在正常市场下的期望成本。压力市场里实际成本可以高 2–5 倍,平静市场里更低。Bangia 等人自己也把这个 L-VaR 称为该置信水平下流动性成本的下界——它是起点,不是终点。
拿数字过一遍。100 万美元、5 bps 价差的股票头寸:半价差成本 1{,}000{,}000 \times 0.0005 / 2 = \250$。99% 日 VaR 是 $30,000(3%)。L-VaR 是 $30,250,调整不到 VaR 的 1%。换成 100 万美元、100 bps 价差的公司债:半价差成本 $5,000。月 VaR 是 $50,000(5%)。L-VaR 是 $55,000——流动性一下占了总风险的 10%。同一个公式,资产换一换,从”可以忽略”变成”必须上报”。
但半价差只覆盖了小单。仓位大到一天清不掉时,真正的伤害在别处。
第二笔账:市场冲击
你卖的时候,价格会反过来压你。对这部分成本,经验文献里的标准近似是平方根冲击律:
其中 是要交易的股数, 是日均成交量, 是日波动率, 是一个常数(典型值 0.05–0.2)。这条平方根律来自对真实成交数据的大样本测量(Bouchaud et al., 2018),不是从哪个模型推出来的;它说的是冲击随交易规模次线性增长——交易量翻四倍,冲击只翻一倍。
VaR 的实务调整很直接:
其中 是美元仓位。这一项什么时候要紧,看三个规模档就明白。100 万美元仓位、$5000 万日均成交量、$\sigma = 2%\eta = 0.1$:冲击是 $0.1 \cdot 0.02 \cdot \sqrt{0.02} \cdot 100\text{万} = 0.1 \cdot 0.02 \cdot 0.141 \cdot 100\text{万} \approx $282$,加在 $30,000 的 VaR 上可以不看。同样 100 万仓位、日成交量只有 $50 万(非流动):冲击是 $0.1 \cdot 0.02 \cdot \sqrt{2} \cdot 100\text{万} \approx $2{,}828$,开始有感觉了。500 万仓位、$50 万日成交量——十倍日成交量:冲击是 0.1 \cdot 0.02 \cdot \sqrt{10} \cdot 500\text{万} \approx \31{,}623$,已经跟日 VaR 本身一个量级。半价差是加法项,冲击是随规模超线性增长的美元成本,仓位一大它就接管了整个数字。
第三笔账:时间
标准 VaR 把持有期 定死。仓位大到 内清不掉时,真正相关的量是:把仓位 清完、又不让市场冲击超过阈值,需要多长时间。定义”流动性持有期”
一种常见取法: 是按恒定速率平仓、使总冲击不超过某个阈值(通常取买卖价差的一个分数,让冲击不至于盖过往返成本)所需的时间。
要把”冲击”和”时间”接起来,得先分清文献里两个不同的冲击模型——它们对”拖时间有没有用”给出的答案不一样,不能混着用。
第一个是 Almgren & Chriss (2000) 的线性冲击模型:每股交易付一个线性的临时冲击成本,总临时冲击是
跟平仓期 无关。永久冲击是每股 ,同样与 无关。线性冲击下总成本就是 ,你怎么把交易摊到时间上都一样。这是”每笔交易的成本跟规模成正比”时的正确模型,也是最优执行理论的标准工作假设。
第二个是Bouchaud 平方根冲击,经验上观测到的那个:
其中 在流动市场约 0.5、平均约 0.6、非流动市场趋近 1(Bouchaud et al., 2018)。这里起作用的是交易量占同期市场成交量的比例。一天之内砸出一整天的成交量(),冲击约 ;砸出十天的量,冲击约 。而如果把仓位 摊到 天、每天交易 ,每天的每股冲击约 , 天下来平均每股付的冲击成本仍约 ——对固定的 ,它随 增大而减小。把交易摊到更多天能省冲击成本,代价是暴露在价格变动下的时间更长。这正是线性模型给不出的结论:在线性世界里拖时间省不了钱,在平方根世界里能。
对 VaR 而言,要的是总平仓成本,不是某一天的冲击。两个模型答案不同,选定一个,别在同一个计算里换来换去。
拼起来:L-VaR
到这里三笔账都齐了。一个完整的流动性调整 VaR 把它们叠在一起:价格变动部分用标准 VaR,价差部分用半价差成本,规模部分用市场冲击成本(比例型场景用 Almgren-Chriss,次线性场景用 Bouchaud),再选一个平仓期 把时间维度定下来。常见的写法是
其中 是平仓期 内价格变动的标准 VaR,市场冲击项计为正成本。 取让市场冲击低于阈值(比如买卖价差的 50%)的最小值,同时权衡持有期拉长带来的价格变动 VaR 增长。
也可以不拍脑袋,直接从最优化里解出来。Almgren & Chriss (2000) 在均值-方差框架下,用风险厌恶参数 权衡冲击成本和持有期内的价格风险,得到的最优平仓时间尺度是
其中 是临时冲击系数。永久冲击 不出现在这个公式里,因为线性永久冲击的总成本与执行节奏无关,对”该快还是该慢”没有投票权。总期望成本由两部分组成:一块是不管怎么执行都要付的冲击成本,另一块是风险厌恶加权的价格变动风险, 就是这两块的平衡点。(高风险厌恶)时 ,付出任何冲击代价也要立刻脱身; 时 ,慢慢磨。注意这是 Almgren-Chriss 线性冲击区的结论,不是平方根区的。做风险管理(而不是做执行)时,通常取比执行更高的 ,对应更短的 。
代码上,一个简化版 L-VaR 长这样:
import numpy as np
# 简化版 L-VaR 计算
def l_var(price_var, position_size, spread, daily_vol,
adv, eta=0.1):
"""
price_var: 标准 VaR,美元
position_size: 美元仓位
spread: 买卖价差,十进制(比如 0.001 = 10 bps)
daily_vol: 仓位日波动率,十进制
adv: 日均成交量(美元)
eta: 市场冲击系数
"""
half_spread = position_size * spread / 2
market_impact = eta * daily_vol * np.sqrt(position_size / adv) * position_size
# 注:冲击作为仓位的比例 ~ eta * daily_vol * sqrt(Q/ADV)
# 美元总冲击 = position_size * eta * daily_vol * sqrt(Q/ADV)
return price_var + half_spread + market_impact
# 例子
print("Equity (liquid):", l_var(30_000, 1_000_000, 0.0005, 0.02, 50_000_000))
print("Equity (small-cap):", l_var(30_000, 1_000_000, 0.005, 0.03, 5_000_000))
print("Corp Bond (illiquid):", l_var(50_000, 1_000_000, 0.01, 0.02, 500_000))
跑出来的数字自己会说话。流动股票:半价差 $250 加冲击约 $283,合计不到 VaR 的 2%,L-VaR 约 $30,533,跟标准 VaR 几乎没区别。小盘股:半价差 $2,500 加冲击约 $1,342,合计约 $3,800,是 VaR 的 13% 左右。非流动债券($50 万 ADV):半价差 $5,000 加冲击约 $2,828,合计约 $7,800,约是 VaR 的 16%——而这还是 100 万的仓位;按上一节的算法把仓位放大到 500 万,光冲击一项就跟 VaR 本身相当了。
ES 的版本
同样的三段加法可以搬到期望损失上:
但加法形式是近似——严格说三个成分并不独立,真正的危机里三者一起飙。更保守的做法是乘性修正:
其中流动性溢价按历史压力事件校准。2008 年信用市场的流动性溢价达到过 30–100%;把 ES 直接乘 2,往往比加个半价差更接近压力下的真相。
持有期 怎么选
前面几处都出现了 ,它的选择本身是一个政策决定,不是数学定理。实务上有三条路。
最省事的是让 等于标准 VaR 的持有期:日 VaR 就设 ,假设一天能清完。这个假设给仓位规模画了一条隐含的线——一天日均成交量。仓位超过 1 天 ADV,一天清仓必然砸出可观冲击,这条路就不通了,得拉长持有期。
第二条路是反过来,从价格风险的增长找 :1 周(5 天)VaR 在 iid 假设下约是日 VaR 的 倍,有自相关时更大;1 月 VaR 大得多。取让价格变动 VaR 与实际平仓成本相称的那个持有期。
第三条路就是上面推过的最优平仓期 :风险厌恶或波动率越高, 越短;反之越长。大多数银行和资产管理人走这条路,配一个适中的 ,校准到既不落进”太快、冲击主导”也不落进”太慢、价格变动主导”的两个极端。
输入从哪里来
L-VaR 的每个输入都是市场微观结构数据,来源各不相同。买卖价差:上市品种看交易所数据流,OTC 品种看交易商报价;公司债有 FINRA TRACE 的事后成交数据,事前价差可以从交易商报价推断。日均成交量:上市品种看交易所数据,OTC 债券可以用 DTCC 的成交汇总。日波动率:从历史价格序列来,常用 60 或 120 天滚动估计。冲击系数 :从执行成本研究校准,不少 broker-dealer 会公开自己的估计。
真正的麻烦是没有近期成交的非流动品种——价差和成交量都无从谈起。这时候保守做法是取合理范围内最大的价差和最小的成交量,算一个最坏情况的流动性成本。宁可数字难看,不要数字缺席。
压力之下,这些输入全会变
以上整套计算有一个共同的软肋:价差、成交量、冲击系数全是从历史数据估的,而流动性恰恰在你最需要它的时候消失。三个经典案例都是同一个剧本。
1998 年的 LTCM 持有大量非流动品种。俄罗斯危机期间,抵押贷款支持证券的买卖价差从 25 bps 涨到 200 bps 以上——单价差一项就是 8 倍。按平静期价差算的 VaR,对这些头寸错得离谱。2008 年信用危机里,现金投资级债券的价差从 2007 年初的 50–100 bps 走到 2008 年末的 200–500 bps,而很多 VaR 模型还假设 50 bps;用时变价差估计的流动性调整 VaR 明显表现更好。闪崩(2010、2015 等)期间,多只标的的市场冲击可以是正常水平的 5–10 倍,基于长期历史校准的模型完全接不住这种尖峰。
教训只有一条:流动性成本是时变的,而且变化方向在压力下几乎总是对你不利。把价差当常数的模型在尾部系统性出错——恰好尾部才是 VaR 存在的意义。
所以稳健的做法是给流动性本身做压力:价差翻倍或翻三倍(L-VaR 随之线性放大);成交量跌到正常的 10–25%(冲击按 反向放大);再叠加同时压力——价差 3 倍、成交量 1/4、价格变动 VaR 从 99% 提到 99.9%,组合效果可以是平静期 L-VaR 的 5–10 倍。大多数银行有类似 stressed VaR 的”stressed L-VaR”要求:在历史最差的价差和成交量下重算一遍。
如果你跑 L-VaR,用压力输入跑。如果你只跑标准 VaR,至少要知道:你的数字假设了一个无摩擦的市场,而那个市场不存在。
参考文献
Almgren, R., & Chriss, N. (2000). Optimal execution of portfolio transactions. Journal of Risk, 3(2), 5-39.
Bangia, A., Diebold, F. X., Schuermann, T., & Viswanath, P. L. (1999). Modeling liquidity risk, with implications for traditional market risk measurement and management. Working paper, Wharton.
Bouchaud, J.-P., Bonart, J., Donier, J., & Gould, M. (2018). Trades, Quotes and Prices: Financial Markets Under the Microscope. Cambridge University Press.
Gârleanu, N., & Pedersen, L. H. (2013). Dynamic trading with predictable returns and transaction costs. Journal of Finance, 68(6), 2309-2340.
McNeil, A. J., Frey, R., & Embrechts, P. (2005). Quantitative Risk Management. Princeton University Press.
Pastor, L., & Stambaugh, R. F. (2003). Liquidity risk and expected stock returns. Journal of Political Economy, 111(3), 642-685.