日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【FinE】在险价值(VaR)计算

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【FinE】在险价值(VaR)计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導航

  • VaR模型
  • 案例:AAPL
    • 歷史模擬法
    • 參數模型分析法
    • 非參數bootstrap
    • Monte-Carlo模擬計算
  • 參考資料

VaR模型

在險價值Value-at-risk的定義為,在一定時期Δt\Delta tΔt內,一定的置信水平1?α1-\alpha1?α下某種資產組合面臨的最大損失,公式為
P(Δp≤VaR)=1?αP(\Delta p\leq VaR)=1-\alpha P(ΔpVaR)=1?α
在持有組合時期Δt\Delta tΔt內,給定置信水平1?α1-\alpha1?α下,該組合的最大損失不會超過VaR,使用VaR進行風險衡量時,需要給定持有期和置信水平,巴塞爾協會規定持有期標準為10天,置信水平為99%,商業銀行可以確定各自的水平,J.P.Morgan公司在1994年年報中設置持有期為1天,置信水平為95%,VaR值為1500萬元,即J.P.Morgan公司在一天內所持有的風險頭寸損失小于1500萬的概率為95%.

VaR的主要性質:

  • 變換不變性:VaR(X+a)=VaR(X)+a,a∈RVaR(X+a)=VaR(X)+a, a\in\mathbb{R}VaR(X+a)=VaR(X)+a,aR
  • 正齊次性:VaR(aX)=aVaR(X),a<0VaR(aX)=aVaR(X), a<0VaR(aX)=aVaR(X),a<0,資產的風險與持有頭寸呈反比關系
  • 協單調可加性:VaR(X1+X2)=VaR(X1)+VaR(X2)VaR(X_1+X_2)=VaR(X_1)+VaR(X_2)VaR(X1?+X2?)=VaR(X1?)+VaR(X2?)
  • 不滿足次可加性和凸性:不滿足次可加性表示資產組合的風險不一定小于各資產風險之和,這個性質導致VaR測度存在不合理性,因為組合VaR不可以通過求各個資產的VaR得出。不滿足凸性表示以VaR為目標函數的規劃問題一般不是凸規劃,局部最優解不一定是全局最優解,由于多個局部極值的存在導致無法得到最優資產組合
  • 滿足一階隨機占優
  • VaR關于概率水平1?α1-\alpha1?α不是連續的

VaR對風險的衡量具有前瞻性,將預期損失的規模和發生的概率結合,可以了解在不同置信水平上風險的大小.
但是VaR模型是對正常市場環境中金融風險的衡量,如果整體環境出現了動蕩或者發生極端情況時,VaR就會失去參考價值,一般加上壓力測試(Stress Test)結合極值分析進行風險衡量,常用的極值分析方法有BMM和POT兩種,極值分析就是當風險規模超過設定閾值時進行建模,處理風險尾部.
由于金融數據的低信噪比特點,導致數據呈現尖峰后尾的分布,這種分布導致VaR模型無法產生一致性度量,針對風險度量的不一致性可以使用條件風險價值CVaR模型修正,即當資產組合損失超過給定的VaR值時,資產組合的損失期望,計算公式如下
CVaRα=E(?X∣?X≤VaRα(x))CVaR_\alpha=\mathbb{E}(-X\mid -X\leq VaR_\alpha(x)) CVaRα?=E(?X?XVaRα?(x))
其中XXX表示資產的損益,CVaR滿足以下性質:

  • 一致連續性
  • 次可加性,?X,Y\forall X, Y?X,Y滿足ρ(X+Y)≤ρ(X)+ρ(Y)\rho(X+Y)\leq \rho(X)+\rho(Y)ρ(X+Y)ρ(X)+ρ(Y)
  • 滿足二階隨機占優
  • 滿足單調性,?X≤Y\forall X\leq Y?XY滿足ρ(X)≤ρ(Y)\rho(X)\leq \rho(Y)ρ(X)ρ(Y)

案例:AAPL

歷史模擬法

歷史模擬法計算AAPL公司的VaR,歷史模擬法使用市場歷史因子的變化來估計市場因子未來的變化,對市場因子的估計采用權值估計方法,根據市場因子的未來價格水平對頭寸進行重新估值,計算出頭寸的價值變化,將組合損益從小到大排序,得到損益分布,通過計算給定置信度下的分位數求出VaR. 這里計算了置信水平分別為95%和99%的VaR.

歷史模擬法python代碼

import pandas_datareader.data as web import datetime as dt import pandas as pd import numpy as np from scipy.stats import norm import matplotlib.pyplot as pltstart=dt.datetime(2012, 1, 1) end=dt.datetime(2018, 12, 31) df=web.DataReader('AAPL', 'yahoo', start, end)# 對數收益率 df['return']=np.log(df['Adj Close']/df['Adj Close'].shift(1)) # 計算收益率的分位數 # 5%分位數 VaR5=np.percentile(df['return'].dropna(), 5) # 1%分位數 VaR1=np.percentile(df['return'].dropna(), 1)def hm_demo():grey = 0.75, 0.75, 0.75fig=plt.figure(figsize=(8, 6))plt.hist(df['return'], bins=50, alpha=0.5, color=grey)plt.plot([VaR5, VaR5], [0, 100], 'b:', linewidth=2, label='5% VaR')plt.plot([VaR1, VaR1], [0, 100], 'r:', linewidth=2, label='1% VaR')plt.xlim([-0.1, 0.1])plt.ylim([0, 250])plt.legend()# plt.savefig('hm_var.png')plt.show()hm_demo()

參數模型分析法

分析法利用證券組合的價值函數與市場因子之間的近似關系,推斷市場因子的統計分布,簡化VaR計算.
使用參數模型分析法需要進行數據預處理工作,在Matlab(R 2012a)中常用數據預處理函數如下

% 計算股票樣本的均值,標準差,相關性與beta % 價格轉收益率 tick_ret=tick2Ret(stockPrices, [], 'continuous') mu=mean(tick_ret) % 計算均值 std=std(tick_ret) % 計算標準差 mdd=maxdrawdown(tick_ret) % 計算最大回撤 coef=corrcoef(tick_ret) % 相關系數矩陣

tick2ret函數說明

[RetSeries, RetIntervals]=tick2ret(TickSeries, TickTimes, Method) INPUT TickSeries: 價格序列 TickTimes: 時間序列 Method: 計算方法,continuous表示對數收益率計算log(x)-log(y);simple表示簡單收益率計算(x-y)/y OUTPUT RetSeries: 收益率序列 RetIntervals: 收益率對應的時間間隔

maxdrawdown函數說明

T日組合最大回撤計算接口為 [MaxDD, MaxDDIndex]=maxdrawdown(Data, Format) INPUT Data: 組合每日總收益序列 Format: 類別有 return(默認,收益率序列),arithmetic(算術布朗運動),geometric(幾何布朗運動) OUTPUT MaxDD:最大回撤值 MaxDDIndex:最大回撤值位置

參數模型法計算VaR使用接口portvrisk,函數說明如下

ValueAtRisk=portvrisk(PortReturn, PortRisk, RiskThreshold, PortValue) INPUT PortReturn:組合收益率 PortRisk: 組合標準差 RiskThreshold:置信度閾值,默認為5% PortValue:組合資產價值,默認為1 OUTPUT ValueAtRisk:風險價值

參數模型法計算程序如下

pVar=portvrisk(mean(ret), std(ret), [0.01, 0.05], port_value); confidence=pVar/port_value

非參數bootstrap

對歷史數據進行有放回的采樣,計算每次采樣的VaR,然后對所有采樣結果求期望,設置采樣容量為300,進行200輪采樣的結果如下

python非參數bootstrap代碼

def bootstrap_demo():ret=df['return'].dropna()# 有放回采樣def sample(data, size):sample=np.random.choice(data, size, replace=True)VaR5=np.percentile(sample, 5)VaR1=np.percentile(sample, 1)return (VaR5, VaR1)sz, n=300, 200samples=np.array([sample(ret, sz) for _ in range(n)])VaR5, VaR1=np.mean(samples, axis=0)grey = 0.75, 0.75, 0.75fig=plt.figure(figsize=(8, 6))plt.hist(df['return'], bins=50, alpha=0.5, color=grey)plt.plot([VaR5, VaR5], [0, 100], 'b:', linewidth=2, label='5% VaR')plt.plot([VaR1, VaR1], [0, 100], 'r:', linewidth=2, label='1% VaR')plt.xlim([-0.1, 0.1])plt.ylim([0, 250])plt.legend()plt.savefig('bootstrap_var.png')plt.show()bootstrap_demo()

Monte-Carlo模擬計算

Monte-Carlo計算歐式期權價格可以見這篇博客.
Monte-Carlo模擬的基本步驟是:
1.選擇市場因子變化的隨機過程和分布,估計該過程的參數的相關參數.
2.模擬市場因子的變化路徑,建立對市場因為未來的預測
3.對市場因子每個情景,利用公式計算價值和變化
4.根據組合價值變化分布模擬結果,計算給定置信度下的VaR.
設置股票價格符合幾何布朗運動,即
St+1=Stexp?((μ?σ22)Δt+σεΔt)S_{t+1}=S_t\exp((\mu-\frac{\sigma^2}{2})\Delta t+\sigma\varepsilon\sqrt{\Delta t}) St+1?=St?exp((μ?2σ2?)Δt+σεΔt?)
其中μ\muμ為收益率均值,σ2\sigma^2σ2為收益率方差,ε\varepsilonε為從Gaussian分布中抽樣出的隨機值.
計算Δt=1\Delta t=1Δt=1日的VaR值

python蒙特卡洛模擬計算代碼

def monte_carlo_demo():ret = df['return'].dropna()mu, sig = np.mean(ret), np.std(ret)def gbm(s0, T, n):dt=T/nprice=s0for _ in range(n):eps=np.random.normal()s=price*np.exp((mu-sig**2/2)*dt+sig*eps*np.sqrt(dt))price=sreturn pricesp=[]s0=1for _ in range(10000):sp.append(gbm(s0, 1, 100))sret=np.array(sp)/s0-1VaR1=np.percentile(sret, 1)VaR5=np.percentile(sret, 5)print(VaR1, VaR5)grey = 0.75, 0.75, 0.75fig=plt.figure(figsize=(8, 6))plt.hist(df['return'], bins=50, alpha=0.5, color=grey)plt.plot([VaR5, VaR5], [0, 100], 'b:', linewidth=2, label='5% VaR')plt.plot([VaR1, VaR1], [0, 100], 'r:', linewidth=2, label='1% VaR')plt.xlim([-0.1, 0.1])plt.ylim([0, 250])plt.legend()plt.savefig('monte-carlo_var.png')plt.show()monte_carlo_demo()

kkk天的VaR可以根據公式
VaRk=VaR1?kVaR_k=VaR_1*\sqrt{k} VaRk?=VaR1??k?
計算,或者令程序中gbm參數T=k進行模擬計算.

參考資料

DCC-Garch VaR 量化小白H
Copula模型估計組合VaR 量化小白H
python金融實戰之計算VaR
Risk Analysis in Python
量化投資以Matlab為工具 中國工信出版集團 李洋 鄭志勇

總結

以上是生活随笔為你收集整理的【FinE】在险价值(VaR)计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。