; 4.2.scm ; 2024-10-06 ; $Id: 4.2.scm 1.1 2024/10/26 13:59:03 s Exp $ ; s , current spot rate curve ; s2, next year's spot rate curve (use gauche.array) (define (main args) ; procedure ; (1+s_j)^j=(1+s_i)^i*(1+f_ij)^(j-i)) p.97, forward rate formula ; i=1 p.100, ll.12-14. ; (1+s_j)^j=(1+s_1)^1*(1+f_1j)^(j-1) ; (1+s_1)^1*(1+f_1j)^(j-1)= (1+s_j)^j ; (1+f_1j)^(j-1)=[(1+s_j)^j/(1+s_1)] ; (1+f_1j) =[(1+s_j)^j/(1+s_1)]^(1/(j-1)) ; f_1j =[(1+s_j)^j/(1+s_1)]^(1/(j-1))-1 (define f_1 (^j (- (expt (/ (expt (+ 1 (ref s j)) j) (+ 1 s_1)) (/ 1 (- j 1))) 1))) ; input (define s_percent (list 0.0 5.0 5.3 5.6 5.8 6.0 6.1)) ; calculating (define s (map (^x (/ x 100)) s_percent)) (define s_1 (ref s 1)) (define f (cons 0.0 (map (^j (f_1 j)) (iota (- (length s) 2) 2)))) (define s2_percent (map (^x (* x 100)) f)) ; output (print "4.2.scm") (print "current spot rate curve") (print "s " s_percent) (print "next year's spot rate curve") (print "s'" (map (^x (/ (round (* x 10)) 10)) s2_percent)) 0) ; end