'Функция VBA рассчитывает форвардную ставку на 1 год через 0,5, 1, 1,5 и 2 года и т. Д. Все результаты равны нулю;нет ошибок, просто нули.Кто-нибудь может посоветовать, где я иду не так.Спасибо
Function OneYearFwdRates(Mty As Range, Spots As Range) As Variant
Dim Maturities()
ReDim Maturities(Mty.Rows.Count) 'Mty is the range of maturities'
Dim SpotRates()
ReDim SpotRates(Spots.Rows.Count) 'Spots is the range of spot rates'
Dim OYFR() 'OYFR stands for One Year Forward Rates'
ReDim OYFR(Spots.Rows.Count)
Dim i
For i = 2 To Spots.Rows.Count - 2
OYFR(i) = (1 + SpotRates(i + 2)) ^ (Maturities(i + 2)) _
/ (1 + SpotRates(i)) ^ (Maturities(i)) - 1
Next i
OneYearFwdRates = OYFR
End Function
Ниже приведена таблица.Я хочу заполнить синюю колонку с заголовком «Форвардные ставки» f (x, 1) приведенным выше кодом
Forward Rate
Maturity Spot Rate f(x,1)
0.00 0.0200
0.5 0.0218
1.0 0.0231
1.5 0.0243
2.0 0.0253
2.5 0.0261
3.0 0.0268
3.5 0.0273
4.0 0.0277
4.5 0.0281
5.0 0.0284
5.5 0.0287
6.0 0.0289
6.5 0.0291
7.0 0.0293
7.5 0.0295
8.0 0.0296
8.5 0.0298
9.0 0.0299
9.5 0.0300
10.0 0.0301
10.5 0.0302
11.0 0.0303
11.5 0.0303
12.0 0.0304
12.5 0.0304