From c080a67d881537d78a18928cb87b36717582fd60 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Sun, 11 Feb 2024 23:27:10 -0300 Subject: [PATCH 01/17] =?UTF-8?q?doc:=20incluindo=20tip=20de=20explica?= =?UTF-8?q?=C3=A7=C3=A3o=20dos=20scrappers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/quickstart/arquitetura.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/quickstart/arquitetura.md b/docs/quickstart/arquitetura.md index 22be4f4..db1e6de 100644 --- a/docs/quickstart/arquitetura.md +++ b/docs/quickstart/arquitetura.md @@ -37,4 +37,7 @@ Apresentada a estratégia de funcionamento, a biblioteca possui essa árvore de └───__init__.py ``` -> Aqui, é possível entender claramente a relação entre *scrappers* e portais de indicadores financeiros. O submódulo `fundamentus.py` contém funções, classes e métodos especialmente construídos para contemplar toda a dinâmica de extração e tratamento de dados contidos no site Fundamentus. \ No newline at end of file + + :octicons-light-bulb-16: + **Dica:** Aqui, é possível entender claramente a relação entre *scrappers* e portais de indicadores financeiros. O submódulo `fundamentus.py` contém funções, classes e métodos especialmente construídos para contemplar toda a dinâmica de extração e tratamento de dados contidos no site Fundamentus. + From 84c9358b71eb62d037dcd36fa6efd6fd27a3129b Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Sun, 11 Feb 2024 23:27:30 -0300 Subject: [PATCH 02/17] =?UTF-8?q?docs:=20corrigindo=20link=20na=20home=20p?= =?UTF-8?q?ara=20se=C3=A7=C3=A3o=20de=20scrappers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/overrides/home.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overrides/home.html b/docs/overrides/home.html index 679eb8a..27988cc 100644 --- a/docs/overrides/home.html +++ b/docs/overrides/home.html @@ -25,7 +25,7 @@

Quick start - + Scrappers From 18cf6ec67b39920dbc14336a36392f2b59d55c55 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Sun, 11 Feb 2024 23:27:42 -0300 Subject: [PATCH 03/17] =?UTF-8?q?docs:=20ajustando=20docs=20da=20p=C3=A1gi?= =?UTF-8?q?na=20de=20scrappers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/scrappers/{about.md => index.md} | 2 +- mkdocs.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename docs/scrappers/{about.md => index.md} (97%) diff --git a/docs/scrappers/about.md b/docs/scrappers/index.md similarity index 97% rename from docs/scrappers/about.md rename to docs/scrappers/index.md index a631dca..1455106 100644 --- a/docs/scrappers/about.md +++ b/docs/scrappers/index.md @@ -1,4 +1,4 @@ -# Organização das Páginas +# Scrappers A proposta desta seção é propor uma visão consolidada contendo todos os detalhes relacionados aos *scrappers* disponíveis para uso na biblioteca. A ideia é que cada *scrapper* tenha o seu próprio combo de documentação composto por: diff --git a/mkdocs.yml b/mkdocs.yml index d83d02a..e500621 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -68,7 +68,7 @@ nav: - Design: quickstart/design.md - Scrappers: - - Sobre os Scrappers: scrappers/about.md + - scrappers/index.md - Fundamentus: - Documentação: - Classe Fundamentus: scrappers/fundamentus/mkdocstrings/fundamentus.md From fd4bec2cc76ec254e7bb511d36b94257b0c7289d Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Mon, 12 Feb 2024 15:22:21 -0300 Subject: [PATCH 04/17] =?UTF-8?q?feat:=20removendo=20coluna=20date=5Fexec?= =?UTF-8?q?=20do=20m=C3=A9todo=20coleta=5Findicadores=5Fde=5Fativo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pynvest/scrappers/fundamentus.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pynvest/scrappers/fundamentus.py b/pynvest/scrappers/fundamentus.py index e3fbbb5..d9fe9c2 100644 --- a/pynvest/scrappers/fundamentus.py +++ b/pynvest/scrappers/fundamentus.py @@ -711,9 +711,7 @@ def coleta_indicadores_de_ativo( # Adicionando informação de data e hora de processamento now = datetime.now(timezone(timedelta(hours=-3))) - date_exec = now.strftime("%d-%m-%Y") datetime_exec = now.strftime("%d-%m-%Y %H:%M:%S") - df_indicadores_ativo.loc[:, ["date_exec"]] = date_exec df_indicadores_ativo.loc[:, ["datetime_exec"]] = datetime_exec # Validando transformação de tipos primitivos dos atributos From a22a35289b7e70274a761eb56a59db2d92d9fb29 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Mon, 12 Feb 2024 15:33:20 -0300 Subject: [PATCH 05/17] fix: alterando o nome de alguns atributos do DataFrame de FIIs em METADATA_COLS_FIIS --- pynvest/scrappers/fundamentus.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pynvest/scrappers/fundamentus.py b/pynvest/scrappers/fundamentus.py index d9fe9c2..a9a5cd7 100644 --- a/pynvest/scrappers/fundamentus.py +++ b/pynvest/scrappers/fundamentus.py @@ -120,9 +120,9 @@ "Segmento": "segmento", "Gestão": "tipo_gestao", "Cotação": "vlr_cot", - "Data últ cot": "data_ult_cot", - "Min 52 sem": "min_52_sem", - "Max 52 sem": "max_52_sem", + "Data últ cot": "dt_ult_cot", + "Min 52 sem": "vlr_min_52_sem", + "Max 52 sem": "vlr_max_52_sem", "Vol $ méd (2m)": "vol_med_neg_2m", "Valor de mercado": "vlr_mercado", "Nro. Cotas": "num_cotas", From 7262c0501110b83deeac364f962d643468495b9e Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Mon, 12 Feb 2024 23:20:55 -0300 Subject: [PATCH 06/17] =?UTF-8?q?docs:=20ajustando=20refer=C3=AAncias=20de?= =?UTF-8?q?=20links=20em=20novas=20p=C3=A1ginas=20de=20documenta=C3=A7?= =?UTF-8?q?=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/contribuindo/contribuindo.md | 4 + docs/scrappers/fundamentus/about.md | 2 - .../fundamentus/indicadores/acoes.md | 2 +- .../scrappers/fundamentus/indicadores/fiis.md | 2 +- docs/tools/demo.md | 114 ++++++++++++++++++ docs/tools/pynvest-tools.md | 99 +++++++++++++++ docs/tools/variaveis.md | 38 ++++++ mkdocs.yml | 7 ++ 8 files changed, 264 insertions(+), 4 deletions(-) create mode 100644 docs/contribuindo/contribuindo.md delete mode 100644 docs/scrappers/fundamentus/about.md create mode 100644 docs/tools/demo.md create mode 100644 docs/tools/pynvest-tools.md create mode 100644 docs/tools/variaveis.md diff --git a/docs/contribuindo/contribuindo.md b/docs/contribuindo/contribuindo.md new file mode 100644 index 0000000..4ac28bc --- /dev/null +++ b/docs/contribuindo/contribuindo.md @@ -0,0 +1,4 @@ +# Contribuindo com o pynvest + + :octicons-alert-16: + Página em construção diff --git a/docs/scrappers/fundamentus/about.md b/docs/scrappers/fundamentus/about.md deleted file mode 100644 index 9b023b9..0000000 --- a/docs/scrappers/fundamentus/about.md +++ /dev/null @@ -1,2 +0,0 @@ -# Sobre o Scrapper - diff --git a/docs/scrappers/fundamentus/indicadores/acoes.md b/docs/scrappers/fundamentus/indicadores/acoes.md index 05b3603..cfbc2ee 100644 --- a/docs/scrappers/fundamentus/indicadores/acoes.md +++ b/docs/scrappers/fundamentus/indicadores/acoes.md @@ -1,6 +1,6 @@ # Fundamentus: Indicadores de Ações -De forma objetiva, a tabela abaixo contempla uma lista de indicadores financeiros (e suas respectivas definições/descrições) disponíveis no site e obtidos como resultado do método [coleta_indicadores_de_ativo()](../../../mkdocstrings/scrappers/fundamentus.md/#pynvest.scrappers.fundamentus.Fundamentus.coleta_indicadores_de_ativo). +De forma objetiva, a tabela abaixo contempla uma lista de indicadores financeiros (e suas respectivas definições/descrições) disponíveis no site e obtidos como resultado do método [coleta_indicadores_de_ativo()](../mkdocstrings/fundamentus.md/#pynvest.scrappers.fundamentus.Fundamentus.coleta_indicadores_de_ativo). | **Nome Original** | **Atributo DataFrame** | **Descrição** | | :-- | :-- | :-- | diff --git a/docs/scrappers/fundamentus/indicadores/fiis.md b/docs/scrappers/fundamentus/indicadores/fiis.md index d96e3e8..0d87dc9 100644 --- a/docs/scrappers/fundamentus/indicadores/fiis.md +++ b/docs/scrappers/fundamentus/indicadores/fiis.md @@ -1,6 +1,6 @@ # Fundamentus: Indicadores de FIIs -No portal Fundamentus, Fundos Imobiliários possuem seus próprios indicadores fundamentalistas. A tabela abaixo traz a visão daquilo que também é obtido pela chamada do método [coleta_indicadores_de_ativo()](../../../mkdocstrings/scrappers/fundamentus.md/#pynvest.scrappers.fundamentus.Fundamentus.coleta_indicadores_de_ativo) com *tickers* de FIIs. +No portal Fundamentus, Fundos Imobiliários possuem seus próprios indicadores fundamentalistas. A tabela abaixo traz a visão daquilo que também é obtido pela chamada do método [coleta_indicadores_de_ativo()](../mkdocstrings/fundamentus.md/#pynvest.scrappers.fundamentus.Fundamentus.coleta_indicadores_de_ativo) com *tickers* de FIIs. | **Nome Original** | **Atributo DataFrame** | **Descrição** | | :-- | :-- | :-- | diff --git a/docs/tools/demo.md b/docs/tools/demo.md new file mode 100644 index 0000000..88371bb --- /dev/null +++ b/docs/tools/demo.md @@ -0,0 +1,114 @@ +# Demonstração pynvest-tools + +Para demonstrar as funcionalidades do pynvest-tools, vídeos foram gravados e transformados em GIFs para contemplar a jornada **completa** de utilização da solução, desde a chamada do módulo Terraform até a execução de *queries* no Athena com as tabelas geradas pelo processo. Navegue por essa decomentação e sane todas as suas dúvidas. + +## Implantação dos Recursos + +O primeiro passo a ser demonstrado é a chamada ao [módulo Terraform pynvest-tools](https://github.com/ThiagoPanini/pynvest-tools) para implantarmos, em uma conta AWS alvo, todos os recursos e serviços necessários por fazer a magia acontecer. Para isso, realizaremos: + +- A utilização do [Visual Studio Code](https://code.visualstudio.com/) como IDE +- A execução dos comandos Terraform para criação dos recursos: + - `terraform init` + - `terraform plan` + - `terraform apply` + + +??? example "📽️ Inicialização do módulo pynvest-tools via `terraform init`" + [![Um GIF mostrando a execução do comando terraform init para inicialização do módulo pynvest-tools](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-terraform-init-edited.gif?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-terraform-init-edited.gif?raw=true) + +Uma vez inicializado o módulo, podemos validar o plano de implantação dos recursos da seguinte maneira: + +??? example "📽️ Visualizando o plano de implantação via `terraform plan`" + [![Um GIF mostrando a execução do comando terraform plan para visualização de plano de implantação de recursos do módulo pynvest-tools](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-terraform-plan.gif?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-terraform-plan.gif?raw=true) + +Agora que sabemos a quantidade de recursos que serão adicionados em nosso ambiente AWS, podemos realizar a implanatação definitiva. + +??? example "📽️ Implantando os recursos via `terraform apply`" + [![Um GIF mostrando a execução do comando terraform apply para implantação de recursos do módulo pynvest-tools](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-terraform-apply-edited.gif?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-terraform-apply-edited.gif?raw=true) + + +## Visualizando os Recursos Implantados + +Após a correta chamada do módulo Terraform, teremos, em nosso ambiente AWS, todos os recursos contemplados dentro da lógica interna do módulo. De forma simplificada, podemos resumir tais recursos em: + +- **IAM** onde teremos *policies* e *roles* previamente definidas +- **Eventbridge** onde teremos um gatilho inicial de execução do processo de geração e atualização das tabelas +- **Lambda** onde teremos funções específicas para validar e processar os dados solicitados +- **Glue Data Catalog** onde teremos os *databases* e as tabelas devidamente catalogadas +- **Athena** onde teremos a possibilidade de consultar e analisar os dados gerados + +Para cada um destes cenários, vídeos de demonstração trarão a visão pós chamada do módulo com o intuito de dar uma maior clareza sobre tudo aquilo que está contemplado na solução. + +??? info "Relembrando a arquitetura do projeto" + ![[](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/drawio/pynvest-tool-diagram.png?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/docs/drawio/pynvest-tool-diagram.png?raw=true) + +### IAM + +Como forma de garantir que as aplicações tenham as permissões necessárias para obter, processar e atualizar os dados referentes aos indicadores financeiros, uma série de *policies* e *roles* [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) são automaticamente entregues aos usuários. Uma listagem completa de todos os elementos IAM contemplados pode ser visualizada abaixo: + +??? info "Lista de todas as policies IAM presentes no pynvest-tools" + + *Policies* + + | **Nome da policy** | **Descrição** | + | :-- | :-- | + | [pynvest-cloudwatch-logs](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/iam/policy-templates/pynvest-cloudwatch-logs.json) | Permite criação de *log groups* e escrita de *log streams* no CloudWatch | + | [pynvest-lambda-invoke-functions](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/iam/policy-templates/pynvest-lambda-invoke-functions.json) | Permite a invocação de outras funções Lambda criadas no projeto | + | [pynvest-sqs-send-msgs-to-tickers-queues](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/iam/policy-templates/pynvest-sqs-send-msgs-to-tickers-queues.json) | Permite o envio de mensagens para filas SQS criadas no projeto | + | [pynvest-sqs-poll-msgs-from-tickers-queues](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/iam/policy-templates/pynvest-sqs-poll-msgs-from-tickers-queues.json) | Permite o *poll* de mensagens das filas SQS criadas no projeto | + | [pynvest-s3-manage-sor-data](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/iam/policy-templates/pynvest-s3-manage-sor-data.json) | Permite listagem, leitura, escrita e deleção de objetos em bucket e prefixos restritos para dados SoR processados no projeto | + | [pynvest-gluedatacatalog-check-partitions-sor-tables](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/iam/policy-templates/pynvest-gluedatacatalog-check-partitions-sor-tables.json) | Permite a validação e eventual deleção de partições em tabelas SoR criadas pelo projeto | + | [pynvest-gluedatacatalog-manage-sor-tables](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/iam/policy-templates/pynvest-gluedatacatalog-manage-sor-tables.json) | Permite a criação e atualização de tabelas SoR criadas no projeto, além da atualização de partições processadas | + +Agora que sabemos mais a respeito de tudo o que está consolidado no âmbito de identidade de acesso no projeto pynvest-tools, vamos visualizar os elementos já criados em nosso ambiente AWS alvo após a [implantação dos recursos](./demo.md#implantação-dos-recursos). + +??? example "📽️ Visualizando policies e roles IAM criadas pelo projeto" + [![Um GIF mostrando a presença de policies e roles IAM implantadas pelo módulo pynvest-tools](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-iam.gif?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-iam.gif?raw=true) + + +### Eventbridge + +Agora que visualizamos a presença das *policies* e *roles* IAM necessárias para conceder todas as permissões necessárias para os recursos do módulo pynvest-tools, vamos verificar a existência do gatilho de inicialização do processo de obtenção e atualização dos dados de indicadores financeiros (Lambda *trigger*). Faremos isso através da validação da existência de uma regra no [Eventbridge](https://aws.amazon.com/pt/eventbridge/). + +??? example "📽️ Visualizando regra de agendamento de execução de processos" + [![Um GIF mostrando a presença de uma regra no eventbridge](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-eventbridge.gif?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-eventbridge.gif?raw=true) + +### Lambda + +Com a regra de agendamento devidamente implementada, podemos navegar no serviço [Lambda](https://aws.amazon.com/pt/lambda/) e validar se as funções foram criadas com sucesso. Em essência, tais funções são as aplicações responsáveis por consolidar toda a lógica de coleta, tratamento e atualização dos dados de indicadores financeiros de ativos da B3. Algumas funções possuem integrações com serviços específicos, como o [SQS](https://aws.amazon.com/sqs/), o [S3](https://aws.amazon.com/s3/) e o [Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html). + +??? example "📽️ Visualizando funções Lambda para obtenção e processamento dos dados" + [![Um GIF mostrando a presença de funções Lambda](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-lambda.gif?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-lambda.gif?raw=true) + +### SQS + +Em uma das etapas de obtenção dos dados de indicadores financeiros, *tickers* de ativos são posicionados em filas SQS para posterior processamento. + +??? example "📽️ Visualizando filas SQS para facilitar o processamento dos dados" + [![Um GIF mostrando a presença de filas SQS](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-sqs.gif?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-sqs.gif?raw=true) + + +### S3 + +Na dinâmica de atualização de dados, funções Lambda são engatilhadas por filas SQS para obter e escrever arquivos PARQUET em um bucket no S3 (por exemplo, o bucket SoR informado pelo usuário no parâmetro `bucket_names_map` exigido pelo módulo pynvest-tools). Simulando essa dinâmica de processamento, uma vez obtidos os dados, espera-se que novos prefixos de tabela surjam no S3 apontado com os respectivos arquivos PARQUET processados. + +??? example "📽️ Visualizando dados atualizados no S3 após a execução agendada das Lambdas" + [![Um GIF mostrando a presença de dados processados no S3](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-s3.gif?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-s3.gif?raw=true) + +Neste momento, é importante reforçar que o gatilho do Eventbridge é o início de tudo. Por padrão, o módulo pynvest-tools considera uma execução diária com início às 19h. Em outras palavras, novos dados irão chegar no bucket alvo todos os dias após às 19h. + +### Glue Data Catalog + +E assim, em conjunto com a escrita de arquivos PARQUET em bucket do S3, há também a catalogação dos dados em tabelas do Glue Data Catalog. Ao acessar a página do serviço, será possível visualizar novos *databases* e tabelas criadas pelos processos internos disponibilizados pelo módulo pynvest-tools. + +??? example "📽️ Visualizando databases e tabelas disponibilizadas no Glue Data Catalog" + [![Um GIF mostrando a presença de databases e tabelas disponibilizadas no Glue Data Catalog](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-glue-data-catalog.gif?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-glue-data-catalog.gif?raw=true) + + +### Athena + +Por fim, uma vez atualizados os indicadores financeiros através das tabelas disponibilizadas, os usuários poderão realizar as mais variadas análises em seu ambiente de nuvem AWS. Uma das possibilidades é, por exemplo, a execução de *queries* analíticas no Athena. + +??? example "📽️ Executando queries no Athena para realização de análise de dados" + [![Um GIF mostrando a execução de queries no Athena para realização de análise de dados](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-athena.gif?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.x/docs/gifs/pynvest-tools-athena.gif?raw=true) + diff --git a/docs/tools/pynvest-tools.md b/docs/tools/pynvest-tools.md new file mode 100644 index 0000000..873b6ad --- /dev/null +++ b/docs/tools/pynvest-tools.md @@ -0,0 +1,99 @@ +# Pynvest Tools + +Você já imaginou ter todo um conjunto de serviços AWS implantados em seu ambiente para obter, atualizar e analisar recorrentemente **indicadores financeiros** de ativos da B3? + +Conheça o [pynvest-tools](https://github.com/ThiagoPanini/pynvest-tools), o seu módulo [Terraform](https://www.terraform.io/) para obter tudo isso com pouquíssimas linhas de código. + +## O que é o pynvest-tools? + +Como já mencionado, o *pynvest-tools* é um módulo Terraform capaz de fornecer uma experiência única de implantação de toda uma arquitetura AWS provisionada para garantir a obtenção e uma recorrente atualização de indicadores financeiros utilizando a biblioteca [pynvest](../index.md). + +???+ tip "Quais os benefícios ao utilizar o módulo pynvest-tools?" + Como principal *outcome*, os usuários que chamarem o módulo pynvest-tools em seus projetos Terraform terão, entre outros insumos: + + - ✅ Processo agendado para obtenção de dados de indicadores financeiros de ativos + - ✅ Arquitetura *serverless*, resiliente e de baixo custo + - ✅ Tabelas atualizadas diariamente no Glue Data Catalog + - ✅ Possibilidade de realizar as mais variadas análises financeiras via queries do Athena + - ✅ Possibilidade de criar *dashboards* no Quicksight utilizando dados financeiros + +## Arquitetura + +Toda a solução foi desenhada dentro dos propósitos de uma arquitetura [serverless](https://aws.amazon.com/serverless/) utilizando serviços nativos da AWS que interagem entre si de forma [altamente desacoplada](https://aws.amazon.com/blogs/compute/decoupling-larger-applications-with-amazon-eventbridge/) e através de eventos. + +![[](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/docs/drawio/pynvest-tool-diagram.png?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/docs/drawio/pynvest-tool-diagram.png?raw=true) + +??? example "Passo a passo do processo de obtenção e atualização de indicadores" + + Considerando as etapas destacadas pelos números no desenho de arquitetura, temos: + + **1 -** O [Eventbridge](https://aws.amazon.com/pt/eventbridge/) engatilha a primeira função [Lambda](https://aws.amazon.com/pt/lambda/) através de uma expressão cron. Por padrão, a execução ocorre de segunda à sexta-feira às 19h (UTC-3). + + **2 -** A primeira função Lambda valida no [Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html) e no [S3](https://aws.amazon.com/s3/) a existência de partições relacionadas à data de execução do processo. Caso as partições existam nas tabelas geradas, a função se encarrega de eliminá-las para evitar duplicidades eventualmente causadas por múltiplas execuções em um único dia. + + **3 -** Após executada com sucesso, a primeira função Lambda engatilha, de forma [assíncrona](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html), uma segunda função Lambda para continuidade no processo. + + **4 -** Essa função Lambda tem a responsabilidade de coletar os *tickers* (códigos) de ativos financeiros (Ações e Fundos Imobiliários) através do método [Fundamentus.coleta_indicadores_de_ativo()](../../mkdocstrings/scrappers/fundamentus.md/#pynvest.scrappers.fundamentus.Fundamentus.coleta_indicadores_de_ativo). + + **5 -** Os *tickers* coletados são então enviados para diferentes filas SQS de acordo com seu tipo (Ações ou Fundos Imobiliários). + + **6 -** As filas SQS servem como gatilho para execução de outras duas funções Lambda responsáveis, respectivamente, por coletar indicadores financeiros de Ações e Fundos Imobiliários. O processo de coleta de indicadores financeiros é feito através do método [Fundamentus.extracao_tickers_de_ativos()](../../mkdocstrings/scrappers/fundamentus.md/#pynvest.scrappers.fundamentus.Fundamentus.extracao_tickers_de_ativos). + + **7 -** Após coletar os indicadores em [DataFrames do pandas](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html), os dados [SoR](https://en.wikipedia.org/wiki/System_of_record) são então disponibilizados no S3 e catalogados no Glue Data Catalog via [AWS SDK for pandas](https://aws-sdk-pandas.readthedocs.io/en/stable/index.html) em duas tabelas: + + - `tbl_fundamentus_indicadores_acoes` contendo indicadores financeiros específicos de Ações listadas na B3 + - `tbl_fundamentus_indicadores_fiis` contendo indicadores financeiros específicos de FIIs listados na B3 + + **8 -** Os usuários podem, enfim, consultar os dados disponibilizados através do [Athena](https://aws.amazon.com/pt/athena/) para os mais variados propósitos analíticos + +## Quickstart + +Agora que sabemos exatamente o que é o módulo pynvest-tools, vamos detalhar como utilizar e extrair o melhor de suas funcionalidades. + +### Pré Requisitos + +- ☁️ [Conta AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) disponível para uso +- 🔑 [Acesso programático](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html) à conta com chaves de acesso +- ⛏ [Terraform](https://www.terraform.io/) instalado + +### Chamando o Módulo Terraform + +Uma vez cumprido os pré requisitos, o usuário poderá obter todos os insumos já detalhados através de uma [chamada de módulo Terraform](https://developer.hashicorp.com/terraform/language/modules/syntax) no seguinte formato: + +```python +# Chamada de módulo pynvest-tools em arquivo main.tf +module "pynvest-tools" { + source = "git::https://github.com/ThiagoPanini/pynvest-tools?ref=main" + + bucket_names_map = { + "sor" = "some-bucket-name-to-store-sor-data" + } +} +``` + +Após isso, basta executar os seguintes comandos Terraform para implantar a infraestrutura relacionada: + +- `terraform init` para inicialização do módulo +- `terraform plan` para validar o plano de implantação +- `terraform apply` para aplicar a implantação na conta AWS alvo + +## Variáveis do Módulo + +O módulo Terraform conta com algumas variáveis capazes de customizar a experiência de seus usuários. Para verificar quais variáveis estão atualmente disponíveis, basta acessar a [página de variáveis do módulo](./variaveis.md). + +## Tabelas Disponíveis + +A principal entrega de valor do *pynvest-tools* se materializa através da disponibilização de tabelas no Glue Data Catalog capazes de serem consumidas e analisadas pelos usuários para os mais variados propósitos. Até o momento, as seguintes tabelas se encontram disponíveis: + +| **Camada** | **Database** | **Tabela** | **Descrição** | +| :-- | :-- | :-- | :-- | +| SoR | `db_pynvest_sor` | `tbl_fundamentus_indicadores_acoes` | Tabela contendo indicadores financeiros específicos de Ações listadas na B3 | +| SoR | `db_pynvest_sor` | `tbl_fundamentus_indicadores_fiis` | Tabela contendo indicadores financeiros específicos de FIIs listadas na B3 | + +As tabelas são particionadas através da data de execução do processo (atributo `date_exec`) e seus dados são armazenados em buckets fornecidos pelo usuário através da variável *bucket_names_map* do módulo. + +Para analisar a raíz dos indicadores financeiros consolidados nas tabelas, basta acessar a [página de indicadores](../indicadores/sobre-indicadores.md). + +## Demonstração + +Por fim, visando proporcionar uma experiência completa de prova de valor desta solução, a [página de demo](./demo.md) conta com demonstrações simplificadas de alguns elementos entregues pelo módulo e como análises específicas podem ser realizadas dentro desse propósito. \ No newline at end of file diff --git a/docs/tools/variaveis.md b/docs/tools/variaveis.md new file mode 100644 index 0000000..d736b7d --- /dev/null +++ b/docs/tools/variaveis.md @@ -0,0 +1,38 @@ +# Variáveis do Módulo + +Até o presente momento, a única variável obrigatória do módulo a ser explicitamente fornecida pelo usuário é a *bucket_names_map* e seu papel é configurar, de forma genérica, o nome de um bucket S3 da conta do usuário para armazenamento de dados das tabelas geradas durante o processo. + +Existem, ainda, uma série de outras variáveis capazes de serem utilizadas pelos usuários para customizar os recursos implantados. Todas as demais variáveis (com execção da *bucket_names_map*) possuem valores padrão que não exigem uma configuração adicional caso os usuários não queiram efetivamente alterar parâmetros específicos de serviços. + +Para uma lista completa de todas as variáveis disponíveis, os usuários podem utilizar a tabela abaixo como referência: + +## Variáveis do S3 e Glue Data Catalog + +| **Variável** | **Tipo** | **Descrição** | **Default** | +| :-- | :-- | :-- | :-- | +| bucket_names_map | map(string) | Dicionário (map) contendo nomes dos buckets SoR, SoT e Spec da conta AWS alvo de implantação dos recursos. O objetivo desta variável e permitir que o usuário forneça seus próprios buckets para armazenamento dos arquivos gerados. O correto preenchimento desta variável exige que as referências de nomes sejam fornecidas dentro das chaves 'sor', 'sot' e 'spec'. O usuário também pode fornecer o mesmo nome de bucket para as três quebras, caso queira armazenar os dados das tabelas em um único bucket. | *Required* | +| flag_create_databases | bool | Flag para validar a criação de databases no Glue Data Catalog caso o usuário não tenha ou não queira utilizar databases já existentes para catalogação das tabelas geradas. | `true` | +| databases_names_map | map(string) | Dicionário (map) contendo os nomes dos databases no Glue Data Catalog para catalogação de tabelas SoR, SoT e Spec. O correto preenchimento desta variável exige que as referências de nomes sejam fornecidas dentro das chaves 'sor', 'sot' e 'spec'. O usuário também pode fornecer o mesmo nome de database para as três quebras, caso queira armazenar os dados das tabelas em um único database. | ```{"sor" = "db_pynvest_sor", "sot" = "db_pynvest_sot", "spec" = "db_pynvest_spec"}``` | +| sor_acoes_table_name | string | Nome da tabela SoR gerada a partir do processamento de indicadores financeiros de Ações | `"tbl_fundamentus_indicadores_acoes"` | +| sor_fiis_table_name | string | Nome da tabela SoR gerada a partir do processamento de indicadores financeiros de Fundos Imobiliários | `"tbl_fundamentus_indicadores_fiis"` | + +## Variáveis do Eventbridge + +| **Variável** | **Tipo** | **Descrição** | **Default** | +| :-- | :-- | :-- | :-- | +| schedule_expression_to_initialize | string | Expressão cron responsável por engatilhar a primeira etapa do processo | `"cron(0 22 ? * MON-FRI *)"` | + +## Variáveis de Filas SQS + +| **Variável** | **Tipo** | **Descrição** | **Default** | +| :-- | :-- | :-- | :-- | +| sqs_tickers_acoes_queue_name | string | Nome da fila SQS responsável por receber as mensagens contendo informações dos tickers de Ações extraídos | `"pynvest-tickers-acoes-queue"` | +| sqs_tickers_fiis_queue_name | string | Nome da fila SQS responsável por receber as mensagens contendo informações dos tickers de FIIs extraídos | `"pynvest-tickers-fiis-queue"` | +| sqs_visibility_timeout_seconds | number | Tempo (em segundos) em que uma mensagem recebida por um consumidor ficará invisível para outros consumidores | `1080` | +| sqs_message_retention_seconds | number | Tempo (em segundos) em que uma mensagem não deletada continua armazenada. Após esse período, as mensagens da fila são deletadas | `3060` | +| sqs_max_message_size | number | Tamanho máximo (em bytes) das mensagens da fila | `131072` | +| sqs_delay_seconds | number | Delay em que novas mensagens chegam à fila caso os consumidores necessitem de mais tempo para processamento | `0` | +| sqs_receive_wait_time_seconds | number | Tempo máximo (em segundos) que processos de pooling irão aguardar por mensagens disponíveis (Short Pooling versus Long Pooling) | `0` | +| sqs_lambda_trigger_batch_size | number | Número máximo de registros a serem enviados para a função em cada batch | `10` | +| sqs_lambda_trigger_batch_window | number | Valor máximo de tempo (em segundos) que a função irá aguardar para a coleta de registros antes da invocação | `5` | +| sqs_lambda_trigger_max_concurrency | number | Número máximo de funções concorrentes a serem invocadas pelo gatilho | `10` | \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index e500621..7eca479 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -78,6 +78,13 @@ nav: - Indicadores: - Ações: scrappers/fundamentus/indicadores/acoes.md - FIIs: scrappers/fundamentus/indicadores/fiis.md + + - Tools: + - O pynvest-tools: tools/pynvest-tools.md + - Variáveis do Módulo: tools/variaveis.md + - Demo: tools/demo.md + + - Contribuindo: contribuindo/contribuindo.md # Configurando extensões markdown_extensions: From 01283c415d17c44f90b322f84ed061f61000a9c8 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Fri, 16 Feb 2024 12:13:24 -0300 Subject: [PATCH 07/17] =?UTF-8?q?fix:=20retirando=20duplo=20underline=20do?= =?UTF-8?q?=20nome=20dos=20m=C3=A9todos=20de=20parse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pynvest/scrappers/fundamentus.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pynvest/scrappers/fundamentus.py b/pynvest/scrappers/fundamentus.py index a9a5cd7..8aa945a 100644 --- a/pynvest/scrappers/fundamentus.py +++ b/pynvest/scrappers/fundamentus.py @@ -306,7 +306,7 @@ def __init__( self.metadata_cols_fiis = metadata_cols_fiis @staticmethod - def __parse_float_cols(df: pd.DataFrame, cols_list: list) -> pd.DataFrame: + def _parse_float_cols(df: pd.DataFrame, cols_list: list) -> pd.DataFrame: """ Transforma strings que representam números em objetos do tipo float. @@ -357,7 +357,7 @@ def __parse_float_cols(df: pd.DataFrame, cols_list: list) -> pd.DataFrame: return df @staticmethod - def __parse_pct_cols(df: pd.DataFrame, cols_list: list) -> pd.DataFrame: + def _parse_pct_cols(df: pd.DataFrame, cols_list: list) -> pd.DataFrame: """ Transforma strings que representam percentuais em objetos do tipo float @@ -731,13 +731,13 @@ def coleta_indicadores_de_ativo( ] # Transformando strings que representam números - df_indicadores_ativo_float_prep = self.__parse_float_cols( + df_indicadores_ativo_float_prep = self._parse_float_cols( df=df_indicadores_ativo, cols_list=float_cols_to_parse ) # Transformando percentuais que representam números - df_indicadores_ativo_prep = self.__parse_pct_cols( + df_indicadores_ativo_prep = self._parse_pct_cols( df=df_indicadores_ativo_float_prep, cols_list=percent_cols_to_parse ) From d8ef717f00ae08af5cad0667df3f5bdd69a0c781 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Thu, 22 Feb 2024 23:32:13 -0300 Subject: [PATCH 08/17] =?UTF-8?q?docs:=20finalizando=20documenta=C3=A7?= =?UTF-8?q?=C3=A3o=20sobre=20recursos=20provisionados=20e=20iniciando=20do?= =?UTF-8?q?c=20sobre=20etapas=20do=20processo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/quickstart/instalacao.md | 3 +- docs/tools/arquitetura.md | 19 ++++ docs/tools/processo.md | 42 +++++++++ docs/tools/quickstart.md | 42 +++++++++ docs/tools/recursos.md | 157 ++++++++++++++++++++++++++++++++++ docs/tools/tmp.md | 35 ++++++++ docs/tools/tools.md | 48 +++++++++++ mkdocs.yml | 28 ++++-- 8 files changed, 367 insertions(+), 7 deletions(-) create mode 100644 docs/tools/arquitetura.md create mode 100644 docs/tools/processo.md create mode 100644 docs/tools/quickstart.md create mode 100644 docs/tools/recursos.md create mode 100644 docs/tools/tmp.md create mode 100644 docs/tools/tools.md diff --git a/docs/quickstart/instalacao.md b/docs/quickstart/instalacao.md index 8430bda..1020637 100644 --- a/docs/quickstart/instalacao.md +++ b/docs/quickstart/instalacao.md @@ -4,8 +4,7 @@
pynvest-logo -
-
+
PyPi shield diff --git a/docs/tools/arquitetura.md b/docs/tools/arquitetura.md new file mode 100644 index 0000000..8deb3dc --- /dev/null +++ b/docs/tools/arquitetura.md @@ -0,0 +1,19 @@ +# Arquitetura de Solução + +Agora que temos uma noção sobre o que é o módulo `pynvest-tools` e os principais benefícios atrelados ao seu uso, vamos iniciar um aprofundamento técnico sobre o que está por trás da solução. + +Iniciando pela arquitetura, a imagem abaixo traz uma visão detalhada da solução contendo toda a dinâmica de serviços e integrações disponibilizadas para o usuário. + + + :octicons-light-bulb-16: + **Dica:** clique na imagem para uma melhor visualização dos elementos. + + +![Arquitetura de Solução](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/drawio/pynvest-tool-diagram-print.png?raw=true) + +Em essência, o diagrama acima contempla todos os serviços AWS entregues pelo módulo Terraform e, além disso, traz a visão de todas as integrações entre os recursos. + +Toda a dinâmica de implantação do módulo é baseada em **6 macro etapas** que, em linhas gerais, contemplam toda a lógica de extração, preparação e atualização agendada dos dados financeiros disponibilizados ao usuário em seu próprio ambiente AWS. + +Ao longo desta seção de detalhamento, será possível observar todas as nuances e particularidades dos [recursos provisionados](./recursos.md) e das [etapas de processamento da solução](./processo.md). + diff --git a/docs/tools/processo.md b/docs/tools/processo.md new file mode 100644 index 0000000..0d400aa --- /dev/null +++ b/docs/tools/processo.md @@ -0,0 +1,42 @@ +# Etapas do Processamento + +A solução `pynvest-tools` abrange a implantação de uma série de recursos AWS que, juntos, comportam uma série de atividades previamente definidas e designadas para um propósito único: disponibilizar dados confiáveis e recorrentemente atualizados contendo indicadores financeiros de ações e fundos imobiliários. + +Para que isso seja possível, um total de **6 macro etapas** foram desenhadas de modo pontual. Nesta seção, o usuário poderá encontrar detalhes sobre cada uma das etapas de processamento dos recursos do módulo. + +??? tip "Lembrete: arquitetura da solução" + Expanda esse bloco sempre que precisar relembrar o desenho de arquitetura de solução. + + + :octicons-light-bulb-16: + **Dica:** clique na imagem para uma melhor visualização dos elementos. + + + ![Arquitetura de Solução](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/drawio/pynvest-tool-diagram-print.png?raw=true) + + + :octicons-light-bulb-16: + **Dica:** visando facilitar o detalhamento das etapas, cada ação a ser exemplificada está identificada, nas imagens de arquitetura disponibilizadas, com índices que se referem à macro etapa. Por exemplo, a etapa 1 definida como "eliminação de partições do dia" contemplam os passos 1.1, 1.2 e 1.3. Cada um desses passos será detalhado para o usuário. + + +## Etapa 1: Eliminação das Partições do Dia + +![Desenho de arquitetura contendo apenas a primeira etapa do processamento](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/imgs/arquitetura-etapas/etapa-01.png?raw=true) + +O primeiro passo + +## Etapa 2: Envio de Códigos de Ativos para Fila SQS + +![Desenho de arquitetura contendo apenas a segunda etapa do processamento](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/imgs/arquitetura-etapas/etapa-02.png?raw=true) + + +## Etapa 3: Processamento de Tabelas SoR + + +## Etapa 4: Processamento de Tabelas SoT + + +## Etapa 5: Processamento de Tabela Spec + + +## Etapa 6: Deduplicação de Registros \ No newline at end of file diff --git a/docs/tools/quickstart.md b/docs/tools/quickstart.md new file mode 100644 index 0000000..133f8d5 --- /dev/null +++ b/docs/tools/quickstart.md @@ -0,0 +1,42 @@ +# Primeiros Passos + +Agora que sabemos exatamente o que é o módulo pynvest-tools, vamos detalhar como utilizar e extrair o melhor de suas funcionalidades. + +## Pré Requisitos + +- ☁️ [Conta AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) disponível para uso +- 🔑 [Acesso programático](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html) à conta com chaves de acesso +- ⛏ [Terraform](https://www.terraform.io/) instalado +- 🪣 [Buckets S3](https://aws.amazon.com/s3/) existentes na conta AWS para armazenamento de dados brutos (SoR), preparados (SoT) e especializados (Spec) + +## Chamando o Módulo Terraform + +Uma vez cumprido os pré requisitos, o usuário poderá obter todos os insumos já detalhados através de uma [chamada de módulo Terraform](https://developer.hashicorp.com/terraform/language/modules/syntax) no seguinte formato: + +```python +# Chamada de módulo pynvest-tools em arquivo main.tf +module "pynvest-tools" { + source = "git::https://github.com/ThiagoPanini/pynvest-tools?ref=main" + + bucket_names_map = { + "sor" = "some-bucket-name-to-store-sor-data", + "sot" = "some-bucket-name-to-store-sot-data", + "spec" = "some-bucket-name-to-store-spec-data" + } +} +``` + +???+ question "Quais variáveis o usuário necessita passar para o módulo?" + Como esperado, um módulo Terraform pode ser configurado através de variáveis que guiam regras específicas dentro da lógica embutida no módulo. + + No `pynvest-tools`, muitas das variáveis já tão fornecidas com um valor padrão, não exigindo qualquer tipo de ação por parte do usuário, exceto se o mesmo deseja configurar comportamentos específicos dos recursos provisionados. + + A exceção fica por conta da variável `bucket_names_map` que, essencialmente, tem a função de configurar toda a lógica de armazenamento dos dados obtidos nas aplicações criadas pelo módulo. Esta é a **única variável obrigatória** exigida pelo módulo e seu preenchimento deve ser feito através de um dicionário (map type, no Terraform) contendo as chaves "sor", "sot" e "spec", cujos valores devem representar nomes válidos para buckets S3 responsáveis por armazenar dados nessas três camadas. + +Após configurar a chamada ao módulo, basta executar os seguintes comandos Terraform para implantar a infraestrutura relacionada: + +- `terraform init` para inicialização do módulo +- `terraform plan` para validar o plano de implantação +- `terraform apply` para aplicar a implantação na conta AWS alvo + +Pronto! Você agora terá em sua conta AWS todo um conjunto de serviços para extrair, preparar e armazenar diariamente indicadores de Ações e Fundos Imobiliários da B3! Para saber mais sobre os recursos disponibilizados, não deixe de chegar a página contendo os [detalhes da solução]() \ No newline at end of file diff --git a/docs/tools/recursos.md b/docs/tools/recursos.md new file mode 100644 index 0000000..1603c05 --- /dev/null +++ b/docs/tools/recursos.md @@ -0,0 +1,157 @@ +# Recursos Provisionados pelo Módulo + +Sendo um módulo Terraform, o `pynvest-tools` possui toda uma lógica de código baseada em IaC (*Infrastructure as Code*) para provisionar uma série de serviços AWS previamente configurados capazes de realizar todas as tarefas necessárias para proporcionar, ao usuário, uma experiência completa de análise de indicadores financeiros. + +Conhecer os detalhes de cada um dos recursos provisionados é um passo importante para que os usuários compreendam, de fato, toda a mágia por trás da solução. + +??? tip "Lembrete: arquitetura da solução" + Expanda esse bloco sempre que precisar relembrar o desenho de arquitetura de solução. + + + :octicons-light-bulb-16: + **Dica:** clique na imagem para uma melhor visualização dos elementos. + + + ![Arquitetura de Solução](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/drawio/pynvest-tool-diagram-print.png?raw=true) + +## Serviços AWS + +Em linhas gerais, a última versão do módulo `pynvest-tools` considera o provisionamento dos seguintes recursos: + +- :octicons-lock-16: :octicons-chevron-right-12: 9 *policies* e 7 *roles* no IAM para configuração das permissões das aplicações +- :octicons-database-16: :octicons-chevron-right-12: 3 databases e 5 tabelas no Glue Data Catalog para consultas analíticas nos indicadores financeiros processados +- :octicons-terminal-16: :octicons-chevron-right-12: 7 funções Lambda contendo todas as lógicas de processamento embarcadas +- :octicons-mail-16: :octicons-chevron-right-12: 2 filas SQS para armazenamento de *tickers* (códigos) de Ações e Fundos Imobiliários a terem seus respectivos indicadores processados +- :octicons-workflow-16: :octicons-chevron-right-12: 1 workflow no Step Functions para otimização do armazenamento dos dados +- :octicons-calendar-16: :octicons-chevron-right-12: 2 regras de agendamento no Eventbridge para execução dos processos + +Cada serviço AWS contemplado no módulo `pynvest-tools` possui uma função representativa sobre como a solução, em geral, funciona. As subseções a seguir visam trazer um pouco mais de clareza sobre como cada um dos recursos acima listados atuam para gerar o valor esperado aos usuários. + +### :octicons-lock-16: Policies e Roles IAM + +As *policies* e *roles* IAM criadas pelo módulo `pynvest-tools` foram pensadas como elementos capazes de fornecer apenas as permissões necessárias para as aplicações e serviços de orquestração da solução. + +Cada *policy* possui um contexto específico capaz de ser visualizado através da tabela abaixo: + +??? info "Listagem de policies IAM presentes no módulo" + | :octicons-lock-16: **Policy** | :octicons-pencil-16: **Descrição** | :octicons-link-16: **JSON** | + | :-- | :-- | :-- | + | pynvest-store-cloudwatch-logs | Concede permissões de escrita de logs no CloudWatch através de funções Lambda relacionadas ao módulo | [Link](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/infra/modules/iam/policy-templates/pynvest-store-cloudwatch-logs.json) | + | pynvest-check-and-delete-partitions | Concede permissões de listagem e eliminação de objetos no S3 e de partições de tabelas no Glue Data Catalog | [Link](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/infra/modules/iam/policy-templates/pynvest-check-and-delete-partitions.json) | + | pynvest-invoke-lambda-functions | Concede permissões de invocação de outras funções Lambda relacionadas ao módulo | [Link](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/infra/modules/iam/policy-templates/pynvest-invoke-lambda-functions.json) | + | pynvest-invoke-state-machines | Concede permissões de inicialização de workflows do Step Function relacionados ao módulo | [Link](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/infra/modules/iam/policy-templates/pynvest-invoke-state-machines.json) | + | pynvest-send-msgs-to-tickers-queues | Concede permissões para envio de mensagens para filas no SQS relacionadas ao módulo | [Link](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/infra/modules/iam/policy-templates/pynvest-send-msgs-to-tickers-queues.json) | + | pynvest-share-sor-financial-data | Concede permissões de coleta de mensagens de filas SQS relacionadas ao módulo, além da escrita de objetos no S3 e atualização de partições em tabelas no Glue Data Catalog na camada SoR (dados brutos) | [Link](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/infra/modules/iam/policy-templates/pynvest-share-sor-financial-data.json) | + | pynvest-share-sot-financial-data | Concede permissões de leitura de dados na camada SoR (dados brutos), além da escrita de objetos no S3 e atualização de partições em tabelas no Glue Data Catalog na camada SoT (dados preparados) | [Link](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/infra/modules/iam/policy-templates/pynvest-share-sot-financial-data.json) | + | pynvest-share-spec-financial-data | Concede permissões de leitura de dados na camada SoT (dados preparados), além da escrita de objetos no S3 e atualização de partições em tabelas no Glue Data Catalog na camada Spec (dados especializados) | [Link](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/infra/modules/iam/policy-templates/pynvest-share-spec-financial-data.json) | + | pynvest-dedup-financial-data | Concede permissões de leitura e escrita de dados nas camadas SoT e Spec, tanto no S3 quanto no Glue Data Catalog | [Link](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/infra/modules/iam/policy-templates/pynvest-dedup-financial-data.json) | + +Já as *roles* são basicamente construções assumidas por aplicações/serviços e formadas por uma ou mais *policies* presentes no módulo. + +??? info "Listagem de roles IAM presentes no módulo" + | :octicons-lock-16: **Role** | :octicons-pencil-16: **Descrição** | + | :-- | :-- | + | pynvest-lambda-check-and-delete-partitions | Role assumida pela função Lambda responsável por verificar e eliminar dados relacionados à partição da data do processamento agendado | + | pynvest-lambda-send-msgs-to-tickers-queues | Role assumida pela função Lambda responsável por coletar tickers de ativos e enviar mensagens para filas no SQS | + | pynvest-lambda-share-sor-financial-data | Role assumida pela função Lambda responsável por extrair e armazenar dados brutos de indicadores financeiros na camada SoR | + | pynvest-lambda-share-sot-financial-data | Role assumida pela função Lambda responsável por preparar e armazenar dados tratados de indicadores financeiros na camada SoT | + | pynvest-lambda-share-spec-financial-data | Role assumida pela função Lambda responsável por especializar e armazenar dados consolidados de indicadores financeiros na camada Spec | + | pynvest-lambda-dedup-financial-data | Role assumida por funções Lambda responsáveis por ler, remover registros duplicados e armazenar dados nas camadas SoT e Spec | + | pynvest-sfn-invoke-lambda-functions | Role assumida pela máquina de estados no Step Functions para realização do processo de remoção de registros duplicados | + + + :octicons-eye-16: + **Observação:** todas as *policies* IAM presentes no módulo são criadas com base na prática de [least privileges](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_permissions_least_privileges.html), ou seja, contemplam apenas as permissões estritamente necessárias para as aplicações. Isto é alcançado através de *templates* do Terraform onde variáveis específicas são definidas nos arquivos JSON das *policies* e substituídas em tempo de execução do módulo. + + + +### :octicons-database-16: Databases e Tabelas no Data Catalog + +O módulo `pynvest-tools` também contempla a criação de *databases* e tabelas previamente configuradas no Glue Data Catalog para que o usuário possa armazenar e analisar os dados financeiros obtidos em tempo de execução da solução. + +??? info "Tabelas criadas pelo módulo" + | :octicons-database-16: **Tabela** | :octicons-database-16: **Database** | :octicons-pencil-16: **Descrição** | + | :-- | :-- | :-- | + | tbsor_fundamentus_indicadores_acoes_raw | SoR | Tabela para armazenamento de indicadores financeiros de **Ações** extraídos diretamente do portal Fundamentus e sem qualquer tipo de preparação (dados brutos) | + | tbsor_fundamentus_indicadores_fiis_raw | SoR | Tabela para armazenamento de indicadores financeiros de **Fundos Imobiliários** extraídos diretamente do portal Fundamentus e sem qualquer tipo de preparação (dados brutos) | + | tbsot_fundamentus_indicadores_acoes_prep | SoT | Tabela preparada de indicadores financeiros de **Ações** (considerando tipagem e transformações específicas em strings) | + | tbsot_fundamentus_indicadores_acoes_prep | SoT | Tabela preparada de indicadores financeiros de **Fundos Imobiliários** (considerando tipagem e transformações específicas em strings) | + | tbspec_fundamentus_cotacao_ativos | Spec | Tabela especializada contendo apenas informações relacionadas à cotações de ativos financeiros, considerando tanto **Ações** quanto **Fundos Imobiliários** | + +As tabelas são, provavelmente, os ativos mais valiosos entregues pelo módulo `pynvest-tools`. Através delas, os usuários poderão realizar uma série de consultas e análises de indicadores financeiros de ações e fundos imobiliários. + + + :octicons-eye-16: + **Observação:** todas as tabelas criadas pelo módulo possuem atributos e indicadores bem definidos. Para consultar quais indicadores financeiros estão sendo contemplados em cada uma das tabelas, não deixe de navegar pela seção de [indicadores](). + + +### :octicons-terminal-16: Funções Lambda + +Apesar de já proporcionar toda a lógica de criação e documentação das tabelas, sem **dados** não há análise. Dito isso, é preciso conhecer em detalhes as aplicações capazes de extrair, preparar e especializar os dados em todas as camadas da solução. + +??? info "Funções Lambda responsáveis pela obtenção dos dados" + | :octicons-terminal-16: **Função** | :octicons-database-16: **Descrição** | + | :-- | :-- | + | pynvest-lambda-check-and-delete-partitions | Função responsável por verificar se existem partições físicas e lógicas relacionadas ao dia de processamento dos dados e, em caso positivo, eliminá-las para evitar dados duplicados | + | pynvest-lambda-get-tickers | Função responsável por coletar *tickers* (códigos) de ações e fundos imobiliários utilizando funcionalidades da biblioteca `pynvest` e armazenar os resultados como mensagens de filas SQS | + | pynvest-lambda-get-financial-data-for-acoes | Função responsável por ler mensagens de fila SQS contendo *tickers* de ações, extrair os indicadores financeiros utilizando funcionalidades da biblioteca `pynvest` e, por fim, armazenar os resultados em tabela na camada SoR (S3 e Glue Data Catalog) | + | pynvest-lambda-get-financial-data-for-fiis | Função responsável por ler mensagens de fila SQS contendo *tickers* de fundos imobiliários, extrair os indicadores financeiros utilizando funcionalidades da biblioteca `pynvest` e, por fim, armazenar os resultados em tabela na camada SoR (S3 e Glue Data Catalog) | + | pynvest-lambda-prep-financial-data-for-acoes | Função responsável por ler dados brutos de indicadores de ações na camada SoR, preparar os tipos primitivos dos atributos e, por fim, armazenar os resultados em tabela na camada SoT (S3 e Glue Data Catalog) | + | pynvest-lambda-prep-financial-data-for-fiis | Função responsável por ler dados brutos de indicadores de fundos imobiliários na camada SoR, preparar os tipos primitivos dos atributos e, por fim, armazenar os resultados em tabela na camada SoT (S3 e Glue Data Catalog) | + | pynvest-lambda-specialize-financial-data | Função responsável por ler dados preparados da camada SoT contendo indicadores de ações e fundos imobiliários, extrair apenas atributos específicos e, por fim, armazenar os resultados em tabela na camada Spec (S3 e Glue Data Catalog) | + | pynvest-lambda-dedup-financial-data-for-acoes | Função responsável por ler dados da tabela SoT de ações, remover registros duplicados e armazenar os resultados na mesma tabela/camada (overwrite partition) | + | pynvest-lambda-dedup-financial-data-for-fiis | Função responsável por ler dados da tabela SoT de fundos imobiliários, remover registros duplicados e armazenar os resultados na mesma tabela/camada (overwrite partition) | + | pynvest-lambda-dedup-financial-data-for-spec-ativos | Função responsável por ler dados da tabela Spec de ativos, remover registros duplicados e armazenar os resultados na mesma tabela/camada (overwrite partition) | + + + :octicons-eye-16: + **Observação:** as funções Lambda de deduplicação de registros (três últimas referências da tabela acima) são engatilhadas através de um *workflow* no Step Functions a ser detalhado nas próximas seções. + + + + :octicons-light-bulb-16: + **Dica:** os códigos de todas as funções Lambda podem ser visualizados diretamente no [repositório do módulo no GitHub](https://github.com/ThiagoPanini/pynvest-tools/tree/v0.2.x/app/lambda/functions). + + +### :octicons-mail-16: Filas no SQS + +Como mencionado na seção anterior onde todas as funções Lambda foram exemplificadas, em determinada etapa do processo, mensagens são escritas em filas SQS para um posterior processamento desacoplado. Detalhes sobre essas filas podem ser vistos logo abaixo: + +??? info "Filas SQS presentes no processo" + | :octicons-mail-16: **Nome da Fila** | :octicons-database-16: **Descrição** | + | :-- | :-- | + | pynvest-tickers-acoes-queue | Fila SQS responsável por armazenar mensagens contendo *tickers* (códigos) de Ações extraídos pela função `pynvest-lambda-get-tickers` | + | pynvest-tickers-fiis-queue | Fila SQS responsável por armazenar mensagens contendo *tickers* (códigos) de Fundos Imobiliários extraídos pela função `pynvest-lambda-get-tickers` | + +### :octicons-workflow-16: Workflow no Step Functions + +Assim como mencionado na seção de detalhamento das funções Lambda, um *workflow* do Step Functions foi criado para orquestrar o processo de remoção de registros duplicados nas tabelas disponibilizadas nas camadas SoT e Spec. + +??? info "Workflow do Step Functions provisionado" + | :octicons-workflow-16: **Workflow** | :octicons-database-16: **Descrição** | + | :-- | :-- | + | pynvest-sfn-dedup-sot-spec-tables | Workflow criado com o intuito de coordenar a execução de funções Lambdas específicas para a remoção de registros duplicados em tabelas do módulo `pynvest-tools` presentes nas camadas SoT e Spec. Este workflow é engatilhado através de um agendamento no Eventbridge. | + + + :octicons-eye-16: + **Observação:** como a lógica implementada para processar e escrever dados nas camadas SoT e Spec contempla o engatilhamento automático e desacoplado de funções Lambda, o workflow de remoção de registros duplicados foi designado a ser executado 15 minutos após o gatilho inicial do processo diário de atualização dos dados. + + +### :octicons-calendar-16: Gatilhos no Eventbridge + +Por fim, a arquitetura de solução contempla a existência de gatilhos no Eventbridge que coordenam a execução dos processos de atualização dos dados e remoção de registros duplicados. + +??? info "Regras e gatilhos no Eventbridge para execução diária do processo" + | :octicons-calendar-16: **Regra no Eventbridge** | :octicons-database-16: **Descrição** | :octicons-clock-16: **Horário** + | :-- | :-- | + | trigger-pynvest-lambda-check-and-delete-partitions | Gatilho responsável por executar a primeira função Lambda do processo (verificação e eliminação de partições do dia já existentes) | Todos os dias às 18:45 | + | trigger-pynvest-sfn-dedup-sot-spec-tables | Gatilho responsável por executar *workflow* do Step Functions para remoção de registros duplicados em tabelas das camadas SoT e Spec | Todos os dias às 19:00 | + + + :octicons-eye-16: + **Observação:** pela característica da solução, o primeiro gatilho do Eventbridge necessita apenas executar a função de validação e eliminação de partições. Todos os demais componentes e funções da arquitetura são executados automaticamente de forma altamente desacoplada. + + +## Infraestrutura + +Como um reforço importante, toda a lógica dos componentes de infraestrutura provisionados (e também dos códigos das aplicações) estão disponíveis no [repositório do módulo no GitHub](https://github.com/ThiagoPanini/pynvest-tools) e podem ser analisados para um entendimento mais aprofundado sobre os recursos. \ No newline at end of file diff --git a/docs/tools/tmp.md b/docs/tools/tmp.md new file mode 100644 index 0000000..1bc12e4 --- /dev/null +++ b/docs/tools/tmp.md @@ -0,0 +1,35 @@ +# Pynvest Tools: + +## Arquitetura da Solução + +## Recursos Implantados + +### Policies e Roles IAM + +### Tabelas no Data Catalog + +### Funções Lambda + +### Gatilhos no Eventbridge + +### Workflow no Step Functions + +___ + +## Etapas do Processamento + +### Etapa 1: Eliminação das Partições do Dia + +### Etapa 2: Envio de Códigos de Ativos para Fila SQS + +### Etapa 3: Processamento de Tabelas SoR + +### Etapa 4: Processamento de Tabelas SoT + +### Etapa 5: Processamento de Tabela Spec + +### Etapa 6: Deduplicação de Registros + +## Consultando Indicadores Financeiros + +## Queries no Athena \ No newline at end of file diff --git a/docs/tools/tools.md b/docs/tools/tools.md new file mode 100644 index 0000000..411e3cf --- /dev/null +++ b/docs/tools/tools.md @@ -0,0 +1,48 @@ +# Obtenha Indicadores Financeiros em seu Próprio Ambiente AWS + +Você já imaginou ter todo um conjunto de serviços AWS implantados em seu ambiente pessoal para extrair, armazenar e atualizar recorrentemente **indicadores financeiros** de ativos da B3? + +Se sim, você precisa conhecer o [pynvest-tools](https://github.com/ThiagoPanini/pynvest-tools) como um módulo Terraform capaz de proporcionar a implantação de recursos AWS estrategicamente desenvolvidos para habilitar todo um *pool* de análise de dados financeiros. + +
+
pynvest-logo +
+ +
+ + +## Visão Geral + +Sendo um módulo Terraform disponibilizado de forma totalmente gratuita, os usuários que decidirem utilizar o `pynvest-tools` em seus respectivos ambientes AWS, poderão obter, entre outros benefícios: + +- 🎯 Um processo agendado via [Eventbridge](https://aws.amazon.com/pt/eventbridge/) para obtenção e atualização diária de indicadores financeiros +- 📖 Tabelas previamente definidas no [Glue Data Catalog](https://docs.aws.amazon.com/pt_br/glue/latest/dg/start-data-catalog.html) para consultas em ferramentas analíticas +- 🧲 Arquitetura *serverless* e altamente desacoplada utilizando funções [Lambda](https://aws.amazon.com/pt/lambda/) e filas no [SQS](https://aws.amazon.com/sqs/) +- 📊 Possibilidade de utilizar serviços como [Glue](https://aws.amazon.com/pt/glue/), [Athena](https://aws.amazon.com/pt/athena/) e [QuickSight](https://aws.amazon.com/quicksight/) para as mais variadas análises em dados financeiros + +## Saiba Mais + +Navegue pelos tópicos desta seção para descobrir, de uma vez por todas, como o módulo Terraform `pynvest-tools` pode te ajudar a unir elementos do mundo financeiro em um ambiente totalmente *cloud native*. + + + :octicons-history-16: + **Não perca tempo** e comece agora mesmo a criar **seu próprio Data Lake** com dados financeiros atualizados diariamente. + diff --git a/mkdocs.yml b/mkdocs.yml index 7eca479..a0220f3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -13,7 +13,22 @@ repo_url: https://github.com/ThiagoPanini/pynvest # Copyright copyright: | - Copyright © 2023-2024 ThiagoPanini + Copyright © 2023-2024 Thiago Panini + +# Configurando social media no footer +extra: + social: + - icon: fontawesome/brands/github + link: https://github.com/ThiagoPanini + name: Thiago Panini no Github + - icon: fontawesome/brands/linkedin + link: https://www.linkedin.com/in/thiago-panini/ + name: Thiago Panini no LinkedIn + - icon: fontawesome/brands/hashnode + link: https://panini.hashnode.dev/ + name: Blog panini-tech-lab no Hashnode + + # Configuração do tema theme: @@ -80,10 +95,13 @@ nav: - FIIs: scrappers/fundamentus/indicadores/fiis.md - Tools: - - O pynvest-tools: tools/pynvest-tools.md - - Variáveis do Módulo: tools/variaveis.md - - Demo: tools/demo.md - + - O Módulo Pynvest Tools: tools/tools.md + - Detalhes da Solução: + - Arquitetura: tools/arquitetura.md + - Recursos Provisionados: tools/recursos.md + - Etapas do Processo: tools/processo.md + - Quickstart: tools/quickstart.md + - Contribuindo: contribuindo/contribuindo.md # Configurando extensões From 90ce68da71dbb126801a8bb154d1301aabe31e1f Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Fri, 23 Feb 2024 23:22:20 -0300 Subject: [PATCH 09/17] =?UTF-8?q?docs:=20complementando=20a=20documenta?= =?UTF-8?q?=C3=A7=C3=A3o=20do=20m=C3=B3dulo=20tools?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/tools/imgs/queries/exemplo-01.png | Bin 0 -> 52459 bytes docs/tools/imgs/queries/exemplo-02.png | Bin 0 -> 77829 bytes docs/tools/imgs/queries/exemplo-03.png | Bin 0 -> 107989 bytes docs/tools/imgs/queries/exemplo-04.png | Bin 0 -> 77332 bytes docs/tools/processo.md | 87 ++++++++++++++- docs/tools/pynvest-tools.md | 99 ---------------- docs/tools/queries.md | 149 +++++++++++++++++++++++++ docs/tools/quickstart.md | 14 +-- docs/tools/tmp.md | 35 ------ docs/tools/tools.md | 9 +- docs/tools/variaveis.md | 30 ++--- mkdocs.yml | 5 +- 12 files changed, 262 insertions(+), 166 deletions(-) create mode 100644 docs/tools/imgs/queries/exemplo-01.png create mode 100644 docs/tools/imgs/queries/exemplo-02.png create mode 100644 docs/tools/imgs/queries/exemplo-03.png create mode 100644 docs/tools/imgs/queries/exemplo-04.png delete mode 100644 docs/tools/pynvest-tools.md create mode 100644 docs/tools/queries.md delete mode 100644 docs/tools/tmp.md diff --git a/docs/tools/imgs/queries/exemplo-01.png b/docs/tools/imgs/queries/exemplo-01.png new file mode 100644 index 0000000000000000000000000000000000000000..5b11f2a5bed991a6bd220c1a80ed9afd618816bc GIT binary patch literal 52459 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 literal 0 HcmV?d00001 diff --git a/docs/tools/imgs/queries/exemplo-02.png b/docs/tools/imgs/queries/exemplo-02.png new file mode 100644 index 0000000000000000000000000000000000000000..80aa56e84dc3707d62920d91f7a481fd7ae174f8 GIT binary patch literal 77829 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 |(y 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 UGpE_lkiSKm>beins?Xm32Z8eWzW@LL literal 0 HcmV?d00001 diff --git a/docs/tools/imgs/queries/exemplo-03.png b/docs/tools/imgs/queries/exemplo-03.png new file mode 100644 index 0000000000000000000000000000000000000000..242a0a5b33be344214fbbf7ff7f4314ba5e40c1c GIT binary patch literal 107989 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

A-14g}k4L}wI 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

Le;rBYbt7 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

{DOo!@ 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%0DK=C3znu@fW7*%MMlimop8|f~!N@C|(x| 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 Hdm;Y=vN;LH literal 0 HcmV?d00001 diff --git a/docs/tools/processo.md b/docs/tools/processo.md index 0d400aa..04358f5 100644 --- a/docs/tools/processo.md +++ b/docs/tools/processo.md @@ -8,35 +8,110 @@ Para que isso seja possível, um total de **6 macro etapas** foram desenhadas de Expanda esse bloco sempre que precisar relembrar o desenho de arquitetura de solução. - :octicons-light-bulb-16: - **Dica:** clique na imagem para uma melhor visualização dos elementos. + :octicons-zoom-in-16: + Clique na imagem para uma melhor visualização dos elementos. ![Arquitetura de Solução](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/drawio/pynvest-tool-diagram-print.png?raw=true) :octicons-light-bulb-16: - **Dica:** visando facilitar o detalhamento das etapas, cada ação a ser exemplificada está identificada, nas imagens de arquitetura disponibilizadas, com índices que se referem à macro etapa. Por exemplo, a etapa 1 definida como "eliminação de partições do dia" contemplam os passos 1.1, 1.2 e 1.3. Cada um desses passos será detalhado para o usuário. + **Dica:** visando facilitar o detalhamento das etapas, o desenho de arquitetura contempla indicações de sub-etapas em cada macro-etapa do processo. Por exemplo, a etapa 1 definida como "eliminação de partições do dia" contempla os passos 1.1, 1.2 e 1.3 que, de forma simplificada, serão detalhados ao longo desta seção. ## Etapa 1: Eliminação das Partições do Dia -![Desenho de arquitetura contendo apenas a primeira etapa do processamento](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/imgs/arquitetura-etapas/etapa-01.png?raw=true) + + :octicons-zoom-in-16: + Clique na imagem para expandir a visualização. + + +![Desenho de arquitetura contendo apenas a primeira etapa do processamento](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/imgs/arquitetura-etapas/etapa-01.png?raw=true){width=550} + +:octicons-feed-issue-closed-16: ***1.1*** :octicons-chevron-right-12: Um gatilho no Eventbridge agendado para executar todo dia de semana (segunda à sexta) às 18h45m chama a função Lambda `pynvest-lambda-check-and-delete-partitions` + +:octicons-feed-issue-closed-16: ***1.2*** :octicons-chevron-right-12: A função Lambda citada recebe informações sobre todas as tabelas a serem mapeadas como uma variável de ambiente. Adicionalmente, é criada na função, em tempo de execução, uma variável para armazenar a data atual de processamento através da biblioteca `datetime`. Dessa forma, um laço de repetição é aplicado à lista de tabelas mapeadas para validar a existência de arquivos físicos no S3 e partições lógicas no Glue Data Catalog relacionadas a data atual de processamento criada. Em caso positivo, ou seja, existem arquivos físicos e partições relacionadas ao dia atual de execução, então a função utiliza métodos do [AWS SDK for Pandas](https://aws-sdk-pandas.readthedocs.io/en/stable/) para eliminar os arquivos físicos (via `awswrangler.s3.delete_objects()`) e as partições (via `awswrangler.catalog.delete_partitions()`) da data de execução do processo de modo a garantir que nenhum registro duplicado será gerado. -O primeiro passo +:octicons-feed-issue-closed-16: ***1.3*** :octicons-chevron-right-12: De maneira assíncrona, a função `pynvest-lambda-check-and-delete-partitions` é responsável por engatilhar uma outra função Lambda para a continuidade do processo. + +___ ## Etapa 2: Envio de Códigos de Ativos para Fila SQS + + :octicons-zoom-in-16: + Clique na imagem para expandir a visualização. + + ![Desenho de arquitetura contendo apenas a segunda etapa do processamento](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/imgs/arquitetura-etapas/etapa-02.png?raw=true) +:octicons-feed-issue-closed-16: ***2.1*** :octicons-chevron-right-12: Na sequência, o processo tem continuidade através da coleta de *tickers* (códigos) de ativos financeiros (Ações e Fundos Imobiliários) presentes no site [Fundamentus](https://www.fundamentus.com.br/). Essa extração é realizada por meio da própria biblioteca [pynvest](https://github.com/ThiagoPanini/pynvest) em seu método [extracao_tickers_de_ativos()](../../scrappers/fundamentus/mkdocstrings/fundamentus/#pynvest.scrappers.fundamentus.Fundamentus.extracao_tickers_de_ativos) capaz de retornar uma lista de *tickers* com base em um tipo específico de ativo. + +:octicons-feed-issue-closed-16: ***2.2*** :octicons-chevron-right-12: As listas são então separadas entre Ações e Fundos Imobiliários para, posteriormente, serem alvo de um processo de iteração visando o envio de mensagens para filas específicas no SQS. + +___ ## Etapa 3: Processamento de Tabelas SoR + + :octicons-zoom-in-16: + Clique na imagem para expandir a visualização. + + +![Desenho de arquitetura contendo apenas a terceira etapa do processamento](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/imgs/arquitetura-etapas/etapa-03.png?raw=true) + +:octicons-feed-issue-closed-16: ***3.1*** :octicons-chevron-right-12: As filas SQS utilizadas para armazenar *tickers* de Ações e Fundos Imobiliários, respectivamente, engatilham outras duas funções Lambda. As funções Lambda então recebem os eventos de mensagens recebidas nas filas e, através de um laço de repetição aplicado ao número de mensagens recebidas, coletam as informações de *tickers* e realizam a extração de indicadores financeiros através do método [coleta_indicadores_de_ativo()](../../scrappers/fundamentus/mkdocstrings/fundamentus/#pynvest.scrappers.fundamentus.Fundamentus.coleta_indicadores_de_ativo) da biblioteca `pynvest`. Os indicadores são então obtidos como DataFrames do pandas e escritos no S3 como arquivos parquet no bucket relacionado à camada SoR (dados brutos). A partição física é selecionada como a data de execução do processo. As etapas aqui mencionadas são análogas tanto para indicadores de Ações quanto para Fundos Imobiliários. + +:octicons-feed-issue-closed-16: ***3.2*** :octicons-chevron-right-12: Cada vez que novos arquivos são colocados no S3 (bucket SoR) através da função Lambda acima citada, outras duas Lambdas são acionadas com a missão de ler os arquivos e preparar os dados para serem colocados na camada SoT. + +___ ## Etapa 4: Processamento de Tabelas SoT + + :octicons-zoom-in-16: + Clique na imagem para expandir a visualização. + + +![Desenho de arquitetura contendo apenas a quarta etapa do processamento](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/imgs/arquitetura-etapas/etapa-04.png?raw=true) + +:octicons-feed-issue-closed-16: ***4.1*** :octicons-chevron-right-12: Essa etapa é estritamente semelhante à etapa ***3.1***, com a diferença de que os gatilhos para as funções Lambda de preparação de dados para Ações e FIIs são compostos por eventos no S3 e não em filas SQS. Em suma, toda vez que objetos são colocados no bucket SoR nas *locations* das tabelas de Ações e FIIs, as respectivas funções Lambda de preparação são acionadas para a leitura dos dados recebidos via eventos, preparação e posterior escrita e catalogação na camada SoT. + +:octicons-feed-issue-closed-16: ***4.2*** :octicons-chevron-right-12: Assim também como na etapa ***3.2***, cada vez que arquivos são escritos na camada SoT do S3, processos posteriores são engatilhados para a continuidade da solução. + +___ + ## Etapa 5: Processamento de Tabela Spec + + :octicons-zoom-in-16: + Clique na imagem para expandir a visualização. + + +![Desenho de arquitetura contendo apenas a quinta etapa do processamento](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/imgs/arquitetura-etapas/etapa-05.png?raw=true) + +:octicons-feed-issue-closed-16: ***5.1*** :octicons-chevron-right-12: Mais uma vez, esta etapa se assemelha ao que se pode encontrar em ***3.1*** e ***3.2***. A principal diferença se dá pelo fato de estarmos falando de um processo de especialização de dados que utiliza informações de ambas as tabelas SoTs (Ações e FIIs), exigindo assim a existência de uma única função Lambda responsável por ler os arquivos gerados na camada SoT para as tabelas (recebidos via eventos), processar e escrever o resultado em tabela única da camada Spec. + +___ + +## Etapa 6: Deduplicação de Registros + + + :octicons-zoom-in-16: + Clique na imagem para expandir a visualização. + + +![Desenho de arquitetura contendo apenas a quinta etapa do processamento](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/imgs/arquitetura-etapas/etapa-06.png?raw=true){width=550} + +:octicons-feed-issue-closed-16: ***6.1*** :octicons-chevron-right-12: Assim como a etapa ***1.1*** do processo, esta etapa tem seu início através de um gatilho no Eventbridge programado para executar um *workflow* no Step Functions todo dia de semana (segunda à sexta) às 19h (15 minutos após a execução do gatilho em ***1.1***). O *workflow* tem o objetivo único de remover registros duplicados que eventualmente podem surgir durante o processamento dos dados através de eventos nas tabelas das camadas SoT (2 tabelas) e Spec (1 tabela). + +:octicons-feed-issue-closed-16: ***6.2*** :octicons-chevron-right-12: Como uma primeira parte do processo interno do *workflow* do Step Functions, duas funções Lambda são engatilhadas em paralelo para ler os dados presentes nas tabelas da camada SoT (Ações e FIIs), remover registros duplicados e, por fim, reescrever os dados na mesma camada após o processo de deduplicação. + +:octicons-feed-issue-closed-16: ***6.3*** :octicons-chevron-right-12: Uma vez finalizado o processo de deduplicação de dados na camada SoT, então uma próxima Lambda é chamada com a mesma missão das Lambdas anteriores, porém focada na tabela de ativos presente na camada Spec. + +___ + +## Fim do Processo -## Etapa 6: Deduplicação de Registros \ No newline at end of file +Com todas as etapas concluídas, o usuário terá a possibilidade de realizar qualquer atividade relacionada à análise de dados de indicadores financeiros, sejam eles brutos (camada SoR), preparados (camada SoT) ou mesmo especializados (camada Spec). \ No newline at end of file diff --git a/docs/tools/pynvest-tools.md b/docs/tools/pynvest-tools.md deleted file mode 100644 index 873b6ad..0000000 --- a/docs/tools/pynvest-tools.md +++ /dev/null @@ -1,99 +0,0 @@ -# Pynvest Tools - -Você já imaginou ter todo um conjunto de serviços AWS implantados em seu ambiente para obter, atualizar e analisar recorrentemente **indicadores financeiros** de ativos da B3? - -Conheça o [pynvest-tools](https://github.com/ThiagoPanini/pynvest-tools), o seu módulo [Terraform](https://www.terraform.io/) para obter tudo isso com pouquíssimas linhas de código. - -## O que é o pynvest-tools? - -Como já mencionado, o *pynvest-tools* é um módulo Terraform capaz de fornecer uma experiência única de implantação de toda uma arquitetura AWS provisionada para garantir a obtenção e uma recorrente atualização de indicadores financeiros utilizando a biblioteca [pynvest](../index.md). - -???+ tip "Quais os benefícios ao utilizar o módulo pynvest-tools?" - Como principal *outcome*, os usuários que chamarem o módulo pynvest-tools em seus projetos Terraform terão, entre outros insumos: - - - ✅ Processo agendado para obtenção de dados de indicadores financeiros de ativos - - ✅ Arquitetura *serverless*, resiliente e de baixo custo - - ✅ Tabelas atualizadas diariamente no Glue Data Catalog - - ✅ Possibilidade de realizar as mais variadas análises financeiras via queries do Athena - - ✅ Possibilidade de criar *dashboards* no Quicksight utilizando dados financeiros - -## Arquitetura - -Toda a solução foi desenhada dentro dos propósitos de uma arquitetura [serverless](https://aws.amazon.com/serverless/) utilizando serviços nativos da AWS que interagem entre si de forma [altamente desacoplada](https://aws.amazon.com/blogs/compute/decoupling-larger-applications-with-amazon-eventbridge/) e através de eventos. - -![[](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/docs/drawio/pynvest-tool-diagram.png?raw=true)](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.0.1/docs/drawio/pynvest-tool-diagram.png?raw=true) - -??? example "Passo a passo do processo de obtenção e atualização de indicadores" - - Considerando as etapas destacadas pelos números no desenho de arquitetura, temos: - - **1 -** O [Eventbridge](https://aws.amazon.com/pt/eventbridge/) engatilha a primeira função [Lambda](https://aws.amazon.com/pt/lambda/) através de uma expressão cron. Por padrão, a execução ocorre de segunda à sexta-feira às 19h (UTC-3). - - **2 -** A primeira função Lambda valida no [Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html) e no [S3](https://aws.amazon.com/s3/) a existência de partições relacionadas à data de execução do processo. Caso as partições existam nas tabelas geradas, a função se encarrega de eliminá-las para evitar duplicidades eventualmente causadas por múltiplas execuções em um único dia. - - **3 -** Após executada com sucesso, a primeira função Lambda engatilha, de forma [assíncrona](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html), uma segunda função Lambda para continuidade no processo. - - **4 -** Essa função Lambda tem a responsabilidade de coletar os *tickers* (códigos) de ativos financeiros (Ações e Fundos Imobiliários) através do método [Fundamentus.coleta_indicadores_de_ativo()](../../mkdocstrings/scrappers/fundamentus.md/#pynvest.scrappers.fundamentus.Fundamentus.coleta_indicadores_de_ativo). - - **5 -** Os *tickers* coletados são então enviados para diferentes filas SQS de acordo com seu tipo (Ações ou Fundos Imobiliários). - - **6 -** As filas SQS servem como gatilho para execução de outras duas funções Lambda responsáveis, respectivamente, por coletar indicadores financeiros de Ações e Fundos Imobiliários. O processo de coleta de indicadores financeiros é feito através do método [Fundamentus.extracao_tickers_de_ativos()](../../mkdocstrings/scrappers/fundamentus.md/#pynvest.scrappers.fundamentus.Fundamentus.extracao_tickers_de_ativos). - - **7 -** Após coletar os indicadores em [DataFrames do pandas](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html), os dados [SoR](https://en.wikipedia.org/wiki/System_of_record) são então disponibilizados no S3 e catalogados no Glue Data Catalog via [AWS SDK for pandas](https://aws-sdk-pandas.readthedocs.io/en/stable/index.html) em duas tabelas: - - - `tbl_fundamentus_indicadores_acoes` contendo indicadores financeiros específicos de Ações listadas na B3 - - `tbl_fundamentus_indicadores_fiis` contendo indicadores financeiros específicos de FIIs listados na B3 - - **8 -** Os usuários podem, enfim, consultar os dados disponibilizados através do [Athena](https://aws.amazon.com/pt/athena/) para os mais variados propósitos analíticos - -## Quickstart - -Agora que sabemos exatamente o que é o módulo pynvest-tools, vamos detalhar como utilizar e extrair o melhor de suas funcionalidades. - -### Pré Requisitos - -- ☁️ [Conta AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) disponível para uso -- 🔑 [Acesso programático](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html) à conta com chaves de acesso -- ⛏ [Terraform](https://www.terraform.io/) instalado - -### Chamando o Módulo Terraform - -Uma vez cumprido os pré requisitos, o usuário poderá obter todos os insumos já detalhados através de uma [chamada de módulo Terraform](https://developer.hashicorp.com/terraform/language/modules/syntax) no seguinte formato: - -```python -# Chamada de módulo pynvest-tools em arquivo main.tf -module "pynvest-tools" { - source = "git::https://github.com/ThiagoPanini/pynvest-tools?ref=main" - - bucket_names_map = { - "sor" = "some-bucket-name-to-store-sor-data" - } -} -``` - -Após isso, basta executar os seguintes comandos Terraform para implantar a infraestrutura relacionada: - -- `terraform init` para inicialização do módulo -- `terraform plan` para validar o plano de implantação -- `terraform apply` para aplicar a implantação na conta AWS alvo - -## Variáveis do Módulo - -O módulo Terraform conta com algumas variáveis capazes de customizar a experiência de seus usuários. Para verificar quais variáveis estão atualmente disponíveis, basta acessar a [página de variáveis do módulo](./variaveis.md). - -## Tabelas Disponíveis - -A principal entrega de valor do *pynvest-tools* se materializa através da disponibilização de tabelas no Glue Data Catalog capazes de serem consumidas e analisadas pelos usuários para os mais variados propósitos. Até o momento, as seguintes tabelas se encontram disponíveis: - -| **Camada** | **Database** | **Tabela** | **Descrição** | -| :-- | :-- | :-- | :-- | -| SoR | `db_pynvest_sor` | `tbl_fundamentus_indicadores_acoes` | Tabela contendo indicadores financeiros específicos de Ações listadas na B3 | -| SoR | `db_pynvest_sor` | `tbl_fundamentus_indicadores_fiis` | Tabela contendo indicadores financeiros específicos de FIIs listadas na B3 | - -As tabelas são particionadas através da data de execução do processo (atributo `date_exec`) e seus dados são armazenados em buckets fornecidos pelo usuário através da variável *bucket_names_map* do módulo. - -Para analisar a raíz dos indicadores financeiros consolidados nas tabelas, basta acessar a [página de indicadores](../indicadores/sobre-indicadores.md). - -## Demonstração - -Por fim, visando proporcionar uma experiência completa de prova de valor desta solução, a [página de demo](./demo.md) conta com demonstrações simplificadas de alguns elementos entregues pelo módulo e como análises específicas podem ser realizadas dentro desse propósito. \ No newline at end of file diff --git a/docs/tools/queries.md b/docs/tools/queries.md new file mode 100644 index 0000000..0726a44 --- /dev/null +++ b/docs/tools/queries.md @@ -0,0 +1,149 @@ +# Valor para o Usuário + +Esta seção da documentação tem o nobre desejo de proporcionar uma visão prática, ao usuário (e possíveis usuários) do módulo `pynvest-tools`, sobre algumas análises interessantes que podem ser feitas após a utilização do módulo. + +Essencialmente, o conteúdo deste bloco será composto por *queries* SQL capazes de serem executadas no [Amazon Athena](https://aws.amazon.com/pt/athena/) de modo a obter resultados analíticos com os dados de indicadores financeiros coletados e armazenados pelos componentes implantados pelo módulo. + + + :octicons-eye-16: + **Observação:** as consultas SQL a serem exemplificadas abaixo consideram que as tabelas do módulo foram criadas juntamente com os databases recomendados quando o módulo é chamado com `flag_create_databases=true`. + + + +## Verificando Indicadores de uma Ação + +A tabela `tbsot_fundamentus_indicadores_acoes_prep` entregue na camada SoT do usuário contém informações preparadas de indicadores fundamentalistas de Ações listadas na B3. A *query* SQL abaixo permite retornar alguns desses indicadores para uma Ação específica, como a [ITUB3](https://www.google.com/search?q=itub3&oq=itub3&gs_lcrp=EgZjaHJvbWUyBggAEEUYOdIBBzUwN2owajGoAgCwAgA&sourceid=chrome&ie=UTF-8), por exemplo. + +```sql +--Retornando indicadores da ação ITUB3 +SELECT + nome_papel, + nome_empresa, + nome_setor, + vlr_ind_p_sobre_l, + vlr_ind_p_sobre_vp, + vlr_ind_div_yield, + vlr_ind_vpa + +FROM db_pynvest_sot.tbsot_fundamentus_indicadores_acoes_prep + +WHERE nome_papel = 'ITUB3' + --Filtrando apenas dados da última partição disponível + AND anomesdia_exec = ( + SELECT MAX(anomesdia_exec) FROM db_pynvest_sot.tbsot_fundamentus_indicadores_acoes_prep + ) +``` + +??? example "Clique para visualizar o resultado da consulta SQL" + + :octicons-light-bulb-16: + **Dica:** clique na imagem para expandir. + + + ![Resultado para exemplo de consulta SQL](./imgs/queries/exemplo-01.png) + +A consulta acima permite analisar um ativo financeiro (ação) em termos de alguns de seus principais indicadores, como [P/L](https://statusinvest.com.br/termos/p/p-l), [P/VP](https://statusinvest.com.br/termos/p/p-vp), [Dividend Yield](https://statusinvest.com.br/termos/d/dividend-yield) e [VPA](https://statusinvest.com.br/termos/p/p-vpa). + +## Analisando Valor e Variação da Cotação + +E se fosse preciso analisar o quanto o preço de uma ação evoluiu ao longo do tempo? E quanto a suas variações percentuais em diferentes épocas? Na consulta abaixo, continuamos olhando para o ativo ITUB3, agora sob uma ótica vinculada ao quanto a cotação desse ativo sofreu modificações ao longo dos últimos dias. + +```sql +SELECT + nome_papel, + anomesdia_exec, + vlr_cot, + vlr_min_52_sem, + vlr_max_52_sem, + pct_var_dia, + pct_var_mes, + pct_var_30d, + pct_var_12m + +FROM db_pynvest_sot.tbsot_fundamentus_indicadores_acoes_prep + +WHERE nome_papel = 'ITUB3' + --Filtrando os últimos 4 dias de dados + AND anomesdia_exec >= CAST(date_format(date_add('day', -4, now()), '%Y%m%d') AS INTEGER) + +ORDER BY anomesdia_exec DESC +``` + +??? example "Clique para visualizar o resultado da consulta SQL" + + :octicons-light-bulb-16: + **Dica:** clique na imagem para expandir. + + + ![Resultado para exemplo de consulta SQL](./imgs/queries/exemplo-02.png) + +No resultado analítico acima, é possível acompanhar a evolução da cotação de um determinado ativo, bem como suas variações percentuais em diferentes épocas (dia, mês, 30 dias, 12 meses, entre outros). + + +## Indicadores de Fundos Imobiliários + +E se a ideia fosse observar mais a fundo alguns Fundos Imobiliários específicos? Na consulta abaixo, alguns indicadores fundamentalistas de FIIs de um determinado setor são retornados para fins de comparação. + +Vamos supor, que nessa análise, deseja-se comparar apenas FIIs do segmento "shopping" e com valor de cotação entre R$50,00 e R$100,00. + +```sql +SELECT + fii, + segmento, + num_cotas, + vlr_cot, + vlr_ffo_yield, + vlr_ffo_sobre_cota, + vlr_div_yield, + vlr_p_sobre_vp + +FROM db_pynvest_sot.tbsot_fundamentus_indicadores_fiis_prep + +WHERE segmento = 'Shoppings' + AND anomesdia_exec = (SELECT max(anomesdia_exec) FROM db_pynvest_sot.tbsot_fundamentus_indicadores_fiis_prep) + AND pct_var_dia IS NOT NULL + AND vlr_cot BETWEEN 50 AND 150 +``` + +??? example "Clique para visualizar o resultado da consulta SQL" + + :octicons-light-bulb-16: + **Dica:** clique na imagem para expandir. + + + ![Resultado para exemplo de consulta SQL](./imgs/queries/exemplo-03.png) + +## Análise de Cotação de Ações e FIIs + +Em um outro cenário igualmente interessante, supõe-se que o usuário tenha uma carteira de ativos que ele já investe (ou pretende investir) e, para balizar sua próxima decisão financeira, o mesmo deseja analisar o valor de cotação de alguns desses ativos da carteira (misturando Ações e FIIs). + +Para este caso, o ideal é utilizar a tabela especializada de cotações de ativos (disponibilizada na camada Spec). + +```sql +SELECT + codigo_ticker_ativo, + tipo_ativo, + nome_ativo, + vlr_cot, + dt_ult_cot, + vlr_min_52_sem, + vlr_max_52_sem, + pct_var_dia, + pct_var_mes, + pct_var_30d + +FROM db_pynvest_spec.tbspec_fundamentus_cotacao_ativos + +WHERE codigo_ticker_ativo IN ('ITUB3', 'ITSA4', 'BBSE3', 'TAEE11', 'XPLG11', 'MALL11') + AND anomesdia_exec = (SELECT max(anomesdia_exec) FROM db_pynvest_sot.tbsot_fundamentus_indicadores_fiis_prep) + +ORDER BY tipo_ativo, vlr_cot DESC +``` + +??? example "Clique para visualizar o resultado da consulta SQL" + + :octicons-light-bulb-16: + **Dica:** clique na imagem para expandir. + + + ![Resultado para exemplo de consulta SQL](./imgs/queries/exemplo-04.png) \ No newline at end of file diff --git a/docs/tools/quickstart.md b/docs/tools/quickstart.md index 133f8d5..f5746cc 100644 --- a/docs/tools/quickstart.md +++ b/docs/tools/quickstart.md @@ -1,6 +1,6 @@ # Primeiros Passos -Agora que sabemos exatamente o que é o módulo pynvest-tools, vamos detalhar como utilizar e extrair o melhor de suas funcionalidades. +O módulo `pynvest-tools` certamente poderá ajudar usuários a terem insumos extremamente interessantes para a aplicação dos mais variados processos de *analytics*. Para iniciar a jornada de utilização, é importante abordar alguns conceitos práticos. ## Pré Requisitos @@ -11,13 +11,14 @@ Agora que sabemos exatamente o que é o módulo pynvest-tools, vamos detalhar co ## Chamando o Módulo Terraform -Uma vez cumprido os pré requisitos, o usuário poderá obter todos os insumos já detalhados através de uma [chamada de módulo Terraform](https://developer.hashicorp.com/terraform/language/modules/syntax) no seguinte formato: +Uma vez cumpridos os pré requisitos, o usuário poderá realizar uma [chamada de módulo Terraform](https://developer.hashicorp.com/terraform/language/modules/syntax) no seguinte formato: ```python # Chamada de módulo pynvest-tools em arquivo main.tf module "pynvest-tools" { source = "git::https://github.com/ThiagoPanini/pynvest-tools?ref=main" + # Fornecendo nomes de buckets para armazenamento dos dados a serem gerados bucket_names_map = { "sor" = "some-bucket-name-to-store-sor-data", "sot" = "some-bucket-name-to-store-sot-data", @@ -26,17 +27,10 @@ module "pynvest-tools" { } ``` -???+ question "Quais variáveis o usuário necessita passar para o módulo?" - Como esperado, um módulo Terraform pode ser configurado através de variáveis que guiam regras específicas dentro da lógica embutida no módulo. - - No `pynvest-tools`, muitas das variáveis já tão fornecidas com um valor padrão, não exigindo qualquer tipo de ação por parte do usuário, exceto se o mesmo deseja configurar comportamentos específicos dos recursos provisionados. - - A exceção fica por conta da variável `bucket_names_map` que, essencialmente, tem a função de configurar toda a lógica de armazenamento dos dados obtidos nas aplicações criadas pelo módulo. Esta é a **única variável obrigatória** exigida pelo módulo e seu preenchimento deve ser feito através de um dicionário (map type, no Terraform) contendo as chaves "sor", "sot" e "spec", cujos valores devem representar nomes válidos para buckets S3 responsáveis por armazenar dados nessas três camadas. - Após configurar a chamada ao módulo, basta executar os seguintes comandos Terraform para implantar a infraestrutura relacionada: - `terraform init` para inicialização do módulo - `terraform plan` para validar o plano de implantação - `terraform apply` para aplicar a implantação na conta AWS alvo -Pronto! Você agora terá em sua conta AWS todo um conjunto de serviços para extrair, preparar e armazenar diariamente indicadores de Ações e Fundos Imobiliários da B3! Para saber mais sobre os recursos disponibilizados, não deixe de chegar a página contendo os [detalhes da solução]() \ No newline at end of file +Pronto! Você agora terá em sua conta AWS todo um conjunto de serviços para extrair, preparar e armazenar diariamente indicadores de Ações e Fundos Imobiliários da B3! Continue navegando nesta documentação para aprender mais detalhes sobre este incrível módulo! \ No newline at end of file diff --git a/docs/tools/tmp.md b/docs/tools/tmp.md deleted file mode 100644 index 1bc12e4..0000000 --- a/docs/tools/tmp.md +++ /dev/null @@ -1,35 +0,0 @@ -# Pynvest Tools: - -## Arquitetura da Solução - -## Recursos Implantados - -### Policies e Roles IAM - -### Tabelas no Data Catalog - -### Funções Lambda - -### Gatilhos no Eventbridge - -### Workflow no Step Functions - -___ - -## Etapas do Processamento - -### Etapa 1: Eliminação das Partições do Dia - -### Etapa 2: Envio de Códigos de Ativos para Fila SQS - -### Etapa 3: Processamento de Tabelas SoR - -### Etapa 4: Processamento de Tabelas SoT - -### Etapa 5: Processamento de Tabela Spec - -### Etapa 6: Deduplicação de Registros - -## Consultando Indicadores Financeiros - -## Queries no Athena \ No newline at end of file diff --git a/docs/tools/tools.md b/docs/tools/tools.md index 411e3cf..a3c276b 100644 --- a/docs/tools/tools.md +++ b/docs/tools/tools.md @@ -2,7 +2,7 @@ Você já imaginou ter todo um conjunto de serviços AWS implantados em seu ambiente pessoal para extrair, armazenar e atualizar recorrentemente **indicadores financeiros** de ativos da B3? -Se sim, você precisa conhecer o [pynvest-tools](https://github.com/ThiagoPanini/pynvest-tools) como um módulo Terraform capaz de proporcionar a implantação de recursos AWS estrategicamente desenvolvidos para habilitar todo um *pool* de análise de dados financeiros. +Se sim, você precisa conhecer o [pynvest-tools](https://github.com/ThiagoPanini/pynvest-tools) como um módulo Terraform capaz de implantar recursos AWS estrategicamente desenvolvidos com o intuito de permitir com que seus usuários obtenham e analisem dados financeiros.


pynvest-logo @@ -31,7 +31,7 @@ Se sim, você precisa conhecer o [pynvest-tools](https://github.com/ThiagoPanini ## Visão Geral -Sendo um módulo Terraform disponibilizado de forma totalmente gratuita, os usuários que decidirem utilizar o `pynvest-tools` em seus respectivos ambientes AWS, poderão obter, entre outros benefícios: +Dado o contexto introdutório fornecido acima, os usuários que decidirem utilizar o `pynvest-tools` em seus respectivos ambientes AWS, poderão obter, entre outros benefícios: - 🎯 Um processo agendado via [Eventbridge](https://aws.amazon.com/pt/eventbridge/) para obtenção e atualização diária de indicadores financeiros - 📖 Tabelas previamente definidas no [Glue Data Catalog](https://docs.aws.amazon.com/pt_br/glue/latest/dg/start-data-catalog.html) para consultas em ferramentas analíticas @@ -42,6 +42,11 @@ Sendo um módulo Terraform disponibilizado de forma totalmente gratuita, os usu Navegue pelos tópicos desta seção para descobrir, de uma vez por todas, como o módulo Terraform `pynvest-tools` pode te ajudar a unir elementos do mundo financeiro em um ambiente totalmente *cloud native*. +- Visite a página de [primeiros passos](./quickstart.md) para aprender como chamar o módulo em seu projeto Terraform +- Em [variáveis do módulo](./variaveis.md), você poderá visualizar todas as diferentes formas de customizar os recursos provisionados +- Para compreender todos os detalhes técnicos por trás da solução, navegue até as páginas de [arquitetura](./arquitetura.md), [recursos provisionados](./recursos.md) e [etapas do processo](./processo.md) +- Há, ainda, diversos [exemplos de análises](./queries.md) no Athena disponíveis para o usuário destravar todo o potencial do módulo + :octicons-history-16: **Não perca tempo** e comece agora mesmo a criar **seu próprio Data Lake** com dados financeiros atualizados diariamente. diff --git a/docs/tools/variaveis.md b/docs/tools/variaveis.md index d736b7d..bfe43df 100644 --- a/docs/tools/variaveis.md +++ b/docs/tools/variaveis.md @@ -1,10 +1,13 @@ # Variáveis do Módulo -Até o presente momento, a única variável obrigatória do módulo a ser explicitamente fornecida pelo usuário é a *bucket_names_map* e seu papel é configurar, de forma genérica, o nome de um bucket S3 da conta do usuário para armazenamento de dados das tabelas geradas durante o processo. +O módulo `pynvest-tools` foi inteiramente desenhado para fornecer a experiência mais **simplificada possível** para os usuários. Pensando nisso, grande parte das variáveis do módulo possuem valores *default* que funcionam estritamente bem dentro de uma dinâmica básica e eficiente de uso. -Existem, ainda, uma série de outras variáveis capazes de serem utilizadas pelos usuários para customizar os recursos implantados. Todas as demais variáveis (com execção da *bucket_names_map*) possuem valores padrão que não exigem uma configuração adicional caso os usuários não queiram efetivamente alterar parâmetros específicos de serviços. +???+ warning "A única variável obrigatória do módulo" + Em linhas gerais, a única variável obrigatória do módulo, ou seja, a única variável que os usuários necessariamente **precisam fornecer** é a `bucket_names_map`. Seu papel é fornecer informações relacionadas aos *buckets* pré existentes na conta AWS do usuário (vide [pré requisitos de uso](./quickstart.md#pré-requisitos)) para que os dados gerados pelos componentes implantados pelo módulo possam ser devidamente armazenados. -Para uma lista completa de todas as variáveis disponíveis, os usuários podem utilizar a tabela abaixo como referência: +Por mais que a ideia seja facilitar a vida do usuário, as chamadas ao módulo `pynvest-tools` podem ser feitas de modo altamente customizado através das variáveis aceitas pelo módulo. Em casos mais avançados, os usuários podem, por exemplo, indicar para o módulo a utilização de *databases* próprios ao invés de permitir que o módulo crie seus próprios *databases*. + +Para uma listagem completa de todas as variáveis, os usuários podem considerar as subseções abaixo: ## Variáveis do S3 e Glue Data Catalog @@ -13,14 +16,7 @@ Para uma lista completa de todas as variáveis disponíveis, os usuários podem | bucket_names_map | map(string) | Dicionário (map) contendo nomes dos buckets SoR, SoT e Spec da conta AWS alvo de implantação dos recursos. O objetivo desta variável e permitir que o usuário forneça seus próprios buckets para armazenamento dos arquivos gerados. O correto preenchimento desta variável exige que as referências de nomes sejam fornecidas dentro das chaves 'sor', 'sot' e 'spec'. O usuário também pode fornecer o mesmo nome de bucket para as três quebras, caso queira armazenar os dados das tabelas em um único bucket. | *Required* | | flag_create_databases | bool | Flag para validar a criação de databases no Glue Data Catalog caso o usuário não tenha ou não queira utilizar databases já existentes para catalogação das tabelas geradas. | `true` | | databases_names_map | map(string) | Dicionário (map) contendo os nomes dos databases no Glue Data Catalog para catalogação de tabelas SoR, SoT e Spec. O correto preenchimento desta variável exige que as referências de nomes sejam fornecidas dentro das chaves 'sor', 'sot' e 'spec'. O usuário também pode fornecer o mesmo nome de database para as três quebras, caso queira armazenar os dados das tabelas em um único database. | ```{"sor" = "db_pynvest_sor", "sot" = "db_pynvest_sot", "spec" = "db_pynvest_spec"}``` | -| sor_acoes_table_name | string | Nome da tabela SoR gerada a partir do processamento de indicadores financeiros de Ações | `"tbl_fundamentus_indicadores_acoes"` | -| sor_fiis_table_name | string | Nome da tabela SoR gerada a partir do processamento de indicadores financeiros de Fundos Imobiliários | `"tbl_fundamentus_indicadores_fiis"` | - -## Variáveis do Eventbridge -| **Variável** | **Tipo** | **Descrição** | **Default** | -| :-- | :-- | :-- | :-- | -| schedule_expression_to_initialize | string | Expressão cron responsável por engatilhar a primeira etapa do processo | `"cron(0 22 ? * MON-FRI *)"` | ## Variáveis de Filas SQS @@ -33,6 +29,14 @@ Para uma lista completa de todas as variáveis disponíveis, os usuários podem | sqs_max_message_size | number | Tamanho máximo (em bytes) das mensagens da fila | `131072` | | sqs_delay_seconds | number | Delay em que novas mensagens chegam à fila caso os consumidores necessitem de mais tempo para processamento | `0` | | sqs_receive_wait_time_seconds | number | Tempo máximo (em segundos) que processos de pooling irão aguardar por mensagens disponíveis (Short Pooling versus Long Pooling) | `0` | -| sqs_lambda_trigger_batch_size | number | Número máximo de registros a serem enviados para a função em cada batch | `10` | -| sqs_lambda_trigger_batch_window | number | Valor máximo de tempo (em segundos) que a função irá aguardar para a coleta de registros antes da invocação | `5` | -| sqs_lambda_trigger_max_concurrency | number | Número máximo de funções concorrentes a serem invocadas pelo gatilho | `10` | \ No newline at end of file + +## Variáveis de Funções Lambda + +| **Variável** | **Tipo** | **Descrição** | **Default** | +| :-- | :-- | :-- | :-- | +| functions_python_runtime | string | Definição do runtime (versão) da linguagem Python associada às funçõe | `"python3.10"` | +| functions_timeout | number | Timeout das funções Lambda | 900 | +| functions_memory_size | number | Quantidade de memória (MB) a ser alocada para as funções Lambda | 192 | +| sqs_lambda_trigger_batch_size | number | Número máximo de registros a serem enviados para a função em cada batch | 100 | +| sqs_lambda_trigger_batch_window | number | Valor máximo de tempo (em segundos) que a função irá aguardar para a coleta de registros antes da invocação | 10 | +| sqs_lambda_trigger_max_concurrency | number | Número máximo de funções concorrentes a serem invocadas pelo gatilho | 3 | \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index a0220f3..91c76b0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -96,11 +96,14 @@ nav: - Tools: - O Módulo Pynvest Tools: tools/tools.md + - Quickstart: + - Chamando o Módulo: tools/quickstart.md + - Variáveis do Módulo: tools/variaveis.md - Detalhes da Solução: - Arquitetura: tools/arquitetura.md - Recursos Provisionados: tools/recursos.md - Etapas do Processo: tools/processo.md - - Quickstart: tools/quickstart.md + - Exemplos de Análises: tools/queries.md - Contribuindo: contribuindo/contribuindo.md From 7436d2ffa773bdc91bd10b988a60ed4d5da0d6c8 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Fri, 23 Feb 2024 23:37:23 -0300 Subject: [PATCH 10/17] =?UTF-8?q?feat:=20alterando=20metadados=20do=20proc?= =?UTF-8?q?essamento=20para=20deixar=20a=20coleta=20de=20indicadores=20din?= =?UTF-8?q?=C3=A2mica=20ano=20a=20ano?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pynvest/scrappers/fundamentus.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pynvest/scrappers/fundamentus.py b/pynvest/scrappers/fundamentus.py index 8aa945a..5b9a19c 100644 --- a/pynvest/scrappers/fundamentus.py +++ b/pynvest/scrappers/fundamentus.py @@ -62,12 +62,12 @@ "Mês": "pct_var_mes", "30 dias": "pct_var_30d", "12 meses": "pct_var_12m", - "2023": "pct_var_2023", - "2022": "pct_var_2022", - "2021": "pct_var_2021", - "2020": "pct_var_2020", - "2019": "pct_var_2019", - "2018": "pct_var_2018", + str(datetime.now().year): "pct_var_ano_a0", + str(datetime.now().year - 1): "pct_var_ano_a1", + str(datetime.now().year - 2): "pct_var_ano_a2", + str(datetime.now().year - 3): "pct_var_ano_a3", + str(datetime.now().year - 4): "pct_var_ano_a4", + str(datetime.now().year - 5): "pct_var_ano_a5", "P/L": "vlr_ind_p_sobre_l", "P/VP": "vlr_ind_p_sobre_vp", "P/EBIT": "vlr_ind_p_sobre_ebit", @@ -132,12 +132,12 @@ "Mês": "pct_var_mes", "30 dias": "pct_var_30d", "12 meses": "pct_var_12m", - "2023": "pct_var_2023", - "2022": "pct_var_2022", - "2021": "pct_var_2021", - "2020": "pct_var_2020", - "2019": "pct_var_2019", - "2018": "pct_var_2018", + str(datetime.now().year): "pct_var_ano_a0", + str(datetime.now().year - 1): "pct_var_ano_a1", + str(datetime.now().year - 2): "pct_var_ano_a2", + str(datetime.now().year - 3): "pct_var_ano_a3", + str(datetime.now().year - 4): "pct_var_ano_a4", + str(datetime.now().year - 5): "pct_var_ano_a5", "FFO Yield": "vlr_ffo_yield", "FFO/Cota": "vlr_ffo_sobre_cota", "Div. Yield": "vlr_div_yield", From 68367474f00f88d1292323c3ef20ce2097a22364 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Mon, 26 Feb 2024 23:29:43 -0300 Subject: [PATCH 11/17] =?UTF-8?q?chore:=20removendo=20coment=C3=A1rios=20a?= =?UTF-8?q?ntigos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pynvest/scrappers/fundamentus.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/pynvest/scrappers/fundamentus.py b/pynvest/scrappers/fundamentus.py index 5b9a19c..2bed672 100644 --- a/pynvest/scrappers/fundamentus.py +++ b/pynvest/scrappers/fundamentus.py @@ -102,14 +102,6 @@ "Receita Líquida": "vlr_receita_liq_ult_3m", "EBIT": "vlr_ebit_ult_3m", "Lucro Líquido": "vlr_lucro_liq_ult_3m" - # "Cart. de Crédito": "vlr_cart_de_cred", - # "Depósitos": "vlr_depositos", - # "Patrim. Líq": "vlr_patrim_liq", - # "Result Int Financ_1": "vlr_result_int_financ_ult_12m", - # "Rec Serviços_1": "vlr_rec_servicos_ult_12m", - # "Lucro Líquido_1": "vlr_lucro_liq_ult_12m", - # "Result Int Financ": "vlr_result_int_financ_ult_3m", - # "Rec Serviços": "vlr_rec_servicos_ult_3m" } # Estabelecendo indicadores financeiros de ações From f304fc7b69e2396c4db2e3598c1a619ea374e106 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Wed, 28 Feb 2024 23:37:25 -0300 Subject: [PATCH 12/17] feat: release v0.1.1 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index ab43733..16933d3 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ # Setting up package information setup( name='pynvest', - version='0.1.0', + version='0.1.1', author='Thiago Panini', author_email='panini.development@gmail.com', packages=find_packages(), From 9466d0b6007e3455ff32acda72f72eaea029e193 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Wed, 28 Feb 2024 23:55:00 -0300 Subject: [PATCH 13/17] fix: ajustando hiperlinks na doc --- docs/tools/processo.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tools/processo.md b/docs/tools/processo.md index 04358f5..060b758 100644 --- a/docs/tools/processo.md +++ b/docs/tools/processo.md @@ -45,7 +45,7 @@ ___ ![Desenho de arquitetura contendo apenas a segunda etapa do processamento](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/imgs/arquitetura-etapas/etapa-02.png?raw=true) -:octicons-feed-issue-closed-16: ***2.1*** :octicons-chevron-right-12: Na sequência, o processo tem continuidade através da coleta de *tickers* (códigos) de ativos financeiros (Ações e Fundos Imobiliários) presentes no site [Fundamentus](https://www.fundamentus.com.br/). Essa extração é realizada por meio da própria biblioteca [pynvest](https://github.com/ThiagoPanini/pynvest) em seu método [extracao_tickers_de_ativos()](../../scrappers/fundamentus/mkdocstrings/fundamentus/#pynvest.scrappers.fundamentus.Fundamentus.extracao_tickers_de_ativos) capaz de retornar uma lista de *tickers* com base em um tipo específico de ativo. +:octicons-feed-issue-closed-16: ***2.1*** :octicons-chevron-right-12: Na sequência, o processo tem continuidade através da coleta de *tickers* (códigos) de ativos financeiros (Ações e Fundos Imobiliários) presentes no site [Fundamentus](https://www.fundamentus.com.br/). Essa extração é realizada por meio da própria biblioteca [pynvest](https://github.com/ThiagoPanini/pynvest) em seu método [extracao_tickers_de_ativos()](../scrappers/fundamentus/mkdocstrings/fundamentus.md/#pynvest.scrappers.fundamentus.Fundamentus.extracao_tickers_de_ativos) capaz de retornar uma lista de *tickers* com base em um tipo específico de ativo. :octicons-feed-issue-closed-16: ***2.2*** :octicons-chevron-right-12: As listas são então separadas entre Ações e Fundos Imobiliários para, posteriormente, serem alvo de um processo de iteração visando o envio de mensagens para filas específicas no SQS. @@ -60,7 +60,7 @@ ___ ![Desenho de arquitetura contendo apenas a terceira etapa do processamento](https://github.com/ThiagoPanini/pynvest-tools/blob/v0.2.x/docs/imgs/arquitetura-etapas/etapa-03.png?raw=true) -:octicons-feed-issue-closed-16: ***3.1*** :octicons-chevron-right-12: As filas SQS utilizadas para armazenar *tickers* de Ações e Fundos Imobiliários, respectivamente, engatilham outras duas funções Lambda. As funções Lambda então recebem os eventos de mensagens recebidas nas filas e, através de um laço de repetição aplicado ao número de mensagens recebidas, coletam as informações de *tickers* e realizam a extração de indicadores financeiros através do método [coleta_indicadores_de_ativo()](../../scrappers/fundamentus/mkdocstrings/fundamentus/#pynvest.scrappers.fundamentus.Fundamentus.coleta_indicadores_de_ativo) da biblioteca `pynvest`. Os indicadores são então obtidos como DataFrames do pandas e escritos no S3 como arquivos parquet no bucket relacionado à camada SoR (dados brutos). A partição física é selecionada como a data de execução do processo. As etapas aqui mencionadas são análogas tanto para indicadores de Ações quanto para Fundos Imobiliários. +:octicons-feed-issue-closed-16: ***3.1*** :octicons-chevron-right-12: As filas SQS utilizadas para armazenar *tickers* de Ações e Fundos Imobiliários, respectivamente, engatilham outras duas funções Lambda. As funções Lambda então recebem os eventos de mensagens recebidas nas filas e, através de um laço de repetição aplicado ao número de mensagens recebidas, coletam as informações de *tickers* e realizam a extração de indicadores financeiros através do método [coleta_indicadores_de_ativo()](../scrappers/fundamentus/mkdocstrings/fundamentus.md/#pynvest.scrappers.fundamentus.Fundamentus.coleta_indicadores_de_ativo) da biblioteca `pynvest`. Os indicadores são então obtidos como DataFrames do pandas e escritos no S3 como arquivos parquet no bucket relacionado à camada SoR (dados brutos). A partição física é selecionada como a data de execução do processo. As etapas aqui mencionadas são análogas tanto para indicadores de Ações quanto para Fundos Imobiliários. :octicons-feed-issue-closed-16: ***3.2*** :octicons-chevron-right-12: Cada vez que novos arquivos são colocados no S3 (bucket SoR) através da função Lambda acima citada, outras duas Lambdas são acionadas com a missão de ler os arquivos e preparar os dados para serem colocados na camada SoT. From 5228e491772bfa005cfbe4eb769b2e7e874f5477 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Wed, 28 Feb 2024 23:55:06 -0300 Subject: [PATCH 14/17] =?UTF-8?q?docs:=20enriquecendo=20p=C3=A1gina=20de?= =?UTF-8?q?=20contribui=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/contribuindo/contribuindo.md | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/docs/contribuindo/contribuindo.md b/docs/contribuindo/contribuindo.md index 4ac28bc..109c284 100644 --- a/docs/contribuindo/contribuindo.md +++ b/docs/contribuindo/contribuindo.md @@ -1,4 +1,29 @@ # Contribuindo com o pynvest - :octicons-alert-16: - Página em construção +Curtiu o projeto e encontrou alguma oportunidade de contribuir com ele de alguma forma? Vai fundo! Sendo uma iniciativa *open source*, qualquer um interessado em deixar sua contribuição será extremamente bem vindo. + +???+ question "Para contribuir eu preciso necessariamente escrever linhas de código?" + Não necessariamente! Uma contribuição pode ser desde um módulo adicional na biblioteca, como também o apontamento de alguma *issue* ou *feature request*. Sua interação é extremamente válida para manter a ideia viva! + + +O pacote surgiu de forma despretensiosa e com o simples objetivo de facilitar a gestão financeira pessoal do criador. Ao longo do tempo, percebeu-se que tais funcionalidades poderiam facilmnente ajudar outras pessoas dentro do mesmo escopo e propósito. Assim, a biblioteca tomou forma e, hoje, o resultado atual se mostra dentro de tudo o que está consolidado nesta documentação. + + +## Como Contribuir? + +Bom, em primeiro lugar, é importante que os potenciais contribuidores tenham a ciência completa sobre a biblioteca *pynvest* e o seu propósito. Dessa forma, as ideias de contribuição poderão ser moldadas e adaptadas para encaixar no escopo da biblioteca. + +Dito isso, os potenciais contribuidores podem acessar o repositório oficial da biblioteca e iniciar seus respectivos desenvolvimentos. + +- :fontawesome-brands-github: [Repositório com código fonte](https://github.com/ThiagoPanini/pynvest) +- :fontawesome-brands-python: [Página da biblioteca no PyPI](https://pypi.org/project/pynvest/) + +## Issues + +Abrir uma *issue* também é uma forma de contribuir com o projeto. Atualmente, existem alguns modelos específicos de *issues* que podem ser utilizados pelos usuários para fornecer insumos específicos sobre o projeto: + +- 🐞 Report de *bugs* da biblioteca +- 📄 Aprimorando de documentações já existentes ou inclusão de novas páginas +- 🚀 Requisição de novas funcionalidades para o projeto +- 😵‍💫 Pedido de ajuda para tarefas no geral +- 🤔 Questões ou dúvidas sobre o projeto From 4ee540486f4f442a1ed995d29dfda18ffb9a9a04 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Thu, 29 Feb 2024 09:11:36 -0300 Subject: [PATCH 15/17] =?UTF-8?q?feat:=20gerando=20=C3=ADcones=20SVG=20par?= =?UTF-8?q?a=20customiza=C3=A7=C3=A3o=20de=20logo=20no=20menu=20da=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../overrides/.icons/custom/custom-icon-32px.png | Bin 0 -> 1446 bytes .../overrides/.icons/custom/custom-icon-32px.svg | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 docs/overrides/.icons/custom/custom-icon-32px.png create mode 100644 docs/overrides/.icons/custom/custom-icon-32px.svg diff --git a/docs/overrides/.icons/custom/custom-icon-32px.png b/docs/overrides/.icons/custom/custom-icon-32px.png new file mode 100644 index 0000000000000000000000000000000000000000..f057aefb3f0cde9709bbf59b2c982a70257b6cae GIT binary patch literal 1446 zcmeAS@N?(olHy`uVBq!ia0vp^Qb4T0!3-p=OJ|saILRJCz6=aiY77hwEes65fI}8*K#|}pTLUj|54pP3 z=OEA=JP2qwL>9;Z+67Yy6@+uavX_A*ME&Mq6a^4*pdgfiWG38jh(SQgUc>f*2qY)dA>M zT!3kWGLQljXfj+cf&ppRa0y#p=7u^2L4MkhMu)#krb^B>$xd-o!jwe-oiPxGu;9PAP*Y|Uj= z?tk^?1G<=;Tme}|ho`K(e8KVP7fFYeGkG?rRWD*L@R}KX^1(hq?FsX= z4;t{VKJ$l_J5oYSH;#!(?0~?92qs2vb^Yjdd_4C=%d{I4u4c{cP0PNvj-|Qub@&Fs z>9S@XxnCSkyD;>Ja2l=Gw!a9BG}RKXlP|> zVP#^ZZD3$!U?9V^tOrFyZhlH;S|x4`x$$zqf|5Z4ZbM0CZfbE!Vr~I$Jyu@!?}2(4 NJYD@<);T3K0RV8yg~0#- literal 0 HcmV?d00001 diff --git a/docs/overrides/.icons/custom/custom-icon-32px.svg b/docs/overrides/.icons/custom/custom-icon-32px.svg new file mode 100644 index 0000000..c3575b7 --- /dev/null +++ b/docs/overrides/.icons/custom/custom-icon-32px.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file From bba5252c74c80171c639a7017bb5195c1101a213 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Thu, 29 Feb 2024 09:11:48 -0300 Subject: [PATCH 16/17] =?UTF-8?q?docs:=20referenciando=20ferramentas=20de?= =?UTF-8?q?=20convers=C3=A3o=20de=20imagens?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/quickstart/design.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/quickstart/design.md b/docs/quickstart/design.md index bd98432..cd041cf 100644 --- a/docs/quickstart/design.md +++ b/docs/quickstart/design.md @@ -19,6 +19,11 @@ Referências visuais para construção do logo: A imagem na [home](../index.md) da documentação foi criada utilizando a ilustração [Financial Data Isometric](https://storyset.com/illustration/financial-data/amico) da página [storyset](https://storyset.com/). +???+ tip "Sobre a conversão das imagens para a geração de ícones customizados" + Para conseguir gerar os logos customizados no cabeçalho da página, foi preciso realizar algumas etapas: + + 1. Converter a imagem PNG em um formato ICO utilizando as dimensões 32x32px ([cloudconvert](https://cloudconvert.com/png-to-ico)) + 2. Converter o arquivo ICO gerado para o formato SVG mantendo os *presets* de cores ([pixelied](https://pixelied.com/convert/png-converter/png-to-svg)) ## Fontes @@ -56,4 +61,6 @@ A imagem na [home](../index.md) da documentação foi criada utilizando a ilustr - [Dafont.com](https://www.dafont.com/) - [slidesgo](https://slidesgo.com/pt/) - [storyset](https://storyset.com/) -- [Power Point](https://www.microsoft.com/en-us/microsoft-365/powerpoint) \ No newline at end of file +- [Power Point](https://www.microsoft.com/en-us/microsoft-365/powerpoint) +- [cloudconvert](https://cloudconvert.com/png-to-ico) +- [pixelied](https://pixelied.com/convert/png-converter/png-to-svg) \ No newline at end of file From 085c678dc43fa5a9cc22130a989b7908b236f853 Mon Sep 17 00:00:00 2001 From: Thiago Panini Date: Thu, 29 Feb 2024 09:12:02 -0300 Subject: [PATCH 17/17] =?UTF-8?q?docs:=20incluindo=20=C3=ADcone=20customiz?= =?UTF-8?q?ado=20e=20favicon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mkdocs.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 91c76b0..4298601 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,6 +1,6 @@ # Informações principais do projeto site_name: pynvest -site_url: https://pynvest.readthedocs.io/en/latest/ +site_url: https://pynvest.readthedocs.io/pt/latest/ site_author: Thiago Panini site_description : >- Um pacote Python capaz de utilizar processos de web scrapping para @@ -27,8 +27,6 @@ extra: - icon: fontawesome/brands/hashnode link: https://panini.hashnode.dev/ name: Blog panini-tech-lab no Hashnode - - # Configuração do tema theme: @@ -38,8 +36,11 @@ theme: custom_dir: docs/overrides # Customizando ícone no header da página - # icon: - # logo: tmp + icon: + logo: custom/custom-icon-32px + + # Customizando favicon (ícone da aba) + favicon: assets/imgs/logo/logo-sem-nome.png # Configurando paleta de cores palette: