 VB.NET - Funções Financeiras
 
VB.NET - Funções Financeiras
|  | O VB.NET apresenta em seu arsenal de classes diversas funções financeiras que podem ser usadas para cálculos financeiros. Aqui estarei apresentando um resumo das principais funções , suas propriedades e uso. | 
Vou começar com as funções que retornam parâmetros básicos para um cálculo financeiro.
Ao trabalho...
lPmt
     namespace -
Microsoft.VisualBasic.Financial 
IPmt(rate, per, nper, pv[, fv[, due]])
rate
(requerido,Double) - a taxa de juros por período.
per (requerido,Double) - o período no qual o
pagamento será computado.
nper
 (requerido;Double)
- número total de pagamentos no período.
pv
 (requerido;Double)
- o valor atual de uma série de pagamentos futuros.
fv
 
(opcional;Double)
- o valor futuro ou balanço de caixa de um pagamento final. Se
omitido o valor padrão é zero.
due
 (opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é  
DueDate.EndOfPeriod.
DueDate.EndOfPeriod ou 0 : indica que o pagamento são devidos no final do período de pagamento
DueDate.BegOfPeriod ou 1 : indica que o pagamento são devidos no início do período
Valor de Retorno : retorna um Double representando o valor do pagamento dos juros sobre o capital investido/emprestado para um período de uma anuidade. Uma anuidade é uma série de pagamentos fixos feitos sobre um período de tempo.
Suponha que você tenha emprestado R$ 30.000,00 a uma taxa de juros anual de 11,5% para ser pago em 3 anos com pagamentos feitos no final de cada mês. Vamos calcular o valor do pagamento mensal e total que você dever receber sobre o capital no período.
Para resolver o problema basta aplicar a função : IPmt(rate, per, nper, pv[, fv[, due]])
Vamos então identificar o valor de cada argumento:
rate
- a taxa de juros mensal é obtida dividindo-se a taxa de juros
anual por 12 => 0.115/12
per - o período deverá estar compreendido
entre 1 e 36 ( 3 anos)
nper - o número de pagamentos => 36 
pv - o valor atual => 30.000,00
fv - será omitido => 0
due - o pagamento será feito no ínicio de cada
mês => 1
Teremos então : lPmt(0.009583333, 1-36, 36, -30.000, 0, 1)
| Sub Main()
     'IPmt(rate, per, nper, pv[, fv[, due]])
     'lPmt(0.009583333, 1-36, 36, -30.000, 0, 1)
     Dim pv, fv, nper As Double
     Dim rate, Pagamento, Total As Decimal
     pv = 30000
     fv = 0
     Rate = 0.115 / 12
     nper = 3 * 12
     Dim per As Integer
     For per = 1 To nper
         Pagamento = IPmt(rate, per, nper, -pv, fv, 1)
         Console.WriteLine(" mês " & per & " : " & Pagamento)
         Total = Total + Pagamento
     Next
     Console.WriteLine("Total dos juros no período : " & Total)
     Console.ReadLine()
 End Sub |  | 
O primeiro pagamento é de r$ 278,10 e o último pagamento é menor que R$ 10,00. O total pago é R$ 5.276,02 sobre o capital.
PPmt
     namespace -
Microsoft.VisualBasic.Financial 
PPmt(rate,
per, 
nper,
pv[, 
fv[,
due]])
rate
(requerido,Double) - a taxa de juros por período.
per (requerido,Double) - o período no qual o
pagamento será computado.
nper
 (requerido;Double)
- número total de pagamentos no período.
pv
 (requerido;Double)
- o valor atual de uma série de pagamentos futuros.
fv
 
(opcional;Double)
- o valor futuro ou balanço de caixa de um pagamento final. Se
omitido o valor padrão é zero.
due
 (opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é  
DueDate.EndOfPeriod.
Valor de Retorno : retorna um Double representando o pagamento do principal investido/aplicado para um dado período de um anuidade.
Para calcularmos o pagamento do principal para o exemplo anterior usamos a função : PPmt(0.009583333, 1-36, 36, -30.000, 0, 1)
| Module Module1     Sub Main()
        'PPmt(rate, per, nper, pv[, fv[, due]])
        'lPmt(0.009583333, 1-36, 36, -30.000, 0, 1)
        Dim pv, fv, nper As Double
        Dim rate, Pagamento, Total As Decimal
        pv = 30000
        fv = 0
        Rate = 0.115 / 12
        nper = 3 * 12
        Dim per As Integer
        For per = 1 To nper
            Pagamento = PPmt(rate, per, nper, -pv, fv, 1)
            Console.WriteLine(" mês " & per & " : " & Pagamento)
            Total = Total + Pagamento
        Next
        Console.WriteLine("Total do pagamento do principal : " & Total)
        Console.ReadLine()
    End SubEnd Module |  | 
O pagamento aumenta com o tempo . O valor total será igual ao montante do capital. O valor total incluindo os juros será a soma de lPmt() e PPmt().
Pmt
     namespace -
Microsoft.VisualBasic.Financial 
Pmt(rate,
nper, 
pv[,
fv[, 
due]])
rate
(requerido,Double) - a taxa de juros por período.
nper
 (requerido;Double)
- número total de pagamentos no período.
pv
 (requerido;Double)
- o valor atual de uma série de pagamentos futuros.
fv
 
(opcional;Double)
- o valor futuro ou balanço de caixa de um pagamento final. Se
omitido o valor padrão é zero.
due
 (opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é  
DueDate.EndOfPeriod.
Valor de Retorno : retorna um Double representando o pagamento(principal e juros) para uma anuidade baseada em um período com pagamentos e taxa de juros fixos.
| Module Module1     Sub Main()
        'Pmt(rate, nper, pv[, fv[, due]])
        'Pmt(0.009583333, 36 , 30000 , 0 , 1)
        Dim pv, fv, nper As Double
        Dim rate, Pagamento, Total As Decimal
        pv = 30000
        fv = 0
        Rate = 0.115 / 12
        nper = 3 * 12
        Dim per As Integer
        For per = 1 To nper
            Pagamento = Pmt(rate, nper, -pv, fv, 1)
            Console.WriteLine(" mês " & per & " : " & Pagamento)
            Total = Total + Pagamento
        Next
        Console.WriteLine("Total recebido no período : " & Total)
        Console.ReadLine()
    End SubEnd Module |  | 
FV     namespace
- Microsoft.VisualBasic.Financial 
FV(rate,
nper, 
pmt [,
pv
[, due]])
rate
(requerido,Double) - a taxa de juros por período.
nper
 (requerido;Double)
- número total de pagamentos no período.
pmt
 (requerido;Double)
- o pagamento feito em cada período.
pv
 
(opcional;Variant)
- o valor atual de um capital ou anuidade.
due
 (opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é  
DueDate.EndOfPeriod.
Valor de Retorno : retorna um Double representando o valor futuro de uma anuidade baseado em um número regular de pagamentos de um valor fixo e uma taxa de juros sobre o período da anuidade.
Vamos supor que você deseja calcular o valor futuro de um investimento com uma taxa de juros de 6,25% , 48 pagamentos mensais de R$ 180,00 , e um valor presente de R$ 12.000,00.
Vamos definir os argumentos para a função : FV(rate, nper, pmt [, pv [, due]])
rate - a taxa de juros =>
0,0625
nper - número de pagamentos => 48
pmt - pagamento feito em cada período => 180,00
pv - valor atual do capital => 12.000,00
due - no início do período => 1 (DueDate.BegOfPeriod)
Abaixo temos o código VB.NET:
| Module Module1     Sub Main()
        'FV(rate, nper, pmt [, pv [, due]])
        'Vamos supor que você deseja calcular o valor futuro de um investimento 
        'com uma taxa de juros de 6,25% ANUAL, 48 pagamentos mensais de R$ 180,00 , 
        'e um valor presente de R$ 12.000,00. 
        Dim pv, valor As Double
        Dim rate, pmt As Double
        Dim nper As Integer
        pmt = 180
        rate = 6.25 / 100
        nper = 48
        pv = 12000
        Console.WriteLine("Investimento      :  " + pv.ToString)
        Console.WriteLine("Taxa de juros     :  " + (rate / 12).ToString)
        Console.WriteLine("No de pagamentos  :  " + nper.ToString)
        Console.WriteLine("Valor pgto mensal :  " + pmt.ToString)
        Console.WriteLine("")
        valor = FV(rate / 12, nper, -pmt, -pv, DueDate.BegOfPeriod)
        MsgBox("Após " & nper & " meses seus retorno será de : R$ " & valor)
        Console.ReadLine()
    End Sub | 
|  | 
NPer     namespace
- Microsoft.VisualBasic.Financial 
NPer(rate,
pmt
, pv [,
fv [, due]])
rate
(requerido,Double) - a taxa de juros por período.
pmt
 (requerido;Double)
- o pagamento feito em cada período.
pv
 (opcional;Variant)
- o valor atual de uma série de pagamentos futuros.
fv
 
(opcional;Double)
- o valor futuro de uma série de pagamentos. Se omitido o valor
padrão é zero.
due
 (opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é  
DueDate.EndOfPeriod.
Valor de Retorno : retorna um Double representando o número de pagamentos periódicos para uma anuidade.
Vamos supor que você tome um empréstimo de R$ 25.000,00 a juros de 11,5% ao ano, e você deseja pagar R$ 450,00 por mês. Vamos calcular qual o número de pagamentos você precisará fazer para quitar o empréstimo.
Usando a função NPer(rate, pmt , pv [, fv [, due]]) teremos :
rate - a taxa de juros do
período => 0,115/12
pmt -
pagamento feito em cada período => 450,00
pv - valor atual do capital => 25.000,00
fv - o valor futuro de uma
série de pagamentos. Se omitido o valor padrão é zero.
due - no
início do período => 1 (DueDate.BegOfPeriod)
O código VB.NET é o seguinte:
| Module Module1     Sub Main()
        'NPer(rate, pmt , pv [, fv [, due]])
        'Vamos supor que você tome um empréstimo de R$ 25.000,00 a juros de 11,5% ao ano, 
        'e você deseja pagar R$ 450,00 por mês. Vamos calcular qual o número de pagamentos
        ' você precisará fazer para quitar o empréstimo. 
        '
        Dim pv, fv As Integer
        Dim rate, pmt As Double
        Dim Total As Integer
        fv = 0
        pv = 25000
        Rate = 0.115 / 12
        pmt = 450
        Total = NPer(rate, -pmt, pv, fv, DueDate.EndOfPeriod)
        If Int(Total) <> Total Then
            Total = Int(Total) + 1
        End If
        Console.WriteLine(" A duração do empréstimo será de : " & Total & " meses")
        Console.ReadLine()
    End SubEnd Module | 
O valor retornado para o exemplo será de 80 meses ou 6 anos e meio. Se o pagamento for aumentado de R$ 450,00 para R$ 500,00 a duração será reduzida para 68 meses.
Rate     namespace
- Microsoft.VisualBasic.Financial 
Rate(nper,
pmt
, pv [,
fv [, due[, guess]]])
nper
(requerido,Double) - representa o número total de pagamentos no período da 
anuidade.
pmt
 
(requerido;Double)
- o pagamento feito em cada período.
pv
 
(opcional;Variant)
- o valor atual de uma série de pagamentos futuros.
fv
 
(opcional;Double)
- o valor futuro de uma série de pagamentos. Se omitido o valor
padrão é zero.
due
 
(opcional,DueDat
enumeration) - valor que indica quando os pagamentos são
devidos. O valor padrão é 
DueDate.EndOfPeriod.
guess (opcional Variant) -especifica um valor estimado que será retornado pela taxa (rate). Se omitido o valor padrão é 0.1 (10 %)
Valor de Retorno : retorna um Double representando a taxa de juros para o período da anuidade.
A seguir um exemplo de código para cálculo da taxa de juros:
| Module Module1     Sub Main()
        'Rate(nper, pmt , pv [, fv [, due[, guess]]])
        Dim Fmt, FVal, Guess, valorFinanciado, valorPagamento, numeroPagamentos, tpPgto, taxa
        Const ENDPERIOD = 0, BEGINPERIOD = 1   ' Quando o pagamento será feito        Fmt = "##0.00" ' Define o formato da porcentagem. 
        FVal = 0       ' ususalmente zero para um financiamento
        Guess = 0.1    ' 10%.         valorFinanciado = InputBox("Quanto deseja financiar ?")
        valorPagamento = InputBox("Qual o valor do pagamento mensal ?")
        numeroPagamentos = InputBox("Quer pagar em quantos meses ?")
        tpPgto = MsgBox("Você vai realizar pagamentos no final do mês ? ", vbYesNo)        If tpPgto = vbNo Then
            tpPgto = BEGINPERIOD
        Else
            tpPgto = ENDPERIOD
        End Iftaxa = (Rate(numeroPagamentos, -valorPagamento, valorFinanciado, FVal, tpPgto, Guess) * 12) * 100         MsgBox("A taxa de juros é : " & Format(CInt(taxa), Fmt) & " % ")Console.ReadLine() End Sub | 
Já deu para sentir que o VB.NET fornece muitos recursos para cálculos financeiros. E não acabou , ainda existem as seguintes funções :
| Função | Retorno | 
| PV() | o valor presente de um investimento | 
| NPV() | o valor líquido de um investimento baseado em um série de fluxo de caixa periódicos e uma taxa de desconto | 
| IRR() | A taxa interna de retorno de um investimento | 
| MIRR() | A taxa interna modificada de retorno para uma série de fluxo de caixa periódicos | 
| DDB() | A depreciação de um bem para um período de tempo usando um método que você especificar. | 
| SLN() | A depreciação uniforme de um bem para um período simples | 
Então aguarde que voltarei ao assunto...

| Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? | 
  Gostou ?   Compartilhe no Facebook
Compartilhe no Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter 
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - Controle Financeiro Pessoal - Macoratti
C# - Calculadora de Empréstimos - EMI - Macoratti
VB .NET - Sistema para Controle Financeiro (Saldo Bancário) - Macoratti
VB .NET - Geração e controle de parcelamentos - Macoratti
ASP .NET Core - Gerenciador de Despesas Pessoais com ... - Macoratti
Calculadora financeira usando VBA - Macoratti
VB .NET - Agendamento de Eventos - Macoratti