楼主: 何人来此
1691 51

[量化金融] 衍生工具投资组合建模的高斯过程回归 [推广有奖]

31
何人来此 在职认证  发表于 2022-6-11 13:00:20
方法ConstantMean(),num tasks=237)39 s e l f。covar modu l e=gpy t orc h。k e r n e l s。M u l ti t as k k e r n e l(g pyt o rch.k e r n e l s c a l e k e r n e l l(40 gpy t orc h.k e r n e l s.MaternKernel(nu=2.5)),num tasks=2,rank=141)43 d e f for w a rd(s e l f,x):44 mean x=s e l f。平均模块(x)45 c o v a r x=s e l f。cov a r mo d ule(x)46 r e t u r n gpyto r ch。d i s t r i b u t i o n s。M u lt i t a s k M ul t i v a r i at e N o rm a l(平均x,c o v a r x)48 t e s t x=t o r c h。l i n s p a c e(0,1.0,t e s t in g n u mb e r)49 t e s t y 1=t o r c h。Float T en s or(c a l l(np.a r ay(T e s T x)))50 T e s T y 2=T o r c h。Float T en s or(put(np.ar ray(T e s T x)))51 T e s T y=T o r c h。s t a c k([t e s t y 1,t e s t y 2],-1) 53 l i k e l i h o d=gpy t orc h。我相信我会的。M u l t i t a s k a u s i a n l i k e l i h o d(num tasks=2)54 model=多任务GPmodel(t r a i n x,t r a i n y,l i k e l h o d)56 model。t r a i n()57 l i k l i h o d。t r a i n()59#使用adam o p t i m i z e r 60 o p t i m i z e r=t或c h。optim公司。Adam([61{“params”:model.pa rame te r s()},#I n c l u d e s G a u s ia n l ike l h o od param m ete rs62],l r=0.1)64#“l o s s”f r GPs---该m ar g in al log l i k e l i h o o d65 ml l=g pyt orch。是的。Ex a ct Ma rgi na lL og L i k el ih ood(L i k e L i h o d,型号)67 n i t e r=30068 f r i n r i n r(n i t e r):69 o p t i m i z e r。z e r o g r a d()70输出=型号(t r a i n x)71 l o s=-mll(输出,t r a i n y)72 l o s。向后()73 p r i n t(\'i t e r%d/%d---Lo s s:%。3 f l e n g t h s c a l e:%。3 f“%”(i+1,n i t e r,l o s.item(),模型。cov a r mo d ule。da t a c OVA r m od u l e。

32
大多数88 在职认证  发表于 2022-6-11 13:00:23
b a s e k e r n e l。k e r n e l s[0]。l n g t h s c a l e))75 o p t i m i z e r。s t e p()77#在s78型号上进行p r e d i c t。e v a l()79 l i k e l i h o d。e v a l()80,带至r c h。无gra d(),总成Y或ch。s e t t i n g s。f a s t p r e d v a r():81 y h at=l i k e l h o d(模型(t s t x))#方程1582下限,上限=y h at。c o n f i d e n c e r e g i o n()#方程1684#f i t t e d par a满足ers85 B=模型。cov a r m o模块。t a s k c o v a r mo d ule。c o v a r f a c t o r。c l o n e()。detac h()86 v=型号。cov a r mo d ule。ta s k c o va r mo d ul e。风险值。c l o n e()。检测a ch()87Ω=np。r(B,B)+np。di a g(v)88 l e n g t h s c a l e=模型。cov a r m o模块。da t a c ov ar m od ul e。b a s e k e r n e l。k e r n e l s[0]。l e n g t h s c a l eListing 3:这段Python 3.0代码摘录使用了GPyTorch,说明了如何训练MC GPP来预测包含看涨期权和看跌期权(定价低于black-Scholes)的玩具投资组合的价值。我们对SGD使用Adam更新规则。请注意,清单仅提供了显著的细节,读者应参考示例1-MGP-BS-Pricing。ipynb inGithub的全面实施。5 CVA计算在本节中,作为投资组合风险应用程序的一个示例,我们考虑对客户投资组合的对手信用风险的估计。与交易对手违约相关的银行预期损失由(单边,见Albanese et al.(2019,第4.3节))CVA给出。

33
nandehutu2022 在职认证  发表于 2022-6-11 13:00:26
根据定价措施和相关贴现过程β,对客户违约引发的损失进行贴现预期,我们得出(为简单起见,假设无共同因素)CVA=(1- R) EZTβtπ+tΔτ(dt),(22),其中Δτ是客户违约时间τ的Dirac度量,R是客户恢复率。假设τ具有随机强度过程γ,且市场过滤和过滤之间的基本浸入设置随τ逐渐增大(见Albaneseand Cr'epey(2019,第8.1节)),我们得到CVA=(1- R) EZTβtπ+te-Rtγsdsγtdt。(23)在马尔可夫规范下,π是时间和适当风险因子Xt的确定函数,即πt=π(t,Xt);同样,对于强度模型,γt=γ(t,Xt)。π和γ的共同因素允许对错误方向的风险进行建模,即客户违约风险与相应的市场风险之间存在不利依赖关系的风险。在特殊情况下,如果违约与以数字单位表示的投资组合价值无关,则表达式(22)简单为toCVA=(1- R) ZTE[βtπ+t]p(t)dt,(24),其中p(t)是τ的概率密度函数。在这种独立的情况下,为了计算基于(24)的CVA数值,一组N个日期t,选择tN=T来评估所谓的预期正暴露E[βTπ+T]。概率pi=P(ti≤τ<ti+1)可以从客户机的CDS曲线(或某些代理,如果不能直接使用这种曲线)。在随机违约强度模型中,可以同样评估E[βtiπ+tie-Rtiγsdsγt]并根据(23)计算CVA,或模拟τ并根据(22)计算CVA。请注意,在贸易增量xVA计算的背景下,投资组合权重wiin(17)均为0或1(参见Albanese et al。

34
nandehutu2022 在职认证  发表于 2022-6-11 13:00:29
(2019年,第5节))。上述近似使用高斯过程回归提供π估值的快速近似。假设风险因素的数据生成过程,π的元模型适用于对生成的数据建模。我们的GP回归在投资组合价值的点估计中提供了GP误差的估计(也考虑了投资组合成分之间的依赖关系,即flin(17)之间的依赖关系,前提是使用了多重GP)。或者,至少是软错误方向风险,而硬错误方向风险可能通过常见的跳线规范来呈现(见Cr'epey和Song(2016))。因此,我们使用机器学习来学习组成部分衍生工具风险敞口作为基础参数和其他参数的函数,包括(通过时间切片)到期时间。然后,基于π的该元模型,通过蒙特卡罗模拟完成随后的CVA计算。该程序在下文中称为MC-GP CVA计算方法。

35
何人来此 在职认证  发表于 2022-6-11 13:00:32
它节省了一级嵌套(如内部蒙特卡罗)完全重估(下文中称为MC reval),同时避免了π的参数回归方案(在每个ti),该方案几乎没有自适应性和误差控制。5.1 CVA的MC-GP估计首先,我们考虑独立情况(24),这需要对M条路径上的CVA进行以下蒙特卡罗估计,沿着M条路径对市场风险因素进行采样:CVA≈(1 - R)tMMXj=1NXi=1π(ti,X(j)ti)+β(j)tipi,(25),其中,在时间ti时,针对模拟风险因子X(j)tiinpath j评估准确的投资组合值π(ti,X(j)ti)+。然后,我们用以模拟市场风险因素Xti为条件的后验函数的平均值来替换准确的投资组合值,从而得出以下CVA估计值(假设一个统一的时间网格,带步长t) :[CVA=(1- R)tMMXj=1NXi=1β(j)tiE[π*|十、 Y,X*= X(j)ti]+Pi在随机强度情况下(23),上述公式变成CVA≈(1 - R)tMMXj=1NXi=1β(j)tiπ(ti,X(j)ti)+e-tPι<iγ(tι,X(j)tι)γ(ti,X(j)ti)(26)和[CVA=(1- R)tMMXj=1NXi=1β(j)tiE[π*|十、 Y,X*= X(j)ti]+e-tPι<iγ(tι,X(j)tι)γ(ti,X(j)ti)。(27)CVA GP-MC估计中的MC采样误差由M给出- 1MXj=1h(1- R)tNXi=1β(j)tiE[π*|十、 Y,X*= X(j)ti]+e-tPι<iγ(tι,X(j)tι)γ(ti,X(j)ti)-【CVAi。(28)在股权或商品衍生品的CVA背景下,结构性违约模型可能比违约强度模型更合适(见Ballotta和Fusai(2015))。然后,依靠CVA的原生公式(22),蒙特卡罗GP方法仍然可行。

36
kedemingshi 在职认证  发表于 2022-6-11 13:00:36
后者可以基于客户端默认模拟来实现,而不需要客户端默认时间具有强度。5.2预期正风险敞口比例和时间0 CVAWe继续使用与第4.3节示例相同的投资组合和期权模型(用于数据生成)(当然,在实践中,XVA主要用于OTC衍生品,而不是本示例中的交易所可交易期权,但我们的目的纯粹是说明)。表2显示了用于模拟两年期内Black-Scholes动态的Euler时间步进器的值。参数说明Symbol VALUEMENT模拟次数M 1000时间步数N 100初始股价稳定2:此表显示了用于市场风险系数计算的Euler时间步进器的值。图11比较了(左)MC reval(即,通过Black-Scholes公式对投资组合进行全面重新评估)和MC-GP估计的e(π+t),即投资组合的预期正敞口(EPE)。MC-GP估计中的误差和95%不确定度带(不包括MC采样误差)也随时间显示(右图)。为了使用信贷和市场模拟来说明CVA估计,我们引入了以下动态违约前强度(参见Bielecki et al.(2011)):γ(St)=γ(SSt)γ,(29),其中(γ,γ)=(0.02,1.2)。然后根据(27)计算时间0 CVA,如清单4所示。设置R=40%之后,图12显示了MC-GP CVAestimate与MC reval中的标准误差如何随每个GPmodel使用的训练样本数而衰减。还显示了GP预测的95%不确定度范围。图11:(左)MC reval和MC-GP对投资组合EPE随时间变化的估计(这两张图几乎无法区分)。

37
何人来此 在职认证  发表于 2022-6-11 13:00:39
(右)MC-GP估计EPE的误差(黑色)和(灰色)95%GP不确定度带也随时间显示。1 d e f CVA模拟(模拟参数、模型参数、d e f模型参数):3 n s i m d t=模拟参数[‘n si m dt’]\\35;数字o e u r s t p e s4 m=模拟参数[‘m’]\\35;数字o p a THS图12:此图显示了MC-GP CVA估计的蒙特卡罗收敛特性。使用100个训练样本,MC-GP CVAI估计了越来越多的测试样本。GP MCCVAis中95%的蒙特卡罗置信区间也由围绕MC-GP CVApoint估计值的灰色带显示。此外,还显示了MC reval CVAestimate,它实际上与其他数据无法区分。GP CVAestimate和重估后的CvaW的差异比MC采样误差小得多。5 nt=sim参数[‘nt’]#ex-po s ure d a t e 6 t i m e g r i d=sim参数[‘t i m e g r i d’]#time g r i d o f e x p os ure d a te s7 r=模型参数[‘r’]8 sigma=模型参数[‘sigma’]9 t=模型参数[‘t’]10 t0=模型参数[‘t0’]11 S0=模型参数[‘S0’]12 gamma 0=d e f mo de l[‘gamma 0’]13伽马1=d e f mo de l[‘gamma 1’]16 s t r i d e=n s imd t/(nt)-1) 17 i dx=np。arang e(0,n s i m d t+1,s t r i d e,dtype=i n t)19 p i={}20 p i[‘t i l d e’]=np。应收账款([0.0]* (nt-1)*M、 数据类型=\'f l o a t 3 2\'。res h a p e((nt-1) ,M)#GP p o r t f o l i o v al u e21 p i[\'e xa c t\']=np。a rr a y([0.0]* (nt-1)*M、 数据类型=\'f l o a t 3 2\'。res ha pe((nt-1) ,M)#BS p o r t f o l i o v a l ue22 p i[\'t i l d e v a r\']=np。a rr ay([0.0]* (nt-1)*M、 数据类型=\'f l o a t 3 2\'。re s h a p e((nt-1) ,M)#GP p o r t f o l i o v a r i a n c e23 gamma=np。ar RAY([0。

38
何人来此 在职认证  发表于 2022-6-11 13:00:43
0 ] * (nt-1)*M、 数据类型=\'f l o a t 3 2\'。res h a p e((nt-1) ,M)#危险r a t e s24 dPD=np。ar比率([0.0]* (nt-1)*M、 数据类型=\'f l o a t 3 2\'。res h a p e((nt-1) ,M)#d f a u l t p r o b a b i l t i e s26#s i M u l t e r l y n g黑色-S c h o l e S dynamics us i n g Eu le r27 S=gbm(S0,r,sigma,T-t0,n si m d t,m)29 i f(de f mo de l[‘c a l i b r a t e’):30 x=np。exp(S0/S)**gamma 131#d e f a u l t p r o b b b i t y(假定从c r e d i t s p区域生成)32 dt=t i m e g r i d[1]- t i m e g r i d[0]33 f=λy:np。abs(np.平均值(np.生产(x**(-y* dt),a x i s=0)---de f m o d e l[‘p’])34 r e s=sp。op t i m i ze。b a si nh o pp in g(f,0.1,n i t e r=10)35 i=136 w h l e(abs(r e s.fun)>1e-3) :37 r e s=sp。o p t i m i z e。b a si nh o pp in g(f,0.1,n i t e r=100* i)38 i*= 239伽马0=r e s。x【0】40 p r i n t(“c a l b r a t i o n:”,γ0,γ1,f(γ0),r e s。fun)43 f o r m i n ra n ge(m):44 i=145 e x p f a c t o r=147 f o r时间i n t i m e g r i d[1:]:48 dt=t i m e g r i d[i]- t i m e g r i d[i-1] 50 S=S[id x[i],m]#S i m u l at e d S51#a v oi d S im u la t e d S b r ea c hi n g b o un d a r i e S o of domain52 i f(S<l b):53 min=S54 S=l b55 i f(S>ub):56 S=ub57 maxs=S59 pr e d=060 v=061 v a r=063 f r key i n p r t f o l i o。键():64 pred,st d=p o r t f o l i o[键][“GPs”][i]。p r e d i c t(np.ar r a y([(S-磅)/(ub-lb)])。

39
能者818 在职认证  发表于 2022-6-11 13:00:46
re sh a p e(1,-1) ,r e t u r n s t d=True)65 pr e d+=p o r t f o l i o[键][“we i ght”]* pred66 v a r+=(p o r t f o l i o[键][“we i ght”]* s t d)**268 i f键==“c a l l”:69 v+=p o r t f o l i o[键][“称重t”]* bs fo r mu la(1,S,KC,r,time,sigma,0)[0]70 e l S e:71 v+=p o r t f o l i o[键][“称重t”]* 穆拉学士(-1,S,KP,r,time,sigma,0)[0]72 p i[\'t i l d e\'][i-1,m]=np。最大值(pred,0)73 p i[\'exa c t\'][i-1,m]=np。最大值(v,0)74 p i[‘t i l d e v a r’][i-1,m]=v a r76#d e f a u l t i n t e n s i t y model77 gamma[i-1,m]=γ0*(S0/秒)**gamma 179#计算d e f a u l t p r o b b i l t i e s80 e x p f a c t r*=np。经验值(-dt公司*γ[Ⅰ]-1,m])81 dPD【i-1,m)=γ[i-1,米]* e x p f a c t o r83 i+=184#compute CVA85 i=086 CVA={}87 CVA[\'t i d e\']=088 CVA[\'e x a ct\']=089 CVA[\'t i d e u p\']=090 CVA[\'t i d e d o w n\']=091 CVA[\'v a r t i d e\']=093 f o r time i n t i m e g r i d[1:]:94 dt=t i m e g r i d[i+1]- t i m e g r i d[i]95 CVA[\'t i l d e\']+=np。平均值(dPD【i,:】* p i[‘t i l d e’][i,:])*np。经验值(-r*(时间-t0))* dt96 CVA[“v a r t i l d e”]+=np。var(dPD【i,:】* p i[‘t i l d e’][i,:]* np。经验值(- r* (时间-t0))* dt)97 CVA[‘e x a ct’]+=np。平均值(dPD【i,:】* p i[‘ex ac t’][i,:])*np。经验值(-r*(时间-t0))* dt98 i+=1100 CVA[‘t i l d e u p’]=(1- d e f m od el[\'r e c o v e r y\'])*(CVA[‘t i l d e’]+2*np。s q r t(CVA[\'v a r t i l d e\']/M))101 CVA[\'t i l d e d o w n\']=(1- d e f mo de l[\'re c o v e r y\'])*(CVA[‘t i l d e’]---2.*np。

40
能者818 在职认证  发表于 2022-6-11 13:00:50
s q r t(CVA[‘v a r t i l d e’]/M))102 CVA[‘t i l d e’]*= (1- de f m o d e l[‘re c o v e r y’])103 CVA[‘e x a ct’]*= (1- d e f mo de l[\'re c o v e r y])105 r e t u r n(CVA)清单4:这段Python 3.0代码摘录使用scikit learn,演示了如何使用MC-GP模拟投资组合的时间0 CVA。实施假设BS定价采用方程式(29)给出的动态违约强度模型。请注意,清单仅提供了有效的详细信息,读者应参考示例3-MC-GPA-BS-CVA。ipynb inGithub的全面实施。5.3增量一年CVA变量在本节中,我们展示了GPs在估计一年增量CVA的α级风险值(VaR,即分位数)中的应用。计算的目的是在α置信水平上估计银行的CVA负债在未来一年可能增加的程度。为此,我们估计了一年内增量CVA的分布,即随机变量(CVA- CVA)。为了便于说明,我们再次使用(29)中的动态违约前强度,对于(29)中的固定参数γ=0.02和γ=1.2,以及与之前相同的市场组合。然而,我们现在对(违约前)CVA过程进行建模,使得(零利率)t<τCVA(t,St)=1t<τE[1τ<tπ(τ,Sτ)+| St,t<τ]。(30)我们确定违约前强度模型参数。总体而言,MC-GP对VaR(CVA)的估计- CVA)以嵌套模拟的形式实现,外部循环对基础输出进行一年的模拟,嵌套MC模拟用于沿每条路径对一年CVA进行点估计。相比之下,CVA仅通过外部模拟循环进行估计,并且是非负标量。图13(左)显示了使用MC reval(即。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2026-1-3 08:05