# Stock Price Forecasting with Classical Time Series to Deep Learning Method

Time Series is everywhere and we often meet. You may be able to see that in the data on the number of airplane passengers, weather predictions, stock price indexes, or during the pandemic the time series can be seen from the data on the number of people exposed to COVID-19.

Ok, maybe you are familiar with it. Now, what exactly is a time series?

A time series can be defined as a collection of consecutive observations or sequential over time. Each observation can be correlated, where the current observation Xt is influenced by the previous observation Xtâˆ’1. Thus, the order of the observations is important.

From the previous example, it is a univariate type of time series because it only consists of one type of observation at each time point. In addition, there are multivariate time series types, as the name implies, in this type, there is more than one observation at each point in time. For example, it is possible at a certain point in time to predict not only the weather but also temperature, and humidity, where wheater, temperature, or humidity might influence each other.

One of the purposes of time series analysis is to forecast or predict the future. The analytical methods used can use methods from classical statistics to deep learning. For further details on this blog, analytical practice will be carried out, but only focus on univariate time series. We want to forecast the stock price of PT. Bank Central Asia, Tbk. (BBCA.JK)

**Import Data**

The data used is BBCA Daily Close Stock Price sourced from yahoo finance which is taken from the period 2018 - 2022. For analysis, I use Google Colab so I need to install and import the required libraries.

**!**pip install pmdarima
**!**pip install prophet

`!pip install chart-studio`

**import** pandas **as** pd
**import** numpy **as** np
**import** matplotlib.pyplot **as** plt
**import** plotly.graph_objects **as** go
**import** plotly.io **as** pio
**from** pmdarima.arima.utils **import** ndiffs
**from** statsmodels.tsa.seasonal **import** seasonal_decompose
**from** statsmodels.tsa.stattools **import** adfuller, kpss
**from** statsmodels.graphics.tsaplots **import** plot_acf, plot_pacf
**from** statsmodels.tsa.arima.model **import** ARIMA
**from** sklearn.metrics **import** mean_absolute_percentage_error, mean_squared_error
**from** sklearn.preprocessing **import** StandardScaler, MinMaxScaler
**import** tensorflow **as** tf
**from** tensorflow.keras.preprocessing.sequence **import** TimeseriesGenerator
**from** prophet **import** Prophet

Next, import the data. Take the **Date** and **Close** columns for modeling. Perform data preprocessing by changing the **Date** data format to datetime format.

`df `**=** pd**.**read_csv("/content/BBCA.JK.csv")
df **=** df[['Date', 'Close']]
df**.**loc[:, 'Date'] **=** pd**.**to_datetime(df**.**loc[:, 'Date'<