Crie um conjunto de dados financeiros com o Yahoo Finance Python

Conteúdo

Introdução

O artigo visa capacitá-lo a criar seus projetos, aprendendo como criar seu quadro de dados e coletar dados sobre o mercado de ações e o mercado de criptografia da Internet e, em seguida, basear seu código nisso.. Isso permitirá que você crie seus modelos de ML e faça experiências com dados do mundo real..

Neste artigo, Vou demonstrar dois métodos e ambos usam o Yahoo Finance como fonte de dados, porque é gratuito e não é necessário registro. Você pode usar qualquer outra fonte de dados como Quandi, Tiingo, Nuvem IEX e mais.

29422stock_cover-5219197

Preparando-se

Na primeira abordagem, vamos considerar o módulo financeiro em Python e é um módulo muito fácil de trabalhar. O outro módulo que falaremos é o yahoofinancials, que requer esforço extra, mas retorna um monte de informações adicionais em troca. Discutiremos isso mais tarde e agora começaremos importando os módulos necessários em nosso código..

Configuração inicial:

Precisamos carregar as seguintes bibliotecas:

importar pandas como pd importação yfinance como yf de yahoofinancials importar YahooFinancials

Se você não tem essas bibliotecas, você pode instalá-los via pip.

!pip instalar yfinance
!pip instalar yahoofinanciais

Primeiro método: como usar yfinance

Era anteriormente conhecido como "fix_yahoo_finance", mas então ele foi transformado em um módulo de sua própria, mas o Yahoo não é oficial. O módulo 'yfinance’ agora é uma biblioteca muito popular que é muito compatível com Python e pode ser usada como um patch para o pandas_datareader ou uma biblioteca independente. Ele tem muitos usos potenciais e muitas pessoas o usam para baixar os preços das ações e também os preços das criptomoedas. Sem mais demora, vamos executar o seguinte código. Começaremos baixando o preço das ações da ‘Apple’

Código:

aapl_df = yf.download('AAPL', 
                      start ="2019-01-01", 
                      end = '2021-06-12', 
                      progress = False,
)
aapl_df.head()

Produção :

40276img1_aapl_details-1016683

O intervalo de dados está definido para 1 dia, mas o interno pode ser especificado externamente com valores como 1 m, 5 m, 15 m, 30 m, 60 m, 1h, 1d, 1 semana, 1 mês e mais. O comando acima para baixar os dados mostra uma data de início e término, mas você também pode simplesmente baixar os dados com o código fornecido abaixo:

Código:

aapl_df = yf.download('AAPL')

Produção :

21991img1_aapl_details_max-2677150

Existem muitos parâmetros da função de download que você pode encontrar na documentação e o início e o fim são alguns dos mais comuns de serem usados. Como os dados eram pequenos, a barra de progresso foi definida como falsa e mostra que é inútil e deve ser usada para grandes volumes ou dados.

Também podemos baixar vários preços de ações para mais de um ativo ao mesmo tempo. Fornecimento de uma lista de nomes de empresas em formato de lista (p. Não. [‘FB’,'MSFT',‘AAPL’] ) como o argumento dos tickers. Também podemos fornecer um argumento adicional que é autotuning = True, de modo que todos os preços atuais sejam ajustados para possíveis ações corporativas, como divisões.

Além da função yf.download, também podemos usar o módulo ticker e você pode executar o seguinte código para baixar o mais recente 5 anos de preços das ações da Apple.

Código:

ticker = yf.Ticker('AAPL')
aapl_df = ticker.history(período ="5e")
aapl_df['Fechar'].enredo(título ="Preço das ações da APPLE")

Produção :

41502apple_stock_5yrs-6051609

A única vantagem de usar um módulo ticker é que você pode tirar proveito dos vários métodos que estão conectados a ele.. Os métodos disponíveis que podemos usar são:

  • informação – Este método imprime uma saída do formatador JSON que contém muitas informações sobre a empresa, começando com o nome completo da empresa, o resumo, Indústria, as trocas listadas com o país e fuso horário, e mais. Ele também vem equipado com o beta coeficiente.

  • recomendações – Este método contém uma lista histórica de recomendações feitas por diferentes analistas sobre o estoque e se deve comprar., vender ou dar sugestões sobre isso.

25965apple_recommendations-2840358
28787apple_actions-5543446
98419apple_major_holders-9920072
77712apple_institutional_holders-6820212
  • calendário – Esta função mostra todos os eventos de entrada, como ganhos, e você pode até adicionar isso ao seu calendário do google via código. Basicamente, mostra datas de dividendos importantes para uma empresa.

38920apple_calender-7687991

Se você ainda quiser explorar mais sobre como as funções funcionam, você pode verificar isso GitHub repositório yfinance.

Segundo método: Como usar yahoofinancials?

O segundo método é usar o módulo yahoofinancials, que é um pouco mais difícil de trabalhar, mas fornece muito mais informações do que yfinance. Começaremos baixando os preços das ações da Apple.

Para fazer isso, primeiro passaremos um objeto YahooFinancials ignorando o nome do ticker Apply e, em seguida, usaremos uma variedade de informações importantes para obter os dados necessários. Aqui, os dados retornados estão no formato JSON e, portanto, fazemos um pouco de embelezamento para que possam ser transformados em um DataFrame para exibi-los corretamente.

Código:

yahoo_financials = YahooFinancials('AAPL')
data = yahoo_financials.get_historical_price_data(start_date ="2019-01-01", 
                                                  data_final ="2019-12-31", 
                                                  time_interval ="semanalmente")
aapl_df = pd.DataFrame(dados['AAPL']['preços'])
aapl_df = aapl_df.drop('encontro', eixo = 1).set_index('formatted_date')
aapl_df.head()

Produção :

27858apple_yahoo_finance-9755190

Em um nível técnico, o processo de obtenção de um preço histórico das ações é um pouco mais longo do que o caso do yfinance, mas isso se deve principalmente ao grande volume de dados. Agora vamos passar para algumas das funções importantes de yahoofinancials.

  • get_stock_quote_type_data () – Este método retorna muitas informações genéricas sobre uma ação que é semelhante à função yfinance info (). A saída é algo assim.

  • get_summary_data () – Este método retorna um resumo de toda a empresa junto com dados úteis, como o valor beta, preço para valor de livro e muito mais.

  • get_stock_earnings_data () – Este método retorna informações sobre os ganhos trimestrais e anuais da empresa junto com a próxima data em que a empresa apresentará seus ganhos..

  • get_financial_stmts () – Este é outro método útil para recuperar as demonstrações financeiras de uma empresa que é útil para a análise de um estoque..

  • get_historical_price_data () – Este é um método semelhante à função de download () o Ticker () para obter os preços das ações com start_date, data final e intervalos de intervalo.

O módulo acima também pode ser usado para baixar dados da empresa de uma só vez, como yfinance e dados de criptomoeda também podem ser baixados conforme o código abaixo mostrado.

Código:

yahoo_financials = YahooFinancials('BTC-USD')
data = yahoo_financials.get_historical_price_data("2019-07-10", "2021-05-30", "por mês")
btc_df = pd.DataFrame(dados['BTC-USD']['preços'])
btc_df = btc_df.drop('encontro', eixo = 1).set_index('formatted_date')
btc_df.head()

Produção :

31235btc_yahoo_finance-3124513

Para mais detalhes sobre o módulo, você pode verificar o seu GitHub Repositório.

Notas finais

A informação completa é finalmente obtida de Yahoo Finance e agora você sabe como importar qualquer conjunto de informações de estoque ou criptomoeda e dados de preços para o seu código e começar a explorar e experimentar com ele. Boa sorte com suas aventuras e fique à vontade para compartilhar seu código comigo no LinkedIn ou não hesite em contactar-me em caso de dúvidas ou erros.

Obrigado por ler até o fim. Espero que você esteja bem e que fique seguro e que se vacine logo ou que já esteja.

Sobre o autor :

Arnab Mondal

Engenheiro de dados e desenvolvedor Python | Escritor técnico freelance

Link para meus outros artigos

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.