Untitled

mail@pastecode.io avatar
unknown
plain_text
9 days ago
3.4 kB
0
Indexable
Never
import yfinance as yf

# Definindo a carteira de ações
carteira_yf = ['ABEV3.SA', 'B3SA3.SA', 'ELET3.SA', 'GGBR4.SA', 'ITSA4.SA',
               'PETR4.SA', 'RENT3.SA', 'SUZB3.SA', 'VALE3.SA', 'WEGE3.SA']

# Carregando os dados da carteira
df = yf.download(carteira_yf, start="2022-08-01", end="2023-08-01")

cotacoes = df.stack(level = 1)
cotacoes

# Resetando os índices e renomeando a coluna dos ativos
cotacoes = cotacoes.reset_index().rename(columns={"level_1": "Ticker"})

# Organizando o df
cotacoes = cotacoes[["Date", "Open", "High", "Low", "Close", "Ticker"]]
cotacoes.head(10)

# Código completo da obtenção dos dados históricos das cotações da carteira de 01/08/2022 à 01/08/2023
# Importando a biblioteca
import yfinance as yf

# Definindo a carteira de ações
carteira_yf = ['ABEV3.SA', 'B3SA3.SA', 'ELET3.SA', 'GGBR4.SA', 'ITSA4.SA',
               'PETR4.SA', 'RENT3.SA', 'SUZB3.SA', 'VALE3.SA', 'WEGE3.SA']

# Carregando os dados da carteira
df = yf.download(carteira_yf, start="2022-08-01", end="2023-08-01")

# Passando os ativos para o multindex do df
cotacoes = df.stack(level=1)

# Resetando os índices e renomenado a coluna dos ativos
cotacoes = cotacoes.reset_index().rename(columns={'level_1': 'Ticker'})

# Organizando o df
cotacoes = cotacoes[["Date", "Open", "High", "Low", "Close", "Ticker"]]

del carteira_yf, df

import fundamentus
import pandas as pd

# Chamando uma ação
weg = fundamentus.get_papel("WEGE3")
weg

# Definindo a carteira de ações
carteira_fund = ["ABEV3", "B3SA3", "ELET3", "GGBR4", "ITSA4",
                 "PETR4", "RENT3", "SUZB3", "VALE3", "WEGE3"]

# Lendo um papel específico
ABEV3 = fundamentus.get_papel("ABEV3")
B3SA3 = fundamentus.get_papel("B3SA3")
ELET3 = fundamentus.get_papel("ELET3")
GGBR4 = fundamentus.get_papel("GGBR4")
ITSA4 = fundamentus.get_papel("ITSA4")
PETR4 = fundamentus.get_papel("PETR4")
RENT3 = fundamentus.get_papel("RENT3")
SUZB3 = fundamentus.get_papel("SUZB3")
VALE3 = fundamentus.get_papel("VALE3")
WEGE3 = fundamentus.get_papel("WEGE3")

ind = pd.concat([ABEV3, B3SA3, ELET3, GGBR4, ITSA4, PETR4, RENT3, SUZB3, VALE3, WEGE3])[['Setor', 'Cotacao', 'Min_52_sem', 'Max_52_sem', 'Valor_de_mercado',
                                            'Nro_Acoes', 'Patrim_Liq', 'Receita_Liquida_12m', 'Receita_Liquida_3m', 
                                            'Lucro_Liquido_12m', 'Lucro_Liquido_3m']]
ind.head(3)

# Passando o ticker para uma coluna
ind = ind.reset_index()
ind.rename(columns={"index":"Ativo"}, inplace = True)

# Alternando colunas object para numeric
colunas = ['Cotacao', 'Min_52_sem', 'Max_52_sem', 'Valor_de_mercado', 'Nro_Acoes', 'Patrim_Liq',
           'Receita_Liquida_12m', 'Receita_Liquida_3m', 'Lucro_Liquido_12m', 'Lucro_Liquido_3m']
ind[colunas] = ind[colunas].apply(pd.to_numeric, errors='coerce', axis=1)
ind.head()    

# Criando um novo df
ind_2 = fundamentus.get_resultado_raw().reset_index()
ind_2 = ind_2.query("papel in @carteira_fund")
ind_2 = ind_2[['papel', 'P/L', 'Div.Yield', 'P/VP', 'ROE']].reset_index(drop=True)
ind_2.rename(columns={'papel': 'Ativo', 'Div.Yield':'DY'}, inplace=True)
ind_2.head(10)

# Error: 'Ativo'
indicadores = pd.merge(ind, ind_2, on = "Ativo")
indicadores["LPA"] = (indicadores["Lucro_Liquido_12m"] / indicadores["Nro_Acoes"]).round(2)
indicadores["VPA"] = (indicadores["Patrim_Liq"] / indicadores["Nro_Acoes"]).round(2)
indicadores.head()
Leave a Comment