O objetivo do livro é construir uma intuição de como derivar fórmulas para cálculos de juros, fluxos de caixa e sistemas de amortização a partir de relações básicas, ao mesmo tempo em que demonstra como implementar em uma linguagem de programação.
Este livro acompanha código-fonte na linguagem clojure
, que serve de suporte para as demonstrações e implementa as funções básicas de matemática financeira.
Todas as fórmulas incluídas no livro são geradas a partir da definição canônica destas funções, e renderizadas em LaTeX utilizando a biblioteca sicmutils
. O código-fonte do próprio livro está disponível em formato org-mode
para emacs
, e pode ser explorado de forma interativa seguindo as instruções de instalação.
Dado o capital (ou valor presente)
Exemplo:
Um capital de $ 1000 aplicado durante um ano a uma taxa de 22% ao ano.
- O juro é dado por:
(* 1000 0.22M)
- O montante ao fim do período é dado por:
(* 1000 1.22M)
- O capital que deve aplicar-se para obter $ 1220 à mesma taxa é:
(/ 1220 1.22M)
- E a taxa de juros pode ser inferida por:
(- (/ 1220 1000) 1M)
Neste exemplo, o período da taxa
É o regime de capitalização em que aplica-se a taxa
Por analogia, faz-se a operação inversa para descontar a taxa
Portanto, o fator de capitalização para juros simples é a função linear:
Exemplo:
Um capital de $ 1000 aplicado a uma taxa de 8% ao mês segue a progressão:
Portanto, o montante ao fim de 3 meses equivale a:
(* 1000 ((simple 0.08M) 3))
E o capital que equivale a este montante (ou ainda, o valor futuro trazido a valor presente) na mesma taxa é:
(/ 1240 ((simple 0.08M) 3))
É o regime de capitalização em que aplica-se a taxa
Por analogia, faz-se a operação inversa para descontar a taxa
Portanto, diferente dos juros simples, o fator de capitalização para juros compostos é a função não-linear:
Exemplo:
Um capital de $ 1000 aplicado a uma taxa de 8% ao mês segue a progressão:
Portanto, o montante ao fim de 3 meses equivale a:
(* 1000 ((compound 0.08M) 3))
E o capital que equivale a este montante (ou ainda, o valor futuro trazido a valor presente) na mesma taxa é:
(/ 1259.7M ((compound 0.08M) 3))
Para aplicações que duram
Exemplo:
Uma capital de $ 1000 é aplicado a uma taxa progressiva de 2%, 4%, 6%, 8%, … ao ano, conforme o tempo em que permanece aplicado.
Qual será o montante para cada ano aplicado, durante os 5 primeiros anos?
O fator de capitalização para essa taxa progressiva é dado por:
Portanto:
(let [f (fn [n] (+ 1 (* 0.02M (expt n 2))))]
(mapv #(fv f % 1000) (range 1 6)))
Quando a aplicação dura
Exemplo:
Assumindo uma taxa
- No caso do regime de juros simples, não há diferença entre frequências de capitalização diferentes.
((simple 1) 1.0) ((simple (/ 1 12)) 12.0) ((simple (/ 1 360)) 360.0) ((simple (/ 1 365)) 365.0)
- No caso do regime de juros compostos, uma maior frequência de capitalização representa um rendimento maior:
((compound 1) 1) ((compound (/ 1 12)) 12.0) ((compound (/ 1 360)) 360.0) ((compound (/ 1 365)) 365.0)
É possível observar que conforme aumenta a frequência de capitalização, aproximamos a função exponencial:
((compound (/ 1 365)) 365.0) (exp 1)
Quando generalizamos o fator de capitalização, a fórmula para inferir a taxa
Exemplo:
Um capital de $ 1000 foi aplicado durante 12 meses a uma taxa nominal de 12% ao ano a juros compostos.
Qual foi a taxa efetiva neste ano?
(rate ((compound (/ 0.12M 12)) 12))
São equivalentes as taxas nominais
Exemplo:
Qual a taxa mensal equivalente a 21% ao ano:
- A juros simples?
(* 0.21M 1/12)
Prova:
(rate ((simple 0.017500M) 12))
- A juros compostos?
(- (expt (+ 1 0.21M) 1/12) 1)
Prova:
(rate ((compound 0.01602M) 12))
Quando a taxa de juros varia ao longo do tempo, podemos generalizar o fator de capitalização para um vetor de taxas
Substituindo
Exemplo:
Em três meses consecutivos, uma aplicação de $ 16000 rendeu 1.3%, 1.7% e 2.1%.
Dada a função compound-index
que retorna o produto das taxas:
((compound-index ['i_1 'i_2 'i_3]) 'n)
- Qual o valor do rendimento?
(let [i (compound-index [0.013M 0.017M 0.021M])] (interest i 3 16000))
- Qual a taxa efetiva no trimestre?
(let [c 16000 i (compound-index [0.013M 0.017M 0.021M])] (rate (fv i 3 c) c))
Quando precisamos corrigir uma taxa
Ou ainda, generalizando para
Exemplo:
Em três semestres consecutivos, uma aplicação rendeu 1%, 2% e 5%. Sabendo que o imposto de renda segue alíquotas semestrais progressivas de 22.5%, 20% e 17.5%, qual foi a taxa de rendimento líquido?
Primeiro, calculamos a taxa real de rendimento de cada mês, considerando o imposto de renda:
(let [interest [0.01M 0.02M 0.05M]
;; Recolher a alíquota equivale a render (1 - alíquota)
tax [(- 1 0.225M) (- 1 0.20M) (- 1 0.175M)]]
(mapv * interest tax))
Então, calculamos a taxa efetiva nos três semestres:
(let [i (compound-index [0.00775M 0.0160M 0.04125M])]
(rate (i 3)))
Provando pela definição:
(let [interest ['i_1 'i_2 'i_3]
tax [(- 1 't_1) (- 1 't_2) (- 1 't_3)]
i (compound-index (mapv * interest tax))]
(align (eq 'i_e (rate (i 'n)))))
Denomina-se fluxo de caixa, de forma genérica, o conjunto de entradas e saídas de capitais de uma operação ao longo do tempo.
É útil representá-lo graficamente com o diagrama de fluxo de caixa, onde o eixo horizontal representa a dimensão do tempo, as setas para cima as entradas de capital, e as setas para baixo as saídas de capital.
Exemplo:
Considere os capitais
Pelas definições anteriores de valor futuro e valor presente, serão equivalentes os capitais
- a juros simples:
- a juros compostos:
- variável:
Ou de forma geral, para qualquer fator de capitalização
Por analogia, se considerarmos o mesmo capital
… e algum fator de capitalização
Ou seja, um capital de $ 1000 hoje vale mais do que $ 1000 no futuro devido ao seu potencial de rendimento a uma taxa apropriada. Da mesma forma, o adiantamento de um capital de $ 1000 que a princípio seria pago no futuro deve ser descontado a uma taxa apropriada.
Esse conceito fundamental recebe o nome valor do capital no tempo.
Dada uma operação com o seguinte fluxo de caixa:
Então, pela definição de equivalência de capitais, podemos generalizar as equações de valor presente
Exemplo:
Uma operação prevê o pagamento de $ 2000, $ 3000 e $ 5000 em três meses consecutivos:
Qual o menor capital que, aplicado a uma taxa de 1.5% ao mês, faz frente a estes pagamentos?
(let [f (compound 0.015M)
cf [2000 3000 5000]]
(reduce + (map-indexed #(pv f (+ %1 1) %2) cf)))
Prova:
- No primeiro mês de aplicação, obtemos o montante:
(fv (compound 0.015M) 1 9664M)
- Se retiramos $ 2000 e aplicamos o restante por mais um mês, obtemos:
(fv (compound 0.015M) 1 (+ 9809M -2000M))
- Se retiramos mais $ 3000 e aplicamos o restante por mais um mês, obtemos:
(fv (compound 0.015M) 1 (+ 7926.1M -3000M))
Obtendo então o seguinte fluxo de caixa da aplicação:
Que se somado ao fluxo de caixa dos pagamentos:
Equivale ao fluxo de caixa líquido:
Dada uma operação com o seguinte fluxo de caixa:
Podemos analisar a rentabilidade (ou valor presente líquido)
- Se
${NPV} > 0$ , a operação é rentável; - Se
$NPV \leq 0$ , a operação não é rentável;
Amortização é o processo de pagamento de uma dívida em pagamentos periódicos programados, de modo que ao fim do prazo tenha-se reembolsado o capital, o juro, ou ambos. Denomina-se por sistema de amortização um programa de pagamentos em particular.
É o sistema onde cada pagamento reembolsa uma fração igual do capital, mais o juro sobre o saldo devedor no período.
Ou seja, a amortização
E o fluxo de caixa
Exemplo:
Para um desembolso de $ 1000 a uma taxa de 10% ao mês reembolsado em 3 pagamentos, o fluxo de caixa esperado é:
Em formato tabela:
Pagamentos | Amortizações | Juros | Saldo |
1000 | 0 | 0 | 1000 |
-433.33M | -333.33M | 100.00M | 666.67M |
-400.00M | -333.33M | 66.67M | 333.34M |
-366.67M | -333.33M | 33.34M | 0.01M |
É o sistema onde cada pagamento reembolsa uma parte do capital e juro sobre o saldo devedor, de modo que todos os pagamentos sejam de igual valor.
Para isso, primeiro determinamos o valor dos pagamentos através da fórmula:
Assim, o fluxo de caixa
Exemplo:
Para um desembolso de $ 1000 a uma taxa de 10% ao mês reembolsado em 3 pagamentos, o fluxo de caixa esperado é:
Em formato tabela:
Pagamentos | Amortizações | Juros | Saldo |
1000 | 0 | 0 | 1000 |
-402.11M | -302.11M | 100.00M | 697.89M |
-402.11M | -332.32M | 69.79M | 365.57M |
-402.11M | -365.55M | 36.56M | 0.02M |
Quando o primeiro pagamento não ocorre em um período inteiro, mas em
Exemplo:
Qual o valor do pagamento para um desembolso de $ 1000 a uma taxa de 10% ao mês, reembolsado em 3 pagamentos, com o primeiro pagamento em 2 meses?
(* (fv (compound 0.1M) 2 1000M) (pmt (compound 0.1M) 3))
Assim, o programa de pagamentos fica:
Pagamentos | Amortizações | Juros | Saldo |
1210.0M | 0.0M | 0.0M | 1210.0M |
-486.55M | -365.55M | 121.00M | 844.45M |
-486.55M | -402.10M | 84.45M | 442.35M |
-486.55M | -442.31M | 44.24M | 0.04M |