# 10.11.jl # 2024-10-12 # $Id: 10.11.jl 1.1 2024/11/03 07:04:33 s Exp $ # # a : amount # d : discount factor, d[k] = d(0,k) # f : forward rate, f[k] = f(k-1,k) # g(r) : pv2 - pv1 # pv1 : present value in variable rate # pv2 : present value in fixed rate # r : fixed rate # s : spot rate, s[k] = s(k) # x : cash flow in variable rate, x[0] = x(k) # y : cash flow in fixed rate, y = a * r using Printf function g(a,r,pv1) # g=pv2-pv1 d1= 1 / (1 + r) ^ 1 d2= 1 / (1 + r) ^ 2 d3= 1 / (1 + r) ^ 3 d4= 1 / (1 + r) ^ 4 d5= 1 / (1 + r) ^ 5 d6= 1 / (1 + r) ^ 6 y = a * r y * (d1 + d2 + d3 + d4 + d5 + d6) - pv1 end # input s = [0.070, 0.073, 0.077, 0.081, 0.084, 0.088] f = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] a = 1000.0 n = length(s) # calculation for i = 1:n if i == 1 f[1] = s[1] else f[i] = (1 + s[i]) ^ i / (1 + s[i - 1]) ^ (i - 1) - 1 end end x = a .* f i = 1:n d = 1 ./ (1 .+ s) .^ i pv1 = sum(x .* d) r = 0 for i = 8700: 8900 global r = i / 1e5 if g(a,r,pv1) > 0 break end end # output println("10.10.jl") println("a ", a) println("s ", round.(s, digits=3)) println("f ", round.(f, digits=3)) println("x ", round.(x, digits=3)) println("d ", round.(d, digits=3)) println("pv1 in variable rates ", pv1) println("(r, g(r))= (", r,", ", g(a,r,pv1),")") # end