Skip to content

Módulo datareader

Este módulo provê a interface LuxorQuery para leitura de tabelas, séries temporais e análises financeiras dentro do data lake da Luxor (ADLS).


🔍 Classe LuxorQuery

Instanciação

from luxorasap.datareader import LuxorQuery

lq = LuxorQuery()

📄 Tabelas

get_table(name: str) -> pd.DataFrame

Lê uma tabela Parquet da camada enriquecida do ADLS.

df = lq.get_table("trades")

table_exists(name: str) -> bool

Verifica se a tabela está registrada no catálogo.


📈 Preços

get_price(asset: str, px_date: str | datetime) -> float | None

Obtém o preço de fechamento pontual de um ativo em uma data.

price = lq.get_price("msft us equity", px_date="2024-12-31")

get_prices(asset: str, previous_date, recent_date, period: str=None) -> pd.Series

Retorna série de preços para o ativo. Period pode ser mtd, ytd, qtr, 1m, 2m, 3m, etc.

series = lq.get_prices("msft us equity", recent_date=datetime.date(2024,12,31), period='ytd')

📊 Análises

get_pct_change(asset: str, previous_date, recent_date) -> float

Retorna a variação percentual no período.

get_pct_changes(asset: str, previous_date, recent_date, period: str) -> pd.Series

Retorna a série de retornos diários. Period pode ser mtd, ytd, qtr, 1m, 2m, 3m, etc.


calculate_volatility(asset: str, previous_date, recent_date) -> float

Volatilidade anualizada de retornos diários (std * sqrt(252)).


calculate_price_correlation(asset1, asset2, previous_date, recent_date) -> float

Correlação entre os retornos de dois ativos no período.


💼 Fundos e Carteiras

get_positions_and_movements(fund: str, date) -> pd.DataFrame

Devolve posição do fundo com compras/vendas no dia.


get_fund_aum(fund: str, date: datetime.date) -> float

Retorna o AUM (Assets Under Management) de um fundo numa data.


get_fund_pnl(fund: str, previous_date: datetime.date, recent_date: datetime.date) -> pd.Series

Série com o lucro/prejuízo do fundo no período.


run_return_analysis(asset_or_df, ...) -> dict

Análise de performance: CAGR, drawdown, sharpe, etc.


🧠 Outros

  • Datas devem ser datetime.date
  • Preços e retornos sempre assumem coluna "Price" por padrão