Spaces:
Sleeping
Sleeping
| import yfinance as yf | |
| import pandas as pd | |
| import matplotlib.pyplot as plt | |
| from prophet import Prophet | |
| import gradio as gr | |
| from datetime import datetime | |
| def previsao_precos(ticker, start_date, end_date, future_date): | |
| # Converter as datas de string para datetime | |
| try: | |
| start_date = pd.to_datetime(start_date) | |
| end_date = pd.to_datetime(end_date) | |
| future_date = pd.to_datetime(future_date) | |
| except ValueError: | |
| return "Erro: Verifique o formato das datas. Use YYYY-MM-DD.", None | |
| # Obter dados históricos | |
| data = yf.download(ticker, start=start_date, end=end_date) | |
| data.reset_index(inplace=True) | |
| data = data[['Date', 'Close']] | |
| data.columns = ['ds', 'y'] | |
| if data.empty: | |
| return "Não foram encontrados dados para o intervalo de datas especificado.", None | |
| # Ajustar o modelo Prophet | |
| model = Prophet() | |
| model.fit(data) | |
| # Fazer previsões | |
| future = model.make_future_dataframe(periods=(future_date - data['ds'].max()).days, freq='B') | |
| forecast = model.predict(future) | |
| # Criar gráfico | |
| plt.figure(figsize=(12, 6)) | |
| plt.plot(data['ds'], data['y'], label='Preço de Fechamento Real', color='blue') | |
| plt.plot(forecast['ds'], forecast['yhat'], label='Previsão de Preço de Fechamento', color='orange', linestyle='--') | |
| plt.fill_between(forecast['ds'], forecast['yhat_lower'], forecast['yhat_upper'], color='orange', alpha=0.2) | |
| plt.title(f'Previsão de Preço de Fechamento de {ticker} até {future_date}') | |
| plt.xlabel('Data') | |
| plt.ylabel('Preço de Fechamento') | |
| plt.xticks(rotation=45) | |
| plt.legend() | |
| plt.grid() | |
| plt.savefig('grafico.png') | |
| plt.close() | |
| return forecast.tail(10).to_string(), 'grafico.png' | |
| # Definir a interface Gradio | |
| iface = gr.Interface( | |
| fn=previsao_precos, | |
| inputs=[ | |
| gr.Textbox(label="Ticker da Ação", value="GOOG"), | |
| gr.Textbox(label="Data de Início (YYYY-MM-DD)", value="2019-10-19"), | |
| gr.Textbox(label="Data de Fim (YYYY-MM-DD)", value="2024-10-19"), | |
| gr.Textbox(label="Data Futura para Previsão (YYYY-MM-DD)", value="2029-10-19") | |
| ], | |
| outputs=[ | |
| gr.Textbox(label="Tabela de Previsões"), | |
| gr.Image(label="Gráfico de Previsão") | |
| ], | |
| title="Previsão de Preço de Ações com Prophet", | |
| description="Insira o ticker da ação e as datas para prever o preço de fechamento." | |
| ) | |
| # Iniciar a interface | |
| iface.launch() | |