Describe bug
Could you help me, please? i've receive the issue below when I run my code
Simple code that reproduces your problem
def get_historical_data(tickers, start_date, end_date, output_filename=None):
"""
Função para obter dados históricos de preços de vários ativos a partir do Yahoo Finance.
:param tickers: Lista de tickers dos ativos (exemplo: ['KDIF11.SA', 'JURO11.SA']).
:param start_date: Data de início (formato 'YYYY-MM-DD').
:param end_date: Data de fim (formato 'YYYY-MM-DD').
:param output_filename: Nome do arquivo de saída para salvar os dados em Excel (opcional).
:return: DataFrame contendo os dados históricos de todos os ativos.
"""
all_data = [] # Lista para armazenar os dados de todos os tickers
for ticker in tickers:
# Baixando os dados históricos do Yahoo Finance
stock = yf.Ticker(ticker)
# Obtenha os dados históricos de preços
data = stock.history(start=start_date, end=end_date)
# Verificar se o índice é um DatetimeIndex com fuso horário e removê-lo
if isinstance(data.index, pd.DatetimeIndex) and data.index.tz is not None:
data.index = data.index.tz_localize(None) # Removendo o fuso horário se existir
# Selecionando apenas a coluna "Close"
data = data[['Close']] # Seleciona apenas a coluna Close
# Adicionando a coluna "Date" com os índices (datas)
data['Date'] = data.index
# Adiciona a coluna "Ticker" para identificar os dados
data['Ticker'] = ticker
# Reorganiza as colunas na ordem desejada: 'Date', 'Ticker', 'Close'
data = data[['Date', 'Ticker', 'Close']] # Reorganiza as colunas
# Remove a parte '.SA' dos tickers na coluna 'Ticker'
data['Ticker'] = data['Ticker'].str.replace('.SA', '', regex=False)
# Renomeia os tickers para 'T 10Y' e 'T 2Y'
if ticker == '%5ETNX': # Para o ticker %5ETNX
data['Ticker'] = 'T 10Y'
# Calcular a Taxa apenas se Close não for NaN
data['Taxa'] = data['Close'].apply(lambda x: round(x / 100, 6) if pd.notnull(x) else None)
data = data.drop(columns=['Close']) # Remove a coluna 'Close'
elif ticker == '2YY%3DF': # Para o ticker 2YY%3DF
data['Ticker'] = 'T 2Y'
# Calcular a Taxa apenas se Close não for NaN
data['Taxa'] = data['Close'].apply(lambda x: round(x / 100, 6) if pd.notnull(x) else None)
data = data.drop(columns=['Close']) # Remove a coluna 'Close'
elif ticker == '%5EGSPC': # Para o ticker %5EGSPC
data['Ticker'] = 'SPX'
# Copiar o Close para PU
data['PU'] = data['Close'].apply(lambda x: round(x, 2) if pd.notnull(x) else None)
data = data.drop(columns=['Close']) # Remove a coluna 'Close'
elif ticker == '%5EBVSP': # Para o ticker %5EBVSP
data['Ticker'] = 'IBOV'
# Copiar o Close para PU
data['PU'] = data['Close'].apply(lambda x: round(x, 2) if pd.notnull(x) else None)
data = data.drop(columns=['Close']) # Remove a coluna 'Close'
elif ticker == 'BRL%3DX': # Para o ticker BRL%3DX
data['Ticker'] = 'USD'
# Copiar o Close para PU
data['PU'] = data['Close'].apply(lambda x: round(x, 4) if pd.notnull(x) else None)
data = data.drop(columns=['Close']) # Remove a coluna 'Close'
else:
# Para os outros tickers, mantém a coluna 'Close' como está
data['PU'] = data['Close'].apply(lambda x: round(x, 2) if pd.notnull(x) else None)
data = data.drop(columns=['Close']) # Remove a coluna 'Close'
# Adiciona os dados para o ticker na lista all_data
all_data.append(data)
# Concatenando todos os dados em um único DataFrame
final_df = pd.concat(all_data)
# Se um nome de arquivo for fornecido, exporta os dados para Excel
if output_filename:
final_df.to_excel(output_filename, index=False)
print(f"Dados salvos em {output_filename}")
return final_df
Debug log
$KDIF11.SA: possibly delisted; no price data found (1d 2025-02-18 -> 2025-02-19)
$JURO11.SA: possibly delisted; no price data found (1d 2025-02-18 -> 2025-02-19)
$IFRA11.SA: possibly delisted; no price data found (1d 2025-02-18 -> 2025-02-19)
$BDIF11.SA: possibly delisted; no price data found (1d 2025-02-18 -> 2025-02-19)
Bad data proof
No response
yfinance version
0.2.50
Python version
No response
Operating system
No response
Describe bug
Could you help me, please? i've receive the issue below when I run my code
Simple code that reproduces your problem
def get_historical_data(tickers, start_date, end_date, output_filename=None):
"""
Função para obter dados históricos de preços de vários ativos a partir do Yahoo Finance.
Debug log
$KDIF11.SA: possibly delisted; no price data found (1d 2025-02-18 -> 2025-02-19)
$JURO11.SA: possibly delisted; no price data found (1d 2025-02-18 -> 2025-02-19)
$IFRA11.SA: possibly delisted; no price data found (1d 2025-02-18 -> 2025-02-19)
$BDIF11.SA: possibly delisted; no price data found (1d 2025-02-18 -> 2025-02-19)
Bad data proof
No response
yfinanceversion0.2.50
Python version
No response
Operating system
No response