import pandas as pd import streamlit as st import vnquant.data as dt import seaborn as sns import matplotlib.pyplot as plt import plotly.express as px import plotly.graph_objects as go import statsmodels.api as sm from statsmodels.tsa.arima.model import ARIMA from prophet import Prophet from datetime import datetime, timedelta import pytz start_date = str((datetime.now(pytz.timezone('Asia/Ho_Chi_Minh')) - timedelta(days=365)).strftime("%Y-%m-%d")) end_date = str((datetime.now(pytz.timezone('Asia/Ho_Chi_Minh')) - timedelta(days=0)).strftime("%Y-%m-%d")) def prophet_ts(symbol, periods = 10): loader = dt.DataLoader(symbol, start_date, end_date) data = loader.download() data.columns = [col[0] for col in data.columns] m = Prophet() pdf = pd.DataFrame() pdf['ds'] = data.index pdf['y'] = data.close.values m.fit(pdf) future = m.make_future_dataframe(periods=periods) forecast = m.predict(future) fig = go.Figure() fig.add_trace(go.Scatter(x= pdf.ds, y=pdf.y, name = f"{symbol}_true" )) fig.add_trace(go.Scatter(x= forecast.ds, y=forecast.yhat, name = f"{symbol}_pred" )) return fig st.title("Vietnam Trading by Time Series") model = st.selectbox("model", ["ARIMA", "Propphet"]) sb = st.text_input('Symbol', 'FPT') periods = st.slider('Period', 1, 365, 28) fig = prophet_ts(symbol=sb, periods = periods) st.plotly_chart(fig, use_container_width=True)