最近老师布置了作业要求用VBA来求出HO-LEE模型和BDT模型的二叉树。花了两天时间扫了一个VBA的基础知识现在做HO-LEE模型果然卡壳了T-T
先把我现在乱写的程序贴出来:
Sub HoLeeModel()
Dim tp, sigma, B0 As Double
Dim B(0 To 4, 1 To 5), r(0 To 4, 1 To 5), y(1 To 5), u(0 To 3) As Double
'tp=time period
'sigma=波动率
'B0=用即期利率定价的B0
'B(a,b)=计算用B
'r(tp,b)=利率
'y(tp)=即期利率:tp=0时,y(tp)=4%
'赋值
sigma = 0.08
y(1) = 0.04
y(2) = 0.045
y(3) = 0.05
y(4) = 0.055
y(5) = 0.06
For tp = 1 To 4
B0 = Exp(-(tp + 1) * y(tp + 1))
i = tp
'最后一列利率和价格表达
For j = 1 To tp
r(i, j) = r(i - 1, j) + u(i - 1) + sigma
B(i, j) = Exp(-r(i, j))
Next j
j = j + 1 '最后一个利率和价格
r(i, j) = r(i - 1, j - 1) + u(i - 1) - sigma
B(i, j) = Exp(-r(i, j))
'倒推回B0
For i = tp To 1 Step -1
For j = 1 To i
B(i - 1, j) = 0.5 * (B(i, j) + B(i, j + 1)) * Exp(-r(i - 1, j))
Next j
Next i
'至此得到B(0,1)
'通过某种方式解出了U(i-1)
'进行下一个TIME PERIOD的循环
Next tp
按照我写的这段程序,因为U(i-1)没有赋过值所以程序必然运行不出结果的。
请问各位VBA高手:要求出U(i-1)是需要用线性插值的办法做出来么?还是VBA有一套其他的方法能求解未知数呢?是否我这种先把未知数代入r(i,j)这样的公式的做法是错误的?