Spaces:
Runtime error
Runtime error
import datetime | |
import plotly.graph_objs as go | |
import requests | |
import streamlit as st | |
import yfinance as yf | |
API_URL = "http://127.0.0.1:8000/LSTM_Predict" | |
MIN_DATE = datetime.date(2020, 1, 1) | |
MAX_DATE = datetime.date(2022, 12, 31) | |
def main(): | |
stock_name = st.selectbox( | |
"Please choose stock name", ("AAPL", "TSLA", "AMZN", "MSFT") | |
) | |
start_date = st.date_input( | |
"Start date", min_value=MIN_DATE, max_value=MAX_DATE, value=MIN_DATE | |
) | |
end_date = st.date_input( | |
"End date", min_value=MIN_DATE, max_value=MAX_DATE, value=MAX_DATE | |
) | |
if start_date <= end_date: | |
st.success( | |
f"Selected start date: `{start_date}`\n\nSelected end date:`{end_date}`" | |
) | |
else: | |
st.error("Error: End date must be after start date.") | |
try: | |
stock_data = yf.download(stock_name, start=start_date, end=end_date) | |
stock_data.reset_index(inplace=True) | |
fig = go.Figure() | |
fig.add_trace(go.Scatter(x=stock_data.index, y=stock_data["Close"], name="Close")) | |
fig.update_layout(title=f"{stock_name} Stock Price") | |
st.plotly_chart(fig) | |
stock_data.to_csv(f"{stock_name}_data.csv", index=False) | |
if st.button("Predict"): | |
payload = {"stock_name": stock_name} | |
st.write("Sending payload:", payload) # Debugging line | |
try: | |
response = requests.post(API_URL, json=payload) | |
response.raise_for_status() | |
predictions = response.json() | |
predicted_prices = predictions["prediction"] | |
actual_prices = stock_data["Close"].tolist() | |
fig = go.Figure() | |
fig.add_trace( | |
go.Scatter(x=stock_data.index, y=actual_prices, name="Actual") | |
) | |
fig.add_trace( | |
go.Scatter( | |
x=stock_data.index[-len(predicted_prices):], | |
y=predicted_prices, | |
name="Predicted", | |
) | |
) | |
fig.update_layout(title=f"{stock_name} Stock Price Prediction") | |
st.plotly_chart(fig) | |
except requests.exceptions.HTTPError as e: | |
st.error(f"HTTP error occurred: {e}") | |
st.write(response.json()) # Print detailed error message from FastAPI | |
except Exception as e: | |
st.error(f"An error occurred while downloading stock data: {e}") | |
if __name__ == "__main__": | |
main() | |