Spaces:
Sleeping
Sleeping
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 | |
import pytz | |
st.title("Vietnam Trading by Prophet") | |
sb = st.text_input('Symbol', 'FPT') | |
periods = st.slider('period', 1, 365, 28) | |
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")) | |
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 | |
def prophet_ts(symbol, periods = 10): | |
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 | |
fig = prophet_ts(symbol=sb, periods = periods) | |
st.plotly_chart(fig, use_container_width=True) | |