暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python计算股票投资组合的风险价值(VaR)

拓端数据部落 2022-07-12
1398

原文链接: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天VaR

var_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年以来,我们选择的股票的收益都已经符合正态分布。



点击文末“阅读原文”

获取全文完整资料


本文选自《Python计算股票投资组合的风险价值(VaR)》。


点击标题查阅往期内容

R语言VaR市场风险计算方法与回测、用LOGIT逻辑回归、PROBIT模型信用风险与分类模型
R语言对S&P500股票指数进行ARIMA + GARCH交易策略
R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化
ARMA-GARCH-COPULA模型和金融时间序列案例
时间序列分析:ARIMA GARCH模型分析股票价格数据
GJR-GARCH和GARCH波动率预测普尔指数时间序列和Mincer Zarnowitz回归、DM检验、JB检验
【视频】时间序列分析:ARIMA-ARCH GARCH模型分析股票价格
时间序列GARCH模型分析股市波动率
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析
Garch波动率预测的区制转移交易策略
金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
时间序列分析模型:ARIMA-ARCH GARCH模型分析股票价格
R语言风险价值:ARIMA,GARCH,Delta-normal法滚动估计VaR(Value at Risk)和回测分析股票数据
R语言GARCH建模常用软件包比较、拟合标准普尔SP 500指数波动率时间序列和预测可视化
Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
MATLAB用GARCH模型对股票市场收益率时间序列波动的拟合与预测
R语言GARCH-DCC模型和DCC(MVT)建模估计
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
R语言时间序列GARCH模型分析股市波动率
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略
R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析
R语言多元Copula GARCH 模型时间序列预测
R语言使用多元AR-GARCH模型衡量市场风险
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言用Garch模型和回归模型对股票价格分析
GARCH(1,1),MA以及历史模拟法的VaR比较
matlab估计arma garch 条件均值和方差模型
R语言POT超阈值模型和极值理论EVT分析



文章转载自拓端数据部落,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论