风险模型: VaR在险价值法


免责声明:本文由作者参考相关资料,并结合自身实践和思考独立完成,对全文内容的准确性、完整性或可靠性不作任何保证。同时,文中提及的数据仅作为举例使用,不构成推荐;文中所有观点均不构成任何投资建议。请读者仔细阅读本声明,若读者阅读此文章,默认知晓此声明。

1. 源代码

  复现三种常见VaR测算方法。

import numpy as np
from scipy.stats import norm
import akshare as ak
import pandas as pd


class VaR_model(object):
    @staticmethod
    def get_history_data(code, st, et):
        '''
        获取股票对应的历史收益率数据
        ----------
        code:str,股票代码,例如'000001'
        st:str,开始日期,例如'20230301'
        et:str,结束日期,例如'20231031'
        '''
        stock_data = ak.stock_zh_a_hist(symbol=code, period="daily", start_date=st,
                                        end_date=et, adjust="qfq")
        return stock_data['涨跌幅'] / 100

    def __init__(self, data, T, confidence=None):
        '''
        data: 历史收益率数据
        confidence: 置信度
        T:int,测算周期,例如10

        '''
        self.data = data
        self.c = confidence or 0.9
        self.T = np.sqrt(T)
        self._time = 200  # 蒙特卡洛模拟次数
        self.r = 0.02  # 无风险利率


    def get_simulate_data(self):
        # 获取蒙特卡洛模拟的数据
        num = len(self.data)  # 确认蒙特卡洛的路径数量
        vol = np.std(self.data) * np.sqrt(self._time)  # 计算年化波动率
        s_path = np.zeros((num + 1, self._time))
        r = self.r
        s_path[0] = 1
        Tt = 1 / num
        for i in range(1, num + 1):
            N = np.random.standard_normal(self._time)  # 标准正态分布随机数
            ST = s_path[i - 1] * np.exp((r - 0.5 * vol ** 2) * Tt + vol * np.sqrt(Tt) * N)
            # 进行涨跌停的限制
            max_st = s_path[i - 1] * 1.1
            min_st = s_path[i - 1] * 0.9
            new_st = np.where(ST < min_st, min_st, ST)
            new_st = np.where(ST > max_st, max_st, new_st)
            s_path[i] = new_st
        return s_path

    def History_model(self):
        # 历史数据计算VaR的值
        new_confidence = (1 - self.c) * 100  # 置信度转分位值
        return np.percentile(self.data, new_confidence) * self.T

    def Covariance_model(self):
        # 参数法计算VaR的值
        mean = self.data.mean()  # 计算均值
        std = self.data.std()  # 计算标准差
        Z = norm.ppf(1 - self.c)  # 给定概率下的正态分布值
        Var = Z * std - mean
        return Var * self.T

    def Monte_Carlo_model(self):
        # 蒙特卡洛模拟计算VaR的值
        var_list = []
        simulate_data = VaR_model.get_simulate_data(self)
        for x in range(simulate_data.shape[1]):
            re_data = pd.Series(simulate_data[:, x]).pct_change()[1::]  # 收益率序列
            new_confidence = (1 - self.c) * 100  # 置信度转分位值
            Var = np.percentile(re_data, new_confidence)
            var_list.append(Var)
        return np.mean(var_list) * self.T


if __name__ == '__main__':
    # 传入参数
    code = '600519'
    st, et = '20210101', '20211231'
    T = 10
    # 获取数据
    data = VaR_model.get_history_data(code, st, et)
    # 拟合模型
    model = VaR_model(data, T, confidence=0.95)
    # 输出相应的结果
    hm = model.History_model()
    cm = model.Covariance_model()
    mm = model.Monte_Carlo_model()
    print('历史模拟法', hm)
    print('参数法法', cm)
    print('蒙卡模拟法', mm)

2. 方法介绍

   VaR(Value at Risk)按字面解释就是“在险价值”,其含义指:在市场正常波动下,某一金融资产或证券组合的最大可能损失。更为确切的是指,在一定概率水平(置信度)下,某一金融资产或证券组合价值在未来特定时期内的最大可能损失。

   VaR的测算方法主要是历史模拟法,参数法,蒙特卡洛模拟法,其中参数是最为常用的方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了避免基于大规模商业依赖于当前形式的固有模型风险、尾部风险和系统性风险的量化模型而即将发生的全球网络金融保危机,本博士后论文做出了以下主要贡献: Cyber​​-Finance-Trust:trade_mark: 网络保建模框架; 为网络保建模开发第一个已知的模型风险管理框架; 对重大和极端模型风险、尾部风险和系统性风险进行首次已知分析; 开发用于包含模型风险VaR 和贝叶斯推理的多方实证研究; 分析马尔可夫链蒙特卡罗以启用贝叶斯推理以最小化模型风险; 开发网络保组合框架,以尽量减少模型风险、尾部风险、系统性风险; 为超越模型风险管理的奈特不确定性管理开发框架。 受 NAIC 邀请提交的论文的更新、修订、摘要版本: 全国保专员协会 (NAIC) 专家论文:全国保专员协会 (NAIC) 是美国的标准制定和监管支持组织,由以下机构创建和管理来自 50 个州、哥伦比亚特区和五个美国领土的主要保监管机构。 受 NAIC 邀请提交的论文的更新、修订、摘要版本:全国保专员协会专家论文:Malhotra, Yogesh,Advancing Cyber​​ Risk Insurance Underwriting Model Risk Management Beyond VaR to Pre-Empt and Prevent the Forthcoming Global Cyber​​ Insurance Crisis (2017 年 6 月 24 日)。 可在 SSRN 获得:https://ssrn.com/abstract=3081492。 2017 年 6 月 24 日应美国全国保监督管理委员会要求编写并提交的专家论文。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值