Hướng dẫn

File Quản Lý Danh Mục Đầu Tư Chứng Khoán Bằng Google Sheets [2026]

Tuân HoangTuân Hoang
9 tháng 9, 2026
Cập nhật: 7 tháng 10, 2026
9 phút đọc
Ảnh minh họa bài viết: File Quản Lý Danh Mục Đầu Tư Chứng Khoán Bằng Google Sheets [2026]

Trả lời nhanh: Tách file thành 4 sheet: giao dịch (mỗi lệnh mua/bán một dòng gồm phí và thuế), danh mục đang nắm giữ tính giá vốn bình quân, bảng giá cập nhật bằng GOOGLEFINANCE hoặc IMPORTXML, và dashboard hiệu suất, tỷ trọng theo ngành. Nên tách lãi đã thực hiện và chưa thực hiện, và kiểm tra lại giá vì nguồn dữ liệu miễn phí có thể trễ hoặc thiếu mã.

Vì sao Excel/Sheets vẫn là lựa chọn của nhiều nhà đầu tư cá nhân

Mở app chứng khoán lên, bạn thấy P/L từng lệnh, nhưng không thấy được bức tranh tổng: tỷ trọng ngành đang lệch bao nhiêu, tiền mặt còn lại là bao nhiêu %, hiệu suất danh mục so với VN-Index ra sao. Mỗi công ty chứng khoán chỉ hiển thị dữ liệu tài khoản mở tại đó — nếu bạn có 2-3 tài khoản ở SSI, VNDirect, TCBS thì coi như phải tự ghép số bằng tay hoặc sống chung với việc không biết chính xác tổng tài sản của mình.

Google Sheets giải quyết đúng khoảng trống này: một nơi duy nhất gom tất cả giao dịch, tự tính toán, và quan trọng nhất là bạn kiểm soát hoàn toàn công thức, không phụ thuộc vào việc app có cập nhật tính năng theo ý mình hay không. Đánh đổi là bạn phải tự dựng, tự bảo trì — không có đội ngũ support nào đứng sau sửa lỗi công thức giúp bạn.

Cấu trúc file tối thiểu cần có

Một file quản lý danh mục dùng được lâu dài nên tách thành 4 sheet riêng, tránh nhồi hết vào một tab rồi rối công thức:

  • Giao dịch (Transactions): ghi mọi lệnh mua/bán theo dòng — ngày, mã CK, loại lệnh, khối lượng, giá khớp, phí giao dịch, thuế bán (0.1% trên giá trị bán). Đây là sheet nhập liệu thô, không đặt công thức tổng hợp ở đây.
  • Danh mục hiện tại (Holdings): dùng công thức để tính khối lượng đang nắm, giá vốn bình quân, giá trị thị trường theo giá hiện tại.
  • Giá thị trường (Prices): nơi cập nhật giá — thủ công hoặc qua GOOGLEFINANCE (lưu ý hàm này không hỗ trợ chính xác mã CK Việt Nam, cần workaround).
  • Dashboard: biểu đồ tỷ trọng, hiệu suất, so sánh benchmark.

Tách sheet như vậy giúp bạn sửa công thức ở một chỗ mà không đụng vào dữ liệu gốc — nếu gộp chung, chỉ cần một lần paste nhầm là mất dấu vết giao dịch cũ.

Công thức tính giá vốn bình quân

Với cổ phiếu mua nhiều lần ở giá khác nhau, giá vốn bình quân gia quyền là con số quan trọng nhất để biết mình đang lãi hay lỗ thật. Công thức SUMPRODUCT áp dụng cho từng mã, lọc theo Transactions:

  • Tổng giá trị mua = SUMPRODUCT((Mã=X)*(Loại="Mua")*Khối lượng*Giá)
  • Tổng khối lượng mua = SUMPRODUCT((Mã=X)*(Loại="Mua")*Khối lượng)
  • Giá vốn bình quân = Tổng giá trị mua / Tổng khối lượng mua

Vấn đề phát sinh khi bạn có bán một phần: công thức trên không tự trừ khối lượng đã bán ra khỏi giá vốn. Cách xử lý phổ biến nhất là dùng phương pháp FIFO (bán ra theo lô mua trước) — nhưng dựng FIFO thuần bằng công thức Sheets khá cồng kềnh, nhiều người chọn phương pháp đơn giản hơn: giữ nguyên giá vốn bình quân, chỉ trừ khối lượng còn lại, chấp nhận sai số nhỏ so với cách tính thuế thực tế của công ty chứng khoán.

Lấy giá cổ phiếu tự động — điểm nghẽn lớn nhất

Đây là chỗ khiến nhiều người bỏ cuộc giữa chừng. GOOGLEFINANCE gốc chỉ hỗ trợ sàn Mỹ, London, một số sàn châu Á lớn — không có HOSE, HNX, UPCOM. Ba hướng xử lý thường gặp:

  • Nhập tay hàng ngày: mở app hoặc web CTCK, copy giá đóng cửa vào sheet Prices. Mất 2-3 phút/ngày với danh mục dưới 15 mã, nhưng dễ quên và dễ nhập sai số.
  • IMPORTXML/IMPORTHTML từ trang tra cứu giá: dùng công thức kéo giá từ CafeF, Vietstock. Cách này hay bị gãy khi trang nguồn đổi cấu trúc HTML — tháng trước chạy tốt, tháng sau công thức trả về lỗi #N/A không rõ lý do.
  • Google Apps Script gọi API: viết script gọi API công khai (ví dụ từ SSI, VNDirect nếu họ mở endpoint) rồi ghi giá vào sheet theo lịch trình (time-driven trigger). Ổn định nhất nhưng đòi hỏi biết viết code cơ bản và endpoint có thể thay đổi bất kỳ lúc nào không báo trước.

Nếu bạn không rành script, cách thực tế nhất vẫn là nhập tay có kỷ luật — đặt sheet Prices ở vị trí dễ thấy, dành 5 phút cuối ngày cập nhật. Với người quản lý portfolio cho nhiều khách hoặc theo dõi hàng chục mã cùng lúc, phần này thường là lý do khiến người ta chuyển sang phần mềm chuyên dụng có nguồn giá real-time tích hợp sẵn — tương tự lý do nhiều SME chuyển từ file Excel bán hàng sang phần mềm quản lý khi quy mô vượt ngưỡng, như phân tích trong bài phân tích ROI đầu tư phần mềm quản lý bán hàng.

Đo hiệu suất danh mục đúng cách

Sai lầm phổ biến nhất: lấy (Giá trị hiện tại - Tổng tiền đã nạp) / Tổng tiền đã nạp rồi gọi đó là "lợi nhuận". Con số này sai nếu bạn nạp/rút tiền không đều theo thời gian — nạp thêm 50 triệu vào tháng 6 sẽ làm méo tỷ suất sinh lời thực, dù bạn không hề "lãi thêm" từ số tiền mới nạp.

Cách tính chuẩn hơn cho nhà đầu tư cá nhân là Time-Weighted Return (TWR) hoặc đơn giản hơn dùng hàm XIRR của Sheets — XIRR xử lý được dòng tiền không đều (nạp/rút vào các ngày khác nhau) và trả về tỷ suất sinh lời năm hóa. Cách dùng:

  • Tạo cột dòng tiền: mỗi lần nạp tiền vào tài khoản ghi số âm, giá trị danh mục hiện tại ở dòng cuối ghi số dương.
  • =XIRR(dải_dòng_tiền, dải_ngày_tương_ứng)
  • Kết quả là % lợi nhuận năm hóa — con số này so sánh được với lãi suất tiết kiệm hoặc benchmark VN-Index.

Để so với VN-Index, thêm một cột phụ tính hiệu suất chỉ số trong cùng khoảng thời gian bằng chính công thức XIRR áp cho chuỗi giá trị VN-Index, hoặc đơn giản hơn là (VNINDEX cuối kỳ - VNINDEX đầu kỳ)/VNINDEX đầu kỳ nếu bạn không nạp thêm tiền trong kỳ đó.

Quản lý rủi ro và tỷ trọng danh mục

Nhìn con số lãi/lỗ tổng thể chưa đủ — file quản lý tốt phải cảnh báo được khi danh mục lệch quá tay vào một ngành hoặc một mã. Ví dụ thực tế: một nhà đầu tư dồn 60% tài sản vào nhóm ngân hàng vì tin vào chu kỳ tăng lãi suất, đến khi nhóm này điều chỉnh 15% trong 2 tuần thì tổng tài sản bốc hơi tương ứng — trong khi nếu tỷ trọng ngân hàng chỉ ở mức 25-30%, mức sụt giảm danh mục sẽ nhẹ hơn nhiều.

Thiết lập bảng tỷ trọng theo ngành trên sheet Dashboard, dùng conditional formatting tô đỏ khi một ngành vượt ngưỡng bạn tự đặt ra (phổ biến là 25-30% cho một ngành, 15-20% cho một mã đơn lẻ). Công thức đơn giản:

  • Tỷ trọng ngành = SUMIF(dải_ngành, tên_ngành, dải_giá_trị_thị_trường) / Tổng giá trị danh mục

Ngoài tỷ trọng, nên theo dõi thêm cột "Tỷ lệ tiền mặt" — nhiều người quên mất phần tiền chưa giải ngân cũng là một phần quyết định phân bổ tài sản, không chỉ riêng cổ phiếu đang nắm giữ.

Bảo mật và chia sẻ file khi có đồng đầu tư hoặc tư vấn viên

File chứa số dư tài khoản, lịch sử giao dịch — nếu chia sẻ cho vợ/chồng cùng theo dõi hoặc gửi cho người tư vấn xem, cần phân quyền đúng thay vì share "Anyone with the link can edit". Vài nguyên tắc:

  • Dùng Protected ranges cho sheet Transactions, chỉ chủ file được sửa; người xem chỉ nhận quyền Viewer trên Dashboard.
  • Nếu quản lý tài sản chung với người khác, cân nhắc dùng một tài khoản Google chung được kiểm soát chặt thay vì mỗi người dùng tài khoản riêng rồi share qua lại — vấn đề này khá giống bài toán chia sẻ tài khoản Google khi quản lý file Sheets cho công việc, được phân tích kỹ trong bài so sánh dùng chung hay riêng tài khoản Google.
  • Tắt tính năng "Download/Print/Copy" (File → Share → Advanced) nếu không muốn file bị tải về ngoài tầm kiểm soát.

Khi nào file Sheets không còn đủ và nên nghĩ tới công cụ chuyên dụng

File tự dựng phù hợp khi danh mục dưới 20-30 mã, một người quản lý, không cần đồng bộ real-time. Vượt qua ngưỡng đó, vài dấu hiệu cho thấy đã đến lúc cân nhắc công cụ khác: công thức XIRR chạy chậm dần vì hàng nghìn dòng giao dịch, việc nhập giá tay mỗi ngày trở thành gánh nặng thời gian thực sự, hoặc bạn cần theo dõi nhiều tài khoản của nhiều người (gia đình, nhóm đầu tư) mà mỗi người cần quyền xem riêng.

Ở giai đoạn này, câu hỏi thường không còn là "Sheets có làm được không" mà là "chi phí thời gian tự bảo trì có đáng so với việc trả phí cho công cụ chuyên biệt" — bài toán tương tự khi doanh nghiệp cân nhắc chuyển từ file Excel quản lý bán hàng sang phần mềm, được mổ xẻ trong bài phân tích chi phí phần mềm quản lý bán hàng có đáng đầu tư. Với nhà đầu tư cá nhân quản lý danh mục vài chục mã trở xuống, một file Sheets được dựng cẩn thận từ đầu — tách sheet rõ ràng, công thức XIRR đúng, tỷ trọng cảnh báo tự động — vẫn đủ dùng nhiều năm mà không cần trả thêm bất kỳ chi phí phần mềm nào.

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

File quản lý danh mục đầu tư chứng khoán có tự động cập nhật giá cổ phiếu không?

Có, dùng hàm GOOGLEFINANCE hoặc IMPORTXML lấy giá từ các sàn HOSE, HNX theo mã cổ phiếu, cập nhật mỗi khi mở file. Với dữ liệu real-time chính xác hơn, cần kết nối API riêng từ công ty chứng khoán vì GOOGLEFINANCE đôi khi trễ hoặc thiếu mã VN.

File này tính lãi lỗ như thế nào, có phân biệt lãi thực hiện và chưa thực hiện không?

File tách 2 cột riêng: lãi/lỗ chưa thực hiện (giá hiện tại trừ giá vốn, nhân số lượng đang nắm giữ) và lãi/lỗ đã thực hiện (từ các lệnh đã bán, lưu ở sheet lịch sử giao dịch). Cách này giúp biết rõ tiền đã về túi và tiền còn trên giấy.

Có thể theo dõi nhiều tài khoản chứng khoán khác nhau trong cùng một file không?

Được, tạo thêm cột hoặc sheet phân loại theo tài khoản (VD: SSI, VNDirect, TCBS), sau đó dùng sheet tổng hợp để gộp toàn bộ danh mục và tính tỷ trọng phân bổ trên tổng tài sản, không chỉ riêng từng tài khoản.

File quản lý danh mục đầu tư chứng khoán khác gì so với file quản lý nhập xuất tồn thông thường?

Khác về bản chất dữ liệu: chứng khoán biến động giá theo phút nên cần hàm lấy giá tự động và tính lãi lỗ theo thời gian thực, còn file tồn kho chỉ cộng trừ số lượng cố định. Cấu trúc cột cũng khác — thêm giá vốn bình quân, tỷ trọng danh mục, benchmark so sánh với VN-Index.

Bạn muốn áp dụng ngay mà không phải tự xây từ đầu?

Khám phá các mẫu Google Sheets và phần mềm quản lý dựng sẵn cho doanh nghiệp Việt tại SheetStore Marketplace.

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Google SheetsGoogle Apps ScriptCRMAutomationPhần mềm quản lý doanh nghiệp

Google Workspace Certified, 5+ years experience

Bạn thấy bài viết hữu ích?

Đăng ký nhận thông báo khi có bài viết mới.

Nhận thông báo khi có bài viết mới. Không spam, hứa luôn! 😊

Bình luận (0)

Vui lòng đăng nhập để tham gia thảo luận