diff --git a/B03898_05_Codes/bond_ytm.py b/B03898_05_Codes/bond_ytm.py index 9f17aaf..63fde34 100644 --- a/B03898_05_Codes/bond_ytm.py +++ b/B03898_05_Codes/bond_ytm.py @@ -2,6 +2,7 @@ README ====== This file contains Python codes. +Python 3.x ====== """ @@ -9,19 +10,17 @@ import scipy.optimize as optimize -def bond_ytm(price, par, T, coup, freq=2, guess=0.05): +def bond_ytm(price, par, maturity, coup, freq=2, guess=0.05): freq = float(freq) - periods = T*freq - coupon = coup/100.*par/freq + periods = maturity*freq + coupon = coup*par/freq dt = [(i+1)/freq for i in range(int(periods))] - ytm_func = lambda(y): \ - sum([coupon/(1+y/freq)**(freq*t) for t in dt]) + \ - par/(1+y/freq)**(freq*t) - price + ytm_func = lambda y: sum([coupon/(1+y/freq)**(freq*t) for t in dt]) + par/(1+y/freq)**(freq*maturity) - price return optimize.newton(ytm_func, guess) if __name__ == "__main__": ytm = bond_ytm(95.0428, 100, 1.5, 5.75, 2) - print ytm + print (ytm)