R の splinefun {stat} s パッケージの spline() 関数を使用して、matlab の spline() 関数をレプリケートしようとしていますが、matlab に完全にアクセスできません (ライセンスがありません)。matlab に存在するすべての必要なデータを R に入力できますが、私のスプライン出力は matlab のものと平均 .0036 異なります (maxdif は .0342、mindif は -.0056、stdev は .0094)。 . 私の主な質問は、matlab の数式が R の数式とどのように比較されるかということです。それが私の計算の不一致の原因でしょうか?
私のコードの最初の部分は、Excel スプレッドシートを R に入力してから、タウとクイック デルタを取得するために必要な変数を計算することです。この後、スプライン計算を実行し、Excel にエクスポートする目的で出力を回転させます。以下は、基本的なスクリプトと、私の計算に何か問題があるかどうかを確認するためのいくつかのデータです。matlab のモデルに最も近い値を返すため、spline(natural) を使用します。
#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)
このスプライン実行に必要なデータ ポイントはすべて含まれており (私が思うに)、すべてが正しく整列しているはずです。事前にご連絡いただきありがとうございます。