{"id":28036345,"url":"https://github.com/vicjun22/calculadora-renda-fixa_spring-boot","last_synced_at":"2026-05-09T15:08:55.865Z","repository":{"id":255958996,"uuid":"853945055","full_name":"Vicjun22/calculadora-renda-fixa_spring-boot","owner":"Vicjun22","description":"O objetivo deste projeto é replicar, utilizando a linguagem JAVA, o cálculo do fator de DI, acumulado entre duas datas, realizado pela calculadora de renda fixa da B3.","archived":false,"fork":false,"pushed_at":"2025-04-08T01:47:09.000Z","size":461,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-11T12:53:56.724Z","etag":null,"topics":["b3","calculo-di","contract-first","java","openapi","spring-boot","swagger"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Vicjun22.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-08T01:16:32.000Z","updated_at":"2025-04-08T18:46:14.000Z","dependencies_parsed_at":"2024-09-08T05:31:12.158Z","dependency_job_id":"7bad09a0-8dc9-4f73-bce6-53b2ff48e239","html_url":"https://github.com/Vicjun22/calculadora-renda-fixa_spring-boot","commit_stats":null,"previous_names":["vicjun22/calculadora-renda-fixa_spring-boot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vicjun22%2Fcalculadora-renda-fixa_spring-boot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vicjun22%2Fcalculadora-renda-fixa_spring-boot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vicjun22%2Fcalculadora-renda-fixa_spring-boot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vicjun22%2Fcalculadora-renda-fixa_spring-boot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vicjun22","download_url":"https://codeload.github.com/Vicjun22/calculadora-renda-fixa_spring-boot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253568697,"owners_count":21928909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["b3","calculo-di","contract-first","java","openapi","spring-boot","swagger"],"created_at":"2025-05-11T12:54:00.366Z","updated_at":"2026-05-09T15:08:50.820Z","avatar_url":"https://github.com/Vicjun22.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simulador da Calculadora de Renda Fixa da B3\n\nO objetivo deste projeto é replicar, utilizando a linguagem **JAVA**, o cálculo do fator de DI, acumulado entre duas datas, realizado pela calculadora de renda fixa da B3. Este projeto é destinado exclusivamente para fins de estudo, sem qualquer intenção de prejudicar a plataforma oficial. Pelo contrário, incentivamos o uso da plataforma oficial para realizar cálculos com a maior precisão possível.\nReiteramos que o projeto visa apenas replicar os cálculos realizados pelo site [Calculadora de Renda Fixa](https://calculadorarendafixa.com.br/#/navbar/calculadora).\n\n## Objetivo\nO objetivo deste projeto é replicar o cálculo de fator de DI realizado pelo site https://calculadorarendafixa.com.br/#/navbar/calculadora, mais especificamente, o cálculo de fator de DI realizado através dos campos abaixo mostrados na imagem abaixo:\n\n![image](https://github.com/user-attachments/assets/f4682f07-8150-49bf-acb2-3178582948f9)\n\u003cbr\u003e_Data Inicial - Data Final - Percentual - Valor_\n\n## B3\nAbaixo seguirão alguns links da plataforma B3 que foram utilizados para realizar cálculos e pesquisas:\n\n|                        | Link                                                                                                                                                          |\n| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Calculadora Renda Fixa | https://calculadorarendafixa.com.br/#/navbar/calculadora                                                                                                      |\n| Caderno de Fórmulas    | https://www.b3.com.br/pt_br/produtos-e-servicos/negociacao/caderno-de-formulas/                                                                               |\n| Índice B3              | https://www.b3.com.br/pt_br/market-data-e-indices/indices/indices-de-segmentos-e-setoriais/serie-historica-do-di.htm                                          |\n| Série Histórica        | http://estatisticas.cetip.com.br/astec/series_v05/paginas/lum_web_v05_template_informacoes_di.asp?str_Modulo=completo\u0026int_Idioma=1\u0026int_Titulo=6\u0026int_NivelBD=2 |\n\n## Tecnologias\nPara este projeto, será utilizado o Java com Spring Boot e Swagger para realizar a requisição de cálculo.\n\n| Tecnologia  | Versão | Documentação                                                       |\n| ----------- | ------ | ------------------------------------------------------------------ |\n| JAVA        | JDK 17 | https://docs.oracle.com/en/java/javase/17/                         |\n| Spring Boot | 3.3.3  | https://github.com/spring-projects/spring-boot/releases/tag/v3.3.3 |\n| Swagger     | 2.5.0  | https://springdoc.org/#Introduction                                |\n\n### Spring Initializr\nO projeto Spring Boot foi criado à partir da plataforma [Spring Initializr](https://start.spring.io/), a versão que será utilizada é a versão recomendada no momento, dia 08/09/2024, talvez tenham mudanças futuras à esta data (exemplo de mudanças: a versão recomendada ser outra).\n\n### Contract-First em REST com Swagger\nPara o projeto foi utilizado o Swagger, o modelo adotado foi o Contract-First onde, há documento .yml dentro da pasta _resources_ contendo a chamada do endpoint no Swagger. Para acessar o swagger basta acessar o link: http://localhost:8080/swagger-ui/index.html.\nA escrita e revisão do Swagger foi definida através do link do Swagger Editor: https://editor.swagger.io/.\n\n## Desenvolvimento\n\n### Primeiro Passo:\nComo primeiro passo para o desenvolvimento, deve-se verificar e garantir que a data final seja um dia útil.\nNa B3, mesmo quando calculamos e a data final caia em um final de semana, o valor calculado é sempre do próximo dia útil, o motivo disso é que um resgate de algum saldo, por exemplo, só pode cair em dias úteis e por isso ele continua rendendo até o próximo dia útil onde deverá ser interrompido.\n\nPara realizar a verificação, primeiro fizemos uma solicitação dos feriados nacionais do ano em que a data final é mencionada, verificamos se a data final corresponde com algum feriado e depois verificamos se a data final cai em algum final de semana, caso caia em um destes casos, modificamos a data final para um próximo dia que seja dia útil.\n\n`GET: https://brasilapi.com.br/api/feriados/v1/:ano`\n\n### Segundo Passo:\nO segundo passo foi um pouco mais complicado, nele precisávamos descobrir ou o valor da Taxa SELIC de cada um dos dias (do dia correspondente à data inicio até o dia corresponde da data final), ou então conseguir o Fator Diário destes mesmos dias.\n\nCaso obtivéssemos a Taxa SELIC, teríamos que converter para o Fator Diário.\n\nSegue abaixo a fórmula e como desenvolver:\n\n```\n    // (1 + txSelic)^(1 / 252)\n    BigDecimal txSelicEmDecimal = txSelic.divide(BigDecimal.valueOf(100), MathContext.DECIMAL64);\n    BigDecimal somarTxSelicDecimalComUm = BigDecimal.ONE.add(txSelicEmDecimal);\n    BigDecimal divisaoPorDiasUteis = BigDecimal.ONE.divide(new BigDecimal(\"252\"), 8, RoundingMode.FLOOR);\n\n    return bigDecimalPow(somarTxSelicDecimalComUm, divisaoPorDiasUteis).setScale(8, RoundingMode.HALF_EVEN);\n```\n\nO motivo de eu ter inserido a fórmula e como desenvolver com os arredondamentos acima é simplesmente porque eu posso utilizar uma chamada do Banco Central do Brasil para receber o Fator Diário já quase pronto.\n\n`GET: https://api.bcb.gov.br/dados/serie/bcdata.sgs.11/dados?formato=json\u0026dataInicial=01/01/2024\u0026dataFinal=09/09/2024`\n\nO código 11 em `...sgs.11/dad...` remete ao código de série da taxa SELIC.\n\nÉ possível saber mais em: https://dadosabertos.bcb.gov.br/dataset/11-taxa-de-juros---selic/resource/b73edc07-bbac-430c-a2cb-b1639e605fa8.\n\nA mudança que teremos que fazer no response da requisição mostrada acima é simplesmente, dividir por 100 o valor do Fator Diário e depois somar com 1 (um).\n\nDepois que descobrir o Fator Diário, deve-se então descobrir o fator da consulta. O fator da consulta é um acúmulo de valores, o primeiro dia nós definimos como 1, no segundo dia que realmente começam os cálculos, o fator do segundo dia é o produto da multiplicação do fator do primeiro dia x (vezes) o fator ajustado com o percentual (`(fator diário - 1) * percentual + 1`) e assim sucessivamente até o último dia, o fator calculado (que é o que queremos) é o resultado do fator do último dia.\n\n### Terceiro Passo:\nO terceiro passo foi bem tranquilo e, consistia em descobrir o valor calculado.\nO valor calculado é o produto da multiplicação do valor base com o fator já calculado (o fator do último dia descrito no sub-item anterior).\n\n### Quarto Passo:\nO quarto e último passo do desenvolvimento é realizar o cálculo da taxa, o cálculo é simplesmente:\n`((valor final - valor inicial) / valor inicial) * 100`\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\nEspero que este material ajude em seus estudos e desejo sucesso à todos.\n\nAtt. Victor\n\nPara quem se interessar, segue meu Linkedin: https://www.linkedin.com/in/victor-elias-ross-jr/","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvicjun22%2Fcalculadora-renda-fixa_spring-boot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvicjun22%2Fcalculadora-renda-fixa_spring-boot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvicjun22%2Fcalculadora-renda-fixa_spring-boot/lists"}