Pacote Workadays
- #Python
No mercado financeiro brasileiro os investimentos são remunerados considerando o método exponencial base 252, isso significa que os rendimentos são atualizados nos dias úteis.
Agora imagina que você trabalha em um banco e tem um projeto que é a de calcular o valor atualizado da carteira de captação de um banco. A carteira de captação de um banco é a soma das operações que o clientes investiram através de algum produto, tais como: CDB, LCI, LCA, LC e outros.
Uma das principais fontes de renda de um banco e o resultado da diferença entre o dinheiro captado pelo banco de clientes superavitários (aquele que tem sobra de dinheiro) e do dinheiro emprestado para os clientes deficitários (aquele que tem falta de dinheiro). Essa diferença é denominada de spread.
A valorização da carteira de captação de um banco é dada por diferentes fórmulas a depender do tipo de produto e do indexador de remuneração da operação. Um dos exemplos mais simples de remuneração é o de uma aplicação em CDB Préfixado cujo rendimento final é previsível desde o momento da aplicação.
Imagina um aplicação no valor de R$ 1.000 em CDB com vencimento de 1 ano e com remuneração de 12% a.a. No vencimento desta aplicação o cliente vai ter exatamente R$ 1.120 bruto, sem descontar o imposto de renda, resultado da seguinte fórmula:
VF = P * (1 + i) ^ (n / 252) => 1000 * 1,12 ^ (252 / 252) => 1120
Onde:
VF é o valor futuro, também conhecido como valor no vencimento;
P é o valor aplicado, também conhecido como valor principal (ou notional);
i é a taxa de rendimento da aplicação;
n é referente ao prazo da aplicação.
No entanto, suponha que a aplicação foi realizada em 20/09/2022 e que você está precisando saber em 12/12/2022 o valor presente (VP) da aplicação, para isso, você vai precisar calcular o prazo (n) em dias úteis entre a data da aplicação e hoje e imagina que você precisa fazer este calculo no python.
É neste momento que o pacote workadays ajudará muito. Para instalar o pacote o comando é:
pip install workadays
Importe o pacote no programa python:
import datetime as dt
from workadays import workdays as wd
E através do seguinte comando você conseguirá extrair o número de dias úteis entre duas datas:
dt_inicio = dt.date(2022, 9, 20)
dt_atual = dt.date(2022, 12, 12)
n = wd.networkdays(dt_inicio, dt_atual, country='BR')
print(n)
p = 1000
i = 0.12
vp = round(1000 * math.pow(1+i, n/252), 2)
print(vp)
No código acima o resultado do prazo (n) é 56 dias úteis calculados pelo pacote workadays e o resultado do valor presente da aplicação é de R$ 1.025,50.
Então, de forma simplificada, é assim que os bancos fazem para atualizar o valor de suas carteiras e este pacote permite de forma transparente calcular o número de dias úteis entre duas datas para diferentes países (Brasil, EUA, Reino Unido, Luxemburgo) e também o número de dias corridos entre duas datas.
Além disso, este pacote permite também somar um determinado número de dias úteis ou corridos a partir de uma determinada data. Verificar se uma data é feriado, final de semana ou dia útil e se o ano é bissexto. E também calcular dias corridos usando da base 30/360 nos métodos americano ou europeu.
Gostou? Quer saber mais?
Consulte o PyPI: https://pypi.org/project/workadays/
Abs,
Marcelo Horita