Spaces:
Sleeping
Sleeping
import gradio as gr | |
import torch | |
from chronos import ChronosPipeline | |
import yfinance as yf | |
import pandas as pd | |
import numpy as np | |
import matplotlib.pyplot as plt | |
import matplotlib.dates as mdates | |
from sklearn.metrics import mean_absolute_error, mean_squared_error | |
import tempfile | |
def get_popular_tickers(): | |
return [ | |
"AAPL", "MSFT", "GOOGL", "AMZN", "META", "TSLA", "NVDA", "JPM", | |
"JNJ", "V", "PG", "WMT", "BAC", "DIS", "NFLX", "INTC" | |
] | |
# Resto del c贸digo se mantiene igual hasta la secci贸n de la interfaz Gradio | |
with gr.Blocks() as demo: | |
gr.Markdown("# Aplicaci贸n de Predicci贸n de Precios de Acciones") | |
with gr.Row(): | |
with gr.Column(scale=1): | |
ticker = gr.Dropdown( | |
choices=get_popular_tickers(), | |
value="AAPL", # A帽adido valor por defecto | |
label="Selecciona el S铆mbolo de la Acci贸n" | |
) | |
train_data_points = gr.Slider( | |
minimum=50, | |
maximum=5000, | |
value=1000, | |
step=1, | |
label="N煤mero de Datos para Entrenamiento" | |
) | |
prediction_days = gr.Slider( | |
minimum=1, | |
maximum=60, | |
value=5, | |
step=1, | |
label="N煤mero de D铆as a Predecir" | |
) | |
predict_btn = gr.Button("Predecir") | |
with gr.Column(): | |
plot_output = gr.Plot(label="Gr谩fico de Predicci贸n") | |
download_btn = gr.File(label="Descargar Predicciones") | |
def update_train_data_points(ticker): | |
try: | |
stock = yf.Ticker(ticker) | |
hist = stock.history(period="max") | |
total_points = len(hist) | |
return gr.Slider.update( | |
maximum=total_points, | |
value=min(1000, total_points), | |
visible=True | |
) | |
except Exception as e: | |
print(f"Error updating slider: {str(e)}") | |
return gr.Slider.update(visible=True) # Mantener slider visible en caso de error | |
ticker.change( | |
fn=update_train_data_points, | |
inputs=[ticker], | |
outputs=[train_data_points] | |
) | |
predict_btn.click( | |
fn=predict_stock, | |
inputs=[ticker, train_data_points, prediction_days], | |
outputs=[plot_output, download_btn] | |
) | |
demo.launch() |