def test_busca_preco_atual(self): busca_parametros.clear_cache() assert busca_preco_atual('INVALID') is None assert type(busca_preco_atual('ITSA4')) is float assert type(busca_preco_atual('VRTA11')) is float assert type(busca_preco_atual('BOVA11')) is float assert type(busca_preco_atual('MELI34')) is float
def calcula_custodia(df, data=None): custodia = [] if data: df = df.loc[df['data'] <= data, :] precos_medios_de_compra = calcula_precos_medio_de_compra(df, data) for ticker in tqdm(df['ticker'].unique()): qtd_em_custodia = df.loc[df['ticker'] == ticker]['qtd_ajustada'].sum() if qtd_em_custodia > 0: try: preco_atual = float('nan') try: preco_atual = busca_preco_atual(ticker) except: pass valor = preco_atual * qtd_em_custodia preco_medio_de_compra = precos_medios_de_compra[ticker]['valor'] data_primeira_compra = precos_medios_de_compra[ticker]['data_primeira_compra'] if preco_medio_de_compra <= 0.0001: valorizacao = 'NA' # ex: direitos de compra com custo zero else: valorizacao = preco_atual / preco_medio_de_compra * 100.0 - 100.0 valorizacao = "{0:.2f}".format(valorizacao) custodia.append({'ticker': ticker, 'tipo': tipo_ticker(ticker).name, 'qtd': int(qtd_em_custodia), 'preco_medio_compra': preco_medio_de_compra, 'valor': valor, 'preco_atual': preco_atual, 'valorizacao': valorizacao, 'ultimo_yield': fii_dividend_yield(ticker), 'data_primeira_compra': data_primeira_compra}) except Exception as ex: raise Exception('Erro ao calcular custodia do ticker {}'.format(ticker), ex) df_custodia = pd.DataFrame(custodia) df_custodia = df_custodia.sort_values(by=['valor'], ascending=False) return df_custodia
def calcula_custodia(df, data=None, orderBy=['valor', 'ticker']): custodia = [] if data: df = df.loc[df['data'] <= data, :] precos_medios_de_compra = calcula_precos_medio_de_compra(df, data) incluiZerado = (os.getenv('CUSTODIA_INCLUI_ZERO', '0') == '1') for ticker in tqdm(df['ticker'].unique()): qtd_em_custodia = df.loc[df['ticker'] == ticker]['qtd_ajustada'].sum() if incluiZerado or (qtd_em_custodia > 0): try: preco_atual = float('nan') try: preco_atual = busca_preco_atual(ticker) except: pass valor = preco_atual * qtd_em_custodia preco_medio_de_compra = precos_medios_de_compra[ticker][ 'valor'] data_primeira_compra = precos_medios_de_compra[ticker][ 'data_primeira_compra'] if preco_medio_de_compra <= 0.0001: valorizacao = 'NA' # ex: direitos de compra com custo zero else: valorizacao = preco_atual / preco_medio_de_compra * 100.0 - 100.0 valorizacao = np.round(valorizacao, decimals=2) custodia.append({ 'ticker': ticker, 'tipo': tipo_ticker(ticker).name, 'qtd': int(qtd_em_custodia), 'preco_medio_compra': np.round(preco_medio_de_compra, decimals=2), 'preco_medio_be': np.round(precos_medios_de_compra[ticker]['valor_be'], decimals=2), 'valor': np.round(valor, decimals=2), 'preco_atual': np.round(preco_atual, decimals=2), 'valorizacao': valorizacao, 'ultimo_yield': ticker_dividend_yield(ticker), 'p_vp': ticker_p_vp(ticker), 'data_primeira_compra': data_primeira_compra, 'valor_original': np.round(preco_medio_de_compra * qtd_em_custodia, decimals=2) }) except Exception as ex: raise Exception( 'Erro ao calcular custodia do ticker {}'.format(ticker), ex) df_custodia = pd.DataFrame(custodia) df_custodia = df_custodia.sort_values(by=orderBy, ascending=False) return df_custodia
def test_busca_preco_atual(self): assert busca_preco_atual('INVALID') is None assert type(busca_preco_atual('ITSA4')) is float assert type(busca_preco_atual('VRTA11')) is float assert type(busca_preco_atual('BOVA11')) is float