Chỉ số tài chính
Mục lục
Khuyên dùng: Nên ưu tiên sử dụng Agent Guide để nạp môi trường cho AI Agent trên máy tính cục bộ. Tránh viết code thủ công hoặc dùng AI phiên bản web/Google Colab vì AI không có thông tin mới nhất về thư viện nên dễ viết sai cú pháp.
Tổng quan
Mô-đun vnstock_quant.fa cung cấp công cụ tự động tính toán 99 chỉ số tài chính từ hệ thống báo cáo tài chính chuẩn hoá theo chuẩn mực kế toán Việt Nam (VAS), hỗ trợ đầy đủ 4 loại hình doanh nghiệp: doanh nghiệp phi tài chính (dn), ngân hàng (tctd), công ty chứng khoán (ctck) và bảo hiểm (dnpnt). Thay vì phụ thuộc vào các bảng chỉ số tính sẵn với công thức đóng kín từ bên thứ ba, vnstock_quant cho bạn xem được công thức, tự chọn phương pháp luận TTM và chuẩn hoá dòng tiền theo giáo trình CFA.
Vì sao nên tự tính chỉ số tài chính
Trong phân tích định lượng và xây dựng mô hình định giá, việc tự tính chỉ số từ báo cáo tài chính nguyên bản mang lại các lợi ích vượt trội:
- Minh bạch phương pháp luận: Mọi công thức đều tường minh và kiểm tra được qua hàm
fa.describe(), tránh rủi ro "hộp đen" khi nguồn thay đổi cách tính. - Chuẩn hoá kỳ TTM (Trailing Twelve Months): Dữ liệu quý được tự động cộng dồn 4 quý gần nhất đối với các chỉ tiêu thời kỳ (doanh thu, lợi nhuận, dòng tiền) và tính bình quân 4 điểm cuối quý đối với các chỉ tiêu thời điểm (tài sản, vốn chủ, nợ vay).
- Kiểm soát thiên lệch nhìn trước (Look-ahead bias): Bạn biết rõ mỗi chỉ số dùng kỳ báo cáo và giá ở thời điểm nào, nên có thể tự căn theo ngày công bố khi nghiên cứu trên dữ liệu lịch sử.
- Mở rộng mô hình học thuật: Tích hợp các mô hình chuyên sâu như dòng tiền tự do FCFF/FCFE, phân rã DuPont 5 nhân tố, điểm phá sản Altman Z''-score, điểm chất lượng Piotroski F-score và mô hình phát hiện gian lận Beneish M-score.
Chuẩn bị dữ liệu đầu vào với Dataset
Lớp Dataset đóng gói toàn bộ báo cáo tài chính (Bảng cân đối kế toán, Báo cáo kết quả kinh doanh, Lưu chuyển tiền tệ), giá cổ phiếu và sự kiện doanh nghiệp của các mã cần phân tích.
Cách 1: Tải trực tiếp qua vnstock
from vnstock_quant import fa
# Tải dữ liệu BCTC và giá của FPT và VCB
ds = fa.Dataset.load(["FPT", "VCB"], period="quarter")Mỗi mã cổ phiếu khi tải qua Dataset.load() sẽ tiêu tốn khoảng 6 lượt yêu cầu BCTC và 4 lượt giá lịch sử (ngân hàng có thêm thuyết minh nợ xấu và CASA). Bản Cộng đồng hỗ trợ tải tối đa 3 mã mỗi lần gọi. Để phân tích dữ liệu quy mô lớn trên toàn bộ mã niêm yết, bạn nên lưu dữ liệu về máy bằng vnstock_pipeline.
Cách 2: Tự nạp từ DataFrame cá nhân
Nếu bạn đã có sẵn dữ liệu BCTC, bạn có thể nạp vào Dataset theo định dạng long chuẩn (các cột: period, id, value):
import pandas as pd
from vnstock_quant import fa
# Dữ liệu BCTC mẫu dạng long
rows = [
{"period": "2024", "id": "IS_NET_REVENUE", "value": 1200e9},
{"period": "2024", "id": "IS_PROFIT_AFTER_TAX_FOR_SHAREHOLDERS_OF_PARENT_COMPANY", "value": 180e9},
{"period": "2024", "id": "BS_EQUITY", "value": 1200e9},
{"period": "2024", "id": "BS_TOTAL_ASSETS", "value": 2000e9},
]
df_vas = pd.DataFrame(rows)
ds = fa.Dataset.from_frames({"AAA": [df_vas]}, com_type="dn")Tính toán chỉ số với fa.ratios()
Cú pháp tính toán chỉ số tài chính:
# Tính ROE, ROA và Biên lợi nhuận ròng của các mã trong Dataset
ratios = fa.ratios(
ds,
ids=["RT_PRT_ROE", "RT_PRT_ROA", "RT_PRT_NET_MARGIN"],
period="quarter",
profile="vn"
)
print(ratios)Các tham số quan trọng
| Tham số | Giá trị lựa chọn | Ý nghĩa |
|---|---|---|
ids | ["RT_..."] hoặc None | Danh sách mã chỉ số cần tính. Nếu truyền None, thư viện sẽ tự động tính toàn bộ các chỉ số áp dụng được cho loại hình doanh nghiệp của mã đó |
period | "quarter" (mặc định) hoặc "year" | Kỳ tính toán: "quarter" tính theo lũy kế 4 quý gần nhất (TTM); "year" tính trên BCTC năm đã kiểm toán |
profile | "vn" (mặc định) hoặc "cfa" | Hồ sơ phương pháp luận: "vn" theo chuẩn công bố tại thị trường Việt Nam; "cfa" áp dụng nghiêm ngặt các quy ước theo giáo trình CFA quốc tế |
format | "long", "wide", "time_series" | Định dạng hiển thị kết quả đầu ra |
Định dạng đầu ra đa dạng
format="long"(Mặc định): Gồm các cộtsymbol,period,id,value,unit,reason. Thích hợp lưu trữ cơ sở dữ liệu và truy vấn SQL:
symbol period id value unit reason
0 FPT 2024-Q3 RT_PRT_ROE 0.278500 ratio NaN
1 FPT 2024-Q3 RT_PRT_ROA 0.142100 ratio NaN
-
format="wide": Các kỳ báo cáo (period) được xoay thành các cột ngang, giúp người đọc dễ quan sát xu hướng tăng trưởng qua từng quý/năm. -
format="time_series": Các mã chỉ số (id) được xoay thành các cột ngang, thuận tiện ghép nối trực tiếp vào các mô hình học máy (Machine Learning) hoặc phân tích hồi quy.
Cột reason: Minh bạch nguyên nhân thiếu số liệu
vnstock_quant không tự điền số 0 khi thiếu dữ liệu đầu vào. Khi một ô mang giá trị NaN, cột reason sẽ giải thích cụ thể nguyên nhân:
Mã reason | Giải thích nguyên nhân |
|---|---|
MISSING_INPUT:<mã_VAS> | Báo cáo tài chính thiếu chỉ tiêu <mã_VAS> cần thiết cho công thức |
INSUFFICIENT_HISTORY | Chưa đủ số kỳ trong quá khứ để tính bình quân mẫu số hoặc tính tốc độ tăng trưởng |
ZERO_DENOMINATOR | Mẫu số của phép chia bằng 0 (ví dụ vốn chủ sở hữu âm hoặc bằng 0) |
NOT_APPLICABLE | Chỉ số không áp dụng cho mẫu báo cáo này (ví dụ: chỉ số NIM không áp dụng cho doanh nghiệp sản xuất) |
MISSING_MARKET | Chỉ số định giá (P/E, P/B, EV/EBITDA) nhưng thiếu dữ liệu giá đóng cửa thị trường |
Hệ thống 99 chỉ số tài chính theo nhóm
1. Khả năng sinh lời (Profitability)
RT_PRT_ROE: Tỷ suất sinh lời trên vốn chủ sở hữu bình quân (Lợi nhuận ròng cổ đông công ty mẹ / Vốn chủ sở hữu bình quân).RT_PRT_ROA: Tỷ suất sinh lời trên tổng tài sản bình quân.RT_PRT_ROCE: Tỷ suất sinh lời trên vốn sử dụng (EBIT / Vốn sử dụng bình quân).RT_PRT_GROSS_MARGIN: Biên lợi nhuận gộp (Lợi nhuận gộp / Doanh thu thuần).RT_PRT_NET_MARGIN: Biên lợi nhuận ròng.RT_PRT_EBITDA_MARGIN: Biên EBITDA.
2. Đòn bẩy và khả năng trả nợ (Leverage & Solvency)
RT_LEV_DE: Tỷ lệ Nợ vay / Vốn chủ sở hữu (D/E).RT_LEV_NET_DEBT: Nợ vay ròng (vay ngắn và dài hạn trừ tiền và đầu tư tài chính ngắn hạn, đơn vị VND).RT_LEV_NET_DEBT_EBITDA: Nợ vay ròng / EBITDA (TTM).RT_LEV_INTEREST_COVERAGE: Hệ số khả năng trả lãi vay (ICR = EBIT / Chi phí lãi vay).RT_LQD_CR: Hệ số thanh toán hiện hành (Tài sản ngắn hạn / Nợ ngắn hạn).RT_LQD_QR: Hệ số thanh toán nhanh (loại trừ hàng tồn kho).RT_LQD_CASH_RATIO: Hệ số thanh toán tiền mặt.
3. Hiệu quả hoạt động (Activity & Turnover)
RT_EFF_ATR: Vòng quay tổng tài sản.RT_EFF_INVENTORY_TURNOVER: Vòng quay hàng tồn kho (Giá vốn / Hàng tồn kho bình quân).RT_EFF_RECEIVABLE_TURNOVER: Vòng quay các khoản phải thu.RT_EFF_DIO: Số ngày tồn kho bình quân (Days Sales of Inventory).RT_EFF_DSO: Số ngày thu tiền bình quân (Days Sales Outstanding).RT_EFF_CASH_CYCLE: Chu kỳ chuyển hoá tiền mặt (Cash Conversion Cycle = DIO + DSO − DPO).
4. Chỉ số chuyên biệt ngành Ngân hàng (TCTD)
RT_BANK_NIM: Biên lãi thuần (Net Interest Margin = Thu nhập lãi thuần / Tài sản sinh lãi bình quân).RT_BANK_YIEA: Lợi suất sinh lời của tài sản sinh lãi (Yield on Earning Assets).RT_BANK_COF: Chi phí vốn (Cost of Funds = Chi phí lãi / Nợ phải trả chịu lãi bình quân).RT_BANK_CIR: Tỷ lệ chi phí trên thu nhập hoạt động (Cost to Income Ratio).RT_BANK_CASA: Tỷ lệ tiền gửi không kỳ hạn / Tổng tiền gửi khách hàng.RT_BANK_LDR: Tỷ lệ cho vay trên tiền gửi (Loan to Deposit Ratio).RT_BANK_NPL: Tỷ lệ nợ xấu (Nợ nhóm 3, 4, 5 / Tổng dư nợ cho vay).RT_BANK_NPL_COVERAGE: Tỷ lệ bao phủ nợ xấu (Dự phòng rủi ro / Nợ xấu).RT_BANK_PROVISION_TO_LOANS: Chi phí tín dụng (chi phí dự phòng rủi ro tín dụng TTM, mang dấu âm / dư nợ gộp bình quân).
5. Dòng tiền tự do chuẩn CFA (Cash Flow)
RT_CF_FCFF: Dòng tiền tự do của doanh nghiệp (Free Cash Flow to Firm = CFO + Lãi vay × (1 − Thuế) − Chi tiêu vốn CapEx).RT_CF_FCFE: Dòng tiền tự do của chủ sở hữu (Free Cash Flow to Equity = FCFF − Lãi vay × (1 − Thuế) + Vay ròng mới).
6. Mô hình phân rã DuPont và các chỉ số điểm số
- DuPont 3 nhân tố: ROE = Biên lợi nhuận ròng × Vòng quay tài sản × Đòn bẩy tài chính.
- DuPont 5 nhân tố: Phân rã thêm gánh nặng thuế (Tax burden), gánh nặng lãi vay (Interest burden) và biên EBIT.
- Altman Z''-score: Mô hình dự báo nguy cơ phá sản hiệu chỉnh cho thị trường mới nổi (Emerging Markets).
- Piotroski F-score: Thang điểm từ 0 đến 9 đánh giá sức mạnh tài chính, đòn bẩy và hiệu quả kinh doanh.
- Beneish M-score: Mô hình 8 biến số phát hiện nguy cơ thao túng hoặc làm đẹp số liệu BCTC.
- Accruals Ratio: Tỷ lệ dồn tích theo bảng cân đối kế toán và theo lưu chuyển tiền tệ, đo lường chất lượng lợi nhuận kế toán.
Tra cứu công thức và catalog
Bạn có thể tra cứu chi tiết công thức toán học và đơn vị của bất kỳ chỉ số nào:
# Xem chi tiết cách tính của ROE
print(fa.describe("RT_PRT_ROE"))
# Xem toàn bộ danh mục chỉ số và phân quyền
catalog_df = fa.catalog()
print(catalog_df[["id", "name", "category", "access"]].head(15))
# Xem các quy ước khác biệt giữa hồ sơ 'vn' và 'cfa'
print(fa.profiles())Đọc tiếp
- Đo lường rủi ro và hiệu suất — Đo lường Sharpe, Sortino, VaR và thanh khoản Amihud.
- Quản lý danh mục đầu tư — Tối ưu danh mục và mô phỏng chi phí giao dịch Việt Nam.
- Mô hình định giá — Định giá cổ phiếu dựa trên dòng cổ tức và chỉ số P/E.