Prova Ecma

Descrição


A gestão financeira é algo extremamente importante para vida das pessoas, e através dela é que conseguimos obter recursos para alcançar algumas metas de nossas vidas, por exemplo, viagens, imóveis, bens de consumo etc.

Pensando em auxiliar a gestão financeira, uma empresa veio recrutar alguns desenvolvedores para criar alguns algoritmos.

Para facilitar o desenvolvimento, foi disponibilizado neste diretório compactado alguns arquivos já com a organização dos algoritmos. (Também existe a versão de teste com Jest)

A seguir será descrito os algoritmos por meio de questões, e deve ser entregue no mínimo três questões.

QUESTÕES


QUESTÃO 1 - A Tabela Price é um método de amortização de empréstimo cuja principal finalidade é gerar parcelas com valores iguais. Muitas vezes é comum nos simuladores das instituições financeiras visualizar o período e a parcela do valor a ser obtido, contudo não é tão evidente o valor final pago no empréstimo.

Então, para facilitar a geração do valor final pago, primeiro devemos utilizar essa fórmula do valor da parcela:

, onde:

PV: Valor Presente (entrada)
i: Taxa de juros
n: Número de períodos (meses)

Depois multiplicamos pelo número de parcelas para obter o valor total.

Assim sendo, crie um algoritmo para gerar o valor final pago de um empréstimo de R$ 20.000,00 a juros de 1,82% ao mês, nos prazos de 1, 2 e 3 anos.

Detalhe, utilize o arquivo financiamento-price/financiamento-price.js para gerar os valores finais:

console.log(financiamentoPrice(20000, 1.82, 36)) //=> 27437.565620289548
console.log(financiamentoPrice(20000, 1.82, 24)) //=> 24863.60444684676
console.log(financiamentoPrice(20000, 1.82, 12)) //=> 22444.174290541192

QUESTÃO 2 - Segundo o Faz a Conta, o Valor Futuro (VF ou FV) é um cálculo na matemática financeira que permite “estimar como os valores irão evoluir levando em consideração uma taxa de juros para a correção do dinheiro no tempo”.

Sua fórmula pode ser expressa por:

, onde:

PV: Valor Presente (entrada)
i: Taxa de juros
n: Número de períodos (meses)
M: mensalidade ou aportes

Crie um algoritmo no arquivo rendimento-composto-fixo/rendimento-composto-fixo.js para gerar o valor final de um investimento de renda fixa cujo o rendimento mensal fixo seja de 0,5936%, os aportes de R$ 500,00, e a entrada de R$ 100,00, nos períodos de 1, 2, 3 e 10 anos:

console.log(redimentoCompostoFixo(100, 500, 0.5936, 12)) //=> 6307.176654943719
console.log(redimentoCompostoFixo(100, 500, 0.5936, 24)) //=> 12971.227695545636
console.log(redimentoCompostoFixo(100, 500, 0.5936, 36)) //=> 20125.781003832304
console.log(redimentoCompostoFixo(100, 500, 0.5936, 120)) //=> 87335.08961181375

QUESTÃO 3 - Nem sempre os rendimentos dos investimentos possuem juros pré-fixados, algumas modalidades possuem variação na sua taxa de juros.

No contexto brasileiro um exemplo bem conhecido é a caderneta de poupança, que conforme a tabela a seguir, exibe a variação dos juros conforme os anos de 2015 até 2018:

Ano Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez
2018 0,4273 0,3994 0,3994 0,3855                
2017 0,6858 0,6709 0,5304 0,6527 0,5000 0,5768 0,5539 0,5626 0,5512 0,5000 0,4690 0,4273
2016 0,7261 0,6327 0,5962 0,7179 0,6311 0,6541 0,7053 0,6629 0,7558 0,6583 0,6609 0,6435
2015 0,6058 0,5882 0,5169 0,6302 0,6079 0,6159 0,6822 0,7317 0,6876 0,6930 0,6799 0,6303

Além dos investimentos, alguns outros índices podem utilizar essa ideia, como o cálculo da atualização de um valor segundo a inflação usando a taxa SELIC:

Ano Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez
2018 0,29 0,32 0,09 0,22                
2017 0,38 0,33 0,25 0,14 0,31 -0,23 0,24 0,19 0,16 0,42 0,28 0,44
2016 1,27 0,9 0,43 0,61 0,78 0,35 0,52 0,44 0,08 0,26 0,18 0,3
2015 1,24 1,22 1,32 0,71 0,74 0,79 0,62 0,22 0,54 0,82 1,01 0,96

Portanto, a fórmula para calcular o valor final que possui aportes mensais e sofre influência de juros variáveis e composto é:

, onde:

vi: Valor do rendimento
vi-1: Valor do rendimento anterior
ii-1: Juros anterior
M: mensalidade ou aportes

Sendo assim, crie um algoritmo no arquivo rendimento-composto-variado/rendimento-composto-variado.js para:

a) Gerar o valor final de um investimento na poupança sem entrada de valor, com aportes de R$ 500,00 mensais, nos intervalos de 01/2015 até 12/2017, e de 01/2015 até 12/2015:

console.log(redimentoCompostoVariado(poupanca, 0, 500, '01/2015', '12/2017')) //=> 20161.722546560424
console.log(redimentoCompostoVariado(poupanca, 0, 500, '01/2015', '12/2015')) //=> 6263.110235582166

b) Gerar o valor final de um atualização de valor acumulado com aportes de R$ 500,00 mensais, nos intervalos de 01/2015 até 12/2017, e de 01/2015 até 12/2015:

console.log(redimentoCompostoVariado(ipca, 0, 500, '01/2015', '12/2017')) //=> 19334.152800685235
console.log(redimentoCompostoVariado(ipca, 0, 500, '01/2015', '12/2015')) //=> 6312.287539035425

c) Comparar o rendimento da caderneta de poupança com o IPCA, por exemplo, nos intervalos de 01/2015 até 12/2017, ou de 01/2015 até 12/2015, a poupança repôs a inflação? Em quanto?

QUESTÃO 4 - Um dúvida muito comum entre os brasileiros consiste no efetivo reajuste que a poupança gera sobre a inflação. Pensando em destacar essa reposição (poupança) versus desvalorização (IPCA) é que foi solicitado a criação de um algoritmo no arquivo saldo-indices/saldo-indices.js para fazer essa comparação, conforme a execução a seguir:

console.log(saldoIndices(poupanca, ipca, '01/2015', '12/2017'))
//=>
// { 
//   '01/2015': -0.6342,
//   '02/2015': -0.6318,
//   '03/2015': -0.8031,
//   '04/2015': -0.07979999999999998,
//   '05/2015': -0.1321,
//   '06/2015': -0.17410000000000003,
//   '07/2015': 0.06220000000000003,
//   '08/2015': 0.5117,
//   '09/2015': 0.14759999999999995,
//   '10/2015': -0.127,
//   '11/2015': -0.33010000000000006,
//   '12/2015': -0.3297,
//   '01/2016': -0.5439,
//   '02/2016': -0.2673,
//   '03/2016': 0.16619999999999996,
//   '04/2016': 0.1079,
//   '05/2016': -0.14890000000000003,
//   '06/2016': 0.30410000000000004,
//   '07/2016': 0.18530000000000002,
//   '08/2016': 0.22290000000000004,
//   '09/2016': 0.6758000000000001,
//   '10/2016': 0.3983,
//   '11/2016': 0.48090000000000005,
//   '12/2016': 0.34349999999999997,
//   '01/2017': 0.30579999999999996,
//   '02/2017': 0.34090000000000004,
//   '03/2017': 0.2804,
//   '04/2017': 0.5126999999999999,
//   '05/2017': 0.19,
//   '06/2017': 0.8068,
//   '07/2017': 0.31389999999999996,
//   '08/2017': 0.3726,
//   '09/2017': 0.3912,
//   '10/2017': 0.08000000000000002,
//   '11/2017': 0.18899999999999995,
//   '12/2017': -0.012699999999999989
// }

QUESTÃO 5 - Diante da análise de valores sobre juros variáveis, muitas vezes nos questionamos quais foram os momentos de melhor e pior êxito.

Para auxiliar nessa detecção crie um algoritmo no arquivo min-max-indice/min-max-indice.js que determine o mínimo e máximo de uma série de reajustes conforme código a seguir:

console.log(minMaxIndice(poupanca, '01/2015', '12/2017')) //=> [ 0.4273, 0.7558 ]
console.log(minMaxIndice(ipca, '01/2015', '12/2017')) //=> [ -0.23, 1.32 ]




Alternativa de resposta: