我正在尝试使用R的splinefun {stat} s包中的spline()函数在matlab中复制spline()函数,而无法完全访问matlab(我没有许可证)为了它)。我能够将所有必要的数据输入到mat中存在的R中,但是我的样条输出与matlab的平均值不同.0036(maxdif是.0342,mindif是-.0056,stdev是.0094)。我的主要问题是,matlab的公式与R&s相比如何?我的计算差异可能来自何处?
我的代码的第一部分是将excel电子表格输入到R中,然后计算必要的变量以获得tau和快速增量。在此之后,我运行样条计算,然后旋转输出以便导出回excel。下面是必要的脚本,加上一些数据可以尝试查看我的计算中是否存在缺陷。我使用样条曲线(自然),因为它将最接近的值返回给matlab的模型。
#establishing what tau is for quick Delta calculation
today<-Sys.Date()
month<-as.Date(5/1/2016)
difday<-difftime(month,today,units=c("days"))
Tau<-as.numeric((month-today)/365)
Pu<-as.numeric(1.94)
Vol<-as.numeric(.4261)
#Pf is the representation of my fixed strike prices, the points used for interpolation
Pf<-c(Pu-.3,Pu-.25,Pu-.2,Pu-.1,Pu,Pu+.1,Pu+.2,Pu+.25,Pu+.3)
qDtable<-data.frame(matrix(ncol=length(Pf),nrow=length(month)))
colnames(qDtable)<-c(Pf)
rownames(qDtable)<-format.Date(month)
#my quick Delta calculation & table as a result
qD<-data.frame(pnorm(log(Pf/Pu)/(Vol*sqrt(Tau))))
Qd<-t(qD[1:24,1])
qDtable[1,]=c(Qd)
#setting up for spline interpolation
qDpoint<-as.numeric(qDtable[1,1:24])
ncsibyPf<-data.frame(matrix(ncol=length(Pf),nrow=length(month)))
colnames(ncsibyPf)<-Pf
rownames(ncsibyPf)<-format.Date(month)
qDvol<-data.frame(matrix(ncol=14,nrow=2)
colnames(qDvol)<-c("",0,.05,.1,.2,.3,.4,.5,.6,.7,.8,.9,.95,1)
rownames(qDvol)<-format.Date(month)
qDvol[2,2:14]<-c(.59612,.51112,.46112,.45612,.44612,.42612,.42612,.42612,.42612,.42612,.42612,.42612,.42612)
#x is the quick Vol point
x<-as.numeric(qDvol[1,2:14])
#y is the vol at the quick Vol point
y<-as.numeric(qDvol[2,2:14])
ncsivol<-data.frame(spline(x,y,xout=qDpoint,method="natural"))
nroutput<-t(ncsivol[1:24,2])
ncsibyPf[1,]=c(nroutput)
此样条曲线运行的基本数据点都包含在内(我认为),所有内容都应正确排列。提前感谢您的帮助!