Example #1
0
 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
Example #2
0
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
Example #3
0
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
Example #4
0
 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