Arquitetura: Pipeline source_bases¶
Este documento detalha o pipeline executado pelo script source_bases_updater.py, que atua como orquestrador para a atualização de diversas bases de dados auxiliares utilizadas pelo LuxorASAP.
1. Visão Geral do Pipeline¶
O source_bases_updater.py executa uma série de scripts especializados, cada um responsável por gerar ou atualizar um conjunto específico de dados em formato .parquet no ADLS, no diretório luxorasap/enriched/parquet. Embora sejam independentes, os scripts são executados sequencialmente.
flowchart LR
subgraph "**Execução em cascata**"
direction LR
A[non_bbg_data_updater.py]
B[historical_quotas_updater.py]
C[risk_metrics_updater.py]
D[hist_concentration_updater.py]
E[us_cash_updater.py]
end
subgraph "**luxorasap/enriched/parquet**"
A -->|dataloader| A1[(hist_non_bbg_px_last.parquet)]
B -->|dataloader| B1[(all_funds_quotas.parquet)]
B -->|dataloader| B2[("[NOME_FUNDO]_quotas.parquet")]
C -->|dataloader| C1[(hist_risk_metrics.parquet)]
D -->|dataloader| D1[(hist_concentration.parquet)]
E -->|dataloader| E1[(hist_us_cash.parquet)]
end
2. non_bbg_data_updater.py¶
Fluxo de execução:
flowchart TB
A0["non_bbg_data_updater.py"]--> B["run()"]
A[ativos_sem_bbg.xlsx] -->|input| B["run()"]
B --> C[update_hawker]
B --> D[get_fidc_trybeI/II_quote]
B --> E[Calcular séries adicionais]
E --> F[(hist_non_bbg_px_last.parquet)]
E -->|sobrescreve| A
O script non_bbg_data_updater.py concentra diversos métodos para criação de séries históricas de dados não-Bloomberg. Entre esses:
- Cálculo de séries IPCA+, CPI+, loans (fixos e variáveis).
- Método
update_hawker: estimativa diária de cotas das séries SPX Hawker durante o mês corrente. - Métodos
get_fidc_trybeI_quoteeget_fidc_trybeII_quote: atualização de cotas dos FIDCs a partir do arquivocarteiras_btg.xlsxmais recente. - Chamada
run()central coordena tudo.
3. historical_quotas_updater.py¶
Fluxo de execução:
flowchart TB
H1["historico_cotas.xlsx"] --> H2["Remove dados D0"]
R1["historical_return.xlsx"] --> R2["Extrair dados atuais"]
H2 & R2 --> M["Atualização de cotas e quantidades"]
M -->|sobrescreve| H1
M --> S2[("all_funds_quotas.parquet")]
M --> S3[("[NOME_FUNDO]_quotas.parquet")]
O script historical_quotas_updater.py é responsável por atualizar as cotas históricas de todos os fundos Luxor. Ele realiza os seguintes passos:
- Carrega a planilha
historico_cotas.xlsxaté o dia anterior. - Carrega a planilha
carteira_online/production/bases_historicas/historical_return.xlsxgerada peloreturn_calculator.py. - Remove a última data existente em
historico_cotas.xlsx. - Atualiza
historico_cotas.xlsxcom as cotas e quantidades mais recentes provenientes doshistorical_returns. - Para fundos não presentes em
historical_returns, propaga cota e quantidade do dia anterior. - Salva (sobrescreve)
historico_cotas.xlsx. - Gera e salva no ADLS:
all_funds_quotas.parquet[NOME_FUNDO]_quotas.parquetpara cada fundo.
4. risk_metrics_updater.py¶
Fluxo de execução:
flowchart TD
ExcelIn["hist_risk_metrics.xlsx<br>(veio do portfolio_builder)"] -->|input| UpdateRisk["Atualização incremental"]
ExcelIn2["historico_risk_metrics.xlsx"] -->|input| UpdateRisk
UpdateRisk -->|sobrescreve| ExcelIn2
UpdateRisk --> SaveParquet[("hist_risk_metrics.parquet<br>(luxorasap/enriched/)")]
O script risk_metrics_updater.py simplesmente recebe como input esta planilha:
carteira_online/production/carteiras_luxor_historico/metricas_risco/hist_risk_metrics.xlsx
Essa planilha possui as métricas mais atualizadas vindas da última execução do portfolio_builder.py. Em seguida, realiza:
- Atualização incremental da base
source_bases/historico_risk_metrics.xlsx. - Sobrescreve a base
source_bases/historico_risk_metrics.xlsx. - Salva no ADLS
hist_risk_metrics.parquet.
5. hist_concentration_updater.py¶
Fluxo de execução:
flowchart TB
C1[base_portfolios.xlsx] --> D[Extrair]
C2[10 últimas bases_completas] --> D
D --> E[Agregação]
E --> F[(hist_concentration.parquet)]
Este script atualiza a base hist_concentration.parquet a partir da base_portfolios.xlsx e dos 10 arquivos mais recentes em bases_completas/.
🛈 Uso atual baixo – Este fluxo está sendo pouco usado, vale avaliar se pode ser descontinuado.
6. us_cash_updater.py¶
Fluxo de execução:
flowchart TB
U1[base_portfolios.xlsx] --> V[Extrair caixa]
U2[bases_completas] --> V
V --> W[("hist_us_cash.parquet<br>(luxorasap/enriched/)")]
O script us_cash_updater.py atualiza o histórico de caixa dos fundos A, B e HMX em:
luxorasap/enriched/parquet/hist_us_cash.parquet
Fontes:
- Planilha
base_portfolios.xlsxmais recente (gerada peloportfolio_builder.py). - Arquivos históricos em
carteiras_luxor_historico/bases_completas/.