Capítulo 1 - Valor temporal do dinheiro#

1 - Spreads, bonds e taxas de juro#

# !pip install -r requirements.txt
Exercício 1.1

A tabela abaixo fornece informações sobre as taxas de juros para dois investimentos de dois anos e dois de oito anos. A tabela também fornece as características de maturidade, liquidez e risco de default de uma nova possibilidade de investimento (Investimento 3). Todos os investimentos prometem apenas um único pagamento (pagamento na maturidade). Suponha que os prémios relativos à inflação, liquidez e risco de incumprimento são constantes em todos os horizontes temporais.

Baseado na informação fornecida:

A. Explique a diferença entre as taxas de juro do investimento 1 e do investimento 2;

B. Estime o prémio de risco de incumprimento;

C. Calcule o valor máximo e mínimo da taxa de juro do investimento 3, \(r_3\)

Resolução

A. A diferença entre o investimento 1 e o investimento 2 é o prémio de liquidez, uma vez que a única diferença entre ambos os investimentos é que o investimento 1 tem uma liquidez alta e o investimento 2 tem baixa liquidez. Uma vez que \(r_1\) = 2% e \(r_2\)=2.5% podemos calcular o prémio de liquidez como sendo 0.5 pontos percentuais.

B Uma vez que sabemos qual é o prémio de risco de liquidez podemos fazer um hipotético investimento 6 para nos ajudar. O investimento 6 será em tudo semelhante ao investimento 4 excepto no risco de liquidez. \(r_4\) será 4.5% (4% + prémio de risco de liquidez).

Daqui podemos deduzir qual é o prémio de risco de incumprimento uma vez que é a diferença entre \(r_5\) e \(r_6\), ou seja, 2 pontos percentuais.

C. Sabemos que o investimento 3 não pode ter uma taxa mais alta que o investimento 6, uma vez que embora o risco de liquidez e de incumprimento seja o mesmo a maturidade do investimento 3 é inferior. Vamos por isso colocar 4.5% como o limite superior.

Por outro lado sabemos que o investimento 3 não poderá ter uma taxa mais baixa do que o investimento 2, uma vez que embora o risco de liquidez e de incumprimento seja o mesmo a maturidade do investimento 3 é superior. Vamos por isso colocar 2.5% como o limite inferior.

2.5% < \(r_3\) < 4.5%

2 - Valor futuro de um cash flow único#

Nesta secção, introduzimos o valor do tempo associado a um único fluxo de caixa ou montante fixo investimento. Descrevemos a relação entre um investimento inicial ou valor (VP), que ganha uma taxa de retorno (a taxa de juros por período) denotada como r, e o seu valor futuro (VF), que será recebido N anos ou períodos a partir de hoje.

Fórmula a perceber:

\(FV = PV \times (1 + r)^N\)

Transformando numa fórmula python:

def compute_FV_lump_sum(PV, r, N):
    '''
    FV = Future value / valor futuro
    PV = Present value / Valor presente
    r = Interest rate rate / Taxa de juro
    N = Número de períodos de capitalização
    '''
    FV = PV * (1+r)**N
    return FV
Exercício 1.2

Ganhamos uma lotaria 5 milhões de dólares após impostos. Investimos a totalidade num depósito a prazo de cinco anos no banco. O depósito promete pagar 7% ao ano compostos anualmente. O banco também nos permite reinvestir os juros a essa taxa durante o período. Quanto teremos no final dos cinco anos se o dinheiro permanecer investido a 7%, sem levantamentos?

Resolução

def compute_FV_lump_sum(PV, r, N):
    '''
    FV = Future value / valor futuro
    PV = Present value / Valor presente
    r = Interest rate rate / Taxa de juro
    N = Número de períodos de capitalização
    '''
    FV = PV * (1+r)**N
    return FV

FV = compute_FV_lump_sum(PV=5000000, r=0.07, N=5)

FV
7012758.653500002

2.1 - Frequência de capitalização#

Nesta secção, examinaremos os investimentos que pagam juros mais de uma vez por ano. Por exemplo, muitos bancos oferecem uma taxa de juros mensal que capitaliza de 12 vezes por ano. Neste formato, os bancos pagam juros sobre juros todos os meses. Contudo, em vez de dizerem a taxa de juros mensal periódica, as instituições financeiras costumam citar uma taxa de juros anual. A esta taxa de juros chamamos de taxa de juros anual declarada ou taxa de juros cotada com notação \(r_s\).

Por exemplo, um banco pode declarar que um determinado depósito a prazo paga 8% com capitalização mensal. A taxa de juros anual declarada é igual à taxa de juros mensal multiplicada por 12. Neste exemplo, a taxa de juros mensal a taxa é \(\frac{0,08}{12} = 0,0067\) ou 0,67%. Esta taxa é estritamente uma convenção de cotação porque \((1 + 0,0067) \times 12 = 1,083\), não 1,08; O termo (1 + r) não pretende ser um futuro factor de valor quando a composição é mais frequente do que anual.

Quando há mais de um período de capitalização ao ano, a fórmula de valor futuro pode ser expressa por:

\(FV = PV \times (1 + \frac{r_s}{m})^{mN}\)

sendo \(r_s\) a taxa de juro cotada, m o número de períodos de capitalização anuais e N o número de anos

Transformando numa fórmula python:

def compute_FV_lump_sum(PV, r, N, m=1):
    '''
    FV = Future value / valor futuro
    PV = Present value / Valor actual
    r = Stated rate / Taxa de juro cotada
    N = número de anos
    m = número de capitalizações anuais
    '''
    FV = PV * (1+r/m)**(N*m)
    return FV
Exercício 1.3

Um banco australiano oferece uma taxa para o depósito a prazo de 6% capitalizados mensalmente. Decidimos investir 1 milhão de dólares australianos por um ano. Qual é o valor futuro do nosso investimento se os pagamentos de juros forem reinvestidos a 6%?

Resolução

def compute_FV_lump_sum(PV, r, N, m=1):
    '''
    FV = Future value / valor futuro
    PV = Present value / Valor actual
    r = Stated rate / Taxa de juro cotada
    N = número de anos
    m = número de capitalizações anuais
    '''
    FV = PV * (1+r/m)**(N*m)
    return FV

r = 0.06
PV = 1000000
N = 1
m = 12

FV = compute_FV_lump_sum(PV=PV, r=r, N=N, m=m)
FV
1061677.8118644983
def compute_FV_lump_sum(PV, r, N, m=1):
    '''
    FV = Future value / valor futuro
    PV = Present value / Valor actual
    r = Stated rate / Taxa de juro cotada
    N = número de anos
    m = número de capitalizações anuais
    '''
    FV = PV * (1+r/m)**(N*m)
    return FV

r = 0.10
PV = 100
N = 7
m = 2

FV = compute_FV_lump_sum(PV=PV, r=r, N=N, m=m)
FV
197.99315994393987

2.2 - Capitalização contínua#

Se até agora a discussão sobre períodos de capitalização ilustra capitalização discreta, ou seja, os juros após um determinado período de tempo ter decorrido vamos agora tentar perceber a capitalização contínua. Se o número de períodos compostos por ano são infinitos, então os juros são compostos continuamente. Embora não seja algo que vejamos com frequência no dia a dia vai nos ser útil nos próximos capitulos na avaliação de activos.

A fórmula de valor futuro com capitalização contínua é:

\(FV = PV \times e^{(r \times N)}\)

Transformando numa fórmula python:

import math

def compute_FV_lump_sum_continuous(PV, r, N):
    '''
    FV = Future value / valor futuro
    PV = Present value / Valor actual
    r = Stated rate / Taxa de juro cotada
    N = número de anos
    '''
    FV = PV * math.e**(r*N)
    return FV
Exercício 1.4

Supondo que um investimento de $10.000 renderá 8% compostos continuamente por dois anos. Qual é o valor final do investimento?

Resolução

import math

def compute_FV_lump_sum_continuous(PV, r, N):
    '''
    FV = Future value / valor futuro
    PV = Present value / Valor actual
    r = Stated rate / Taxa de juro cotada
    N = número de anos
    '''
    FV = PV * math.e**(r*N)
    return FV

PV = 10000
r = 0.08
N = 2

FV = compute_FV_lump_sum_continuous(PV, r, N)

print('Usando capitalização contínua o investimento de 10k irá crescer para ' +
str(FV) + ' no final dos dois anos.')
Usando capitalização contínua o investimento de 10k irá crescer para 11735.108709918102 no final dos dois anos.

2.3 - Taxas de juro cotadas e efectivas#

A taxa de juros anual cotada não fornece um valor futuro diretamente, portanto, precisamos de uma fórmula para a EAR (taxa anual efectiva). Com uma taxa de juros anual de 8% capitalizada semestralmente, recebemos uma taxa periódica de 4%. Ao longo de um ano, um investimento de 1€ cresceria para \(1 \times (1,04)^2 = 1,0816\). Os juros ganhos sobre o investimento de 1€ são, por isso 0,0816€ e representa uma taxa de juros anual efetiva de 8,16%. A taxa anual efetiva é calculada da seguinte forma:

\(EAR = (1 + r/m)^m - 1\)

onde r é taxa de juro cotada, r/m é a taxa de juro periódica e m o número de capitalizações anuais.

Transformando numa fórmula python:

def compute_ear(r, m):
    '''
    FV = Future value / valor futuro
    PV = Present value / Valor actual
    r = Stated rate / Taxa de juro cotada
    m = número de capitalizações anuais
    '''
    ear = (1 + r/m)**m -1
    return ear
Exercício 1.5

Usando a fórmula acima comprove que uma taxa anual cotada de 8% capitalizada semestralmente tem mesmo uma rentabilidade superior a 8% ao final desse ano. O que acontece se aumentarmos para capitalização trimestral?

Resolução

def compute_ear(rs, m):
    '''
    FV = Future value / valor futuro
    PV = Present value / Valor actual
    rs = Stated rate / Taxa de juro cotada
    m = número de capitalizações anuais
    '''
    ear = (1 + rs/m)**m -1
    return ear

ear = compute_ear(0.08, 2)

ear
0.08160000000000012

Para uma taxa anual cotada de 8%, se o investimento tiver uma capitalização semestral a taxa efectiva vai ser de 0.0816 ou 8.16%.

ear = compute_ear(0.08, 4)
ear
0.08243215999999998

A EAR para uma capitalização trimestral seria de 8.24%. Ou seja, quanto maior o número de capitalizações maior será a EAR.

2.4 - EAR para capitalização contínua#

Podemos também transformar uma taxa contínua numa efectiva com a fórmula:

\(EAR = e^{r_s} -1\)

Transformando numa fórmula em python:

from numpy import log as ln

def compute_ear_from_continous(r):
    ear = math.e**(r) - 1
    return ear
Exercício 1.6

Com base nos dados do exercício 1.5 (taxa de juro anual cotada de 8%) calcule a rentabilidade efectiva caso a capitalização fosse contínua.

Resolução

from numpy import log as ln

def compute_ear_from_continous(rs):
    ear = math.e**(rs) - 1
    return ear

ear = compute_ear_from_continous(0.08)
ear
0.08328706767495864

Para uma taxa anual cotada de 8%, se o investimento tiver uma capitalização contínua a taxa efectiva vai ser de 0.0833

3 - O Valor futuro de uma série de cash flows#

Conceitos a saber

  • Anuidade - é uma série sequencial e finita de cash flows;

  • Anuidade ordinária - Anuidade onde o primeiro cash flow ocorre no final do período 1 (momento 1);

  • Anuidade imediata - Anuidade onde o primeiro cash flow ocorre imediatamente (momento 0);

  • Perpetuidade- É uma anuidade perpétua, ou uma série de pagamentos teóricamente infinitos;

3.1 - Cash flows idênticos#

Fórmula para uma anuidade ordinária

\(FV = A \times [\frac{(1+r) ^ {(N)} -1} {{r}}]\)

Transformando-a numa fórmula python

def compute_FV_ordinary_annuity(A, r, N):
    FV = A * (((1+r)**N -1) / r)
    '''
    FV = Future Value
    A = Pagamento / cash flow
    r = taxa de juro
    N = Nr de anos
    '''
    return FV
Exercício 1.7

Suponha que o vamos investir 20 mil euros por ano no nosso plano de poupança para a reforma. Se assumirmos que a rentabilidade do investimento será de 9% em média nos próximos 30 anos (altura que nos reformamos). Quanto dinheiro teremos quando começarmos a reforma?

Resolução

def compute_FV_ordinary_annuity(A, r, N):
    FV = A * (((1+r)**N -1) / r)
    '''
    FV = Future Value
    A = Pagamento / cash flow
    r = taxa de juro
    N = Nr de anos
    '''
    return FV

A = 20000
r = 0.09
N = 30

VF = compute_FV_ordinary_annuity(A=A, r=r, N=N)

VF
2726150.7709180615

Se assumirmos que o investimento tem uma rentabilidade média de 9% ao ano teremos 2,726,150.77 euros quando nos reformarmos.

3.2 - Cash flows desiguais#

Em muitos casos, os fluxos de caixa são desiguais, impossibilitando o da fórmula anterior. A forma mais directa de abordar isso é calcular o valor furo de cada pagamento e soma-los.

Felizmente em python conseguimos fazer isso facilmente através de um for loop.

# Compute Future Value
def compute_FV_ordinary_annuity_ucf(cf, r, N, m=1):
    '''
    ucf = unequal cash flows
    cf = série de cash flows
    r = taxa de juro
    N = Nr de anos
    '''
    FV_total = 0 # criar uma variável para somar os valores futuros dos cash flows
    
    for cash_flow in cf: # Para cada cash flow na série de cash flows
        N = N - 1
        FV = compute_FV_lump_sum(cash_flow, r=r, N=N) # calcular o cash flow
        FV_total = FV_total + FV # somar cada valor futuro ao valor total
        
    return FV_total
Exercício 1.8

Se fizermos um investimento com uma rentabilidade anualizada de 5% durante 5 anos, em que os cash flows anuais são 1000 euros no ano 1, 2000 euros no ano 2, 3000 euros no ano 3, 4000 euros no ano 4 e 5000 euros no ano 5 qual o montante que teremos no final do período?

Resolução

def compute_FV_ordinary_annuity_ucf(cf, r, N, m=1):
    '''
    ucf = unequal cash flows
    cf = série de cash flows
    r = taxa de juro
    N = Nr de anos
    '''
    FV_total = 0 # criar uma variável para somar os valores futuros dos cash flows

    for cash_flow in cf: # Para cada cash flow na série de cash flows
        N = N - 1
        FV = compute_FV_lump_sum(cash_flow, r=r, N=N) # calcular o cash flow
        FV_total = FV_total + FV # somar cada valor futuro ao valor total

    return FV_total

VF = compute_FV_ordinary_annuity_ucf([1000, 2000, 3000, 4000, 5000], 0.05, 5)

print(VF)
16038.25625

4 - Valor presente de um cash flow único#

O valor futuro liga o valor actual com o o valor no futuro, o valor presente permite-nos descontar o valor futuro para o valor presente.

Por exemplo, com uma taxa de juros de 5% gerando um retorno futuro de 105 euros num ano, qual valor actual investido a 5% por um ano crescerá para esses 105 euros? A resposta é 100 euros; portanto, 100 euros é o valor presente de 105 euros a ser recebido num ano a uma taxa de desconto de 5%.

A fórmula para calcular o valor presente (ou presente value) é:

\(PV = FV \times (1+r)^{-N}\)

Transformando num fórmula python:

def compute_PV_lump_sum(FV, r, N):
    '''
    PV = Present Value
    r = taxa de juro
    N = Nr de anos/períodos
    '''
    PV = FV * (1+r)**(-N)
    return PV
Exercício 1.9

Uma companhia de seguros emitiu um Contrato de Investimento Garantido (GIC) que promete pagar 100.000 euros daqui a seis anos com uma taxa de retorno de 8%. Qual a quantia de dinheiro que a seguradora deve investir hoje a 8% por seis anos para realizar o pagamento prometido?

Resolução

def compute_PV_lump_sum(FV, r, N):
    '''
    PV = Present Value
    r = taxa de juro
    N = Nr de anos/períodos
    '''
    PV = FV * (1+r)**(-N)
    return PV

PV = compute_PV_lump_sum(FV=100000, r=0.08, N=6)

PV
63016.96268831045

Se assumirmos que o investimento tem uma rentabilidade média de 8% ao ano a companhia de seguros teria de investir 63,016.96 euros hoje para ter os 100 mil euros daqui a 6 anos.

Exercício 1.10

Um cliente possui um activo financeiro líquido que lhe pagará 100.000 euros daqui a 10 anos. A sua filha planeia frequentar a faculdade daqui a quatro anos, e pretendemos saber qual será o valor presente do activo naquele momento. Dado um taxa de desconto de 8%, quanto valerá o activo daqui a quatro anos? Qual é o valor inicial do investimento?

Resolução

FV=100000
N=6
r=0.08

PV_4 = compute_PV_lump_sum(FV=FV, r=r, N=N)
PV_4
63016.96268831045

Se assumirmos que o investimento tem uma rentabilidade média de 8% ao ano o valor inicial terá o valor de 46,319.35.

Este tipo de pensamento “em passos” é bastante importante pois uma grande parte dos problemas na vida real têm pelo menos 2 períodos, a fase de acumulação e a fase de distribuição (ex: poupança até à reforma e fase pós-reforma).

4.1 - Frequência de capitalização#

Tal como a calcular o valor futuro aqui também podemos ter outras frequências de capitalização para além da anual. temos assim que alterar um pouco a nossa fórmula de cálculo para albergar essa possibilidade.

\(PV = FV \times (1+\frac{r_s}{m})^{-mN}\)

onde:

m = número de períodos de capitalização por ano \(r_s\) = taxa anual cotada N = número de anos

Transformando num fórmula python:

def compute_PV_lump_sum(FV, r, N, m=1):
    '''
    FV = Future Value
    r = taxa de juro
    N = Nr de anos/períodos
    m = 1 para ter capitalização anual por defeito
    '''
    PV = FV * (1+(r/m))**(-N*m)
    return PV
Exercício 1.11

A administradora de um fundo de pensão no Canadá sabe que o fundo tem de fazer um pagamento único de 5 milhões de dólares canadianos daqui a 10 anos. Ela pretende investir um valor hoje num produto financeiro de forma a que o investimento valorize o necessário. A actual a taxa de juros desse investimento é de 6% ao ano, capitalizada mensalmente. Qual o valor que precisa de investir hoje?

Resolução

def compute_PV_lump_sum(FV, r, N, m=1):
    '''
    FV = Future Value
    rs= taxa de juro
    N = Nr de anos/períodos
    m = 1 para ter capitalização anual por defeito
    '''
    PV = FV * (1+(r/m))**(-N*m)
    return PV

FV=5000000
N=10
r=0.06
m=12

PV = compute_PV_lump_sum(FV=FV, N=N, r=r, m=m)
PV
2748163.6668208186

O investimento inicial precisa de ser 2,748,163.67 dólares canadianos.

5 - O valor presente de uma série de cash flows#

Muitas aplicações na gestão de investimentos envolvem activos que têm uma série de cash flows ao longo do tempo. Nesta secção, discutimos como encontrar o valor presente de um série de cash flows.

5.1 - Série de cash flows idênticos numa anuidade ordinária#

Transformando num fórmula python:

def compute_PV_ordinary_annuity(A, r, N):
    
    # A = Pagamento / cash flow
    # r = taxa de juro
    # N = Nr. de anos
    
    PV = A * (1-1/(1+r)**N)/ r
    return PV
Exercício 1.12

Suponhamos que pretendemos comprar um activo financeiro que promete pagar 1.000€ por ano durante cinco anos, com o primeiro pagamento daqui a um ano. A taxa de retorno exigida é de 12% ao ano. Quanto devemos pagar este activo?

Resolução

def compute_PV_ordinary_annuity(A, r, N):

    # A = Pagamento / cash flow
    # r = taxa de juro
    # N = Nr. de anos

    PV = A * (1-1/(1+r)**N)/ r
    return PV

A = 1000
r = 0.12
N = 5

PV = compute_PV_ordinary_annuity(A=A, r=r, N=N)
PV
3604.776202345007

O valor que devemos pagar pelo activo não deve ser superior a 3604,78 euros.

Exercício 1.13

Um gestor de fundo de pensões alemão antecipa que terá de pagar de reformas no valor de 1 milhões de euros por ano. Contudo as reformas apenas ocorrerão daqui a 10 anos a partir de agora (no tempo t = 10). Assim que as reformas começarem a ser pagas, elas irão se estender no tempo até t = 39, totalizando 30 pagamentos. Qual é o valor presente do passivo se a taxa de desconto anual apropriada é de 5% capitalizada anualmente?

Resolução

Este exercício é muito semelhante ao que poderíamos fazer para um investidor comum com duas fases de investimento. Uma fase de poupança (embora neste caso sem reforços mas apenas com um investimento inicial), e posteriormente uma fase de desinvestimento, neste caso literalmente reformas.

Calcular valor no final do momento 9/início do momento 10:

PV_9 = compute_PV_ordinary_annuity(1000000, 0.05, 30)

O fundo de pensões precisa de 15.372.451,03 no final do ano 9/início do ano 10.

Calcular agora qual o montante inicial que seria preciso investir:

PV_0 = compute_PV_lump_sum(PV_9, 0.05, 9)

O fundo de pensões teria de investir 9.909.219 euros no momento 0.

Porquê PV_9 e não PV_10? Porque o pagamento é no final do ano/período. O diagrama temporal é muito útil na compreensão:

O valor presente de uma anuidade ordinária com o primeiro pagamento em t=10 (valores em milhões)

5.2 - Série de cash flows idênticos numa anuidade imediata#

Fórmula a saber:

Transformando em fórmula Python

def compute_annuity_due(A, r, N):
    PV = (A * ((1-(1+r)**-N)) / r) * (1+r)
    return PV
Exercício 1.14

Vamo-nos reformar hoje e o director do fundo de aposentações da nossa empresa apresentou-nos duas alternativas: um montante fixo imediato de 2 milhões euros ou uma anuidade com 20 pagamentos de 200.000 euros por ano com o primeiro pagamento a partir de hoje. A taxa de juros de desconto banco é de 7% por ano composto anualmente (porque hipoteticamente poderíamos investir num activo com essa rentabilidade). Qual opção tem o maior valor presente? (Ignorar quaisquer diferenças fiscais entre as duas opções.)

Resolução

A questão aqui é descobrir se o valor presente de uma anuidade imediata com 20 pagamentos de 200 mil euros a uma taxa de desconto de 7% tem um valor presente superior a 2 milhões de euros.

def compute_annuity_due(A, r, N):
    PV = (A * ((1-(1+r)**-N)) / r) * (1+r)
    return PV

A = 200000
r = 0.07
N = 20

PV = compute_annuity_due(A, r, N)
PV
2267119.0485404595

O Valor Presente da anuidade imediata é de 2.267.119 euros, pelo que é a opção mais vantajosa

5.3 - Série de cash flows infinita (perpetuidade)#

Fórmula a saber:

\(PV = \LARGE\frac{A}{{r}}\)

Transformando em fórmula Python:

def compute_PV_perpetuity(A, r):
    return A/r
Exercício 1.15

O governo britânico emitiu uma obrigação perpétua, que prometeu pagar um fluxo de caixa nivelado indefinidamente. Se esta obrigação pagar £ 100 por ano para a perpetuidade, o que valeria hoje se a taxa de retorno exigida fosse 5 por cento?

Resolução

def compute_PV_perpetuity(A, r):
    return A/r

A = 100
r = 0.05

PV = compute_PV_perpetuity(A, r)

PV
2000.0

A obrigação valeria 2,000 libras.

5.4 - Valores presentes indexados a outros momentos que não o momento 0#

Exercício 1.16

Consideremos a mesma obrigação perpétua do exercício anterior (com pagamentos anuais de £ 100). Mas o primeiro pagamento começa apenas em t = 5. Qual é seu valor presente hoje (em t = 0), dada uma taxa de desconto de 5%?

Resolução

A = 100
r = 0.05

PV_4 = compute_PV_perpetuity(A, r)

PV_4
2000.0

A obrigação valeria 2,000 libras em t = 5.

Actualizando para t = 0.

Lembrem-se de que uma perpetuidade ou uma anuidade ordinária tem o sua primeiro pagamento a um período de distância, explicando o índice t = 4 para nosso cálculo de valor presente.

PV_0 = compute_PV_lump_sum(FV=PV_4, N=4, r=0.05)

PV_0
1645.4049495837637

A obrigação valeria 1,645 libras em t = 0.


6 - Descobrir taxas, números de períodos ou tamanho dos pagamentos das anuidade#

Nos exemplo anteriores algumas informações foram fornecidas mas na realidade podemos ou ter de as calcular ou queremos calcular outros valores.

6.1 - Taxas de juro e/ou de crescimento#

Fórmula a saber

\(g = (\LARGE\frac{FV}{PV})^ {\frac{1}{N}} -1\)

Transformando numa fórmula python:

def compute_g(FV, PV, N):
    g = ((FV/PV)**(1/N))-1
    return g
Exercício 1.17

Sabendo que o nosso investimento subiu de 100 mil euros para 246 mil em 10 anos. Qual foi a taxa de crescimento anualizada?

Resolução

def compute_g(FV, PV, N):
    g = ((FV/PV)**(1/N))-1
    return g

FV = 246
PV = 100
N = 10

g = compute_g(FV, PV, N)

g
0.09419193834360873

A taxa anualizada do investimento foi de 0.09419, ou seja, 9.42%.

6.2 - Número de períodos#

Fórmula a saber

\(\LARGE\frac{ln(\frac{FV}{PV})}{ln(1 + r)}\)

Transformando numa fórmula python:

from numpy import log as ln

def compute_N(FV, PV, r):
    N = ln(FV/PV) / ln(1+r)
    return N
Exercício 1.18

Queremos determinar quanto tempo levará um investimento de 10.000 € a duplicar em valor. A taxa de juros actual é de 7% compostos anualmente. Quantos anos levarão os 10 mil euros a duplicar para 20 mil?

from numpy import log as ln

def compute_N(FV, PV, r):
    N = ln(FV/PV) / ln(1+r)
    return N

PV = 10000000
FV = PV * 2
r = 0.07

N = compute_N(FV, PV, r)

N
10.244768351058712

Um investimento a valorizar a uma taxa de 7% anualizados vai demorar 10.24 anos a duplicar.

6.3 - Valor dos pagamentos#

Fórmula a saber

Transformando numa fórmula python:

def compute_A(PV, r, N, m=1):
    PVAF = (1-1/(1+(r/m))**(m*N))/(r/m)
    A=PV/PVAF
    return A
Exercício 1.19

Estamos a planear comprar uma casa por 120 mil euros fazendo um pagamento inicial de 20 mil. O montante restante será um empréstimo hipotecário de taxa fica a 30 anos com pagamentos anuais e primeiro pagamento em t = 1. As taxas de juro hipotecárias, para um crédito de taxa fixa a 30 anos é 8%/ano com capitalização mensal. Qual será o pagamento mensal que teremos de efectuar?

Resolução

def compute_A(PV, rs, N, m=1):
    PVAF = (1-1/(1+(rs/m))**(m*N))/(rs/m)
    A=PV/PVAF
    return A

PV=100000
rs=0.08
m=12
N=30

A = compute_A(PV=PV, rs=rs, N=N, m=m)
A
733.764573879378

Teremos um pagamento mensal de 733.76.

6.4 - Montantes de poupança#

Para calcular a poupança anual necessária usaremos uma fórmula python (também disponível em calculadora/excel).

import numpy_financial as npf

def compute_pmt(FV, r, N):
    pmt = npf.pmt(rate=r, nper=N, fv=FV, pv=0)
    return pmt
Exercício 1.20 Um cliente planeia enviar o filho para a faculdade por quatro anos, 18 anos a partir de hoje. Tendo reservado dinheiro para as mensalidades decide planear os custos com estadia também. Ele estima esses custos em 20.000 euros por ano, com pagamento no início de cada ano, assim que o seu filho for para a faculdade. Se o cliente começar no próximo ano e fizer 17 pagamentos numa conta poupança com uma rentabilidade de 5% ao ano, que pagamentos anuais ela deve fazer?

Resolução

Calculando o valor total que terá de ter no final do ano 17.

import numpy_financial as npf

def compute_pmt(FV, rs, N):
    pmt = npf.pmt(rate=rs, nper=N, fv=FV, pv=0)
    return pmt

PV_17 = compute_PV_ordinary_annuity(A=20000, r=0.05, N=4)
PV_17
70919.01008324725
import numpy_financial as npf

def compute_pmt(FV, rs, N):
    pmt = npf.pmt(rate=rs, nper=N, fv=FV, pv=0)
    return pmt

pmt = compute_pmt(FV=PV_17, rs=0.05, N=17)
pmt
-2744.50482265409

O cliente terá poupar -2,744.5 euros por ano.