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!