File size: 1,349 Bytes
172ebc9
 
 
 
9288e06
172ebc9
 
9288e06
 
f9af82f
172ebc9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import pandas as pd
from prophet import Prophet
from pandas_datareader.stooq import StooqDailyReader
from datetime import datetime
#from fbprophet.plot import plot
from dateutil.relativedelta import relativedelta
import gradio as gr
#from dateutil.easter import easter
#from holidays import WEEKEND, HolidayBase
pd.options.plotting.backend = "plotly"

def get_forecast(stock):
    
    end = datetime.today()
    start = end -relativedelta(years=5)
    df = StooqDailyReader(stock, start=start, end=end)
    df_stock = df.read()['Close']
    df = df_stock.reset_index().rename(columns={"Date":"ds","Close":"y"})
    m = Prophet().fit(df)
    future = m.make_future_dataframe(periods=360, freq='D')
    fcst = m.predict(future)

    fig1 = m.plot(fcst)
    return fig1 

with gr.Blocks() as demo:
    gr.Markdown(
    """
    日米インデックス株の予測をします。プルダウンから予測したいインデックスを選んでください。NKX:日経平均、TPX:トピックス、DJI:ダウ平均、NDQ:ナスダック、SPX:S&P500
    """)
    with gr.Row():
        stock = gr.Dropdown( ["^NKX","^TPX",'^DJI',"^NDQ","^SPX"], label="Stock", value="^NKX")

    plt = gr.Plot()

    stock.change(get_forecast, [stock], plt, queue=False)
    demo.load(get_forecast, [stock], plt, queue=False,title="Stock Predict")    

demo.launch()