Bài viết gần đây
-
-
Các ưu điểm của Python trong giao dịch định lư…
Tháng 6 28, 2026 -
Áp dụng thống kê Bayesian trong phân tích thị trư…
Tháng 6 28, 2026 -
Flutter có thể tích hợp dễ dàng với các hệ th…
Tháng 6 27, 2026 -
🚀 Cơ bản về Flutter & Dart
Tháng 6 27, 2026
| Python Đọc Báo Cáo Tài Chính Doanh Nghiệp VN: PE, ROE, EPS 100 Cổ Phiếu Trong 5 Phút
Thay vì đọc từng báo cáo tài chính thủ công trên CafeF hay HOSE, Python giúp bạn tải và phân tích báo cáo tài chính của hàng trăm doanh nghiệp trong vài phút. Bài viết này hướng dẫn cách sàng lọc cổ phiếu undervalued dựa trên các chỉ số tài chính.
Tải Chỉ Số Tài Chính Bằng Vnstock
from vnstock import financial_ratio, listing_companies
import pandas as pd
# Lấy chỉ số PE, PB, ROE, EPS của VNM
ratios = financial_ratio("VNM", "quarterly", True)
print(ratios.columns.tolist())
print(ratios[['ticker', 'quarter', 'pe', 'pb', 'roe', 'eps', 'revenue']].tail(8))
Quét 100 Cổ Phiếu Cùng Lúc
from vnstock import financial_ratio, listing_companies
import pandas as pd
import time
# Lấy danh sách 100 cổ phiếu HOSE
stocks = listing_companies()
hose_100 = stocks[stocks['comGroupCode'] == 'HOSE']['ticker'].tolist()[:100]
all_ratios = []
errors = []
for i, sym in enumerate(hose_100):
try:
r = financial_ratio(sym, "yearly", True)
if r is not None and len(r) > 0:
latest = r.iloc[-1] # lấy năm gần nhất
all_ratios.append({
'ticker': sym,
'pe': latest.get('pe', None),
'pb': latest.get('pb', None),
'roe': latest.get('roe', None),
'eps': latest.get('eps', None),
'year': latest.get('year', None),
})
if i % 10 == 0:
print(f" [{i+1}/100] Done {sym}")
time.sleep(0.3) # tránh rate limit
except Exception as e:
errors.append(sym)
df_ratios = pd.DataFrame(all_ratios)
print(f"nTải thành công: {len(df_ratios)} cổ phiếu")
print(f"Lỗi: {errors}")
Sàng Lọc Cổ Phiếu Undervalued
# Lọc cổ phiếu có:
# - PE 15% (kinh doanh hiệu quả)
# - EPS > 0 (có lợi nhuận)
# - PB 0]
undervalued = df_clean[
(df_clean['pe'] < 15) &
(df_clean['pb'] 15)
].sort_values('roe', ascending=False)
print(f"n=== Cổ phiếu undervalued: {len(undervalued)} mã ===")
print(undervalued[['ticker', 'pe', 'pb', 'roe', 'eps']].to_string())
Tính Giá Trị Nội Tại (DCF Đơn Giản)
def simple_dcf(eps, growth_rate=0.10, discount_rate=0.12, years=10):
"""
DCF đơn giản dựa trên EPS
eps: lợi nhuận trên cổ phiếu (nghìn đồng)
growth_rate: tốc độ tăng trưởng kỳ vọng
discount_rate: tỷ lệ chiết khấu
years: số năm dự báo
"""
pv_eps = 0
for t in range(1, years + 1):
future_eps = eps * (1 + growth_rate) ** t
pv_eps += future_eps / (1 + discount_rate) ** t
# Terminal value (Gordon Growth Model)
terminal_eps = eps * (1 + growth_rate) ** years
terminal_value = terminal_eps * (1 + 0.03) / (discount_rate - 0.03)
pv_terminal = terminal_value / (1 + discount_rate) ** years
intrinsic_value = pv_eps + pv_terminal
return intrinsic_value
# Áp dụng cho từng cổ phiếu
undervalued['fair_value'] = undervalued['eps'].apply(
lambda x: simple_dcf(x / 1000) # EPS thường tính bằng đồng, đổi sang nghìn đồng
)
print(undervalued[['ticker', 'eps', 'pe', 'fair_value']].head(10))
Xuất Kết Quả Ra Excel
from datetime import date
filename = f"stock_screening_{date.today()}.xlsx"
undervalued.to_excel(filename, index=False)
print(f"Đã xuất: {filename}")
Lợi Thế So Với Làm Thủ Công
| Excel/Tay | Python | |
|---|---|---|
| Phân tích 100 mã | 2–3 ngày | 5–10 phút |
| Cập nhật số liệu mới | Làm lại từ đầu | Chạy lại script |
| Thêm tiêu chí lọc | Chỉnh công thức phức tạp | Thêm 1 dòng code |
| Lỗi dữ liệu | Khó phát hiện | Exception handling tự động |
Kết Luận
Python biến việc phân tích tài chính doanh nghiệp từ công việc tốn ngày thành việc của vài phút. Thêm vào quy trình đầu tư hàng tuần — chạy mỗi chiều thứ Sáu sau khi thị trường đóng cửa để có danh sách cổ phiếu tiềm năng cho tuần tới.
📌 Muốn ứng dụng Python vào phân tích và giao dịch tài chính thực chiến?
Khóa Python Fintech — Phân Tích Dữ Liệu Lớn & Tự Động Hóa Giao Dịch tại Hướng Nghiệp Dữ Liệu giúp bạn thực hành với dữ liệu VnIndex, Binance API thật — không dạy lý thuyết hàn lâm.
📞 Hotline/Zalo: 0927 909 257
Weekly Digest — Nhận Bản Tin Hàng Tuần
Nhận các bài viết phân tích kỹ thuật chuyên sâu, thuật toán giao dịch tự động (Trading Bot) và các giải pháp công nghệ mới nhất từ Hướng Nghiệp Dữ Liệu.
admin
Biên tập viên, Hướng Nghiệp Dữ LiệuBiên tập viên nội dung tại Hướng Nghiệp Dữ Liệu, phụ trách tổng hợp và biên soạn các bài viết về lập trình Python, dữ liệu và công nghệ.