EzTech

Báo cáo giám sát rủi ro: phát hiện số bất thường bằng dữ liệu

2026-09-06 · Kế toán & Dữ liệu

Báo cáo giám sát rủi ro: phát hiện số bất thường bằng dữ liệu

Cuối năm, kế toán trưởng trình bảng chi phí: cả năm chi vượt ngân sách 1,6%. Ban giám đốc gật đầu, không ai hỏi thêm. Con số đó nằm trong mọi ngưỡng chấp nhận được mà công ty từng đặt ra.

Mở bảng đó ra theo từng khoản mục từng tháng thì có một ô vượt ngân sách 816%. Có 84 ô khác nằm ngoài khoảng ±5%. Không ô nào trong số đó từng xuất hiện trên bảng trình ban giám đốc, vì bảng ấy chỉ có một dòng tổng.

Đây là bài toán mà một báo cáo giám sát rủi ro sinh ra để giải: tìm chỗ số liệu đi lệch khi nó còn nhỏ, thay vì đọc một dòng tổng đã được san phẳng. Bài này đi qua bốn tầng cảnh báo, ba loại bất thường phải xử khác nhau, và cách để danh sách cảnh báo không chết vì nhiễu.

Hai bàn tay bấm máy tính bỏ túi và ghi chép trên chồng chứng từ, báo cáo có biểu đồ đặt bên dưới
Chỗ số liệu đi lệch thường không nằm ở dòng tổng. (Ảnh: StockSnap)

Vì sao chốt cảnh báo ở dòng tổng gần như không bắt được gì

Đội ngũ EzTech dùng một bộ dữ liệu ngân sách và thực tế trong tài liệu giảng dạy: 17 khoản mục chi phí × 12 tháng = 204 ô, thuộc 5 nhóm chi phí. Đây là dữ liệu mẫu dựng cho lớp học, không phải số của khách hàng nào. Nhưng hình dạng của nó thì giống hệt file mà phần lớn doanh nghiệp đang dùng.

Cả năm, ngân sách 59,22 tỷ, thực tế 60,17 tỷ. Chênh lệch ròng 952 triệu, tức +1,61%.

Bây giờ cộng riêng từng chiều. Các ô chi vượt cộng lại là +3,35 tỷ. Các ô chi hụt cộng lại là −2,39 tỷ. Tổng độ lệch tính theo trị tuyệt đối là 5,74 tỷ — nhưng chỉ có 16,6% trong số đó sống sót lên dòng tổng. Hơn tám phần mười độ lệch thật đã tự triệt tiêu nhau trên đường đi.

Sơ đồ so sánh chênh lệch ròng 952 triệu với tổng chênh lệch trị tuyệt đối 5,74 tỷ, trong đó phần vượt 3,35 tỷ và phần hụt 2,39 tỷ triệt tiêu nhau
Dòng tổng chỉ giữ lại 16,6% độ lệch thật. Phần còn lại tự khử nhau.

Chia theo nhóm chi phí, bức tranh đã khác hẳn dòng tổng:

Nhóm chi phíNgân sáchThực tếChênh
Chi phí nhân sự20,52 tỷ19,92 tỷ−2,9%
Chi phí bán hàng & marketing9,48 tỷ10,35 tỷ+9,1%
Chi phí quản lý4,86 tỷ5,06 tỷ+4,2%
Chi phí tài chính2,34 tỷ2,57 tỷ+9,7%
Chi phí sản xuất & vận hành22,02 tỷ22,28 tỷ+1,2%

Nhân sự chi hụt gần 600 triệu. Chính khoản hụt đó đang che cho phần vượt của bán hàng và tài chính. Đi tiếp một bậc nữa xuống từng khoản mục thì thấy văn phòng phẩm vượt 68% cả năm và tiếp khách vượt 34% — hai khoản không ai nghĩ tới khi nhìn con số 1,61%.

Bài học rút ra không phải là "đặt ngưỡng chặt hơn". Ngưỡng 1% trên dòng tổng vẫn không bắt được ô 816%, vì vấn đề nằm ở chỗ đo, không nằm ở mức ngưỡng.

Bốn tầng cảnh báo, mỗi tầng bắt một loại lệch

Một báo cáo giám sát rủi ro dùng được thường có bốn tầng. Bỏ tầng nào cũng để lọt đúng một loại vấn đề.

Sơ đồ bốn tầng cảnh báo: so với ngân sách, so với chính nó các kỳ trước, so với chỉ tiêu liên quan, và kiểm tra cấu trúc dữ liệu
Bốn tầng đi từ thô đến mịn. Mỗi tầng bắt một loại lệch mà tầng kia mù.

Tầng 1 — So với ngân sách hoặc kế hoạch

Tầng dễ dựng nhất và cũng dễ hỏng nhất. Nếu chỉ chốt theo phần trăm thì mọi khoản nhỏ sẽ kêu suốt: văn phòng phẩm 25 triệu vượt 5 triệu là đã +20%, trong khi nguyên vật liệu 1,8 tỷ vượt 90 triệu chỉ là +5%. Khoản thứ hai mới là khoản đáng nhìn.

Cách xử: ngưỡng kép. Một ô chỉ được gắn cờ khi vượt cả mức phần trăm lẫn mức tiền tuyệt đối. Mức tiền tuyệt đối nên đặt theo quy mô công ty, không theo quy mô khoản mục.

Tầng 2 — So khoản mục với chính nó ở các kỳ trước

Tầng này bắt cú nhảy đơn lẻ mà ngân sách không nhìn thấy. Cách làm rẻ nhất: lấy trung vị của 12 kỳ gần nhất, tính độ lệch tuyệt đối trung vị, rồi gắn cờ ô nào cách trung vị quá xa. Trung vị chịu được vài giá trị cực đoan tốt hơn số trung bình — dùng trung bình thì chính cái ô bất thường sẽ kéo mốc so sánh lên và tự che cho nó.

Trong bộ dữ liệu trên, tầng này lôi ra ngay ô văn phòng phẩm tháng 8: ngân sách 25 triệu, thực tế 228,99 triệu, trong khi trung vị 12 tháng của khoản đó là 25,16 triệu.

Tầng 3 — So với chỉ tiêu liên quan

Chi phí vận chuyển tăng 20% không nói lên điều gì nếu số đơn hàng cũng tăng 25%. Tầng 3 đổi mọi thứ sang tỷ lệ: chi phí trên doanh thu, chi phí trên đơn hàng, chi phí trên đầu người. Đây là tầng duy nhất phân biệt được "chi nhiều hơn vì làm nhiều hơn" với "chi nhiều hơn vì đắt hơn".

Tầng 4 — Kiểm tra cấu trúc dữ liệu

Tầng này không nhìn số tiền mà nhìn chính bảng: ô trống ở cột lẽ ra luôn có giá trị, mã khoản mục không có trong danh mục, dòng trùng khóa, số âm ở cột không bao giờ được âm, ngày ghi sổ nằm ngoài kỳ.

Nhớ một điều: giá trị bất khả thi phải là lỗi ồn ào, đừng để nó rơi ra khỏi khoảng cảnh báo. Nếu luật cảnh báo viết dạng "gắn cờ khi lệch từ 10% đến 200%", thì một ô lệch 816% và một ô lệch −400% do nhập nhầm dấu sẽ im lặng đi qua. Hai lỗi che nhau ở đúng chỗ đáng báo nhất.

Ba loại bất thường — và ba cách xử khác nhau

Máy gắn cờ xong thì việc của người mới bắt đầu. Cùng một cái cờ, nguyên nhân có thể thuộc ba loại hoàn toàn khác nhau.

Loại 1 — Sự kiện đơn lẻ

Văn phòng phẩm tháng 8 vọt lên 229 triệu rồi các tháng sau về lại quanh 25 triệu. Đọc cả năm thì khoản này "vượt 68%", nghe như chi tiêu văn phòng đang phình dần. Đọc theo tháng thì thấy đúng một lần mua lớn, mọi tháng khác bình thường.

Hai cách đọc dẫn tới hai quyết định khác nhau: một bên đi siết định mức cả năm, một bên chỉ cần hỏi tháng 8 mua gì. Đây là lý do bảng giám sát phải để ở mức tháng, không phải mức năm.

Loại 2 — Nhịp mùa vụ, máy gắn cờ đúng nhưng nghiệp vụ không sai

Cũng bộ dữ liệu đó, tầng 2 gắn cờ khoản "Thưởng & phúc lợi" ở ba tháng: tháng 1, tháng 7 và tháng 12. Trung vị của khoản này là 85 triệu, còn ba tháng kia lần lượt là 280, 221 và 291 triệu.

Về mặt thống kê, ba cái cờ này đúng tuyệt đối. Về mặt nghiệp vụ, đó là thưởng Tết, thưởng giữa năm và thưởng cuối năm — chuyện năm nào cũng vậy.

Cách xử là một danh sách miễn trừ có ghi lý do ngay tại chỗ, không phải hạ ngưỡng cho hết kêu. Hạ ngưỡng là mất luôn khả năng bắt lỗi thật ở những khoản khác. Còn miễn trừ mà không ghi lý do thì sáu tháng sau không ai dám bỏ nó đi.

Loại 3 — Lỗi nằm ở cách lập kế hoạch, không ở chi tiêu

Đây là loại hay bị bỏ qua nhất. Trong bộ dữ liệu trên, cả 17/17 khoản mục đều có ngân sách phẳng đúng một con số cho cả 12 tháng. Thưởng & phúc lợi được cấp đều 150 triệu mỗi tháng, kể cả tháng Tết.

Với cách lập ngân sách đó, khoản nào có mùa vụ thì chắc chắn lệch, và lệch không liên quan gì tới việc chi tiêu có kiểm soát hay không. Cảnh báo ở đây không nên gửi cho người duyệt chi, mà gửi cho người lập ngân sách kỳ sau.

Nhìn theo tháng còn thấy một tín hiệu nữa: chênh lệch đi từ −4,2% ở tháng 1 lên +14,9% ở tháng 12, tăng gần như đều. Đó là dấu hiệu ngân sách được rải đều trong khi hoạt động thật dồn về cuối năm. Cùng chuyện này ở file năm sau: tổng lệch +5,84% và có ô phí phần mềm tháng 3 vọt từ 121 triệu lên 756 triệu.

Bốn thứ quyết định danh sách cảnh báo có được đọc hay không

Phần lớn báo cáo giám sát rủi ro chết vì cùng một lý do: nó kêu quá nhiều nên không ai mở nữa, rồi vài cảnh báo thật trôi theo.

  • Gate theo trạng thái, không theo ô trống. Một khoản mục chưa tới kỳ ghi nhận thì trống là đúng, không phải chậm. Trộn hai loại vào một con số là biến danh sách thành nhiễu.
  • Mỗi cảnh báo phải nêu tên tra được. "Khoản mục 6427, tháng 8" không giúp ai. "Văn phòng phẩm, tháng 8, vượt 204 triệu so với định mức, chứng từ số… " thì người nhận biết phải làm gì.
  • Xếp theo số tiền, không theo phần trăm. Người đọc chỉ có thời gian cho mười dòng đầu, nên mười dòng đó phải là mười khoản tiền lớn nhất.
  • Ghi rõ nguồn nào chưa đọc được. Nếu một nguồn dữ liệu không nạp được kỳ này, ô trống có nghĩa là "chưa đọc", không phải "không có". In nó ra thành câu khẳng định là báo một phép đo chưa từng thực hiện.

Dựng bảng này bằng Power Query và Power BI

Không cần hệ thống mới. Sáu bước dưới đây chạy được trên đúng file Excel ngân sách đang có.

  1. Đưa bảng về dạng chuẩn. Bảng ngân sách thường nằm ngang 12 tháng. Dùng Unpivot Columns để đưa về bốn cột: khoản mục, nhóm, kỳ, giá trị. Cách làm chi tiết ở bài Unpivot trong Power Query.
  2. Gộp ngân sách với thực tế bằng Merge Queries theo khóa khoản mục + kỳ, chọn Full Outer để giữ cả dòng chỉ có ở một bên — dòng chỉ có một bên chính là loại lỗi tầng 4 bắt.
  3. Thêm cột chênh lệch theo cả hai đơn vị: số tiền và phần trăm.
  4. Tính mốc so sánh của tầng 2 bằng List.Median trên nhóm khoản mục, rồi tính độ lệch so với trung vị.
  5. Thêm cột trạng thái cảnh báo bằng một cột tùy chỉnh, viết luật theo ngưỡng kép. Danh sách miễn trừ để trong một bảng riêng và Merge vào, đừng viết cứng trong công thức.
  6. Đưa lên Power BI: một trang riêng cho danh sách ngoại lệ, sắp xếp giảm dần theo số tiền, kèm bộ lọc theo nhóm chi phí và theo tầng cảnh báo.

Bảng này nên đứng riêng, đừng nhét vào trang tổng quan. Người xem trang tổng quan cần thấy tình hình chung; người xử lý ngoại lệ cần thấy danh sách việc phải làm. Trong bộ 41 báo cáo mẫu đội ngũ EzTech nhúng sẵn trên site, các báo cáo Quản trị chi phíSức khỏe doanh nghiệp đi theo hướng tách trang này, mọi người mở xem trực tiếp được.

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

Công ty chưa lập ngân sách thì dựng báo cáo giám sát rủi ro kiểu gì?

Bỏ tầng 1, giữ tầng 2 và tầng 4. So chính khoản mục với các kỳ trước của nó đã bắt được phần lớn cú nhảy bất thường, và kiểm tra cấu trúc thì không cần ngân sách. Tầng 3 chỉ cần một chỉ tiêu quy mô như doanh thu hoặc số đơn hàng.

Nên chạy bảng này bao lâu một lần?

Theo tháng cho chi phí và công nợ, theo tuần cho tồn kho và dòng tiền. Chạy dày hơn nhịp ghi sổ thật thì phần lớn ô sẽ trống vì chưa tới lượt, và danh sách lại đầy nhiễu.

Có nên để AI đọc bảng rồi tự chỉ ra chỗ bất thường không?

Dùng được ở bước giải thích, không dùng được ở bước phát hiện. Luật cảnh báo phải nằm trong công thức để lần nào chạy cũng ra đúng một kết quả và kiểm lại được. Rủi ro khi để mô hình tự đưa số đã được nói kỹ ở bài AI bịa số rất tự tin.

Bao nhiêu cảnh báo mỗi kỳ là hợp lý?

Con số đủ để người phụ trách xử hết trong một buổi. Nếu ra 90 dòng thì hoặc ngưỡng đang quá lỏng, hoặc danh sách đang lẫn ca chưa tới lượt. Chỉnh cho tới khi mọi dòng còn lại đều đáng gọi điện đi hỏi.

Bắt đầu từ đâu

Nếu công ty các bạn đang chốt cảnh báo ở dòng tổng, việc đáng làm đầu tiên là mở đúng file đó ra, tách theo khoản mục × tháng, rồi đếm xem có bao nhiêu ô nằm ngoài ±5%. Con số đếm được thường đủ để thuyết phục mọi người rằng dòng tổng không phải là chỗ để canh.

Đội ngũ EzTech dựng hệ thống báo cáo giám sát cho doanh nghiệp theo hướng này trong dịch vụ giải pháp dữ liệu, và dạy cách tự dựng trong khóa DATA FINANCE. Nếu các bạn muốn xem bảng ngoại lệ trên chính số liệu của mình trông ra sao, để lại thông tin ở trang liên hệ, đội ngũ sẽ trao đổi trực tiếp.

Chat ZaloGọi điệnMessengerTìm đường