python分位数回归模型_如何理解分位数回归风险价值 (VaR) 模型?

本文介绍了风险价值(VaR)的历史模拟法计算方法及其几种变形,包括简单历史模拟法、时间加权历史模拟法、波动率加权历史模拟法和自助法。这些方法在金融风险管理中具有重要作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

风险价值(下称VaR)的计算方法主要有历史模拟法(非参数法)、分析方法、蒙特-卡罗模拟法三类。不同的计算方法、计算参数下所得的VaR都是不同的。若某机构宣称其产品的VaR较低即投资风险较低,投资者还需在投前明确其计算方法和参数以辨真伪。历史模拟法来在收益率分布尾部较厚时比传统参数法更为可靠。下面介绍几个历史模拟法的变形。

简单历史模拟法:

历史模拟法的基本思想是用给定历史时间段上所观测到的市场因子的变化来表示市场因子的未来变化;在估计市场因子模型时,采用全值估计方法,也就是根据市场因子的未来价格水平对头寸进行重新估值,计算出头寸的价值变化(损益);最后,将投资组合的损益从小到大排序,得到损益分布,通过给定置信度下的分位数求出VaR。

简单历史模拟法是将目前投资组合的价格按历史时间段的收益率重新抽样,计算组合的损失以及VaR。计算1-day VaR可抽取历史日收益率,计算10-day VaR可以抽取历史十日收益率。

假设vi表示第i天的市场因子(历史净值序列),今天是第n天,根据历史模拟法,明天的市场因子的第i个抽样样本为:

其中,

是历史收益率序列。

假设今天指数为8000点(v0),根据某段历史日收益率,模拟明天500种可能点位(v1,i)的场景,列示在表中。

再将模拟指数从小到大排序,通过置信度下的分位数即可求出VaR。

这样的简单历史模拟法有利有弊,优点是:

1.

简单易用;

2.

非参数法,免去分布假设与参数估计;

3.

适用于压力测试;

4.

间接隐含成分资产之间的相关关系。

缺点则是:

1.

如果发生成分结构改变,那么历史不会重演;

2.

时间序列的效果被忽略了;

3.

只模拟一次,这点可以用多次历史模拟(自助法/拔靴法)来改善。

举例:

假设投资一千万美元在四种跨国指数上,投资金额如下表。用简单历史模拟法计算1-day 99% VaR,模拟期为500天。

假设今天是2008-09-25,将过去500天,三个历史指数转换为美元单位(忽略汇率风险)。

这里简介隐含了四个资产变动的相关性。接着模拟500个四种指数水平的明日场景。

那么在一亿美元金额下投资组合的损失为

将损失从大排到小,数第5个(1%),或从小到大排取第496个

也可以画出简单历史模拟法的损失分布图,视觉上更为直观。

改良历史模拟法:

1.时间加权

在上述历史模拟法中,每笔历史数据是等权重的,我们可以采用动态建模方式,对基金(投资组合)过去的业绩进行衰减加权,那么在预测未来上面会逐渐弱化历史久远的业绩表现,从而更具前瞻性。其余操作沿用简单历史模拟法。

假设有n笔历史数据,每笔数据的权重,按λ比率递减,且权重和归一,每笔数据权重w(i)为:

其中:

时间加权历史模拟法有以下两个性质:

1) 权重归一

2)若λ = 1则回到简单历史模拟法,即

沿用前例数据,假设λ = 0.995,最近500天数据权重以指数方式递减(等权重下都为1/500),则

1-day 99% VaR的值为$282,204比简单历史模拟法的$253,385值要大一些。

2.波动率加权

因为波动率有时间序列的效果,我们也可以将最新的波动率数据加入历史模拟法,提高VaR的估计效率。

简单历史模拟法:

波动率改良历史模拟法:

指的是将收益率标准化后,再放大σn+1倍。其中σn+1是对下期(明天)波动率的预期,可以由GARCH或EWMA(指数加权移动平均)法求得。剩余步骤同简单历史模拟法。Hull&White(1998)论文实证结果显示,波动率改良历史模拟法比起简单历史模拟法,估计的VaR值更加准确。

同样沿用前例数据可得

1-day 99% VaR的值为$602,968比简单历史模拟法的$253,385值要高出1.4倍。

3.自助法(拔靴法)

此法利用放回式抽样,重复抽取历史资料,产生VaR与其抽样分布。同样假设考虑500日历史收益率,生成1000组500个改变量,也就是说计算500,000个值,从而在给定置信度下计算出1000个VaR值,其实这个办法是简单历史模拟法的多次重复,以提高其精确度,也是私募云通CHFDB数据库采用的VaR指标计算方法。

### 分位数因子向量自回归模型概述 分位数因子向量自回归(Quantile Factor Vector Autoregression, QFVAR模型是一种高级统计工具,在经济学、金融学以及其他社会科学领域广泛应用。该模型融合了传统向量自回归(Vector Autoregression, VAR)[^1] 和分位数回归(Quantile Regression) 的特点,允许研究者不仅关注均值动态关系,还能深入探讨不同分布位置下的条件异质性影响。 #### 模型结构与特性 QFVAR 结合了多个维度来捕捉复杂的时间序列特征: - **多变量框架**:如同标准的VAR一样处理多个相互关联的过程; - **因素分解**:引入潜在共同驱动因素(factor),这些因素可能代表宏观经济状况或其他广泛的影响源; - **分位数视角**:超越传统的期望值估计,提供对整个响应分布更全面的理解; 这种组合使得QFVAR特别适合于识别极端事件期间的风险传导机制以及评估政策冲击在整个市场中的传播路径[^2]。 #### 应用场景举例 假设存在一组国家层面的经济指标构成时间序列集合{GDP增长率, CPI通胀率},通过构建QFVAR可以实现如下目标: - 探讨货币政策调整如何沿着不同的通货膨胀水平传递给实际产出变化; - 测算金融危机爆发前后各经济体间联系强度的变化模式; ```python import numpy as np from statsmodels.tsa.api import VAR from quantregression import QuantReg # Hypothetical module for demonstration purposes def qfvar(data_matrix, factors=None, lags=1, tau=[0.5]): """ A simplified function to demonstrate the concept of a Quantile Factor Vector Autoregression. Parameters: data_matrix : array-like The multivariate time series dataset. factors : list or None List of common factors affecting all variables in `data_matrix`. lags : int Number of lagged terms included in each equation within the system. tau : float or iterable Desired quantiles at which regressions are performed. Returns: results : dict Dictionary containing fitted models per variable and quantile combination. """ n_vars = data_matrix.shape[1] result_dict = {} if isinstance(tau, (int, float)): taus_to_fit = [tau] else: taus_to_fit = tau for var_idx in range(n_vars): endog_var = data_matrix[:, var_idx] exog_vars = [] # Add own past values up until specified number of lags for i in range(1, lags + 1): shifted_series = np.roll(endog_var, shift=i) exog_vars.append(shifted_series) # Include other contemporaneous variables plus their respective histories for col in range(n_vars): if col != var_idx: current_col_data = data_matrix[:, col] for j in range(lags + 1): # Including zero-lag term here shifted_other_series = np.roll(current_col_data, shift=j) exog_vars.append(shifted_other_series) # Optionally add external factors influencing all equations equally if factors is not None: exog_vars.extend(factors) X = np.column_stack(exog_vars) for t in taus_to_fit: qr_model = QuantReg(endog=endog_var, exog=X).fit(q=t) key_name = f'Variable_{var_idx}_at_quantile_{t}' result_dict[key_name] = qr_model return result_dict ``` 此代码片段展示了创建一个简化版QFVAR函数的方法,它接受多元时间序列矩阵和其他输入参数,并返回每种情况对应的拟合结果字典。请注意这只是一个概念性的展示,具体实施细节会依据所使用的库和个人需求有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值