Calcule o rendimento de um título até o vencimento com VBA

Calcule o rendimento de um título e resgate de uma ligação através do método de bisseção e VBA. Outrossim, o rendimento até o vencimento de um título não é dado por uma equação simples e explícita. Como resultado, você precisa de métodos iterativos para retroceder a fórmula de precificação de títulos.

Do mesmo modo, a função TAXA do Excel, calcula iterativamente os rendimentos dos títulos. No entanto, você pode querer calcular essa quantidade com um pequeno código VBA e criar sua própria fórmula.

Usando VBA para calcular o rendimento de um título

Mas por que usar o VBA quando a fórmula TAXA resolve? Bem, existem vários bons motivos.

Calcule o rendimento de um título até o vencimento com VBA
  1. Você aprende a teoria por trás do método de bisseção e aplica os conceitos a um problema prático.
  2. Você pode aproveitar seu novo conhecimento para resolver outros problemas numéricos complicados, como o cálculo da volatilidade implícita em um rendimento.
  3. Você ganha familiaridade com o VBA - uma ferramenta amplamente usada em negócios e finanças.

Essa equação descreve o preço de um título.

C(1 + R)-1 + C(1 + R)-2 + . . . + C(1 + R)-N + B(1 + R)-N = P

Onde:

C = pagamento anual do cupom.
N = número de anos até o vencimento.
B = valor nominal.
P = preço de compra.

Veja outra equação para rendimento de um título.

Esta equação não pode ser rearranjada para dar i. Logo e seguida, mostrarei um pouco de VBA que aplica o método de bisseção para resolver esta equação para i

Calcular rendimento de um título até o vencimento

Onde temos:

  • C é o cupom
  • i é o rendimento até o vencimento
  • M é o valor nominal
  • F é a frequência de pagamento
  • n é o número de pagamentos

Copie e cole a tabela a seguir, na célula A1 em uma nova planilha de Excel.

Calcular Rendimentos de um título.
DadosDescrição do rendimento
20Anos até a maturidade
6Frequência de Pagamento
 R$             15.000,00Valor nominal
8,45%Taxa anual de cupons
 R$               2.300,00Valor presente
=A4*TAXA(A3*A4;A5*A6/A4;-A7;A5;0)Rendimento até o vencimento usando TAXA
=RendimentoDaMaturidade(A5;A3;A6*A5;A7;A4)Rendimento da maturidade usando VBA e Bisseção

Use o código VBA a seguir. Copie e cole na área do Visual Basic Applications de sua pasta de trabalho. Depois acrescentes as seguintes funções para calcular o rendimento de um título no Excel.

Function BondPrice(ParValue As Double, NumeroDePagamento As Double, RendimentoDaMaturidade As Double, Coupon As Double, Frequency As Double)
 
BondPrice = Coupon / Frequency * (1 - 1 / (1 + RendimentoDaMaturidade / Frequency) ^ (NumeroDePagamento * Frequency)) / (RendimentoDaMaturidade / Frequency) _
+ ParValue / (1 + RendimentoDaMaturidade / Frequency) ^ (NumeroDePagamento * Frequency)
 
End Function


Function RendimentoDaMaturidade( _
 ByVal ParValue As Double, _
 ByVal NumeroDePagamento As Double, _
 ByVal Coupon As Double, _
 ByVal Price As Double, _
 ByVal Frequency As Double) As Double
 
 Dim epsilonABS As Double
 Dim epsilonSTEP As Double
 Dim iMid As Double
 Dim niter As Integer
 Dim iLower As Double
 Dim iUpper As Double
 
 epsilonABS = 0.0000001
 epsilonSTEP = 0.0000001
 niter = 0
 iLower = 0.0000001
 iUpper = 1
 
 Do While niter < 100 _
 Or iUpper - iLower >= epsilonSTEP _
 Or Abs(BondPrice(ParValue, NumeroDePagamento, iLower, Coupon, Frequency) - Price) >= epsilonABS _
 And epsilonABS <= Abs(BondPrice(ParValue, NumeroDePagamento, iUpper, Coupon, Frequency) - Price) >= epsilonABS
 iMid = (iLower + iUpper) / 2
 If Abs(BondPrice(ParValue, NumeroDePagamento, iMid, Coupon, Frequency) - Price) <= epsilonABS Then
 Exit Do
 ElseIf ((BondPrice(ParValue, NumeroDePagamento, iLower, Coupon, Frequency) - Price) * (BondPrice(ParValue, NumeroDePagamento, iMid, Coupon, Frequency) - Price) < 0) Then
 iUpper = iMid
 Else
 iLower = iMid
 End If
 niter = niter + 1
 Loop
 
 RendimentoDaMaturidade = iLower
 
End Function

O código contém duas funções.

BondPrice (ParValue, NumeroDePagamento, RendimentoDaMaturidade, Cupom, Frequência). Isso calcula o preço de um título.
RendimentoDaMaturidade (ParValue, NumeroDePagamento, Cupom, Preço, Frequência). Esta função resolve o BondPrice para dar o rendimento até o vencimento.

Você pode alterar o código, assim como os dados da tabela, para ver a correta funcionalidade.

E mais...

Compre Aqui pelo menor preço: NotebooksSmartphonesLivros e tudo que você precisa. Receba suas compras rapidamente!
Você também pode comprar Microsoft 365 Family, Microsoft 365 Personal, Office 365 Home, ou Office Professional Plus.


Confira Estes Produtos Que Eu Recomendo

Compre Planilhas de Excel

Confira os Preços

Climatizador de Ar

Condira os Preços

Notebook DELL Inspiron

Confira os Preços

Celular da Marca Xiaomi

Confira os Preços

Notebook Lenovo IdeaPad

Confira Os Preços

Smartphone Samsung Galaxy

Confira os Preços

Aspirador de Pó Robô

Confira os Preços

Os Melhores Ventiladores

Confira os Preços

Notebook Gamer

Confira os Preços

Materiais para Escritórios

Confira os Preços

Impressora Multifuncional de Tinta

Confira os Preços

Smart TV Samsung de 32 a 70

Confira os Preços

Edivaldo
Edivaldo

Edivaldo. Analista de funções e fórmulas de Excel, adoro fazer planilhas e compartilhar meus conhecimentos com as pessoas. Seja bem-vindo ao tudo Excel, onde você aprende de graça e tira suas dúvidas.

Escreva comentários, perguntas, ou sugestões:

Escreva seu Comentário

Tudo Excel
Logo