原文链接:http://tecdat.cn/?p=17758 

原文出处:拓端数据部落公众号

什么是危险价值(VaR)?

危险价值(VaR)用于尝试量化指定工夫范畴内公司或投资组合中的财务危险程度。VaR提供了一段时间内投资组合的最大损失的预计,您能够在各种置信度程度上进行计算。

视频:危险价值VaR原理与Python蒙特卡罗Monte Carlo模拟计算投资组合实例

危险价值VaR原理与Python蒙特卡罗Monte Carlo模拟计算投资组合实例

,时长10:03

预计投资组合的危险对于长期资本增长和风险管理十分重要,尤其是在大型公司或机构外部。VaR通常按以下格局构架:

  • “咱们下个月的投资组合VaR为250,000元 ,置信度为95%”

  • 这意味着,以95%的置信度,咱们能够说投资组合的损失在一个月内不会超过250,000元

在这篇文章中,我将疏导您实现在股票投资组合中计算该指标的步骤。

VaR如何计算?

有两种次要办法来计算VaR:

  1. 应用蒙特卡洛模仿

  2. 应用方差-协方差办法

在本文中,咱们将重点介绍应用办法(2)(方差-协方差)。简而言之,方差-协方差办法着眼于给定回溯期内给定股票或股票投资组合的历史价格走势(标准差,平均价格),而后应用概率实践来计算指定置信区间内的最大损失。咱们将在上面应用Python逐渐进行计算。

在开始之前,请留神,规范VaR计算假设以下条件:

  • 收益的正态分布 -VaR假如投资组合的收益是正态分布。对于大多数资产而言,这当然是不事实的,但容许咱们应用更为简略的计算来制订基准。

  • (能够对VaR进行批改来阐明不同的散布,然而这里咱们将重点介绍规范VaR计算)

  • 规范市场条件 -与许多金融工具一样,VaR最适宜用于思考规范市场中的损失,并且不适用于极其/异样事件。

计算投资组合的VaR的步骤

为了计算投资组合的VaR,您能够依照以下步骤操作:

  1. 计算投资组合中股票的定期收益

  2. 依据收益创立协方差矩阵

  3. 计算投资组合均值和标准差

  • (依据投资组合中每只股票的投资程度加权)

  1. 用指定的置信区间,标准差和均值计算正态累积散布(PPF)的反函数

  2. 通过从步骤(4)的计算中减去初始投资,估算投资组合的危险价值(VaR)

1)计算投资组合中股票的定期收益

# 创立咱们的股票投资组合tickers = \['AAPL','FB', 'C', 'DIS'\]#设置投资权重weights = np.array(\[.25, .3, .15, .3\])# 设定初始投资程度initial_investment = 1000000# 下载收盘价data = pdr.get\_data\_yahoo(tickers, start="2018-01-01", end=dt.date.today())\['Close'\]#从收盘价计算定期收益returns = data.pct_change()returns.tail()

2)依据收益建设协方差矩阵

# 生成Var-Cov矩阵cov_matrix = returns.cov()cov_matrix

这将使咱们可能计算整个投资组合的标准差和收益平均值。

3)计算投资组合的平均值和标准差

# 计算每只股票的均匀收益returns.mean()# 计算整个投资组合的均匀回报,# 对投资权重进行归一化avg_rets.dot(weights)# 计算投资组合标准差 np.sqrt(weights.T.dot(cov_matri# 计算投资平均值 (1+port\_mean) * initial\_investment# 计算投资标准差 initial\_investment * port\_st

接下来,咱们能够将这些变量插入上面的百分比函数(PPF)中。

4)计算具备指定置信区间,标准偏差和均值的正态累积散布(PPF)的逆

# 抉择咱们的置信区间(我将在此处抉择95%)conf_level1 = 0.05#逆累积散布函数为正态分布#插入咱们投资组合的均值,标准差cutoff1 = norm.ppf(conf\_level1, mean\_investment, stdev_investment)

5)通过从步骤4的计算中减去初始投资,估算投资组合的危险价值(VaR)

#最初,咱们能够在置信区间内计算VaRvar_1d1#output#22347.7792230231

在这里,咱们有95%的信念说,咱们的100万投资组合在一天之内不会超过损失超过2.23万元的损失。

n天时间段内的危险价值

如果咱们想在更大的工夫范畴内计算该怎么办?只需获取1天的VaR并将其乘以 时间段的平方根即可 (这是因为股票收益的标准偏差往往随工夫的平方根而减少)。

# 计算n天VaRvar_array = \[\]var\_array.append(np.round(var\_1d1 * np.sqrt(x),2))# 绘制图形plt.title("Max portfolio loss (VaR) over 15-day period")
1 day VaR @ 95% confidence: 10635.312 day VaR @ 95% confidence: 13534.26...14 day VaR @ 95% confidence: 73456.5115 day VaR @ 95% confidence: 83564.53

对照正态分布查看咱们的股票散布

如计算局部所述,咱们假如在计算VaR时,咱们投资组合中股票的收益呈正态分布。

当然,咱们无奈预测这种状况,但咱们至多能够查看历史收益如何调配,以帮忙咱们评估VaR是否适宜用于咱们的投资组合。

plt.plot(x, scipy.stats.norm.pdf(x, port\_mean, port\_stdev), "r")plt.show()

收益与正态分布比拟

从下面咱们能够看到,自2018年以来,咱们抉择的股票的收益都曾经合乎正态分布。


最受欢迎的见解

1.R语言基于ARMA-GARCH-VaR模型拟合和预测实证钻研

2.R语言时变参数VAR随机模型

3.R语言时变参数VAR随机模型

4.R语言基于ARMA-GARCH过程的VAR拟合和预测

5.GARCH(1,1),MA以及历史模拟法的VaR比拟

6.R语言时变参数VAR随机模型

7.R语言实现向量主动回归VAR模型

8.R语言随机搜寻变量抉择SSVS预计贝叶斯向量自回归(BVAR)模型

9.R语言VAR模型的不同类型的脉冲响应剖析