-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmarket_prediction.pynb
49 lines (40 loc) · 1.33 KB
/
market_prediction.pynb
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
40
41
42
43
44
45
46
47
48
49
import requests
from datetime import date
symbol = "VOO"
from_date = "2010-01-01"
to_date = date.today()
url = f"https://financialmodelingprep.com/api/v3/historical-price-full/{symbol}?from={from_date}&to={to_date}&apikey=rvZ1Ul1zJ6tSpIgaIAPLl82TadAQskXP"
def fetch_data(url):
response = requests.get(url).json()
return response
data = fetch_data(url)
def preprocess_data(data):
df = pd.DataFrame(data["historical"])
df.reset_index(inplace=True)
df.rename(columns={'date': 'ds', 'adjClose': 'y'}, inplace=True)
return df
df = preprocess_data(data)
from prophet import Prophet
def train_prophet_model(data):
model = Prophet(
changepoint_prior_scale=0.05,
holidays_prior_scale=15,
seasonality_prior_scale=10,
weekly_seasonality=True,
yearly_seasonality=True,
daily_seasonality=False
)
data.reset_index(inplace=True)
data.rename(columns={'Date': 'ds', 'Close': 'y'}, inplace=True)
model.add_country_holidays(country_name='US')
model.fit(data)
return model
def generate_forecast(model, periods=365):
future = model.make_future_dataframe(periods=periods)
forecast = model.predict(future)
return forecast
def plot_forecast(model, forecast):
model.plot(forecast)
m = train_prophet_model(df)
f = generate_forecast(m, 60)
plot_forecast(m, f)