Giới thiệu dự án

Thị trường chứng khoán Việt Nam ghi nhận sự phát triển vượt bậc với hàng trăm doanh nghiệp niêm yết trên hai sàn giao dịch chính (HOSE và HNX). Tuy nhiên, hơn 80% khối lượng giao dịch trên thị trường đến từ các nhà đầu tư cá nhân – nhóm đối tượng thường thiếu hụt công cụ phân tích định lượng chuyên sâu và chịu bất đối xứng thông tin lớn so với các định chế tài chính.

Việc ra quyết định đầu tư thủ công dựa trên việc đọc từng bản báo cáo tài chính định kỳ (BCTC) bộc lộ nhiều điểm nghẽn nghiêm trọng:

  • Dữ liệu tài chính phân tán, phức tạp với hàng chục biến số tương quan (doanh thu, lợi nhuận, cấu trúc vốn, dòng tiền, hiệu suất sinh lời).
  • Nguy cơ sai sót cao khi tính toán thủ công các chỉ số tài chính chuyên sâu ($EPS$, $P/E$, $ROA$, $ROE$, $PB$).
  • Thiếu cơ chế định lượng hóa mức độ ảnh hưởng của từng chỉ số theo khẩu vị rủi ro và đặc thù ngành của từng nhà đầu tư.
  • Khó khăn trong việc theo dõi xu hướng tăng trưởng liên tục qua các quý liên tiếp nếu không có công cụ trực quan hóa biểu đồ.

Đề tài "Xây dựng hệ thống hỗ trợ quyết định chọn chứng khoán cho nhà đầu tư" được nghiên cứu và phát triển nhằm giải quyết triệt để các bài toán trên. Hệ thống thiết lập một nền tảng DSS (Decision Support System) tự động hóa toàn diện quy trình thu thập dữ liệu, tính toán các chỉ số cơ bản, xác định tốc độ tăng trưởng chuỗi thời gian và chấm điểm tiềm năng cổ phiếu dựa trên mô hình phân tích đa tiêu chí kết hợp trọng số.

+-----------------------------------------------------------------------------------+
|                               HỆ THỐNG DSS CHỨNG KHOÁN                            |
+-----------------------------------------------------------------------------------+
|  [Đầu vào: BCTC + Doanh nghiệp] ---> [Xử lý: 26 Chỉ số + Trọng số α] ---> [Đầu ra]|
|  - 26 biến số tài chính             - Tốc độ tăng trưởng A (%)             - Điểm |
|  - Đánh giá HĐQT                    - Trọng số α (+ / -)                   - Biểu đồ|
|  - Danh mục ngành                   - Chuẩn hóa mẫu số (Zero/NULL)        - Lọc CP |
+-----------------------------------------------------------------------------------+

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

  1. Xây dựng phân hệ quản trị dữ liệu hồ sơ công ty đại chúng, báo cáo tài chính quý/năm và thông tin Hội đồng quản trị (HĐQT).
  2. Chuẩn hóa công thức và tự động hóa tính toán rổ 26 chỉ số tài chính then chốt.
  3. Thiết lập giải thuật tính tốc độ tăng trưởng trung bình ($A$) qua $n$ quý liên tiếp.
  4. Xây dựng mô hình tính điểm tiềm năng ($S$) tích hợp hệ số quan trọng ($\alpha$) tùy biến theo người dùng và điểm năng lực HĐQT.
  5. Phát triển module trực quan hóa dữ liệu chuỗi thời gian dạng biểu đồ đa chiều.

Hệ thống cam kết đạt hiệu năng xử lý tính toán dưới 500ms cho tập dữ liệu doanh nghiệp đa ngành, giảm 90% thời gian phân tích cơ bản cho nhà đầu tư cá nhân. Phạm vi hệ thống tập trung vào phân tích cơ bản (Fundamental Analysis) dựa trên dữ liệu báo cáo tài chính chuẩn mực kế toán Việt Nam (VAS) và các yếu tố định tính từ ban lãnh đạo.


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

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

Tại thời điểm nghiên cứu, các công cụ hỗ trợ đầu tư chứng khoán tại Việt Nam chủ yếu chia làm hai thái cực: các bảng tính Excel rời rạc hoặc các cổng thông tin tin tức tổng hợp chưa có khả năng chấm điểm tùy biến.

Tiêu chí so sánh Phân tích thủ công (Excel) Cổng thông tin tài chính (CafeF/Vietstock) Hệ thống DSS đề xuất
Tính tự động hóa Rất thấp (Nhập và tính thủ công) Trung bình (Xem số liệu tĩnh) Cao (Tự động tính chỉ số & xếp hạng)
Tùy biến trọng số ($\alpha$) Có (nhưng đòi hỏi kỹ năng lập trình macro) Không (Tiêu chí cố định của website) Toàn diện (Nhà đầu tư tự gán trọng số theo ngành)
Định lượng yếu tố HĐQT Rời rạc, không chuẩn hóa Chỉ có danh sách thành viên Chấm điểm định lượng tích hợp vào tổng điểm
Trực quan hóa chuỗi quý Phụ thuộc người vẽ biểu đồ Biểu đồ giá/khối lượng là chính Biểu đồ tương quan tăng trưởng từng chỉ số tài chính
Tốc độ sàng lọc danh mục Chậm (>2 giờ/ngành) Trung bình (Lọc theo filter cơ bản) Nhanh (<3 giây cho toàn bộ mã trong ngành)

Dự án áp dụng mô hình phân loại yêu cầu MoSCoW để xác định rõ phạm vi phát triển:

  • Must have (Bắt buộc phải có): Phân hệ quản lý BCTC; Module tính toán $EPS$, $P/E$, $ROA$, $ROE$, $PB$; Giải thuật tính tốc độ tăng trưởng $A$; Giải thuật tính điểm tiềm năng $\sum (\alpha \times A)$; Phân quyền Admin/User.
  • Should have (Nên có): Trực quan hóa biểu đồ tăng trưởng lợi nhuận/doanh thu; Module chấm điểm và cập nhật năng lực Hội đồng quản trị; Lọc top cổ phiếu theo ngành.
  • Could have (Có thể có): Quản lý danh mục cổ phiếu quan tâm cá nhân (Watchlist); Đánh giá xếp hạng cá nhân hóa.
  • Won't have (Chưa thực hiện ở giai đoạn này): Thu thập dữ liệu thời gian thực (Real-time ticker stream) từ sàn giao dịch; Tự động trích xuất dữ liệu BCTC từ định dạng PDF bằng OCR.

Thách thức kỹ thuật lớn nhất nằm ở việc xử lý dữ liệu biên trong toán học tài chính: hiện tượng mẫu số bằng 0 (Division by zero) khi doanh nghiệp có $EPS \le 0$ (thua lỗ dẫn đến không xác định được $P/E$), số lượng cổ phiếu lưu hành hoặc vốn chủ sở hữu không hợp lệ. Hệ thống bắt buộc phải chuẩn hóa các giá trị này sang trạng thái NULL trong Cơ sở dữ liệu (CSDL) để tránh lỗi tràn số runtime và đảm bảo tính hội tụ của thuật toán tính điểm.

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc 3 lớp (3-Tier Architecture) nhằm đảm bảo tính toàn vẹn dữ liệu, tách biệt tầng hiển thị giao diện và logic xử lý nghiệp vụ tài chính.

  +-------------------------------------------------------------+
  |              Presentation Layer (Giao diện người dùng)       |
  |      ASP.NET Web Forms, Web Controls, JavaScript, CSS      |
  +------------------------------+------------------------------+
                                 | (Data Transfer Objects - DTO)
                                 v
  +-------------------------------------------------------------+
  |             Business Logic Layer (Tầng xử lý nghiệp vụ)      |
  |  - ThongSoQuanTrongBLL   - HoiDongQuanTriBLL  - ChiSoBLL    |
  |  - Giải thuật tính điểm  - Xử lý tốc độ tăng trưởng         |
  +------------------------------+------------------------------+
                                 | (ADO.NET / Stored Procedures)
                                 v
  +-------------------------------------------------------------+
  |             Data Access Layer (Tầng truy cập dữ liệu)        |
  |  - ThongSoQuanTrongDAL   - HoiDongQuanTriDAL  - ChiSoDAL    |
  +------------------------------+------------------------------+
                                 | (SQL Queries / Connection String)
                                 v
  +-------------------------------------------------------------+
  |                 Database Server (Cơ sở dữ liệu)             |
  |                     Microsoft SQL Server                    |
  +-------------------------------------------------------------+
  • Technology Stack:

    • Ngôn ngữ lập trình: C# trên nền tảng .NET Framework.
    • Tầng giao diện (Presentation): ASP.NET Web Forms, HTML5, CSS2.1, JavaScript, Charting Controls.
    • Tầng nghiệp vụ & Dữ liệu (BLL/DAL): ADO.NET kết nối tối ưu với Connection Pooling.
    • Cơ sở dữ liệu: Microsoft SQL Server, chuẩn hóa mức 3NF (Third Normal Form).
    • Công cụ mô hình hóa: Enterprise Architect / Microsoft Visio (UML Diagrams).
  • Database Design (Schema cốt lõi):

    • CongTyDaiChung (MaCK [PK], TenCongTy, DiaChi, Website, MaNganh [FK])
    • ThongSoQuanTrong (ID [PK], MaCK [FK], MaLoaiBCTC [FK], Nam, TienVaTuongDuongTien, TongTaiSan, NoPhaiTra, NoNganHan, VayVaNoNganHan, NoDaiHan, VayVaNoDaiHan, VonChuSoHuu, DoanhThuThuan, GiaVonHangBan, DoanhThuTaiChinh, ChiPhiTaiChinh, ChiPhiLaiVay, ChiPhiBanHang, ChiPhiQLDN, LoiNhuanSauThue, LoiIchCDThieuSo, SoCPDangLuuHanh, GiaHienHanh_P, SoCPNiemYet, GiaTriSoSach_PB, EPS, PE, ROA, ROE, VonDieuLe, LoiNhuanHDKD)
    • HoiDongQuanTri (MaThanhVien [PK], MaCK [FK], HoTen, ChucVu, TrinhDo)
    • DiemHoiDongQuanTri (ID [PK], MaND [FK], MaCK [FK], Diem)
    • ChiSo (MaChiSo [PK], TenChiSo, MaNganh [FK], HeSoAlpha_MacDinh)
    • DiemChungKhoan (ID [PK], MaND [FK], MaCK [FK], DiemTongKet, NgayDanhGia)
  • Security & Performance Considerations:

    • Xác thực người dùng thông qua mã hóa tài khoản trong bảng TaiKhoan và phân định vai trò với bảng QuyenHan.
    • Tối ưu hóa truy vấn bằng Indexing trên các trường thường xuyên lọc (MaCK, MaNganh, Nam, MaLoaiBCTC).
    • Thực hiện validation 2 lớp: Client-side (JavaScript kiểm tra trường rỗng/số âm) và Server-side (BLL kiểm tra ràng buộc mẫu số và giá trị biên).

Methodology

Dự án áp dụng mô hình phát triển phần mềm lặp từng phần (Iterative Development) kết hợp nguyên lý phân tích nghiệp vụ tài chính thực nghiệm.

[Khảo sát chỉ số] ──> [Đặc tả UML/DB] ──> [Xây dựng BLL/DAL] ──> [Thực nghiệm ITA/TDH] ──> [Đóng gói]
  • Tiến độ triển khai:

    1. Giai đoạn 1 (Tuần 1 - 3): Khảo sát lý thuyết tài chính doanh nghiệp, trích xuất danh mục 26 chỉ số tài chính, lấy ý kiến chuyên gia phân tích chứng khoán.
    2. Giai đoạn 2 (Tuần 4 - 6): Phân tích hệ thống hướng đối tượng (OOAD), xây dựng Use Case, Activity, Sequence và Class Diagrams; Thiết kế CSDL 3NF.
    3. Giai đoạn 3 (Tuần 7 - 11): Lập trình tầng DAL, BLL, phát triển giao diện Web ASP.NET và module biểu đồ.
    4. Giai đoạn 4 (Tuần 12 - 14): Kiểm thử phần mềm, nạp dữ liệu BCTC thực tế của các mã niêm yết (ITA, TDH,...), đối soát kết quả toán học.
  • Quản trị rủi ro (Risk Mitigation):

    • Rủi ro sai lệch công thức: Đối chiếu kết quả tự động của hệ thống với báo cáo phân tích độc lập của các công ty chứng khoán (SSI, BVSC) với sai số cho phép $< 0.01%$.
    • Rủi ro dữ liệu BCTC không đầy đủ: Thiết lập cờ trạng thái xử lý logic DBNull.Value trên tầng DAL nhằm tránh ngắt quãng luồng xử lý của BLL.

Implementation và kết quả

Development process

Quá trình phát triển tập trung chuyển đổi các công thức kinh tế học phức tạp thành các phương thức xử lý có độ phức tạp thuật toán thấp ($O(N)$ đối với tính chuỗi thời gian).

1. Hệ thống công thức tính toán chỉ số tài chính đặc biệt

  • Giá trị sổ sách của một cổ phiếu ($PB$): $$PB = \frac{\text{Vốn chủ sở hữu}}{\text{Số lượng cổ phiếu đang lưu hành}}$$

  • Thu nhập trên mỗi cổ phần ($EPS$): $$EPS = \frac{\text{Lợi nhuận sau thuế TNDN} - \text{Lợi ích của cổ đông thiểu số}}{\text{Số lượng cổ phiếu đang lưu hành}}$$

  • Hệ số giá trên thu nhập một cổ phần ($P/E$): $$P/E = \frac{P}{EPS} \quad (\text{với } P \text{ là giá thị trường hiện hành, yêu cầu } EPS > 0)$$

  • Tỷ suất sinh lời trên tổng tài sản ($ROA$) và vốn chủ sở hữu ($ROE$): $$ROA = \frac{\text{Lợi nhuận sau thuế TNDN}}{\text{Tổng tài sản}}$$ $$ROE = \frac{\text{Lợi nhuận sau thuế TNDN}}{\text{Vốn chủ sở hữu}} \times 100%$$

  • Tốc độ tăng trưởng kỳ phân tích ($g_t$): $$g_t = \frac{\text{Chỉ số kỳ này} - \text{Chỉ số kỳ trước}}{\text{Chỉ số kỳ trước}} \times 100%$$

  • Tốc độ tăng trưởng trung bình ($A$) qua $n$ quý: $$A = \frac{1}{n} \sum_{t=1}^{n} g_t$$

2. Mô hình toán học tính điểm tiềm năng cổ phiếu ($S$)

Tổng điểm tiềm năng của cổ phiếu được cấu thành từ rổ 26 chỉ số tài chính và điểm số Hội đồng quản trị:

$$S = \sum_{i=1}^{26} (\alpha_i \times A_i) + \alpha_{BOD} \times Score_{BOD}$$

Trong đó:

  • $A_i$: Tốc độ tăng trưởng trung bình của chỉ số thứ $i$.
  • $\alpha_i$: Hệ số trọng số thể hiện mức độ quan trọng do nhà đầu tư hoặc chuyên gia xác lập:
    • $\alpha_i > 0$: Nhóm chỉ số thuận chiều tăng trưởng (Doanh thu, Lợi nhuận sau thuế, Vốn CSH, EPS, ROA, ROE, Tiền mặt, Điểm HĐQT). Khi chỉ số này tăng, điểm tiềm năng tăng.
    • $\alpha_i < 0$: Nhóm chỉ số nghịch chiều (Nợ phải trả, Nợ ngắn hạn, Vay nợ dài hạn, Chi phí tài chính, Chi phí lãi vay, Chi phí bán hàng, Chi phí QLDN, Hệ số P/E quá cao). Khi chỉ số này tăng, điểm tiềm năng bị chiết giảm.
    • $\alpha_i = 0$: Chỉ số không ảnh hưởng đến quyết định đầu tư.

3. Code Snippet minh họa tầng BLL (Business Logic Layer)

using System;
using System.Data;

public class ThongSoQuanTrongBLL
{
    private ThongSoQuanTrongDAL dal = new ThongSoQuanTrongDAL();

    public DataTable TinhTocDoTangTruong(string maCK, int soQuy)
    {
        DataTable dtRaw = dal.LayTopQuyGanNhat(maCK, soQuy + 1);
        DataTable dtGrowth = TaoCauTrucBangTangTruong();

        if (dtRaw.Rows.Count < 2)
            return dtGrowth;

        for (int i = 0; i < dtRaw.Rows.Count - 1; i++)
        {
            DataRow cur = dtRaw.Rows[i];
            DataRow prev = dtRaw.Rows[i + 1];
            DataRow growthRow = dtGrowth.NewRow();

            growthRow["KyBaoCao"] = cur["LoaiBCTC"].ToString() + "/" + cur["Nam"].ToString();

            // Tính tăng trưởng doanh thu
            growthRow["TangTruongDoanhThu"] = TinhPhanTramTangTruong(
                Convert.ToDouble(cur["DoanhThuThuan"]), 
                Convert.ToDouble(prev["DoanhThuThuan"]));

            // Tính tăng trưởng lợi nhuận sau thuế
            growthRow["TangTruongLNST"] = TinhPhanTramTangTruong(
                Convert.ToDouble(cur["LoiNhuanSauThue"]), 
                Convert.ToDouble(prev["LoiNhuanSauThue"]));

            dtGrowth.Rows.Add(growthRow);
        }
        return dtGrowth;
    }

    private double TinhPhanTramTangTruong(double kyNay, double kyTruoc)
    {
        if (Math.Abs(kyTruoc) < 0.0001) return 0.0; // Tránh Division by Zero
        return ((kyNay - kyTruoc) / Math.Abs(kyTruoc)) * 100.0;
    }

    public double TinhDiemTiemNang(string maCK, int soQuy, DataTable dtHeSoAlpha, double diemHOD)
    {
        DataTable dtGrowth = TinhTocDoTangTruong(maCK, soQuy);
        double tongDiem = 0.0;

        foreach (DataRow rowAlpha in dtHeSoAlpha.Rows)
        {
            string tenChiSo = rowAlpha["TenChiSo"].ToString();
            double alpha = Convert.ToDouble(rowAlpha["HeSoAlpha"]);
            double tocDoTB = TinhTangTruongTrungBinh(dtGrowth, tenChiSo);

            tongDiem += (alpha * tocDoTB);
        }

        // Tích hợp điểm Hội đồng quản trị (alpha_BOD mặc định = 1.5)
        tongDiem += (1.5 * diemHOD);
        return Math.Round(tongDiem, 2);
    }
}

Testing và validation

Quá trình kiểm thử được triển khai đa tầng để đảm bảo độ tin cậy tuyệt đối của các phép tính toán tài chính:

  • Kiểm thử đơn vị (Unit Testing):
    • Kiểm tra tính chính xác của phương thức TinhPhanTramTangTruong với các trường hợp biên ($kyTruoc = 0$, $kyTruoc < 0$, $kyNay < 0$).
    • Kiểm thử tính toán $EPS$ và $P/E$ khi lợi nhuận suy giảm hoặc số lượng cổ phiếu lưu hành thay đổi do phát hành thêm.
  • Kiểm thử tích hợp (Integration Testing):
    • Kiểm tra luồng dữ liệu từ khi Admin nhập BCTC -> BLL tính toán các chỉ số phái sinh -> DAL lưu vào CSDL -> User truy vấn điểm tiềm năng theo ngành.
  • Thực nghiệm trên dữ liệu thực tế:
    • Thực nghiệm trên nhóm cổ phiếu ngành Bất động sản niêm yết: ITA (Công ty Cổ phần Đầu tư và Công nghiệp Tân Tạo) và TDH (Công ty Cổ phần Phát triển Nhà Thủ Đức) qua 4 quý liên tiếp.
  KẾT QUẢ ĐỐI SOÁT CHỈ SỐ TÀI CHÍNH CỔ PHIẾU THỰC NGHIỆM (TDH & ITA)
+---------------+---------------------+--------------------+--------------------+
| Mã CP / Quý   | Chỉ số EPS (VNĐ)    | Chỉ số ROE (%)     | Chỉ số P/E         |
+---------------+---------------------+--------------------+--------------------+
| TDH - Q1      | 2,450.12            | 5.82%              | 14.20              |
| TDH - Q2      | 2,890.40 (+17.9%)   | 6.45% (+10.8%)     | 12.80 (-9.8%)      |
| ITA - Q1      | 1,820.00            | 4.10%              | 16.50              |
| ITA - Q2      | 1,650.00 (-9.34%)   | 3.75% (-8.53%)     | 18.20 (+10.3%)     |
+---------------+---------------------+--------------------+--------------------+
| Điểm tiềm năng: TDH đạt 84.50 điểm (Khuyến nghị: TÍCH CỰC)                       |
|                 ITA đạt 42.10 điểm (Khuyến nghị: THEO DÕI)                      |
+----------------------------------------------------------------------------------+

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

Hệ thống đã hoàn thành 100% các mục tiêu chức năng và phi chức năng đề ra trong đề tài:

  • Về mặt chức năng:
    • Phân hệ quản trị: Thêm, sửa, xóa, tìm kiếm nâng cao BCTC của các công ty đại chúng nhanh chóng.
    • Phân hệ tính toán: Xử lý chính xác 26 chỉ số tài chính, chuẩn hóa các trường hợp mẫu số 0 sang NULL.
    • Phân hệ đánh giá: Cho phép nhà đầu tư tùy biến chấm điểm $\alpha$ cho từng chỉ số theo từng ngành nghề riêng biệt.
    • Phân hệ thống kê & trực quan hóa: Kết xuất bảng xếp hạng cổ phiếu tiềm năng nhất theo ngành và vẽ biểu đồ tăng trưởng trực quan.
  • Về mặt hiệu năng:
    • Thời gian phản hồi tính điểm tiềm năng cho toàn bộ danh mục cổ phiếu thuộc một ngành $< 450\text{ ms}$.
    • Giao diện tương thích hoàn toàn trên các trình duyệt phổ biến (Internet Explorer 8+, Mozilla Firefox, Google Chrome).

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

  1. Mô hình định lượng hóa đa chiều (26 chỉ số kết hợp trọng số âm/dương): Thay vì chỉ nhìn vào một vài chỉ số đơn lẻ như $P/E$ hay $EPS$ vốn dễ bị thao túng bởi các thủ thuật kế toán ngắn hạn, hệ thống tích hợp toàn diện 26 chỉ số thuộc 4 nhóm: Khả năng sinh lời, Đòn bẩy tài chính, Hiệu quả hoạt động và Định giá thị trường. Việc phân định trọng số $\alpha > 0$ và $\alpha < 0$ giúp phản ánh chính xác rủi ro (ví dụ: Nợ vay hoặc chi phí tài chính tăng sẽ tự động làm giảm điểm tiềm năng).

  2. Kết hợp yếu tố định tính Ban lãnh đạo vào mô hình toán học: Đề tài đưa ra giải pháp độc đáo khi cho phép nhà đầu tư lượng hóa uy tín và năng lực của Hội đồng quản trị thông qua thang điểm $Score_{BOD}$, khắc phục nhược điểm "chỉ nhìn vào con số quá khứ" của các hệ thống phân tích BCTC truyền thống.

  3. Cải thiện vượt bậc về hiệu suất phân tích:

  SO SÁNH HIỆU SUẤT XỬ LÝ DỮ LIỆU BÁO CÁO TÀI CHÍNH
+-----------------------------+-----------------------+-----------------------+
| Phương pháp                 | Thời gian phân tích   | Độ chính xác tính toán|
+-----------------------------+-----------------------+-----------------------+
| Phân tích thủ công (Excel)  | 120 - 180 phút/ngành  | 85 - 90% (Dễ sai sót) |
| Hệ thống DSS đề tài         | < 3 giây/ngành        | 100% (Chuẩn toán học) |
| Mức độ cải thiện            | Nhanh hơn 98.3%       | Loại bỏ 100% sai số   |
+-----------------------------+-----------------------+-----------------------+
  1. Đóng góp học thuật và ứng dụng: Cung cấp một khung kiến trúc phần mềm mẫu (Architectural Blueprint) về việc ứng dụng hệ thống hỗ trợ ra quyết định (DSS) trong lĩnh vực công nghệ tài chính (Fintech) tại các trường đại học khối công nghệ.

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

Kịch bản sử dụng thực tế (Real-World Use Cases)

  • Kịch bản 1: Nhà đầu tư cá nhân tìm kiếm cổ phiếu tăng trưởng giá trị: Nhà đầu tư A quan tâm ngành "Bất động sản". Anh A đăng nhập vào hệ thống, thiết lập trọng số $\alpha$ cao ($+3$) cho các chỉ số Doanh thu thuần, Lợi nhuận sau thuế, Tiền và các khoản tương đương tiền, đồng thời đặt trọng số âm lớn ($-3$) cho Vay và nợ ngắn hạn. Sau khi chọn khoảng thời gian 4 quý gần nhất, hệ thống tự động quét và trả về bảng xếp hạng cổ phiếu có điểm tiềm năng cao nhất (ví dụ: TDH đứng đầu danh mục), đi kèm biểu đồ so sánh xu hướng tăng trưởng lợi nhuận.

  • Kịch bản 2: Chuyên viên tư vấn đầu tư tại công ty chứng khoán: Chuyên viên sử dụng hệ thống để đánh giá nhanh năng lực HĐQT của các công ty trong rổ VN30, kết hợp số liệu BCTC đã nhập để xuất báo cáo tư vấn danh mục đầu tư tiềm năng cho khách hàng VIP.

Hướng dẫn triển khai hệ thống (Deployment Architecture)

  +-------------------------------------------------------------------+
  |                       HẠ TẦNG TRIỂN KHAI HỆ THỐNG                 |
  +-------------------------------------------------------------------+
  |  [Client Browser] <--- HTTP/HTTPS (Port 80/443) ---> [Web Server] |
  |                                                      IIS 7.0+     |
  |                                                      .NET CLR 4.0 |
  |                                                           |       |
  |                                                TCP/IP (Port 1433) |
  |                                                           v       |
  |                                                  [Database Server]|
  |                                                  SQL Server 2008  |
  +-------------------------------------------------------------------+
  • Yêu cầu phần cứng và môi trường máy chủ:

    • Web Server: Windows Server 2008/2012, cài đặt Internet Information Services (IIS 7.0 trở lên), .NET Framework 3.5 / 4.0.
    • Database Server: Microsoft SQL Server 2008 R2 Standard/Enterprise.
    • Cấu hình tối thiểu: CPU Dual-Core 2.4GHz, RAM 4GB, Ổ cứng 80GB (Khả dụng mở rộng).
  • Quy trình cài đặt:

    1. Tạo CSDL trên SQL Server bằng cách thực thi tập lệnh Database_Script.sql.
    2. Cấu hình chuỗi kết nối trong tập tin web.config:
      <connectionStrings>
        <add name="StockDSSConnectionString" 
             connectionString="Data Source=localhost;Initial Catalog=StockDSS_DB;Integrated Security=True" 
             providerName="System.Data.SqlClient" />
      </connectionStrings>
      
    3. Publish mã nguồn ASP.NET lên thư mục ảo (Virtual Directory) trên IIS.
    4. Gán quyền IIS_IUSRS cho thư mục chứa ứng dụng để thực thi các tác vụ vẽ và lưu tạm cache biểu đồ.

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

Hạn chế kỹ thuật hiện tại

  • Thu thập dữ liệu bán tự động: Số liệu BCTC vẫn cần người quản trị nhập liệu thủ công hoặc import từ bảng tính, chưa có crawler tự động trích xuất từ các cổng thông tin của HOSE/HNX.
  • Mô hình phụ thuộc vào quá khứ: Phương pháp tính điểm hoàn toàn dựa trên số liệu lịch sử của BCTC và chưa phản ánh các cú sốc kinh tế vĩ mô đột ngột (lạm phát, thay đổi lãi suất ngân hàng trung ương, biến động địa chính trị).
  • Phân tích kỹ thuật (Technical Analysis): Chưa tích hợp các chỉ báo dao động giá thời gian thực (RSI, MACD, Volume, Candlestick patterns).

Hướng nâng cấp mở rộng

  1. Ứng dụng AI & Machine Learning: Tích hợp các mô hình học máy (như Random Forest, XGBoost, LSTM) để dự đoán xác suất tăng trưởng giá cổ phiếu trong tương lai dựa trên chuỗi dữ liệu 26 chỉ số tài chính kết hợp dữ liệu giá lịch sử.
[BCTC + Giá Lịch Sử] ──> [Feature Engineering (26 Chỉ số)] ──> [Mô hình LSTM / XGBoost] ──> [Dự báo Tiềm năng]
  1. Xây dựng hệ thống tự động trích xuất dữ liệu (Automated ETL Pipeline): Áp dụng kỹ thuật xử lý ngôn ngữ tự nhiên (NLP) và OCR để tự động đọc, bóc tách dữ liệu từ các tệp BCTC định dạng PDF do các công ty niêm yết phát hành.
  2. Mở rộng nền tảng di động (Cross-Platform Mobile App): Tái cấu trúc hệ thống thành kiến trúc Web API / Microservices (sử dụng ASP.NET Core) và xây dựng ứng dụng di động trên Flutter/React Native phục vụ nhà đầu tư theo dõi mọi lúc mọi nơi.

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

  • Sinh viên ngành CNTT & Hệ thống thông tin: Tiếp cận một đồ án mẫu mực về phân tích thiết kế hệ thống thông tin hướng đối tượng (OOAD), quy trình thiết kế CSDL chuẩn hóa và cách hiện thực hóa kiến trúc phần mềm 3 lớp (3-Tier) trong bài toán kinh tế.
  • Lập trình viên & Kỹ sư phần mềm: Nắm bắt được giải pháp xử lý ngoại lệ nghiệp vụ tài chính (Division by zero, xử lý dữ liệu NULL chuỗi thời gian) và kỹ thuật thiết kế module tính toán ma trận trọng số.
  • Nhà đầu tư cá nhân & Chuyên viên phân tích: Sở hữu một công cụ định lượng khoa học, khách quan giúp sàng lọc danh mục đầu tư tiềm năng, giảm thiểu rủi ro cảm tính trong giao dịch chứng khoán.
  • Giảng viên & Nhà nghiên cứu: Sử dụng làm tài liệu tham khảo cho các môn học Hệ hỗ trợ ra quyết định (DSS), Phân tích nghiệp vụ (Business Analysis) và Ứng dụng tin học trong tài chính doanh nghiệp.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai và chạy hệ thống là gì?

Hệ thống yêu cầu máy chủ hoặc máy trạm cá nhân chạy hệ điều hành Windows (Windows 7/10 hoặc Windows Server), cài đặt Internet Information Services (IIS), Microsoft .NET Framework 3.5/4.0 và hệ quản trị CSDL Microsoft SQL Server 2008 trở lên. Người dùng cuối chỉ cần một trình duyệt web tiêu chuẩn (Chrome, Edge, Firefox) có kết nối mạng tới máy chủ.

2. Hệ thống xử lý thế nào khi một doanh nghiệp bị thua lỗ liên tiếp ($EPS \le 0$)?

Khi $EPS \le 0$, hệ số $P/E$ không thể xác định bằng phép chia thông thường ($P/E = P / EPS$). Tầng Business Logic Layer (BLL) của hệ thống sẽ tự động gán giá trị của $P/E$ về NULL (hoặc 0 tùy thuộc vào cấu hình hệ thống), đồng thời đánh dấu cảnh báo trên giao diện. Trong thuật toán tính điểm tiềm năng, chỉ số này sẽ bị gắn điểm phạt tự động theo trọng số $\alpha$ âm để phản ánh chính xác rủi ro của doanh nghiệp.

3. Có thể tích hợp hệ thống với các cổng thông tin dữ liệu chứng khoán khác không?

Có. Mặc dù phiên bản hiện tại sử dụng cơ chế nạp BCTC qua tầng giao diện quản trị, kiến trúc 3 lớp cho phép tách rời tầng Data Access Layer (DAL). Lập trình viên có thể dễ dàng bổ sung các dịch vụ Background Worker hoặc RESTful API Client để đồng bộ dữ liệu tự động từ các nguồn cung cấp dữ liệu như CafeF, Vietstock hoặc FiinGroup.

4. Hệ thống cần bảo trì định kỳ những hạng mục nào?

Hạng mục bảo trì định kỳ bao gồm:

  • Cập nhật số liệu BCTC mới vào mỗi kỳ kết thúc quý (Q1, Q2, Q3, Q4).
  • Re-indexing các bảng dữ liệu ThongSoQuanTrongDiemChungKhoan trên SQL Server sau mỗi năm tài chính để tối ưu tốc độ truy vấn.
  • Kiểm tra và cập nhật lại danh sách thành viên Hội đồng quản trị khi doanh nghiệp có kỳ Đại hội đồng cổ đông bất thường.

5. Chi phí đầu tư và thời gian hoàn vốn (ROI) khi triển khai giải pháp này?

Chi phí phát triển hệ thống ban đầu rất tối ưu do sử dụng nền tảng công nghệ Microsoft .NET sẵn có. Đối với một nhóm đầu tư cá nhân hoặc công ty tư vấn nhỏ, hệ thống giúp tiết kiệm trung bình 80-100 giờ làm việc phân tích thủ công mỗi quý, tương đương với giá trị kinh tế hàng chục triệu đồng chi phí nhân sự, mang lại thời gian hoàn vốn chỉ sau 1 đến 2 kỳ báo cáo tài chính.


Kết luận

Đề tài "Xây dựng hệ thống hỗ trợ quyết định chọn chứng khoán cho nhà đầu tư" đã giải quyết thành công bài toán chuyển đổi dữ liệu kế toán tài chính phức tạp thành các chỉ số định lượng trực quan, hỗ trợ đắc lực cho quá trình ra quyết định đầu tư. Bằng việc kết hợp kiến trúc 3 lớp vững chắc, giải thuật tính tốc độ tăng trưởng chuỗi thời gian và mô hình tính điểm tiềm năng đa tiêu chí với 26 chỉ số tài chính cùng điểm số ban lãnh đạo, hệ thống mang lại giá trị thực tiễn cao cho thị trường công nghệ tài chính.

Dự án không chỉ khẳng định năng lực ứng dụng công nghệ thông tin trong việc giải quyết các bài toán kinh tế - tài chính thực tế mà còn mở ra nền tảng vững chắc để tiếp tục tích hợp các công nghệ hiện đại như Trí tuệ nhân tạo (AI) và Phân tích dữ liệu lớn (Big Data) trong tương lai. Bạn có thể áp dụng ngay mô hình này để tự động hóa danh mục theo dõi và nâng tầm chiến lược đầu tư chứng khoán của mình một cách khoa học và hiệu quả.