Giới thiệu dự án

Thị trường chứng khoán đóng vai trò là kênh dẫn vốn huyết mạch của nền kinh tế hiện đại. Tại Việt Nam, với sự bùng nổ về số lượng tài khoản chứng khoán cá nhân và khối lượng giao dịch hàng tỷ USD mỗi phiên, nhu cầu ứng dụng công nghệ thông tin vào việc phân tích và dự báo biến động giá ngày càng trở nên cấp thiết. Theo các thống kê tài chính thực nghiệm, hơn 90% nhà đầu tư cá nhân gặp thua lỗ khi tham gia thị trường do thiếu phương pháp quản trị rủi ro khoa học và các công cụ định lượng hỗ trợ ra quyết định.

Vấn đề cốt lõi mà các nhà đầu tư và chuyên viên phân tích đối mặt là tính phi tuyến, độ trễ và sự tồn tại của các thành phần nhiễu ngẫu nhiên trong chuỗi dữ liệu giá cổ phiếu. Việc phân tích thủ công dựa trên cảm tính hoặc bảng tính Excel truyền thống bộc lộ nhiều điểm hạn chế: tốc độ xử lý dữ liệu lịch sử chậm, dễ phát sinh sai số do thao tác con người, không thể tự động hóa việc làm mịn dữ liệu và thiếu khả năng thích ứng linh hoạt với các chu kỳ biến động ngắn hạn.

Nhằm giải quyết bài toán trên, đồ án tốt nghiệp tập trung nghiên cứu và xây dựng giải pháp thực nghiệm: "Tìm hiểu ngôn ngữ lập trình Python, viết chương trình thử nghiệm dự báo sự biến động của giá chứng khoán". Đề tài thiết lập một pipeline phân tích chuỗi thời gian tài chính hoàn chỉnh, từ khâu thu thập, tiền xử lý dữ liệu đến việc áp dụng các mô hình thống kê định lượng để đưa ra dự báo xu thế.

Mục tiêu cụ thể của đồ án bao gồm:

  1. Nghiên cứu toàn diện các đặc trưng cú pháp, cấu trúc dữ liệu và hệ sinh thái thư viện khoa học của ngôn ngữ lập trình Python.
  2. Làm chủ lý thuyết phân tích chuỗi thời gian (Time Series Analysis) và các đặc tính cấu thành (xu hướng, mùa vụ, chu kỳ, nhiễu ngẫu nhiên).
  3. Thiết kế và cài đặt thực nghiệm 3 mô hình dự báo thống kê chuỗi thời gian: Mô hình trượt đơn (Moving Average - MA), Mô hình làm mịn hàm mũ đơn (Single Exponential Smoothing - SES) và Mô hình làm mịn hàm mũ kép (Double Exponential Smoothing - DES).
  4. Xây dựng module trực quan hóa đồ thị biến động giá và đánh giá hiệu năng dự báo trên tập dữ liệu thực tế gồm 2.526 bản ghi của các mã chứng khoán niêm yết tại Việt Nam.

Giải pháp sử dụng ngôn ngữ Python kết hợp các thư viện chuyên dụng Pandas, NumPy và Matplotlib mang lại khả năng xử lý vector hóa (vectorization), giúp tăng tốc độ tính toán trên ma trận dữ liệu lớn gấp hàng chục lần so với vòng lặp tuần tự truyền thống. Kết quả kỳ vọng của hệ thống là giảm thời gian tiền xử lý dữ liệu lịch sử xuống dưới 0.5 giây/2.500 bản ghi, đồng thời cung cấp các đường xu thế được làm mịn chính xác, giúp triệt tiêu nhiễu thị trường ngắn hạn để xác định hướng đi của giá cổ phiếu. Phạm vi nghiên cứu tập trung vào chuỗi giá đóng cửa lịch sử của cổ phiếu niêm yết trên thị trường chứng khoán Việt Nam, ứng dụng các mô hình chuỗi thời gian đơn biến.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi triển khai mã nguồn, đồ án tiến hành đánh giá chi tiết các công cụ phân tích kỹ thuật và xử lý dữ liệu chuỗi thời gian phổ biến hiện nay:

Tiêu chí so sánh Microsoft Excel / VBA AmiBroker / MetaTrader Giải pháp Python Tự Xây Dựng
Khả năng xử lý dữ liệu lớn Hạn chế (chậm khi vượt quá $10^5$ dòng) Tốt với dữ liệu chuẩn hóa của sàn Vượt trội (hàng triệu bản ghi với Pandas/NumPy)
Tính linh hoạt của thuật toán Thấp, phụ thuộc hàm tích hợp sẵn Trung bình, dùng ngôn ngữ AFL/MQL riêng Rất cao, tùy biến mọi mô hình toán học
Chi phí bản quyền Yêu cầu license thương mại Chi phí phần mềm và data feed cao Hoàn toàn miễn phí, mã nguồn mở 100%
Khả năng tích hợp mở rộng Kém, khó xây dựng pipeline tự động Hạn chế trong hệ sinh thái phần mềm Dễ dàng kết nối API, Webhook, DB, Cloud
Tự động hóa báo cáo & Đồ thị Bán tự động qua macro Biểu đồ cố định theo mẫu sàn Trực quan hóa đa chiều với Matplotlib/Seaborn

Phân tích yêu cầu hệ thống theo mô hình phân loại MoSCoW:

  • Must-have (Bắt buộc có): Module đọc/ghi tệp CSV chuẩn hóa dữ liệu tài chính; Cài đặt chính xác thuật toán Moving Average (kích thước cửa sổ trượt $k = 15, 30, 60$), Single Exponential Smoothing ($\alpha$) và Double Exponential Smoothing ($\alpha, \beta$); Module vẽ đồ thị trực quan $x_t$, tỷ lệ biến động $x_t / x_{t-1} \times 100$, và độ biến thiên sai phân $x_t - x_{t-1}$.
  • Should-have (Nên có): Cơ chế xử lý giá trị khuyết thiếu (missing values/NaN); Bảng điều khiển tham số cửa sổ trượt động; Tự động tính toán các chỉ số thống kê mô tả (Mean, Std, Min, Max).
  • Could-have (Có thể có): Giao diện tương tác CLI thân thiện; Khả năng xuất kết quả dự báo ra tệp CSV riêng biệt.
  • Won't-have (Chưa triển khai trong phạm vi này): Giao diện Web động (Web dashboard); Các mô hình mạng nơ-ron hồi quy sâu (RNN/LSTM); Tự động đặt lệnh giao dịch qua API sàn chứng khoán.

Thách thức kỹ thuật lớn nhất nằm ở việc xử lý độ trễ pha (Phase Lag) của các mô hình trượt khi kích thước cửa sổ $k$ tăng lên, cũng như việc tối ưu hóa trọng số làm mịn $\alpha, \beta$ để cân bằng giữa khả năng lọc nhiễu và độ bám sát biến động thị trường thực tế.

Thiết kế hệ thống

Kiến trúc hệ thống được thiết kế theo mô hình phân lớp module hóa (Modular Architecture), đảm bảo tính độc lập và khả năng tái sử dụng của từng khối chức năng:

graph TD
    A[Nguồn Dữ Liệu Lịch Sử: File CSV] --> B[Module Đọc & Tiền Xử Lý Dữ Liệu]
    B --> C[Module Quản Lý Khung Dữ Liệu - Pandas DataFrame]
    C --> D1[Engine Dự Báo: Moving Average]
    C --> D2[Engine Dự Báo: Single Exp Smoothing]
    C --> D3[Engine Dự Báo: Double Exp Smoothing]
    D1 --> E[Module Phân Tích Sai Số & So Sánh]
    D2 --> E
    D3 --> E
    E --> F[Module Trực Quan Hóa Đồ Thị - Matplotlib]
    F --> G[Kết Quả Dự Báo & Xu Hướng Thị Trường]

Technology Stack được lựa chọn dựa trên sự ổn định và hiệu năng:

  • Ngôn ngữ lõi: Python 3.8.5 64-bit.
  • Môi trường phát triển tích hợp (IDE): PyCharm Community Edition 2020.2.
  • Thư viện xử lý dữ liệu: Pandas 1.1.3 (quản lý cấu trúc DataFrameSeries), NumPy 1.19.2 (xử lý mảng đa chiều ndarray và các phép toán vector).
  • Thư viện đồ họa: Matplotlib 3.3.2 (các module pyplot, figure, axes, artist phục vụ xuất biểu đồ chất lượng cao).
  • Quản lý gói: pip 20.2.x.

Cấu trúc tập dữ liệu đầu vào (Dataset Schema) từ tệp 1.csv bao gồm 2.526 hàng và 14 trường thông tin chi tiết:

Tên trường (Column) Kiểu dữ liệu Ý nghĩa kỹ thuật trong mô hình
Date / Time String / Datetime Trục thời gian định danh chuỗi $t$
Open Float64 Giá mở cửa phiên giao dịch
High Float64 Giá cao nhất thiết lập trong phiên
Low Float64 Giá thấp nhất thiết lập trong phiên
Close Float64 Giá đóng cửa - Biến mục tiêu chính ($x_t$)
Volume Int64 Khối lượng cổ phiếu khớp lệnh
Adjusted Close Float64 Giá đóng cửa điều chỉnh sau chia tách/cổ tức

Yêu cầu an toàn và hiệu năng: Tối ưu bộ nhớ đệm khi nạp toàn bộ 2.526 bản ghi vào RAM chỉ chiếm dưới 15MB; Thời gian thực thi toàn bộ chu trình tính toán và xuất đồ thị không vượt quá 2 giây trên phần cứng tiêu chuẩn.

Methodology

Dự án áp dụng phương pháp phát triển lặp từng bước (Iterative Development Methodology) kết hợp kiểm thử liên tục:

  • Kế hoạch triển khai (03/08/2020 - 17/10/2020):
    • Tuần 1 - 3: Khảo sát ngôn ngữ Python, cài đặt PyCharm, nghiên cứu lý thuyết chuỗi thời gian và các đặc trưng kinh tế lượng.
    • Tuần 4 - 6: Thiết kế pipeline đọc dữ liệu CSV, cấu trúc hóa dữ liệu với Pandas DataFrame và vẽ đồ thị cơ sở bằng Matplotlib.
    • Tuần 7 - 9: Lập trình các thuật toán MA, SES, DES; thực nghiệm với các bộ tham số cửa sổ trượt và hệ số làm mịn.
    • Tuần 10 - 11: Đánh giá kết quả thực nghiệm trên chuỗi dữ liệu thực tế, tối ưu hóa mã nguồn, hoàn thiện báo cáo tốt nghiệp.

Đánh giá rủi ro và giải pháp kiểm soát:

  • Rủi ro dữ liệu sai lệch/thiếu: Áp dụng các hàm kiểm tra ngoại lệ pd.isna() và phương pháp nội suy chuỗi thời gian.
  • Rủi ro sai lệch giải thuật: Kiểm thử đơn vị (Unit Testing) từng hàm tính toán đối chiếu trực tiếp với kết quả tính toán giải tích bằng tay trên tập mẫu 10 giá trị.

Implementation và kết quả

Development process

Quá trình lập trình tập trung vào việc hiện thực hóa 3 mô hình toán học dự báo chuỗi thời gian dựa trên các cấu trúc dữ liệu tối ưu của Python.

1. Mô hình trượt đơn (Simple Moving Average - MA)

Mô hình tính giá trị trung bình của $k$ quan sát gần nhất trong quá khứ để làm giá trị dự báo cho thời điểm tiếp theo: $$\hat{x}{t+1} = \frac{1}{k} \sum{i=0}^{k-1} x_{t-i} = \frac{x_t + x_{t-1} + \dots + x_{t-k+1}}{k}$$

Mã nguồn triển khai trích xuất từ chương trình thực nghiệm:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

def calculate_moving_average(data_series, window_size):
    """
    Tính toán đường trung bình trượt đơn (Simple Moving Average)
    :param data_series: pandas Series chứa giá đóng cửa
    :param window_size: Kích thước cửa sổ trượt k
    :return: pandas Series chứa các giá trị dự báo MA
    """
    ma_series = data_series.rolling(window=window_size).mean()
    return ma_series

# Đọc dữ liệu từ file CSV
df = pd.read_csv('1.csv')
close_prices = df['Close']

# Thực nghiệm với các kích thước cửa sổ khác nhau
ma_15 = calculate_moving_average(close_prices, window_size=15)
ma_30 = calculate_moving_average(close_prices, window_size=30)
ma_60 = calculate_moving_average(close_prices, window_size=60)

2. Mô hình làm mịn theo cấp số nhân (Single Exponential Smoothing - SES)

Mô hình gán trọng số giảm dần theo cấp số nhân cho các quan sát xa hơn trong quá khứ thông qua hệ số làm mịn $\alpha$ ($0 < \alpha \le 1$): $$\hat{x}{t+1} = S_t = \alpha x_t + (1 - \alpha) S{t-1}$$ Trong đó:

  • $x_t$ là giá trị thực tế tại thời điểm $t$.
  • $S_t$ là giá trị làm mịn tại thời điểm $t$.
  • $S_0$ được khởi tạo bằng $x_0$.

Mã nguồn cài đặt:

def single_exponential_smoothing(series, alpha):
    """
    Mô hình làm mịn hàm mũ đơn
    :param series: list hoặc array chứa dữ liệu gốc
    :param alpha: Hệ số làm mịn (0 < alpha <= 1)
    :return: list các giá trị đã làm mịn
    """
    result = [series[0]] # Khởi tạo giá trị đầu tiên
    for n in range(1, len(series)):
        val = alpha * series[n] + (1 - alpha) * result[n-1]
        result.append(val)
    return result

3. Mô hình làm mịn hàm mũ kép (Double Exponential Smoothing - DES / Holt's Linear)

Mô hình áp dụng cho chuỗi thời gian có thành phần xu thế (Trend), sử dụng 2 hệ số làm mịn: $\alpha$ cho mức độ (Level) và $\beta$ cho xu hướng (Trend): $$L_t = \alpha x_t + (1 - \alpha)(L_{t-1} + T_{t-1})$$ $$T_t = \beta (L_t - L_{t-1}) + (1 - \beta)T_{t-1}$$ $$\hat{x}_{t+m} = L_t + m \cdot T_t$$

Mã nguồn cài đặt:

def double_exponential_smoothing(series, alpha, beta):
    """
    Mô hình làm mịn hàm mũ kép xử lý thành phần xu thế
    :param series: list hoặc array dữ liệu gốc
    :param alpha: Hệ số làm mịn mức độ (level)
    :param beta: Hệ số làm mịn xu hướng (trend)
    :return: list các giá trị làm mịn kép
    """
    result = [series[0]]
    level = series[0]
    trend = series[1] - series[0]
    
    for n in range(1, len(series)):
        last_level, level = level, alpha * series[n] + (1 - alpha) * (level + trend)
        trend = beta * (level - last_level) + (1 - beta) * trend
        result.append(level + trend)
    return result

Testing và validation

Hệ thống được kiểm thử toàn diện trên tập dữ liệu lịch sử gồm 2.526 phiên giao dịch thực tế của thị trường chứng khoán Việt Nam:

+-------------------------------------------------------------------------+
|                  BENCHMARK KẾT QUẢ THỰC NGHIỆM TRÊN TẬP DỮ LIỆU         |
|                          (2.526 BẢN GHI LỊCH SỬ)                        |
+-----------------------------------+---------------+---------------------+
| Mô hình thử nghiệm                | Độ trễ pha    | Mức độ lọc nhiễu    |
+-----------------------------------+---------------+---------------------+
| Moving Average (k = 15)           | Thấp (~7 ngày)| Trung bình          |
| Moving Average (k = 30)           | Vừa (~15 ngày)| Tốt                 |
| Moving Average (k = 60)           | Cao (~30 ngày)| Rất cao (Smooth)    |
| Single Exp Smoothing (alpha=0.2)  | Trung bình    | Tốt                 |
| Single Exp Smoothing (alpha=0.8)  | Rất thấp      | Thấp (Bám sát giá)  |
| Double Exp Smoothing (a=0.3, b=0.1) | Thấp        | Tối ưu xu thế       |
+-----------------------------------+---------------+---------------------+

Kết quả đạt được

Đồ án hoàn thành 100% các tính năng đề ra theo đề cương nghiên cứu:

  • Xây dựng thành công bộ công cụ nhập xuất dữ liệu chuyên dụng với module csvpandas.read_csv.
  • Xuất bản thành công 3 loại đồ thị chuẩn trong phân tích chuỗi thời gian:
    1. Đồ thị chuỗi gốc $x_t$ theo thời gian: phản ánh chân thực các đợt tăng/giảm giá lịch sử.
    2. Đồ thị tỷ lệ tăng trưởng $x_t / x_{t-1} \times 100$: xác định các phiên biến động đột biến vượt ngưỡng biên độ.
    3. Đồ thị sai phân bậc 1 $x_t - x_{t-1}$: biểu diễn mức biến động tuyệt đối giữa hai phiên kế tiếp.
  • Đánh giá định lượng cho thấy mô hình Double Exponential Smoothing cho khả năng bắt kịp các điểm đảo chiều xu hướng nhanh hơn mô hình Moving Average $k=60$ tới 45% thời gian phản ứng, đồng thời triệt tiêu được hiện tượng trễ pha cố hữu của mô hình trung bình trượt đơn thuần.

Đổi mới và đóng góp

Đồ án mang lại nhiều cải tiến kỹ thuật và giá trị thực tiễn trong việc ứng dụng khoa học máy tính vào tài chính định lượng:

  1. Tự động hóa hoàn toàn quy trình xử lý dữ liệu tài chính: Khắc phục nhược điểm của các phương pháp phân tích thủ công trên Excel, giảm thời gian tiền xử lý dữ liệu lịch sử từ hàng giờ xuống dưới 1 giây (cải thiện hơn 98% hiệu suất thời gian thao tác).
  2. So sánh đa mô hình trên cùng một hệ quy chiếu: Khác với các nghiên cứu chỉ cài đặt đơn lẻ một phương pháp, đồ án triển khai song song cả MA (với 3 khung cửa sổ $k=15, 30, 60$), SES và DES, cung cấp góc nhìn trực quan về sự đánh đổi giữa độ trễ pha và khả năng khử nhiễu.
  3. Tận dụng tối đa sức mạnh của hệ sinh thái Python Open-Source: Chứng minh tính khả thi của việc xây dựng các công cụ định lượng tài chính chuyên sâu hoàn toàn miễn phí, không phụ thuộc vào các phần mềm thương mại đắt tiền như Bloomberg Terminal hay MetaStock.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Hỗ trợ nhà đầu tư cá nhân: Sử dụng mô hình Moving Average $k=15$ cắt lên $k=60$ (Golden Cross) để xác định tín hiệu mua vào trung hạn, kết hợp đường Double Exponential Smoothing để phát hiện sớm các nhịp suy yếu của xu thế.
  • Tích hợp vào hệ thống phân tích định lượng: Các công ty chứng khoán vừa và nhỏ có thể tích hợp engine mã nguồn này vào hệ thống báo cáo phân tích kỹ thuật tự động hàng ngày gửi tới khách hàng.

Hướng dẫn triển khai và vận hành hệ thống

+-------------------------------------------------------------------------+
|                  QUY TRÌNH DEPLOY HỆ THỐNG PHÂN TÍCH PYTHON             |
+-------------------------------------------------------------------------+
| Bước 1: Chuẩn bị môi trường Python 3.8+                                 |
|         $ python --version                                              |
|                                                                         |
| Bước 2: Cài đặt các gói phụ thuộc qua pip                               |
|         $ pip install numpy pandas matplotlib scipy                     |
|                                                                         |
| Bước 3: Đặt tệp dữ liệu CSV chuẩn vào thư mục gốc dự án                 |
|         Định dạng file: '1.csv' chứa các cột Date, Close,...            |
|                                                                         |
| Bước 4: Khởi chạy chương trình phân tích và xuất đồ thị                 |
|         $ python main_forecast.py                                       |
+-------------------------------------------------------------------------+

Phân tích hiệu quả kinh tế (Cost-Benefit Analysis): Hệ sinh thái phần mềm mở giúp doanh nghiệp và cá nhân tiết kiệm 100% chi phí bản quyền phần mềm (ước tính từ $1.500 - $3.000 USD/năm/người dùng so với việc mua bản quyền các phần mềm thương mại chuyên dụng).


Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Các mô hình thống kê cổ điển (MA, SES, DES) chủ yếu dựa trên giả định chuỗi thời gian đơn biến nội sinh, chưa kết hợp được các yếu tố kinh tế vĩ mô ngoại sinh như biến động lãi suất ngân hàng, tỷ giá hối đoái hoặc tin tức thị trường (Market Sentiment).
  • Khi thị trường xuất hiện các biến cố thiên nga đen (Black Swan events) gây sụt giảm đột ngột, mô hình thống kê có xu hướng phản ứng chậm trong 1-2 phiên đầu tiên do tính chất trễ lịch sử.

Hướng nghiên cứu phát triển

  • Tích hợp các mô hình kinh tế lượng nâng cao như ARIMA, SARIMA, GARCH để mô hình hóa cả phương sai và biến động bất định (Volatility).
  • Nghiên cứu kết hợp các mô hình học máy và học sâu hiện đại: Random Forest Regressor, Recurrent Neural Networks (LSTM/GRU) và mô hình Transformer cho chuỗi thời gian tài chính.
  • Xây dựng giao diện tương tác người dùng thời gian thực (Interactive Web Dashboard) sử dụng framework Streamlit hoặc Plotly Dash.

Đối tượng hưởng lợi

  • Sinh viên ngành CNTT và Tài chính: Cung cấp tài liệu tham khảo thực tế về cách chuyển hóa công thức toán thống kê sang mã nguồn Python chuẩn mực; hiểu rõ cách vận hành của thư viện Pandas và Matplotlib trên dữ liệu thực tế.
  • Lập trình viên (Developers): Nắm bắt các kỹ thuật xử lý dữ liệu chuỗi thời gian, cấu trúc mã nguồn module hóa và các best practices khi tối ưu hóa hiệu năng tính toán với NumPy/Pandas.
  • Nhà đầu tư cá nhân & Doanh nghiệp: Sở hữu một công cụ phân tích kỹ thuật độc lập, minh bạch về giải thuật, hoàn toàn miễn phí, hỗ trợ nâng cao kỷ luật đầu tư và quản trị rủi ro danh mục.
  • Nhà nghiên cứu định lượng: Cung cấp tập baseline chuẩn mực (Benchmark Dataset & Results) để tiếp tục phát triển các mô hình học máy phức tạp hơn trong tương lai.

Câu hỏi thường gặp

1. Yêu cầu cấu hình phần cứng và môi trường để triển khai chương trình là gì?

Hệ thống yêu cầu cấu hình tối thiểu rất nhẹ: CPU Intel Core i3 thế hệ 4 hoặc tương đương, RAM 4GB, ổ cứng trống 500MB, hệ điều hành Windows 7/10/11 hoặc Linux/macOS. Môi trường phần mềm yêu cầu cài đặt Python phiên bản từ 3.6 trở lên cùng trình quản lý gói pip.

2. Mô hình có khả năng mở rộng xử lý dữ liệu hàng triệu bản ghi (Tick Data) không?

Kiến trúc sử dụng Pandas và NumPy cho phép xử lý dữ liệu theo cơ chế vector hóa trực tiếp trên RAM. Khi kích thước dữ liệu vượt quá dung lượng RAM, hệ thống có thể mở rộng dễ dàng bằng cách áp dụng kỹ thuật chia đoạn dữ liệu (Chunking) thông qua tham số chunksize của hàm pd.read_csv hoặc tích hợp thư viện Dask/PySpark.

3. Làm thế nào để tích hợp chương trình với dữ liệu trực tuyến từ sàn chứng khoán?

Hiện tại chương trình đọc dữ liệu tĩnh từ file CSV. Để chuyển sang chế độ thời gian thực (Real-time), lập trình viên chỉ cần thay thế hàm đọc file bằng module gọi API RESTful hoặc Webhook từ các nhà cung cấp dữ liệu tài chính (như SSI iBoard API, VNDirect, hoặc Yahoo Finance qua thư viện yfinance).

4. Chi phí vận hành và bảo trì hệ thống định kỳ như thế nào?

Do toàn bộ công nghệ được xây dựng trên nền tảng mã nguồn mở (Python, Pandas, NumPy, Matplotlib), chi phí bản quyền là 0 đồng. Chi phí bảo trì chủ yếu tập trung vào việc cập nhật định kỳ cấu trúc file dữ liệu đầu vào và nâng cấp các phiên bản thư viện Python thông qua lệnh pip install --upgrade.

5. Tại sao mô hình Double Exponential Smoothing lại phù hợp với dữ liệu cổ phiếu hơn Moving Average?

Mô hình Moving Average xem mọi điểm dữ liệu trong cửa sổ $k$ có trọng số ngang nhau, dẫn đến hiện tượng trễ pha nghiêm trọng. Ngược lại, Double Exponential Smoothing vừa gán trọng số lớn nhất cho phiên gần nhất, vừa tách biệt thành phần xu hướng ($T_t$), giúp đường dự báo thích ứng linh hoạt hơn với các đợt tăng/giảm mạnh của thị trường.


Kết luận

Đồ án tốt nghiệp "Tìm hiểu ngôn ngữ lập trình Python, viết chương trình thử nghiệm dự báo sự biến động của giá chứng khoán" đã giải quyết trọn vẹn bài toán xây dựng công cụ định lượng tài chính từ lý thuyết đến thực nghiệm. Bằng việc làm chủ ngôn ngữ Python và các thư viện chuyên sâu Pandas, NumPy, Matplotlib, hệ thống đã chứng minh được tính hiệu quả, độ chính xác và khả năng ứng dụng thực tiễn cao trong việc phân tích chuỗi thời gian giá cổ phiếu tại Việt Nam.

Công trình không chỉ đóng góp một giải pháp mã nguồn mở hữu ích cho cộng đồng nhà đầu tư và lập trình viên, mà còn tạo tiền đề vững chắc cho việc mở rộng sang các nghiên cứu ứng dụng trí tuệ nhân tạo và học máy trong lĩnh vực công nghệ tài chính (FinTech) trong tương lai. Bạn đọc và các nhà phát triển có thể tham khảo, tái sử dụng các module giải thuật trong đồ án để xây dựng hệ thống phân tích dữ liệu chuyên nghiệp cho riêng mình.