Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python
Trong thời đại công nghệ số, dự đoán giá cổ phiếu đã trở thành một lĩnh vực quan trọng, kết hợp giữa tài chính và công nghệ dữ liệu. Việc xây dựng một ứng dụng dự đoán giá cổ phiếu không chỉ giúp người dùng nắm bắt xu hướng thị trường mà còn hỗ trợ đưa ra quyết định đầu tư thông minh. Trong bài viết này, mình sẽ cùng tìm hiểu cách phát triển một ứng dụng web đơn giản nhưng hiệu quả bằng Python, sử dụng các công cụ mạnh mẽ như Streamlit để tạo giao diện người dùng, Yahoo Finance API để lấy dữ liệu tài chính, và Facebook Prophet để dự báo chuỗi thời gian. Đây sẽ là một bước khởi đầu tuyệt vời cho những ai muốn áp dụng công nghệ vào phân tích thị trường chứng khoán.

Công cụ và tài nguyên
- Streamlit: Framework đơn giản để xây dựng giao diện ứng dụng web cho các dự án Machine Learning.
 - Facebook Prophet: Thư viện mạnh mẽ để dự báo chuỗi thời gian.
 - Yahoo Finance API: Nguồn dữ liệu tài chính miễn phí.
 - Mã nguồn tham khảo: Streamlit Stock Prediction App.
 
Cài đặt thư viện cần thiết trong Python
Chạy lệnh sau trong terminal để cài đặt các thư viện:
pip install streamlit fbprophet yfinance plotly
Mã nguồn ứng dụng
Nhờ vào Streamlit, chúng ta có thể xây dựng một ứng dụng web với giao diện đẹp mắt chỉ bằng vài dòng mã. Dưới đây là toàn bộ mã nguồn:
Bài viết này được đăng tại [free tuts .net]
import streamlit as st
from datetime import date
import yfinance as yf
from fbprophet import Prophet
from fbprophet.plot import plot_plotly
from plotly import graph_objs as go
# Thời gian bắt đầu lấy dữ liệu
START = "2015-01-01"
TODAY = date.today().strftime("%Y-%m-%d")
st.title('Ứng dụng Dự báo Giá Cổ phiếu')
# Lựa chọn danh sách cổ phiếu
stocks = ('GOOG', 'AAPL', 'MSFT', 'GME')
selected_stock = st.selectbox('Chọn cổ phiếu để dự đoán', stocks)
# Thời gian dự đoán (theo năm)
n_years = st.slider('Số năm dự đoán:', 1, 4)
period = n_years * 365
# Hàm tải dữ liệu từ Yahoo Finance
@st.cache
def load_data(ticker):
    data = yf.download(ticker, START, TODAY)
    data.reset_index(inplace=True)
    return data
# Hiển thị trạng thái tải dữ liệu
data_load_state = st.text('Đang tải dữ liệu...')
data = load_data(selected_stock)
data_load_state.text('Dữ liệu đã được tải xong!')
# Hiển thị dữ liệu thô
st.subheader('Dữ liệu gốc')
st.write(data.tail())
# Vẽ biểu đồ dữ liệu
def plot_raw_data():
    fig = go.Figure()
    fig.add_trace(go.Scatter(x=data['Date'], y=data['Open'], name="Giá mở cửa"))
    fig.add_trace(go.Scatter(x=data['Date'], y=data['Close'], name="Giá đóng cửa"))
    fig.layout.update(title_text='Dữ liệu chuỗi thời gian với Rangeslider', xaxis_rangeslider_visible=True)
    st.plotly_chart(fig)
plot_raw_data()
# Dự đoán giá cổ phiếu với Facebook Prophet
df_train = data[['Date','Close']]
df_train = df_train.rename(columns={"Date": "ds", "Close": "y"})
m = Prophet()
m.fit(df_train)
future = m.make_future_dataframe(periods=period)
forecast = m.predict(future)
# Hiển thị và vẽ dự báo
st.subheader('Dữ liệu dự báo')
st.write(forecast.tail())
st.write(f'Dự báo cho {n_years} năm')
fig1 = plot_plotly(m, forecast)
st.plotly_chart(fig1)
st.write("Các thành phần dự báo")
fig2 = m.plot_components(forecast)
st.write(fig2)
Chạy ứng dụng
Để khởi chạy ứng dụng, chạy lệnh sau trong terminal:
streamlit run main.py
Trong đó, main.py là tên file Python chứa mã nguồn của bạn.
Cách hoạt động của ứng dụng trong Python
Chọn cổ phiếu: Người dùng chọn một cổ phiếu từ danh sách (ví dụ: Google, Apple).
Chọn số năm dự đoán: Sử dụng thanh trượt để chọn thời gian dự đoán (1-4 năm).
Xem dữ liệu gốc: Hiển thị dữ liệu lịch sử của cổ phiếu từ Yahoo Finance.
Biểu đồ dữ liệu: Vẽ biểu đồ thể hiện giá mở cửa và đóng cửa theo thời gian.
Dự báo tương lai: Dự đoán giá cổ phiếu trong tương lai với Facebook Prophet.
Hiển thị kết quả:
- Dữ liệu dự báo.
 - Biểu đồ dự báo.
 - Các thành phần dự báo (xu hướng, mùa vụ, v.v.).
 
Kết bài
Ứng dụng này là một ví dụ đơn giản và hiệu quả để minh họa cách sử dụng các công cụ mạnh mẽ như Streamlit và Facebook Prophet để xây dựng các ứng dụng AI trong lĩnh vực tài chính. Bạn có thể mở rộng ứng dụng bằng cách thêm các tính năng như phân tích rủi ro, biểu đồ tương tác nâng cao, hoặc tích hợp các thuật toán dự báo khác.
Hãy thử triển khai ứng dụng này và khám phá thêm các khả năng dự đoán tài chính của bạn!

            Các kiểu dữ liệu trong C ( int - float - double - char ...)        
            Thuật toán tìm ước chung lớn nhất trong C/C++        
            Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)        
            ComboBox - ListBox trong lập trình C# winforms        
            Random trong Python: Tạo số random ngẫu nhiên        
            Lệnh cin và cout trong C++        
                Cách khai báo biến trong PHP, các loại biến thường gặp            
                Download và cài đặt Vertrigo Server            
                Thẻ li trong HTML            
                Thẻ article trong HTML5            
                Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên            
                Cách dùng thẻ img trong HTML và các thuộc tính của img            
                Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng