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

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

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


什么是风险价值(VaR)?


风险价值 (VaR) 是一种统计数据,用于量化公司、投资组合在特定时间范围内可能发生的财务损失程度。该指标最常被投资银行和商业银行用来确定其机构投资组合中潜在损失的程度和概率。


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


风险管理人员使用 VaR 来衡量和控制风险暴露水平。人们可以将 VaR 计算应用于特定或整个投资组合,或使用它们来衡量公司范围内的风险敞口。

关键要点

  • 风险价值 (VaR) 是一种量化公司或投资潜在损失风险的方法。
  • 该度量可以通过多种方式计算,包括历史、方差-协方差和蒙特卡洛方法。
  • 尽管 VaR 作为一种风险度量在行业中很受欢迎,但它也存在不足之处。

 

了解风险价值 (VaR)


VaR 模型确定了被评估实体的潜在损失以及发生定义损失的概率。一种方法是通过评估潜在损失的数量、损失数量的发生概率和时间范围来衡量 VaR。

例如,一家金融公司可能会确定一项资产的 3% 的 1 个月 VaR 为 2%,这表示资产在 1 个月的时间范围内价值下降 2% 的可能性为 3%。将 3% 的发生几率转换为每日比率后,每月 1 天发生 2% 的损失几率。


 

风险价值方法论


计算 VaR 的方法主要有 3 种。

第一种是历史方法,它着眼于一个人之前的收益历史。

第二种是方差-协方差法。这种方法假设收益和损失是正态分布的。

最后一种方法是进行蒙特卡罗模拟。该技术使用计算模型来模拟数百或数千次可能迭代的期望收益。


历史方法


历史方法只是重新组织实际的历史收益,将它们从最差到最好的顺序排列。然后从风险的角度假设历史会重演。

作为一个历史例子,让我们看一下纳斯达克 100 ETF。如果我们计算每天的收益,我们会产生丰富的数据设置超过 1,400 点。让我们将它们放在一个直方图中。例如,在直方图的最高点(最高柱),有超过 250 天的日收益率在 0% 到 1% 之间。在最右边,你几乎看不到一个 10% 的小条;它代表了 5 年多内的一天(2000 年 1 月),每日收益率达到了惊人的 9.4%。4

请注意构成直方图“左尾”的红色条。这些是每日收益率最低的 5%(因为收益率是从左到右排序的,所以最差的总是“左尾”)。红条从每日损失 4% 到 8% 不等。因为这些是所有每日收益中最差的 5%,我们可以有 95% 的信心说,最差的每日损失不会超过 4%。换句话说,我们有 95% 的信心预计我们的收益将超过 -4%。简而言之,这就是 VaR。

 


方差-协方差法,也称为参数法


该方法假设股票收益是正态分布的。换句话说,它只要求我们估计两个因素——期望(或平均)收益和标准差——这使我们能够绘制正态分布曲线。在这里,我们根据相同的实际收益数据 绘制正态曲线:

方差-协方差背后的思想类似于历史方法背后的思想——除了我们使用熟悉的曲线而不是实际数据。正态曲线的优点是我们可以自动知道最差的 5% 和 1% 在曲线上的位置。它们是我们期望的置信度和标准偏差的函数。

信心

# 标准偏差 (σ)

95%(高)

- 1.65 x σ

99%(非常高)

- 2.33 x σ

上面的蓝色曲线是实际每日标准差,即2.64%。平均每日收益恰好接近于零,因此为了说明目的,我们将假设平均收益为零。以下是将实际标准差代入上述公式的结果:

信心

 σ

计算

等于

95%(高)

- 1.65 x σ

- 1.65 x (2.64%) =

-4.36%

99%(非常高)

- 2.33 x σ

- 2.33 x (2.64%) =

-6.15%

我们有95%的信心说,最差的每日损失不会超过-4.36%


蒙特卡洛模拟


第三种方法涉及为未来股票价格收益开发一个模型,并通过该模型运行多个假设试验。蒙特卡洛模拟是指任何随机生成试验的方法,但它本身并没有告诉我们任何有关基础方法的信息 。

对于大多数用户来说,蒙特卡洛模拟相当于一个随机、概率结果的“黑匣子”生成器。在不深入细节的情况下,我们根据其历史交易模式进行了蒙特卡罗模拟。在我们的模拟中,进行了 700 次试验。如果我们再次运行它,我们会得到不同的结果——尽管差异很可能会缩小。

总而言之,我们对月收益进行了 700 次假设试验。其中,5个结果在-5%和-7%之间;2个在 -7% 和 -9% 之间。这意味着最差的7个结果(即最差的 1%)低于 -5%。因此,蒙特卡罗模拟得出以下 VaR 类型的结论:在 99% 的置信度下,我们预计在任何给定月份的损失不会超过 5%。


风险价值 (VaR) 的优势


1. 易于理解

风险价值是一个数字,表示给定投资组合的风险程度。风险价值以价格单位或百分比来衡量。这使得 VaR 的解释和理解相对简单。

2. 适用性

风险价值适用于所有类型的资产——债券、股票、衍生品、货币等。因此,不同的银行和金融机构可以很容易地使用 VaR 来评估不同投资的盈利能力和风险,并根据 VaR 分配风险.

3.通用

风险价值数字被广泛使用,因此它是购买、出售或推荐资产的公认标准。

 

风险价值的限制


1. 大型投资组合

计算投资组合的风险价值不仅需要计算每种资产的风险和收益,还需要计算它们之间的相关性。因此,投资组合中资产的数量或多样性越大,计算 VaR 的难度就越大。

2.方法不同

计算 VaR 的不同方法可能导致相同投资组合的不同结果。

3. 假设

VaR 的计算需要做出一些假设并将其用作输入。如果假设无效,那么 VaR 数字也无效。

 


如何使用Python通过蒙特卡洛模拟自动计算风险值(VaR)来管理投资组合或股票的金融风险?

我们将首先通过导入所需的库和函数

#导入所有需要的库
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

为了我们项目的目的,我考虑了过去两年的 股票。

for i in range(len):  web.get_data(tickers\[i\] 
stocks.tail()

下一步,我们将计算每个资产的组合权重。可以通过实现最大夏普比率来计算资产权重。

#年化收益率
historical_return(stocks)
#投资组合的样本方差
sample_cov#夏普比率
EffFro(mu, Sigma, weight_bounds=(0,1)) #负数的权重界限允许做空股票
max_sharpe() #可以使用增加目标来确保单个股票的最小零权重

最大夏普比率的资产权重


资产权重将被用于计算投资组合的期望收益。

#VaR计算
rx2 = \[\]#换为最大夏普比率的资产权重
list(sharpe.values())

现在,我们将把投资组合的股票价格转换为累计收益,这也可以被视为本项目的持有期收益(HPR)。

tick  = (tick  +1).cumprod()

#画出所有股票的累积/HPR的图形
tick\[col\].plot()plt

点击标题查阅往期内容


风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计


01

02

03

04

现在,我们将挑选出每个资产的最新HPR,并使用.dot()函数将收益率与计算出的资产权重相乘。

sigma = pre.std()
price=price.dot(sh_wt) #计算加权值

在计算了投资组合的期望收益和波动率(期望收益的标准差)后,我们将设置并运行蒙特卡洛模拟。我使用的时间是1440(一天中的分钟数),模拟运行20,000次。时间步长可以根据要求改变。我使用了一个95%的置信区间。

for j in range(20000): #20000次模拟运行(rtn/Time,sigma/ sqrt(Time),Time)
plt(np.percentile(daily_returns,5)

1440分钟内一天的收益范围 | 红色 - 最小损失 | 黑色 - 最小收益

将收益率的分布图可视化,我们可以看到以下图表

plt.hist(returns)
plt.show()

输出上限和下限的准确值,并假设我们的投资组合价值为1000元,我们将计算出应该保留的资金数额弥补我们的最低损失。

print(percentile( returns,5),percentile( returns,95)) VaR - 在5%的概率下,最小损失为5.7%,同样,在5%的概率下,收益可以高于15%

每天的最低损失是1.29%,概率为5%。

所得金额将标志着每天弥补你的损失所需的金额。这个结果也可以解释为你的投资组合在5%的概率下将面临的最低损失。


总结


上面的方法显示了我们如何计算投资组合的风险价值(VaR)。对于使用现代投资组合理论(MPT)计算一定数量的投资组合,有助于巩固你对投资组合分析和优化的理解。最后,VaR与蒙特卡洛模拟模型配合使用,也可用于通过股价预测损失和收益。这可以通过将产生的每日收益值与各自股票的最终价格相乘来实现。

相关文章
|
1月前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
53 3
|
1月前
|
机器学习/深度学习 算法 数据挖掘
线性回归模型的原理、实现及应用,特别是在 Python 中的实践
本文深入探讨了线性回归模型的原理、实现及应用,特别是在 Python 中的实践。线性回归假设因变量与自变量间存在线性关系,通过建立线性方程预测未知数据。文章介绍了模型的基本原理、实现步骤、Python 常用库(如 Scikit-learn 和 Statsmodels)、参数解释、优缺点及扩展应用,强调了其在数据分析中的重要性和局限性。
62 3
|
15天前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
64 15
|
22天前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
47 18
|
12天前
|
缓存 数据安全/隐私保护 Python
python装饰器底层原理
Python装饰器是一个强大的工具,可以在不修改原始函数代码的情况下,动态地增加功能。理解装饰器的底层原理,包括函数是对象、闭包和高阶函数,可以帮助我们更好地使用和编写装饰器。无论是用于日志记录、权限验证还是缓存,装饰器都可以显著提高代码的可维护性和复用性。
27 5
|
25天前
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
26 7
|
25天前
|
缓存 开发者 Python
深入探索Python中的装饰器:原理、应用与最佳实践####
本文作为技术性深度解析文章,旨在揭开Python装饰器背后的神秘面纱,通过剖析其工作原理、多样化的应用场景及实践中的最佳策略,为中高级Python开发者提供一份详尽的指南。不同于常规摘要的概括性介绍,本文摘要将直接以一段精炼的代码示例开篇,随后简要阐述文章的核心价值与读者预期收获,引领读者快速进入装饰器的世界。 ```python # 示例:一个简单的日志记录装饰器 def log_decorator(func): def wrapper(*args, **kwargs): print(f"Calling {func.__name__} with args: {a
37 2
|
1月前
|
机器学习/深度学习 人工智能 算法
强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用
本文探讨了强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用,通过案例分析展示了其潜力,并讨论了面临的挑战及未来发展趋势。强化学习正为游戏AI带来新的可能性。
103 4
|
1月前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
23天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!