好久不写东西了,近期先不谈股票相关的东西,谈谈利率衍生品的内容吧。文章可能一时用不到,但是HJM模型作为利率衍生品的定价神器,相信之后会有勇武之地。
针对股票标的奇异期权定价,在解析解未知的情况下,最容易想到的就是简单粗暴的蒙特卡罗法,其逻辑就是模拟出N条股价的路径,然后对每一条股价路径计算其期权的收益,最后在对这些期权收益求平均,折现。
本人一直好奇为什么蒙特卡洛法是正确的,经过学习得知以下内容:
在新的测度Q下,股票价格的现值为鞅(martingale)。如果期权可以被表示为股票和债券的自融资组合,在无套利的前提下,那么期权价值的现值也为一个鞅。 (反正你相信这个方法正确就可以了。鞅是什么并不重要)。
今天要讨论的并不是股票衍生品,而是利率衍生品。股票衍生品的标的股票在任何时刻是一个点价格,随着时间演变为一条线。而利率衍生品的标的是利率曲线,随着时间过程演变为一个面。标的由点变为面,导致利率衍生品的定价更加复杂。
利率有很多种,即期利率,远期利率等。
即期利率S(t;T)表示站在当前t时刻,t到T区间的利率。
远期利率F(t;T1,T2)表示站在当前t时刻,T1到T2区间的利率。远期利率可以由两个分别在T1,T2到期的零息债券根据无套利条件计算得到。
如果当T1和T2无穷接近的时候,这时候算出来的远期利率被叫做瞬时远期利率(instaneous forward rate)。
在HJM模型中,利率曲线的利率是瞬时远期利率。
对于股票衍生品,我们会对股价的运动定义一个SDE(Stochastic Differential Equation):
dS/S=rdtsigmadX
同样,我们也需要对债券衍生品定义一个SDE:
我们已知瞬时远期利率:
所以可以得到:
当前的漂移项是mu,那么在风险中性的世界里,在测度Q下,漂移项变r。
整理后,上面的式子变为:
做一个替换:
上面的式子更新为:
方便起见,我们把式子写成这个样子:
在上个式子中,随着时间的变动,t增加,而T不变,这样债券的期限tau就变短了。我们我们希望把式子中的T换为tau。 “rolling on the curve”. 目标结果:
推导开始:
在利率曲线上很多关键年,所以我们的模型为一个多因子模型:
利用PCA分解,每一个主成分为如下:
所以最终的结果如下:
模拟未来的瞬时远期利率,就等于:
这时候,我们就完成了一步模拟,得到下一时刻一条瞬时远期利率曲线,在Nstep个dt之后,我们就完成了一次模拟。得到一个“利率曲面”,第三条轴是时间的推移。根据这个“利率曲面”,就可以完成一次衍生品的定价。这件事做N次后,得到N个衍生品的价格,再求平均,折现,就得到了利率衍生品的价格。
下面的完整的程序中,在这一切工作之前,需要在时间序列上,计算不同期限的瞬时远期利率的方差-协方差矩阵,计算其特征值和特征向量,进行主成分分析。得到:
数据方面,我上传了瞬时远期利率曲线的数据当前瞬时远期利率曲线的数据,百度云盘:
链接:https://pan.baidu.com/s/1naCIad5sFiZ2FOy8KDSYiQ
提取码:sycm
后记:
如果系统的学习衍生品,那么在学什么。个人对衍生品有三点体会:
1.给标的定义一个随机过程。
2.根据无套利条件推导出一个偏微分等式。
3.把这个偏微分等式解出来。
当你有衍生品解析解的时候,剩下的基本上就为所欲为了。
# 从EXCEL中获取数据
import pandas as pd
data = pd.read_excel('InterestData.xlsx', sheetname='Data')
yc0 = pd.read_excel('InterestData.xlsx', sheetname='YC')
data.index=data['Tenor'].values
del data['Tenor']
# 计算远期利率的协方差矩阵,及其特征值和特征向量。
from numpy import linalg as LA
import random
data_value=data.diff().shift(-1).iloc[:-2,:].T
tenor=list(data_value.index)
tenor[0]=0 #由于这个后期要被当做short rate
covmatrix=cov(data_value)*252/10000
covmatrix_df=pd.DataFrame(covmatrix,index=tenor,columns=tenor)
# PCA
w,v=LA.eig(covmatrix)
#主成分我们选取前三大的为主成分
w=w[0:3]
v=v[:,0:3]
# 校准波动率
vol_matrix=[list(ones(shape(v[:,0]))*mean(sqrt(w[0])*v[:,0]))]
poly_matrix=[mean(sqrt(w[0])*v[:,0])]
for i in range(1,3):
vol=sqrt(w)[i]*v[:,i]
x_data=np.array(tenor)
y_data=vol
poly = np.polyfit(x_data,y_data,deg=3)
y_fit_data=np.polyval(poly,x_data)
vol_matrix.append(list(y_fit_data))
poly_matrix.append(poly)
vol_matrix[2]=list(np.array(vol_matrix[2])*(-1))
vol_df=pd.DataFrame(vol_matrix,index=['Vol1','Vol2','Vol3'],columns=tenor)
# 校准drift项
def M_Calculator(Tau):
if Tau==0:
return 0
dTau=0.01
N=Tau/dTau
Vol1=ones(N+1)*poly_matrix[0]
M1=(0.5*Vol1[0]+sum(Vol1[1:-1])+0.5*Vol1[-1])*dTau
M1=M1*Vol1[-1]
x_data=arange(0,Tau+dTau,dTau)
poly=poly_matrix[1]
y_fit_data=np.polyval(poly,x_data)
Vol2=y_fit_data
M2=(0.5*Vol2[0]+sum(Vol2[1:-1])+0.5*Vol2[-1])*dTau
M2=M2*Vol2[-1]
poly=poly_matrix[2]
y_fit_data=np.polyval(poly,x_data)
Vol3=y_fit_data
M3=(0.5*Vol3[0]+sum(Vol3[1:-1])+0.5*Vol3[-1])*dTau
M3=M3*Vol3[-1]
M=M1+M2+M3
return M
# 计算不同期限的m项
m_list=[]
for t in tenor:
m=M_Calculator(t)
m_list.append(m)
# 与之前的vol合并为一个dataframe
m_df=pd.DataFrame(m_list,index=tenor,columns=['drift']).T
df=pd.concat([m_df,vol_df],axis=0)
#生产随机数,以及布局初始远期利率曲线。
dt=0.01
Nstep=1000
yc=pd.DataFrame(index=arange(Nstep+1),columns=tenor)
phi = np.random.normal(0,1,3*Nstep).reshape((Nstep,3))
yc.iloc[0,:]=yc0.values
for t in list(range(len(yc.index)))[:-1]:
for tau in list(range(len(yc.columns))):
m=df.iloc[0,tau]
Vol1=df.iloc[1,tau]
Vol2=df.iloc[2,tau]
Vol3=df.iloc[3,tau]
A=yc.iloc[t,tau]
B=m*dt+(Vol1*phi[t,0]+Vol2*phi[t,1]+Vol3*phi[t,2])*sqrt(dt)
if tau==list(range(len(yc.columns)))[-1]:
C=(yc.iloc[t,tau]-yc.iloc[t,tau-1])/(tenor[tau]-tenor[tau-1])*dt
else:
C=(yc.iloc[t,tau+1]-yc.iloc[t,tau])/(tenor[tau+1]-tenor[tau])*dt
yc.iloc[t+1,tau]=A+B+C
yc
0.0 | 0.5 | 1.0 | 1.5 | 2.0 | 2.5 | 3.0 | 3.5 | 4.0 | 4.5 | ... | 20.5 | 21.0 | 21.5 | 22.0 | 22.5 | 23.0 | 23.5 | 24.0 | 24.5 | 25.0 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.04613836 | 0.04525117 | 0.04291581 | 0.04283311 | 0.04349772 | 0.04405379 | 0.04443952 | 0.0447085 | 0.04490347 | 0.04505662 | ... | 0.04066505 | 0.04050125 | 0.04035301 | 0.04021908 | 0.04009825 | 0.03998929 | 0.03989096 | 0.03980205 | 0.03972144 | 0.03964844 |
1 | 0.0459943 | 0.04526421 | 0.04314509 | 0.04323417 | 0.0440396 | 0.04472192 | 0.04522213 | 0.04559412 | 0.04588093 | 0.04611491 | ... | 0.04135645 | 0.04118335 | 0.04103158 | 0.04090039 | 0.04078906 | 0.04069688 | 0.04062311 | 0.04056702 | 0.04052803 | 0.04050582 |
2 | 0.0457451 | 0.04487099 | 0.0426953 | 0.04271284 | 0.04344412 | 0.04406464 | 0.04451702 | 0.04485426 | 0.04511852 | 0.04534118 | ... | 0.04202739 | 0.04183243 | 0.04164717 | 0.0414702 | 0.04130013 | 0.04113558 | 0.04097515 | 0.04081746 | 0.04066126 | 0.04050525 |
3 | 0.04546677 | 0.04458554 | 0.04247211 | 0.04252181 | 0.04326825 | 0.04390229 | 0.04436872 | 0.04472035 | 0.0449991 | 0.04523606 | ... | 0.04207907 | 0.04187896 | 0.0416878 | 0.04150419 | 0.04132674 | 0.04115403 | 0.04098468 | 0.0408173 | 0.04065063 | 0.0404834 |
4 | 0.04494665 | 0.04393018 | 0.04176479 | 0.04174792 | 0.0424257 | 0.04300337 | 0.04342725 | 0.04374923 | 0.04401039 | 0.04424083 | ... | 0.04258147 | 0.04235743 | 0.04213044 | 0.04189845 | 0.04165937 | 0.04141114 | 0.04115171 | 0.04087903 | 0.04059116 | 0.04028621 |
5 | 0.04478853 | 0.0437614 | 0.04165358 | 0.04166735 | 0.04236184 | 0.04295701 | 0.04340112 | 0.04374572 | 0.04403149 | 0.04428809 | ... | 0.04323958 | 0.04300003 | 0.04275369 | 0.04249833 | 0.04223175 | 0.0419517 | 0.041656 | 0.04134243 | 0.04100894 | 0.04065384 |
6 | 0.04422231 | 0.04325939 | 0.04127138 | 0.04136803 | 0.04212202 | 0.04276819 | 0.04325719 | 0.04364067 | 0.04395943 | 0.04424313 | ... | 0.04271266 | 0.042476 | 0.04223719 | 0.04199433 | 0.04174551 | 0.04148883 | 0.0412224 | 0.04094435 | 0.04065293 | 0.04034726 |
7 | 0.04372539 | 0.04265662 | 0.04063504 | 0.04067924 | 0.04137476 | 0.04197034 | 0.04241824 | 0.04276948 | 0.04306421 | 0.04333139 | ... | 0.04260516 | 0.04235816 | 0.04210211 | 0.04183468 | 0.04155354 | 0.04125638 | 0.04094089 | 0.0406048 | 0.04024594 | 0.03986335 |
8 | 0.04248229 | 0.04150736 | 0.03963263 | 0.03978825 | 0.04057324 | 0.04125062 | 0.04177486 | 0.04219697 | 0.04255708 | 0.04288408 | ... | 0.04225569 | 0.04199513 | 0.04172684 | 0.04144871 | 0.04115864 | 0.04085452 | 0.04053425 | 0.04019576 | 0.03983714 | 0.03945813 |
9 | 0.04274173 | 0.04177068 | 0.03995491 | 0.04013812 | 0.04093277 | 0.04161587 | 0.04214397 | 0.04256803 | 0.04292812 | 0.04325297 | ... | 0.04222968 | 0.04197627 | 0.04171803 | 0.041453 | 0.04117923 | 0.04089476 | 0.04059766 | 0.04028601 | 0.0399581 | 0.03961423 |
10 | 0.04245147 | 0.04142337 | 0.03961258 | 0.03977795 | 0.04054503 | 0.04120421 | 0.04171371 | 0.04212406 | 0.04247487 | 0.04279439 | ... | 0.04222577 | 0.04196569 | 0.04169698 | 0.04141746 | 0.04112496 | 0.04081729 | 0.04049231 | 0.04014787 | 0.03978211 | 0.03939541 |
11 | 0.0427224 | 0.04169316 | 0.03993566 | 0.04012613 | 0.04090344 | 0.04157133 | 0.04208992 | 0.0425095 | 0.0428695 | 0.04319787 | ... | 0.04267975 | 0.04241702 | 0.0421455 | 0.04186303 | 0.04156743 | 0.04125655 | 0.04092823 | 0.04058038 | 0.04021117 | 0.03982142 |
12 | 0.042787 | 0.04179354 | 0.04011913 | 0.04035951 | 0.04116712 | 0.0418591 | 0.04239761 | 0.042833 | 0.04320472 | 0.04354069 | ... | 0.04248931 | 0.04223414 | 0.0419745 | 0.04170848 | 0.04143416 | 0.04114965 | 0.04085304 | 0.04054249 | 0.0402165 | 0.03987655 |
13 | 0.04425504 | 0.04309667 | 0.04131713 | 0.04143314 | 0.04211023 | 0.04267831 | 0.0431011 | 0.04342857 | 0.04369977 | 0.04394215 | ... | 0.04235917 | 0.04213173 | 0.04190046 | 0.04166325 | 0.041418 | 0.04116265 | 0.0408951 | 0.04061337 | 0.04031581 | 0.04000399 |
14 | 0.04298983 | 0.04186634 | 0.0401741 | 0.04035261 | 0.04108052 | 0.04170018 | 0.04217687 | 0.04256014 | 0.04288859 | 0.04318921 | ... | 0.04265748 | 0.04240062 | 0.04213382 | 0.04185478 | 0.0415612 | 0.04125081 | 0.04092133 | 0.04057057 | 0.04019675 | 0.0398015 |
15 | 0.04242433 | 0.04126275 | 0.03958253 | 0.03974794 | 0.04045087 | 0.04104611 | 0.04150062 | 0.04186367 | 0.04217363 | 0.04245716 | ... | 0.0418152 | 0.04156358 | 0.04130217 | 0.04102863 | 0.04074062 | 0.04043585 | 0.04011201 | 0.03976687 | 0.03939873 | 0.03900956 |
16 | 0.0437294 | 0.04262014 | 0.04102974 | 0.04124946 | 0.0419849 | 0.04260354 | 0.0430744 | 0.04344699 | 0.04375987 | 0.04403986 | ... | 0.04233672 | 0.04210391 | 0.04186931 | 0.04163102 | 0.04138714 | 0.04113579 | 0.04087511 | 0.04060332 | 0.04031921 | 0.04002559 |
17 | 0.04536045 | 0.04412967 | 0.04246903 | 0.04259799 | 0.04323527 | 0.04376028 | 0.04414354 | 0.04443424 | 0.04467058 | 0.04487901 | ... | 0.04271304 | 0.0425025 | 0.04229108 | 0.04207676 | 0.04185752 | 0.04163138 | 0.04139636 | 0.04115058 | 0.04089281 | 0.04062588 |
18 | 0.04623423 | 0.04504621 | 0.04346012 | 0.04362601 | 0.04427645 | 0.04480328 | 0.0451792 | 0.0454538 | 0.04566566 | 0.04584155 | ... | 0.04191013 | 0.04173641 | 0.04157424 | 0.04142221 | 0.04127892 | 0.04114298 | 0.04101304 | 0.04088784 | 0.04076683 | 0.04065358 |
19 | 0.04698613 | 0.04577324 | 0.04420821 | 0.04437262 | 0.04501208 | 0.04552993 | 0.04590027 | 0.04617235 | 0.04638437 | 0.04656269 | ... | 0.04297323 | 0.04279363 | 0.04262297 | 0.04245972 | 0.04230234 | 0.04214931 | 0.04199912 | 0.04185041 | 0.04170258 | 0.04155885 |
20 | 0.04654914 | 0.0453657 | 0.04387472 | 0.04409084 | 0.04477261 | 0.04533456 | 0.04575206 | 0.04607391 | 0.04633784 | 0.04656973 | ... | 0.04405982 | 0.0438515 | 0.04364568 | 0.04344058 | 0.04323443 | 0.04302548 | 0.04281199 | 0.04259238 | 0.0423659 | 0.04213541 |
21 | 0.04649895 | 0.04532919 | 0.04389155 | 0.04413557 | 0.04483291 | 0.04540933 | 0.04584168 | 0.04617852 | 0.04645736 | 0.0467038 | ... | 0.04434047 | 0.04412699 | 0.04391535 | 0.04370375 | 0.04349044 | 0.04327364 | 0.04305164 | 0.04282286 | 0.04258662 | 0.04234581 |
22 | 0.0466344 | 0.04534517 | 0.04383795 | 0.04399832 | 0.04461063 | 0.04511123 | 0.04547803 | 0.04575894 | 0.04599082 | 0.04619861 | ... | 0.04440674 | 0.04419141 | 0.04397201 | 0.04374635 | 0.04351223 | 0.0432675 | 0.04301002 | 0.04273782 | 0.0424499 | 0.04214875 |
23 | 0.04467181 | 0.04351281 | 0.04215995 | 0.04243731 | 0.04314282 | 0.0437242 | 0.04416125 | 0.04450221 | 0.04478422 | 0.04503246 | ... | 0.04242143 | 0.04221217 | 0.04200661 | 0.04180305 | 0.04159983 | 0.0413953 | 0.04118786 | 0.04097607 | 0.04075952 | 0.04054145 |
24 | 0.04493333 | 0.04379654 | 0.04250027 | 0.04280815 | 0.04353118 | 0.0441278 | 0.04457925 | 0.04493362 | 0.04522789 | 0.04548704 | ... | 0.04281754 | 0.04260735 | 0.04240165 | 0.04219882 | 0.04199727 | 0.0417954 | 0.04159168 | 0.04138479 | 0.04117444 | 0.04096392 |
25 | 0.04499879 | 0.04383514 | 0.04254642 | 0.04283733 | 0.04353189 | 0.0440991 | 0.04452162 | 0.04484742 | 0.0451133 | 0.0453441 | ... | 0.0421828 | 0.04198692 | 0.04179823 | 0.04161522 | 0.04143638 | 0.04126019 | 0.04108523 | 0.04091027 | 0.04073518 | 0.04056328 |
26 | 0.04509762 | 0.04397271 | 0.04275151 | 0.04308134 | 0.04379936 | 0.04438506 | 0.04482263 | 0.04516005 | 0.0454341 | 0.04566958 | ... | 0.04203153 | 0.04184317 | 0.04166584 | 0.04149822 | 0.04133902 | 0.04118696 | 0.04104083 | 0.04089965 | 0.04076358 | 0.04063604 |
27 | 0.0461185 | 0.0449109 | 0.04364354 | 0.04390746 | 0.04455263 | 0.04506856 | 0.0454407 | 0.0457167 | 0.04593307 | 0.04611428 | ... | 0.04207048 | 0.04190024 | 0.04174214 | 0.04159483 | 0.04145693 | 0.04132712 | 0.04120411 | 0.04108689 | 0.04097565 | 0.04087349 |
28 | 0.046945 | 0.04567733 | 0.04438736 | 0.04461111 | 0.04521112 | 0.04568664 | 0.04602412 | 0.0462708 | 0.04646274 | 0.04662392 | ... | 0.0428799 | 0.04270897 | 0.0425471 | 0.0423927 | 0.0422442 | 0.04210005 | 0.04195877 | 0.04181915 | 0.04168121 | 0.04154762 |
29 | 0.04541221 | 0.044244 | 0.04307951 | 0.04340139 | 0.04408503 | 0.0446395 | 0.04505255 | 0.04537129 | 0.04563163 | 0.04585738 | ... | 0.04256086 | 0.04236984 | 0.04218673 | 0.04201003 | 0.04183824 | 0.0416699 | 0.04150362 | 0.04133829 | 0.0411741 | 0.04101365 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
971 | 0.04623362 | 0.04782378 | 0.049279 | 0.05059936 | 0.05178479 | 0.05283542 | 0.05375174 | 0.05453476 | 0.05518604 | 0.05570771 | ... | 0.02110536 | 0.01961271 | 0.01822215 | 0.01695046 | 0.0158109 | 0.01480903 | 0.0139405 | 0.01319127 | 0.01253914 | 0.01195328 |
972 | 0.04650899 | 0.04815122 | 0.04965395 | 0.05101742 | 0.05224175 | 0.05332721 | 0.05427447 | 0.05508472 | 0.05575969 | 0.05630167 | ... | 0.02152425 | 0.02003185 | 0.01864381 | 0.01737697 | 0.01624461 | 0.01525224 | 0.01439548 | 0.01366028 | 0.01302442 | 0.01245653 |
973 | 0.04531445 | 0.04701025 | 0.04856677 | 0.04998415 | 0.05126238 | 0.05240167 | 0.05340258 | 0.05426619 | 0.05499414 | 0.05558861 | ... | 0.02159071 | 0.02007587 | 0.01866143 | 0.01736404 | 0.01619672 | 0.01516466 | 0.01426318 | 0.01347795 | 0.01278645 | 0.01215649 |
974 | 0.04480936 | 0.04653423 | 0.04811627 | 0.04955574 | 0.05085282 | 0.05200784 | 0.05302152 | 0.05389512 | 0.05463041 | 0.05522973 | ... | 0.02093701 | 0.01942746 | 0.01802092 | 0.01673411 | 0.01558003 | 0.01456381 | 0.01368072 | 0.0129164 | 0.0122483 | 0.01164377 |
975 | 0.04519136 | 0.04711475 | 0.04887227 | 0.05046511 | 0.05189441 | 0.05316144 | 0.05426786 | 0.05521587 | 0.0560082 | 0.05664811 | ... | 0.02056519 | 0.0190794 | 0.01771213 | 0.01648097 | 0.01539965 | 0.01447408 | 0.01370023 | 0.01306454 | 0.01254516 | 0.01210978 |
976 | 0.0455761 | 0.04752406 | 0.04930236 | 0.05091239 | 0.05235542 | 0.05363291 | 0.05474673 | 0.0556992 | 0.05649325 | 0.05713232 | ... | 0.02065299 | 0.01917565 | 0.01782006 | 0.01660386 | 0.01554084 | 0.01463682 | 0.01388777 | 0.0132801 | 0.01279195 | 0.01239011 |
977 | 0.04513805 | 0.04710574 | 0.0489041 | 0.05053444 | 0.05199801 | 0.05329623 | 0.05443089 | 0.0554043 | 0.05621933 | 0.05687936 | ... | 0.02074013 | 0.01925438 | 0.01788868 | 0.01666057 | 0.01558359 | 0.01466331 | 0.01389544 | 0.01326619 | 0.0127534 | 0.01232274 |
978 | 0.04627209 | 0.04826169 | 0.05007568 | 0.0517157 | 0.0531833 | 0.05448022 | 0.05560857 | 0.05657099 | 0.05737065 | 0.05801125 | ... | 0.02095206 | 0.01948741 | 0.01814943 | 0.01695585 | 0.01592036 | 0.01504865 | 0.01433654 | 0.01377038 | 0.01332805 | 0.01297461 |
979 | 0.04457861 | 0.04653386 | 0.04832107 | 0.04994151 | 0.05139639 | 0.05268708 | 0.05381535 | 0.05478348 | 0.05559427 | 0.05625109 | ... | 0.02021231 | 0.01872867 | 0.01736456 | 0.01613728 | 0.01505999 | 0.0141378 | 0.01336599 | 0.01273035 | 0.01220816 | 0.01176302 |
980 | 0.04375397 | 0.04570779 | 0.04749697 | 0.04912261 | 0.05058573 | 0.05188753 | 0.05302958 | 0.054014 | 0.0548434 | 0.05552096 | ... | 0.02013744 | 0.01864 | 0.01725794 | 0.01600829 | 0.01490384 | 0.01394932 | 0.01313962 | 0.01246016 | 0.01188777 | 0.01138504 |
981 | 0.04436766 | 0.04632788 | 0.04812399 | 0.04975705 | 0.05122804 | 0.05253814 | 0.05368888 | 0.05468234 | 0.05552111 | 0.05620831 | ... | 0.02102276 | 0.01952145 | 0.01813451 | 0.01687882 | 0.01576696 | 0.01480342 | 0.01398285 | 0.01329046 | 0.01270274 | 0.0121816 |
982 | 0.0443077 | 0.0462352 | 0.04800134 | 0.04960711 | 0.05105338 | 0.05234123 | 0.05347213 | 0.05444805 | 0.05527149 | 0.05594548 | ... | 0.02085966 | 0.01936068 | 0.01797498 | 0.01671924 | 0.01560577 | 0.01463876 | 0.01381256 | 0.01311213 | 0.01251353 | 0.01197803 |
983 | 0.04216953 | 0.04407177 | 0.04582038 | 0.04741594 | 0.04885896 | 0.05015014 | 0.05129056 | 0.05228181 | 0.05312603 | 0.05382586 | ... | 0.01991142 | 0.0183887 | 0.01697127 | 0.01567532 | 0.01451264 | 0.01348679 | 0.01259157 | 0.01181134 | 0.0111215 | 0.01048243 |
984 | 0.0436971 | 0.04564258 | 0.04742318 | 0.04904003 | 0.05049419 | 0.05178693 | 0.05291988 | 0.0538952 | 0.05471557 | 0.05538417 | ... | 0.01986409 | 0.01837624 | 0.01700512 | 0.01576739 | 0.01467518 | 0.01373244 | 0.01293329 | 0.01226247 | 0.01169563 | 0.01119347 |
985 | 0.04353988 | 0.04551613 | 0.04732221 | 0.04895951 | 0.05042935 | 0.05173321 | 0.052873 | 0.05385111 | 0.05467046 | 0.0553345 | ... | 0.01921002 | 0.01773488 | 0.01638113 | 0.01516559 | 0.01410046 | 0.01318971 | 0.01242752 | 0.01179868 | 0.01127878 | 0.01082824 |
986 | 0.04220398 | 0.04427352 | 0.04616274 | 0.04787341 | 0.04940726 | 0.05076619 | 0.05195252 | 0.05296903 | 0.05381909 | 0.05450652 | ... | 0.01767475 | 0.01620858 | 0.01487031 | 0.01367706 | 0.01264125 | 0.01176706 | 0.01104888 | 0.01047171 | 0.01001123 | 0.009627674 |
987 | 0.04289778 | 0.04496073 | 0.04684102 | 0.04854057 | 0.05006125 | 0.05140513 | 0.05257465 | 0.05357276 | 0.05440296 | 0.05506923 | ... | 0.01770007 | 0.01624894 | 0.01492929 | 0.01375826 | 0.01274825 | 0.01190337 | 0.01121797 | 0.01067698 | 0.01025592 | 0.009914425 |
988 | 0.0424899 | 0.04463735 | 0.04659835 | 0.0483749 | 0.04996894 | 0.05138259 | 0.05261838 | 0.05367934 | 0.05456901 | 0.05529145 | ... | 0.01834614 | 0.01687833 | 0.01554094 | 0.01435108 | 0.01332104 | 0.01245479 | 0.01174653 | 0.01118109 | 0.01073373 | 0.01036334 |
989 | 0.04337341 | 0.04539553 | 0.04724682 | 0.04892864 | 0.05044227 | 0.05178921 | 0.05297134 | 0.05399102 | 0.05485118 | 0.0555552 | ... | 0.01996476 | 0.01847915 | 0.01711297 | 0.01588255 | 0.01479936 | 0.01386653 | 0.01307741 | 0.01241597 | 0.01185648 | 0.01135648 |
990 | 0.04325092 | 0.04519878 | 0.04698676 | 0.04861574 | 0.05008654 | 0.05140017 | 0.05255804 | 0.05356204 | 0.05441462 | 0.05511869 | ... | 0.0206638 | 0.01916028 | 0.01776753 | 0.01650131 | 0.01537244 | 0.01438334 | 0.01352669 | 0.01278579 | 0.01213409 | 0.01152831 |
991 | 0.04455659 | 0.04644393 | 0.04817669 | 0.04975557 | 0.05118119 | 0.05245439 | 0.05357638 | 0.0545489 | 0.05537418 | 0.05605496 | ... | 0.02181643 | 0.02031519 | 0.01892233 | 0.0176533 | 0.01651855 | 0.01552012 | 0.0146503 | 0.013892 | 0.01321813 | 0.01258517 |
992 | 0.04583187 | 0.04769661 | 0.0494043 | 0.05095579 | 0.05235192 | 0.05359368 | 0.0546825 | 0.05562027 | 0.05640941 | 0.05705285 | ... | 0.02202612 | 0.02054709 | 0.0191813 | 0.01794429 | 0.0168465 | 0.01588994 | 0.01506689 | 0.01436022 | 0.01374271 | 0.01317103 |
993 | 0.04610817 | 0.04808691 | 0.04989583 | 0.05153631 | 0.05300969 | 0.05431749 | 0.05546165 | 0.05644459 | 0.05726925 | 0.05793907 | ... | 0.02197887 | 0.02051196 | 0.01916664 | 0.01795882 | 0.01689929 | 0.01599038 | 0.01522467 | 0.01458534 | 0.01404535 | 0.01356186 |
994 | 0.04556625 | 0.04755628 | 0.04937514 | 0.05102427 | 0.05250507 | 0.05381913 | 0.05496845 | 0.05595551 | 0.0567833 | 0.05745533 | ... | 0.02139409 | 0.01993002 | 0.01858856 | 0.01738555 | 0.01633167 | 0.01542909 | 0.01467026 | 0.01403821 | 0.01350562 | 0.01302944 |
995 | 0.04499043 | 0.04695287 | 0.04874775 | 0.05037634 | 0.0518399 | 0.05313988 | 0.05427812 | 0.05525697 | 0.05607927 | 0.05674837 | ... | 0.02102197 | 0.01955435 | 0.01820677 | 0.01699483 | 0.01592887 | 0.0150107 | 0.01423244 | 0.01357673 | 0.0130158 | 0.01250616 |
996 | 0.04415276 | 0.04606558 | 0.04782091 | 0.04941957 | 0.05086235 | 0.05215021 | 0.05328455 | 0.05426722 | 0.05510062 | 0.05578761 | ... | 0.02136362 | 0.01987173 | 0.01849057 | 0.01723517 | 0.0161152 | 0.0151318 | 0.01427641 | 0.01353099 | 0.01286698 | 0.01224025 |
997 | 0.04306947 | 0.04503992 | 0.04684786 | 0.0484943 | 0.0499802 | 0.05130673 | 0.05247545 | 0.05348842 | 0.05434821 | 0.05505785 | ... | 0.02044556 | 0.01895374 | 0.01757505 | 0.01632459 | 0.01521202 | 0.01423846 | 0.01339534 | 0.01266458 | 0.01201747 | 0.01141021 |
998 | 0.04404028 | 0.04600789 | 0.0478096 | 0.0494466 | 0.05092006 | 0.05223134 | 0.05338222 | 0.05437494 | 0.05521228 | 0.05589747 | ... | 0.02058768 | 0.01911402 | 0.01775813 | 0.01653517 | 0.01545483 | 0.01451822 | 0.01371676 | 0.01303234 | 0.01243616 | 0.01188467 |
999 | 0.04461672 | 0.0465212 | 0.04826676 | 0.04985433 | 0.05128478 | 0.05255922 | 0.05367915 | 0.05464654 | 0.05546388 | 0.05613414 | ... | 0.02133564 | 0.0198577 | 0.01849315 | 0.01725676 | 0.01615775 | 0.01519675 | 0.0143647 | 0.01364301 | 0.01300227 | 0.01239866 |
1000 | 0.04394689 | 0.0458364 | 0.047571 | 0.04915141 | 0.05057833 | 0.05185267 | 0.05297574 | 0.05394932 | 0.05477572 | 0.05545769 | ... | 0.02124505 | 0.01975619 | 0.01837673 | 0.01712111 | 0.01599818 | 0.01500817 | 0.01414162 | 0.01337953 | 0.012692 | 0.01203514 |
1001 rows × 51 columns
#封装为一个方程
def YieldCurve_Simulator(N,yc0,df,Nstep=1000,dt=0.01):
yc_list=[]
tenor=list(yc0.columns)
for i in range(N):
# Initialize and preallocate the yield curve matrix
yc=pd.DataFrame(index=arange(Nstep+1),columns=tenor)
phi = np.random.normal(0,1,3*Nstep).reshape((Nstep,3))
yc.iloc[0,:]=yc0.values
Row=list(range(len(yc.index)))[:-1]
Column=list(range(len(yc.columns)))
# Calculate the Yield Curve
for t in Row:
for tau in Column:
m=df.iloc[0,tau]
Vol1=df.iloc[1,tau]
Vol2=df.iloc[2,tau]
Vol3=df.iloc[3,tau]
A=yc.iloc[t,tau]
B=m*dt+(Vol1*phi[t,0]+Vol2*phi[t,1]+Vol3*phi[t,2])*sqrt(dt)
if tau==list(range(len(yc.columns)))[-1]:
C=(yc.iloc[t,tau]-yc.iloc[t,tau-1])/(tenor[tau]-tenor[tau-1])*dt
else:
C=(yc.iloc[t,tau+1]-yc.iloc[t,tau])/(tenor[tau+1]-tenor[tau])*dt
yc.iloc[t+1,tau]=A+B+C
yc_list.append(yc)
return yc_list
N=1
YieldCurve_Simulator(N,yc0,df)
本社区仅针对特定人员开放
查看需注册登录并通过风险意识测评
5秒后跳转登录页面...