Use a função uniroot para encontrar o YTM
Tentar e errar é um processo bem trabalhoso. Uma alternativa é usar um algoritmo que faça esse trabalho por você. Neste caso específico, a solução do problema é a mesma que encontrar a raiz de uma função.
Neste exercício, você vai usar a função unrioot() para encontrar a raiz.
A função uniroot() exige que você defina um vetor de fluxos de caixa, cf, que comece com o preço do título (como um número negativo) como primeiro elemento e os fluxos de caixa que você espera receber do título (ou seja, pagamentos de cupom e principal) como os elementos restantes.
Lembre-se de que o preço do título é $95,79 e que ele tem valor de face de $100, taxa de cupom de 5% e 5 anos até o vencimento.
Este exercício faz parte do curso
Avaliação e Análise de Títulos em R
Instruções do exercício
- Crie um vetor de fluxos de caixa,
cf, que inclua o preço inicial do título (negativo) e os pagamentos até o vencimento (positivos). - Use o código pré-escrito para criar uma função simples de avaliação de títulos,
bval(), que calcula o valor do título em cada período. - Use o código pré-escrito para criar a função
ytm()usandouniroot(). - Use
ytm()com seu vetorcfpara encontrar o yield to maturity do título.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Create cash flow vector
cf <- c(___, ___, ___, ___, ___, ___)
# Create bond valuation function
bval <- function(i, cf,
t=seq(along = cf))
sum(cf / (1 + i)^t)
# Create ytm() function using uniroot
ytm <- function(cf) {
uniroot(bval, c(0, 1), cf = cf)$root
}
# Use ytm() function to find yield