# [R] 'R' and 'Yield to Maturity'

S Ellison S.Ellison at lgc.co.uk
Mon Feb 1 12:41:58 CET 2010

```If you know the likely range, uniroot would do it.

f.ytm<-function(ytm) 100 / (1+ytm)  +100 / ((1+ytm)^2) + 1100 / ((1 +
ytm)^3) -1010

uniroot(f.ytm, interval=c(0,25))

>>> "Craig P. Pyrame" <crappyr at gmail.com> 01/02/2010 10:19 >>>
> Dear R helpers
>
> I am calculating the 'Yield to Maturity' for the Bond with following
characteristics.
>
> Its a \$1000 face value, 3 year bond with 10% annual coupon and is
priced at 101. The yield to maturity can be calculated after solving the
equation -
>
> 1010 = [100 / (1+ytm)]  + [100 / (1+ytm)^2] + [ 1100 / (1 + ytm)^3]
>
> This can be solved by trial and error method s.t. ytm = 9.601%.
>

Why don't you use sage, for example:

sage: var('ytm');
sage: eqn = 1010 == (100/(1+ytm) + 100/(1+ytm)^2 + 1100/(1+ytm)^3);
sage: [solution.right().n() for solution in solve(eqn, ytm)]
0.0960070882662794

The third value is the only real solution.
There may be an R package for doing that, but I don't know one.

Best regards,
Craig

>
> My query is (1) if there is any R package which will calcualte ytm or
(2) is there any method in 'R' which can solve the above equation.
>
> Thanking you all in advance
>
> Regards
>
>
>
>
>
>
>       Your Mail works best with the New Yahoo Optimized IE8. Get it
> 	[[alternative HTML version deleted]]
>
>
>
------------------------------------------------------------------------
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help