{/* Trang này được tạo tự động từ SKILL.md của kỹ năng bởi website/scripts/generate-skill-docs.py. Chỉnh sửa nguồn SKILL.md, không phải trang này. */}
Mô hình DCf
Xây dựng các mô hình định giá DCF chất lượng thể chế trong Excel — dự báo doanh thu, xây dựng FCF, WACC, giá trị cuối, kịch bản Bear/Base/Bull, bảng độ nhạy 5x5. Cặp với tác giả excel. Sử dụng để phân tích vốn chủ sở hữu giá trị nội tại.
Siêu dữ liệu kỹ năng
| Nguồn | Tùy chọn — cài đặt với |
| `Hermes skills install official/finance/dcf-model | |
| ` | |
| Đường dẫn |
optional-skills/finance/dcf-model ` | | Phiên bản |
1.0.0 ` | | Tác giả | Nhân chủng học (được chuyển thể bởi Nous Research) | | Giấy phép | Apache-2.0 | | Nền tảng | Linux, macOS, Windows | | Thẻ |
finance
, `valuation
, `dcf
, `excel
, `openpyxl
, `modeling
,
investment-banking |
| Kỹ năng liên quan | XPROTECTX44XPROTECTX, XPROTECTX45XPROTECTX, XPROTECTX46XPROTECTX, XPROTECTX47XPROTECTX, XPROTECTX48XPROTECTX |
Tham khảo: đầy đủ SKILL.md
Sau đây là định nghĩa kỹ năng đầy đủ mà Hermes tải khi kỹ năng này được kích hoạt. Đây là những gì tác nhân coi là hướng dẫn khi kỹ năng được kích hoạt.
Môi trường
Kỹ năng này giả định openpyxl không đầu — bạn đang tạo tệp .xlsx trên đĩa.
Thực hiện theo các quy ước của kỹ năng
excel-author về màu ô, công thức, phạm vi được đặt tên và bảng độ nhạy.
Tính toán lại trước khi giao hàng:
`Python /path/to/excel-author/scripts/recalc.py ./out/model.xlsx
.
Trình tạo mô hình DCF
Tổng quan
Kỹ năng này tạo ra các mô hình DCF chất lượng thể chế để định giá vốn cổ phần theo tiêu chuẩn ngân hàng đầu tư. Mỗi phân tích tạo ra một mô hình Excel chi tiết (có phân tích độ nhạy ở cuối bảng DCF).
Công cụ
- Mặc định sử dụng tất cả thông tin được cung cấp bởi người dùng và máy chủ MCP có sẵn để tìm nguồn dữ liệu.
Ràng buộc quan trọng - Hãy đọc những điều này trước
Những ràng buộc này áp dụng trong toàn bộ quá trình xây dựng mô hình DCF. Xem lại trước khi bắt đầu:
Công thức trên mã cứng (KHÔNG THỂ THƯƠNG MẠI):
- Mọi phép chiếu, lề, hệ số chiết khấu, PV và ô độ nhạy PHẢI là một công thức Excel trực tiếp — không bao giờ là giá trị được tính toán bằng Python và được viết dưới dạng số
- Khi sử dụng openpyxl:
ws["D20"] = "=D19*(1+$B$8)"là chính xác;ws["D20"] = calculated_revenuelà SAI - Các số được mã hóa cứng duy nhất được phép là: (1) dữ liệu đầu vào lịch sử thô, (2) yếu tố giả định (tốc độ tăng trưởng, đầu vào WACC, terminal g), (3) dữ liệu thị trường hiện tại (giá cổ phiếu, số dư nợ)
- Nếu bạn thấy mình đang tính toán thứ gì đó bằng Python và viết kết quả - DỪNG. Mô hình phải linh hoạt khi người dùng thay đổi một giả định.
Xác minh từng bước với người dùng (KHÔNG xây dựng từ đầu đến cuối):
- Sau khi truy xuất dữ liệu → hiển thị cho người dùng khối đầu vào thô (doanh thu, tỷ suất lợi nhuận, cổ phiếu, nợ ròng) và xác nhận trước khi dự kiến
- Sau khi dự báo doanh thu → hiển thị doanh thu dự kiến và tốc độ tăng trưởng, hãy xác nhận trước khi xây dựng tỷ suất lợi nhuận
- Sau khi xây dựng FCF → hiển thị toàn bộ lịch FCF, xác nhận logic trước khi tính WACC
- Sau WACC → hiển thị phép tính và dữ liệu đầu vào, xác nhận trước khi chiết khấu
- Sau giá trị đầu cuối + PV → hiển thị cầu vốn chủ sở hữu (EV → giá trị vốn chủ sở hữu → trên mỗi cổ phiếu), xác nhận trước bảng độ nhạy
- Bắt lỗi ở từng giai đoạn — giả định biên sai được phát hiện sau khi xây dựng bảng độ nhạy có nghĩa là phải xây dựng lại mọi thứ ở phía dưới`Bảng độ nhạy:
- Sử dụng số hàng và cột ODD (tiêu chuẩn: 5×5, đôi khi 7×7) — điều này đảm bảo có một ô trung tâm thực sự
- Ô trung tâm = trường hợp cơ sở. Xây dựng các giá trị trục sao cho tiêu đề hàng giữa và tiêu đề cột giữa hoàn toàn bằng với giả định thực tế của mô hình (ví dụ: nếu WACC cơ sở = 9,0% thì hàng giữa là 9,0%; nếu cuối g = 3,0% thì cột giữa là 3,0%). Do đó, đầu ra của ô trung tâm phải bằng giá cổ phiếu ngụ ý thực tế của mô hình - đây là cách kiểm tra độ chính xác để đảm bảo rằng bảng được xây dựng chính xác.
- Đánh dấu ô trung tâm với màu xanh lam trung bình (
#BDD7EE
) + phông chữ đậm để có thể nhìn thấy ngay ô nào là chữ hoa cơ bản.
- Điền TẤT CẢ các ô (thường là 3 bảng × 25 ô = 75) với đầy đủ các công thức tính toán lại DCF
- Sử dụng vòng lặp openpyxl để viết công thức theo chương trình
- KHÔNG có văn bản giữ chỗ, KHÔNG xấp xỉ tuyến tính, KHÔNG yêu cầu các bước thủ công
- Mỗi ô phải tính toán lại toàn bộ DCF cho tổ hợp giả định đóNhận xét ô:
- Thêm nhận xét ô NHƯ mỗi giá trị mã hóa cứng được tạo
- Định dạng: "Nguồn: [Hệ thống/Tài liệu], [Ngày], [Tham khảo], [URL nếu có]"
- Mỗi đầu vào màu xanh phải có nhận xét trước khi chuyển sang phần tiếp theo
- Không trì hoãn việc kết thúc hoặc viết “TODO: add source”`Lập kế hoạch bố trí mô hình:
- Xác định TẤT CẢ các vị trí hàng phần TRƯỚC KHI viết bất kỳ công thức nào
- Viết TẤT CẢ các tiêu đề và nhãn trước
- Viết TẤT CẢ các ngăn chia phần và các hàng trống thứ hai
- SAU ĐÓ viết công thức sử dụng các vị trí hàng bị khóa
- Kiểm tra công thức ngay sau khi tạo`Tính lại công thức:
- Chạy
Python recalc.py model.xlsx 30trước khi giao hàng - Fix TẤT CẢ lỗi cho đến khi trạng thái "thành công"
- Không có lỗi công thức nào (#REF!, #DIV/0!, #VALUE!, v.v.)
Khối kịch bản:
- Tạo các khối riêng biệt cho các trường hợp Bear/Base/Bull
- Hiển thị các giả định theo chiều ngang qua các năm dự báo trong mỗi khối
- Sử dụng công thức IF:
=IF($B$6=1,[Bear cell],IF($B$6=2,[Base cell],[Bull cell]))
- Xác minh công thức tham chiếu chính xác các ô khối kịch bản
Quy trình làm việc của DCF
Bước 1: Truy xuất và xác thực dữ liệu
Tìm nạp dữ liệu từ máy chủ MCP, dữ liệu do người dùng cung cấp và web.
Ưu tiên nguồn dữ liệu:
- Máy chủ MCP (nếu được định cấu hình) - Dữ liệu tài chính có cấu trúc từ các nhà cung cấp như Daloopa
- Dữ liệu do người dùng cung cấp - Lịch sử tài chính từ nghiên cứu của họ
- Tìm kiếm/Tìm nạp trên web - Giá hiện tại, phiên bản beta, khoản nợ và tiền mặt khi cần`Danh sách kiểm tra xác thực:
- Xác minh nợ ròng và tiền mặt ròng (quan trọng để định giá)
- Xác nhận số lượng cổ phiếu đang lưu hành bị pha loãng (kiểm tra các đợt mua lại/phát hành gần đây)
- Xác nhận lợi nhuận lịch sử phù hợp với mô hình kinh doanh
- Kiểm tra chéo tốc độ tăng trưởng doanh thu với các tiêu chuẩn của ngành
- Xác minh mức thuế suất hợp lý (thường là 21-28%)
Bước 2: Phân tích lịch sử (3-5 năm)
Phân tích và ghi chép:
- Xu hướng tăng trưởng doanh thu: Tính CAGR, xác định động lực
- Tiến trình ký quỹ: Theo dõi tỷ suất lợi nhuận gộp, tỷ suất lợi nhuận EBIT, tỷ suất lợi nhuận FCF
- Cường độ vốn: D&A và CapEx tính theo % doanh thu
- Hiệu quả sử dụng vốn lưu động: NWC thay đổi theo % tăng trưởng doanh thu
- Chỉ số lợi nhuận: Xu hướng ROIC, ROE
Tạo bảng tóm tắt hiển thị:
`
Historical Metrics (LTM): Revenue: $X million Revenue growth: X% CAGR Gross margin: X% EBIT margin: X% D&A % of revenue: X% CapEx % of revenue: X% FCF margin: X%
`
Bước 3: Xây dựng dự báo doanh thu`Phương pháp:
- Bắt đầu với doanh thu thực tế gần nhất (LTM hoặc năm tài chính gần đây nhất)
- Áp dụng tốc độ tăng trưởng cho từng năm dự báo
- Hiển thị cả số tiền VÀ % tăng trưởng được tính toán`Khung tỷ lệ tăng trưởng:
- Năm 1-2: Tăng trưởng cao hơn phản ánh tầm nhìn ngắn hạn
- Năm 3-4: Điều chỉnh dần về mức trung bình ngành
- Năm 5+: Đạt tốc độ tăng trưởng cuối cùng`Cấu trúc công thức:
- Doanh thu(Năm N) = Doanh thu(Năm N-1) × (1 + Tốc độ tăng trưởng)
- % tăng trưởng(Năm N) = Doanh thu(Năm N) / Doanh thu(Năm N-1) - 1`Phương pháp tiếp cận ba kịch bản:
`
Bear Case: Conservative growth (e.g., 8-12%) Base Case: Most likely scenario (e.g., 12-16%) Bull Case: Optimistic growth (e.g., 16-20%)
`
Bước 4: Lập mô hình chi phí hoạt động`Phân tích chi phí cố định/biến đổi:
Chi phí hoạt động nên mô hình hóa đòn bẩy hoạt động thực tế:
- Bán hàng & Tiếp thị: Thông thường 15-40% doanh thu tùy theo mô hình kinh doanh
- Nghiên cứu & Phát triển: Thông thường 10-30% cho các công ty công nghệ
- Tổng hợp & Hành chính: Thường là 8-15% doanh thu, thể hiện đòn bẩy theo quy mô công ty`Các nguyên tắc chính:
- TẤT CẢ phần trăm dựa trên DOANH THU, không phải lợi nhuận gộp
- Đòn bẩy hoạt động của mô hình: % sẽ giảm theo quy mô doanh thu
- Duy trì các chi tiết đơn hàng riêng biệt cho S&M, R&D, G&A
- Tính EBIT = Lợi nhuận gộp - Tổng OpEx`Khung mở rộng ký quỹ:
`
Current State → Target State (Year 5) Gross Margin: X% → Y% (justify based on scale, efficiency) EBIT Margin: X% → Y% (result of revenue growth + opex leverage)
`
Bước 5: Tính toán dòng tiền miễn phí`Xây dựng FCF theo trình tự thích hợp:
` EBIT (-) Taxes (EBIT × Tax Rate) = NOPAT (Net Operating Profit After Tax) (+) D&A (non-cash expense, % of revenue) (-) CapEx (% of revenue, typically 4-8%) (-) Δ NWC (change in working cAPItal) = Unlevered Free Cash Flow
` ``Mô hình vốn lưu động:
- Tính theo % thay đổi doanh thu (doanh thu delta)
- Phạm vi điển hình: -2% đến +2% thay đổi doanh thu
- Số âm = nguồn tiền mặt (giải phóng vốn lưu động)
- Số dương = sử dụng tiền mặt (xây dựng vốn lưu động)
CapEx bảo trì và tăng trưởng:
- Bảo trì CapEx: Duy trì hoạt động hiện tại (~2-3% doanh thu)
- Growth CapEx: Hỗ trợ mở rộng (tăng thêm 2-5% doanh thu)
- Tổng CapEx phải phù hợp với chiến lược tăng trưởng của công ty
Bước 6: Nghiên cứu chi phí vốn (WACC)
Phương pháp CAPM cho chi phí vốn cổ phần:
` Cost of Equity = Risk-Free Rate + Beta × Equity Risk Premium
Where:
- Risk-Free Rate = Current 10-Year Treasury Yield
- Beta = 5-year monthly stock beta vs market index
- Equity Risk Premium = 5.0-6.0% (market standard)
` ``Tính toán chi phí nợ:
` After-Tax Cost of Debt = Pre-Tax Cost of Debt × (1 - Tax Rate)
Determine Pre-Tax Cost of Debt from:
- Credit rating (if available)
- Current yield on company bonds
- Interest expense / Total Debt from financials
` ``Trọng lượng cơ cấu vốn:
` Market Value Equity = Current Stock Price × Shares Outstanding Net Debt = Total Debt - Cash & Equivalents Enterprise Value = Market Cap + Net Debt
Equity Weight = Market Cap / Enterprise Value Debt Weight = Net Debt / Enterprise Value
WACC = (Cost of Equity × Equity Weight) + (After-Tax Cost of Debt × Debt Weight)
` ``Trường hợp đặc biệt:
- Vị thế tiền mặt ròng: Nếu Tiền mặt > Nợ, Nợ ròng là ÂM
- Trọng số nợ có thể âm
- Tính toán WACC điều chỉnh cho phù hợp
- Không có nợ: WACC = Chi phí vốn sở hữu`Phạm vi WACC điển hình:
- Vốn hóa lớn, ổn định: 7-9%
- Công ty tăng trưởng: 9-12%
- Tăng trưởng cao/Rủi ro: 12-15%### Bước 7: Áp dụng tỷ lệ chiết khấu (Dự báo 5-10 năm)
Hội nghị giữa năm:
- Dòng tiền giả định phát sinh vào giữa năm
- Thời gian giảm giá: 0,5, 1,5, 2,5, 3,5, 4,5, v.v.
- Hệ số chiết khấu = 1 / (1 + WACC)^Kỳ`Tính toán giá trị hiện tại:
`
For each projection year: PV of FCF = Unlevered FCF × Discount Factor
Example (Year 1): FCF = $1,000 WACC = 10% Period = 0.5 Discount Factor = 1 / (1.10)^0.5 = 0.9535 PV = $1,000 × 0.9535 = $954
` ``Lựa chọn thời gian chiếu:
- 5 năm: Tiêu chuẩn cho hầu hết các phân tích
- 7-10 năm: Các công ty tăng trưởng cao với đường băng dài hơn
- 3 năm: Doanh nghiệp trưởng thành, ổn định
Bước 8: Tính giá trị cuối`Phương pháp tăng trưởng vĩnh viễn (Ưu tiên):
` Terminal FCF = Final Year FCF × (1 + Terminal Growth Rate) Terminal Value = Terminal FCF / (WACC - Terminal Growth Rate)
Critical Constraint: Terminal Growth < WACC (otherwise infinite value)
` ``Lựa chọn tốc độ tăng trưởng cuối cùng:
- Bảo thủ: 2,0-2,5% (Tốc độ tăng trưởng GDP)
- Trung bình: 2,5-3,5%
- Tích cực: 3,5-5,0% (chỉ dành cho người dẫn đầu thị trường)
Không vượt quá: Lãi suất phi rủi ro hoặc tăng trưởng GDP dài hạn`Thoát nhiều phương thức (Thay thế):
`
Terminal Value = Final Year EBITDA × Exit Multiple
Where Exit Multiple comes from:
- Industry comparable trading multiples
- Precedent transaction multiples
- Typical range: 8-15x EBITDA
` ``Giá trị hiện tại của Giá trị cuối:
`
PV of Terminal Value = Terminal Value / (1 + WACC)^Final Period
Where Final Period accounts for timing: 5-year model with mid-year convention: Period = 4.5
` ``Kiểm tra độ chính xác của giá trị đầu cuối:
- Nên chiếm 50-70% Giá trị Doanh nghiệp
- Nếu >75%, mô hình có thể phụ thuộc quá mức vào các giả định cuối cùng
- Nếu <40%, kiểm tra xem các giả định đầu cuối có quá thận trọng không
Bước 9: Cầu nối giá trị doanh nghiệp với vốn cổ phần`Cấu trúc tóm tắt định giá:
(+) Sum of PV of Projected FCFs = $X million (+) PV of Terminal Value = $Y million = Enterprise Value = $Z million(-) Net Debt [or + Net Cash if negative] = $A million
= Equity Value = $B million`÷ Diluted Shares Outstanding = C million shares
= Implied Price per Share = $XX.XX
Current Stock Price = $YY.YY Implied Return = (Implied Price / Current Price) - 1 = XX%
` ``Điều chỉnh quan trọng:
- Nợ ròng = Tổng nợ - Tiền và các khoản tương đương
- Nếu dương: Trừ EV (giảm giá trị vốn sở hữu)
- Nếu âm (Tiền ròng): Thêm vào EV (tăng giá trị vốn chủ sở hữu)
- Sử dụng cổ phiếu pha loãng: Bao gồm quyền chọn, RSU, chứng khoán chuyển đổi
- Các điều chỉnh khác (nếu có):
- Lợi ích thiểu số
- Trách nhiệm hưu trí
- Nghĩa vụ thuê hoạt động`Định dạng đầu ra định giá:
csv
Valuation Component,Amount ($M)
PV Explicit FCFs,X.X
PV Terminal Value,Y.Y
Enterprise Value,Z.Z
(-) Net Debt,A.A
Equity Value,B.B
,,
Shares Outstanding (M),C.C
Implied Price per Share,$XX.XX
Current Share Price,$YY.YY
Implied Upside/(Downside),+XX%
`
Bước 10: Phân tích độ nhạy
Xây dựng ba bảng độ nhạy ở cuối bảng DCF cho thấy mức định giá thay đổi như thế nào với các giả định khác nhau:
- WACC so với tăng trưởng cuối cùng - Cho thấy độ nhạy cảm của giá trị doanh nghiệp đối với tỷ lệ chiết khấu và tăng trưởng vĩnh viễn
- Tăng trưởng doanh thu so với tỷ suất lợi nhuận EBIT - Cho thấy tác động của tăng trưởng doanh thu và đòn bẩy hoạt động
- Beta so với Tỷ lệ không có rủi ro - Cho thấy độ nhạy cảm với chi phí của các thành phần vốn chủ sở hữu
**Triển khai**: Đây là các lưới 2D đơn giản (KHÔNG phải tính năng "Bảng dữ liệu" của Excel) với các công thức trong mỗi ô. Mỗi ô phải chứa một phép tính lại DCF đầy đủ cho sự kết hợp giả định cụ thể đó. Xem phần Ràng buộc quan trọng để biết các yêu cầu chi tiết về việc điền tất cả 75 ô theo chương trình bằng openpyxl.<đúng_patterns>
Phần này chứa tất cả các mẫu ĐÚNG cần tuân theo khi xây dựng mô hình DCF.
Mẫu lựa chọn khối kịch bản - Thực hiện theo phương pháp này**Các giả định được sắp xếp thành các khối riêng biệt cho từng tình huống:**CẤU TRÚC QUAN TRỌNG - Ba hàng cho mỗi tiêu đề phần:
`csv BEAR CASE ASSUMPTIONS (section header, merge cells across) Assumption,FY1,FY2,FY3,FY4,FY5 Revenue Growth (%),12%,10%,9%,8%,7% EBIT Margin (%),45%,44%,43%,42%,41%
BASE CASE ASSUMPTIONS (section header, merge cells across) Assumption,FY1,FY2,FY3,FY4,FY5 Revenue Growth (%),16%,14%,12%,10%,9% EBIT Margin (%),48%,49%,50%,51%,52%
BULL CASE ASSUMPTIONS (section header, merge cells across) Assumption,FY1,FY2,FY3,FY4,FY5 Revenue Growth (%),20%,18%,15%,13%,11% EBIT Margin (%),50%,51%,52%,53%,54%
` ``Mỗi khối kịch bản PHẢI có một hàng tiêu đề cột hiển thị các năm dự báo (FY2025E, FY2026E, v.v.) ngay bên dưới tiêu đề phần. Nếu không có điều này, người dùng không thể biết giá trị giả định nào tương ứng với năm nào.
Cách tham chiếu các giả định - Tạo cột tổng hợp:
- Ô chọn trường hợp (ví dụ: B6) chứa 1=Bear, 2=Base hoặc 3=Bull
- Tạo cột hợp nhất với các công thức INDEX hoặc OFFSET để lấy từ khối kịch bản chính xác
- Công thức chiếu tham chiếu cột hợp nhất (tham chiếu ô sạch)
- Mỗi khối kịch bản chứa đầy đủ các giả định DCF qua các năm dự báo`Mẫu cột hợp nhất được đề xuất (sử dụng INDEX):
=INDEX(B10:D10, 1, $B$6) ``KHÔNG phải điều này - các câu lệnh IF rải rác khắp nơi:
=IF($B$6=1,[Bear block cell],IF($B$6=2,[Base block cell],[Bull block cell])) ``Cách tiếp cận cột hợp nhất tập trung hóa logic và làm cho mô hình dễ kiểm tra hơn.
Mô hình dự báo doanh thu chính xác**Tạo cột tổng hợp với các công thức INDEX, sau đó tham chiếu cột đó trong các phép chiếu:**Bước 1 - Cột tổng hợp cho tăng trưởng năm tài chính 201:
=INDEX([Bear FY1 growth]:[Bull FY1 growth], 1, $B$6)
**Bước 2 - Dự báo doanh thu tham chiếu cột hợp nhất:** `Revenue Year 1: =D29*(1+$E$10) Ở đâu:
- D29 = Doanh thu năm trước
- $E$10 = Ô cột hợp nhất cho mức tăng trưởng năm tài khóa 1 (chứa công thức INDEX)
- $B$6 = Bộ chọn trường hợp (1=Bear, 2=Base, 3=Bull)
Cách tiếp cận này rõ ràng hơn việc nhúng câu lệnh IF vào mọi công thức chiếu và giúp việc kiểm tra giả định kịch bản nào đang được sử dụng trở nên dễ dàng hơn nhiều.
Đúng mẫu công thức FCF**Sử dụng các cột tổng hợp với công thức INDEX, sau đó tham chiếu chúng trong các phép tính FCF:**Phương pháp tiếp cận cột hợp nhất:
csv
Item,Formula,Reference
D&A,=E29*$E$21,$E$21 = consolidation column for D&A %
CapEx,=E29*$E$22,$E$22 = consolidation column for CapEx %
Δ NWC,=(E29-D29)*$E$23,$E$23 = consolidation column for NWC %
Unlevered FCF,=E57+E58-E60-E62,E57=NOPAT E58=D&A E60=CapEx E62=Δ NWC
Mỗi ô cột hợp nhất chứa một công thức INDEX lấy từ khối kịch bản thích hợp dựa trên bộ chọn trường hợp. Điều này giữ cho các công thức chiếu luôn rõ ràng và có thể kiểm tra được.
Trước khi viết công thức, hãy xác nhận vị trí hàng của khối kịch bản và thiết lập các cột hợp nhất.
Định dạng nhận xét ô đúng**Mọi giá trị được mã hóa cứng đều cần định dạng này:**"Nguồn: [Hệ thống/Tài liệu], [Ngày], [Tham khảo], [URL nếu có]"`Ví dụ:
csv
Item,Source Comment
Stock price,Source: Market data script 2025-10-12 Close price
Shares outstanding,Source: 10-K FY2024 Page 45 Note 12
Historical revenue,Source: 10-K FY2024 Page 32 Consolidated Statements
Beta,Source: Market data script 2025-10-12 5-year monthly beta
Consensus estimates,Source: Management guidance Q3 2024 earnings call
`
Cấu trúc bảng giả định đúng`TUYỆT VỜI: Mỗi khối kịch bản yêu cầu BA thành phần cấu trúc:
- Hàng tiêu đề phần (các ô đã hợp nhất): ví dụ: "GIẢ ĐỊNH TRƯỜNG HỢP GẤU"
- Hàng tiêu đề cột hiển thị năm - ĐIỀU NÀY BẮT BUỘC, KHÔNG BỎ QUA
- Các hàng dữ liệu với các giá trị giả định`Cấu trúc:
csv
BEAR CASE ASSUMPTIONS (section header - merge across columns A:G)
Assumption,FY1,FY2,FY3,FY4,FY5
Revenue Growth (%),X%,X%,X%,X%,X%
EBIT Margin (%),X%,X%,X%,X%,X%
Terminal Growth,X%,,,,
WACC,X%,,,,
BASE CASE ASSUMPTIONS (section header - merge across columns A:G) Assumption,FY1,FY2,FY3,FY4,FY5 Revenue Growth (%),X%,X%,X%,X%,X% EBIT Margin (%),X%,X%,X%,X%,X% Terminal Growth,X%,,,, WACC,X%,,,,
BULL CASE ASSUMPTIONS (section header - merge across columns A:G) Assumption,FY1,FY2,FY3,FY4,FY5 Revenue Growth (%),X%,X%,X%,X%,X% EBIT Margin (%),X%,X%,X%,X%,X% Terminal Growth,X%,,,, WACC,X%,,,,
``**KHÔNG CÓ hàng tiêu đề cột hiển thị các năm dự báo (FY2025E, FY2026E, v.v.), người dùng không thể biết giá trị giả định nào tương ứng với năm nào. Hàng này là BẮT BUỘC.**Sau đó, tạo cột hợp nhất (thường là cột tiếp theo bên phải) sử dụng công thức INDEX để lấy từ khối kịch bản đã chọn dựa trên bộ chọn trường hợp. Cột hợp nhất này là cột mà công thức chiếu của bạn tham chiếu.
Quy trình lập kế hoạch hàng đúng`1. Viết TẤT CẢ các tiêu đề và nhãn TRƯỚC:
csv
Row,Content
1,[Company Name] DCF Model
2,Ticker | Date | Year End
4,Case Selector
7,KEY ASSUMPTIONS
26,Assumption headers
27-31,Growth assumptions
...,...
``**2. Viết TẤT CẢ các ngăn chia phần và các hàng trống**3. SAU ĐÓ viết công thức bằng cách sử dụng các vị trí hàng bị khóa**4. Kiểm tra công thức ngay sau khi tạo**Hãy coi nó giống như việc xây dựng:
- Tốt: Đổ móng rồi xây tường (kết cấu ổn định)
- Xấu: Xây tường rồi đổ móng (tường sập)
Phiên bản Excel:
- Tốt: Thêm tiêu đề rồi viết công thức (công thức ổn định)
- Xấu: Viết công thức rồi thêm tiêu đề (ngắt công thức)
Thực hiện bảng độ nhạy chính xác`QUAN TRỌNG: Đây KHÔNG phải là tính năng "Bảng dữ liệu" của Excel. Đây là những lưới đơn giản nơi bạn viết các công thức thông thường bằng openpyxl. Có, điều này có nghĩa là tổng cộng ~75 công thức (mỗi bảng 3 × 25 ô), nhưng điều này đơn giản và bắt buộc.
Dân số có lập trình với công thức:
Mỗi bảng độ nhạy phải được điền đầy đủ các công thức tính toán lại giá cổ phiếu ngụ ý cho mỗi sự kết hợp các giả định. Không sử dụng tính năng Bảng dữ liệu của Excel (nó yêu cầu can thiệp thủ công và không thể tự động hóa thông qua openpyxl).
Phương pháp triển khai - VÍ DỤ CỤ THỂ:`Cấu trúc bảng — lưới 5×5 (kích thước ODD, căn giữa chữ hoa):
Nếu WACC cơ sở của mô hình = 9,0% và mức tăng trưởng đầu cuối cơ sở = 3,0%, hãy xây dựng các trục đối xứng xung quanh các giá trị đó:
`csv WACC vs Terminal Growth, 2.0%, 2.5%, 3.0%, 3.5%, 4.0% 8.0%, [fml], [fml], [fml], [fml], [fml] 8.5%, [fml], [fml], [fml], [fml], [fml] 9.0%, [fml], [fml], [★ ], [fml], [fml] ← middle row = base WACC 9.5%, [fml], [fml], [fml], [fml], [fml] 10.0%, [fml], [fml], [fml], [fml], [fml] ↑ middle col = base terminal g
` ``★ = ô trung tâm. Kết quả công thức của nó PHẢI bằng giá cổ phiếu ngụ ý thực tế của mô hình (từ bản tóm tắt định giá). Áp dụng màu tô màu xanh lam vừa phải (
#BDD7EE
) và phông chữ đậm cho ô này để chữ hoa cơ bản được cố định một cách trực quan.
Quy tắc cho các giá trị trục:
axis_values = [base - 2*step, base - step, base, base + step, base + 2*step] — đối xứng quanh đáy, số lẻ đảm bảo có tâm.
Mẫu công thức - Ô B88 (WACC=8,0%, Tăng trưởng cuối kỳ=2,0%):
Công thức trong B88 sẽ tính toán lại giá ngụ ý bằng cách sử dụng:
- WACC từ tiêu đề hàng:
$A88 ` (8,0%)
- Tăng trưởng đầu cuối từ tiêu đề cột:
B$87(2,0%)
Phương pháp đề xuất: Tham khảo cách tính DCF chính nhưng thay thế các giá trị này.
Cấu trúc công thức mẫu:
=([SUM of PV FCFs using $A88 as discount rate] + [Terminal Value using B$87 as growth rate and $A88 as WACC] - [Net Debt]) / [Shares] ``TUYỆT VỜI - Viết công thức cho MỌI ô trong lưới 5x5 (25 ô mỗi bảng, tổng cộng 75 ô). Sử dụng openpyxl để viết các công thức này theo chương trình trong một vòng lặp. KHÔNG bỏ qua bước này hoặc để lại văn bản giữ chỗ.
Mẫu triển khai Python:
`
# Pseudocode for populating sensitivity table
for row_idx, wacc_value in enumerate(wacc_range):
for col_idx, term_growth_value in enumerate(term_growth_range):
# Build formula that uses wacc_value and term_growth_value
formula = f"=<DCF recalc using \{wacc_value} and \{term_growth_value}"
ws.cell(row=start_row+row_idx, column=start_col+col_idx).value = formula
`
``**Bảng độ nhạy phải hoạt động ngay khi mở mô hình mà không cần người dùng thực hiện các bước thủ công.**`</true_patterns`<common_mistakes
Phần này chứa tất cả các mẫu SAI cần tránh khi xây dựng mô hình DCF.
### SAI: Xấp xỉ Bảng độ nhạy được đơn giản hóa hoặc Văn bản giữ chỗ`**Không sử dụng phép tính gần đúng tuyến tính:**
`
// WRONG - Linear approximation
B97: =B88*(1+(0.096-0.116)) // Assumes linear relationship`// WRONG - Division shortcut
B105: =B88/(1+(E48-0.07)) // Doesn't recalculate full DCF
`
``**Không để lại văn bản giữ chỗ:**
`
// WRONG - Placeholder note
"Note: Use Excel Data Table feature (Data → What-If Analysis → Data Table) to populate sensitivity tables."`// WRONG - Empty cells
[leaving cells blank because "this is complex"]
`
``**Đừng nhầm lẫn thuật ngữ:**
- ❌ "Bảng nhạy cảm cần tính năng Bảng dữ liệu của Excel" (KHÔNG - đó là công cụ Excel cụ thể chúng tôi không thể sử dụng)
- ✅ "Bảng nhạy cảm là những lưới đơn giản với công thức trong mỗi ô" (CÓ - đây là những gì chúng tôi xây dựng)**Tại sao các phím tắt này sai:**
- Công thức xấp xỉ tuyến tính không thực sự tính toán lại DCF - chúng chỉ áp dụng các điều chỉnh toán học đơn giản
- Các mối quan hệ không tuyến tính nên kết quả sẽ không chính xác
- Văn bản giữ chỗ yêu cầu sự can thiệp thủ công của người dùng
- Mô hình không thể sử dụng được ngay khi được bàn giao
- Không chuyên nghiệp hoặc không sẵn sàng cho khách hàng
- Ô trống = phân phối không đầy đủ`**Giải thích chung cho việc TỪ CHỐI:**
"Viết hơn 75 công thức có vẻ phức tạp nên tôi sẽ để lại ghi chú để người dùng hoàn thành thủ công."`**Thực tế:** Viết 75 công thức thật đơn giản khi bạn sử dụng vòng lặp trong Python với openpyxl. Mỗi công thức đều tuân theo cùng một mẫu - chỉ cần thay thế các giá trị hàng/cột. Đây là một phần bắt buộc của sản phẩm bàn giao.
**Thay vào đó:** Điền vào mọi ô độ nhạy bằng các công thức tính toán lại DCF đầy đủ cho tổ hợp giả định cụ thể đó
### SAI: Thiếu chú thích ô`**Đừng làm điều này:**
- Tạo tất cả các đầu vào được mã hóa cứng mà không cần bình luận
- Hãy nghĩ "Tôi sẽ thêm chúng sau"
- Viết "TODO: thêm nguồn"
- Để lại đầu vào màu xanh mà không có tài liệu`**Tại sao sai:**
- Không thể xác minh dữ liệu đến từ đâu
- Không đạt yêu cầu kỹ năng xlsx
- Chưa sẵn sàng cho việc kiểm toán
- Tốn thời gian sửa chữa sau này`**Thay vào đó:** Thêm nhận xét ô NHƯ MỖI giá trị được mã hóa cứng được tạo
### SAI: Tắt tham chiếu hàng công thức`**Triệu chứng:**
Phần FCF tham chiếu các hàng giả định sai:
`D&A: =E29*$E$34 // Should be $E$21, but referencing wrong row
`CapEx: =E29*$E$41 // Should be $E$22, but row shifted
``**Tại sao điều này xảy ra:**
1. Công thức viết trước
2. Sau đó chèn tiêu đề
3. Tất cả các tham chiếu hàng đã được dịch chuyển
4. Bây giờ công thức trỏ đến ô sai → #REF! lỗi`**Thay vào đó:** Khóa bố cục hàng TRƯỚC, sau đó viết công thức
### SAI: Một hàng cho mỗi giả định trong các kịch bản`**Đừng cấu trúc các giả định như thế này:**
`
`csv
Assumption,Bear,Base,Bull
Revenue Growth FY1,10%,13%,16%
Revenue Growth FY2,9%,12%,15%
`
Cách bố trí theo chiều dọc này khiến khó có thể nhìn thấy sự tiến triển qua các năm trong mỗi kịch bản.
**Tại sao sai:**
- Gây khó khăn cho việc xem xét các giả định phát triển qua các năm trong mỗi kịch bản
- Khó so sánh các giả định về kịch bản trong toàn bộ thời kỳ dự báo
- Ít trực quan hơn để xem xét logic kịch bản`**Thay vào đó:**
- Tạo các khối riêng biệt cho từng kịch bản (Bear, Base, Bull)
- Trong mỗi khối, trình bày các giả định theo chiều ngang qua các năm dự báo
- Điều này làm cho các giả định của từng kịch bản trở nên dễ dàng hơn khi được xem xét dưới dạng một tập hợp gắn kết
### SAI: Không có viền`**Không cung cấp mô hình không có biên giới:**
- Không có phân định phần
- Tất cả các tế bào hòa quyện vào nhau
- Khó đọc và thiếu chuyên nghiệp`**Tại sao sai:**
- Chưa sẵn sàng cho khách hàng
- Khó định hướng
- Có vẻ nghiệp dư`**Thay vào đó:** Thêm đường viền xung quanh tất cả các phần chính
### SAI: Sai màu chữ hoặc không phân biệt màu chữ`**Đừng làm điều này:**
- Toàn bộ văn bản có màu đen
- Chỉ sử dụng màu tô (không thay đổi màu phông chữ)
- Trộn lẫn các ô có màu xanh và đen`**Tại sao sai:**
- Không phân biệt được đầu vào với công thức
- Việc kiểm toán trở nên bất khả thi
- Vi phạm yêu cầu kỹ năng xlsx`**Thay vào đó:** Văn bản màu xanh lam cho TẤT CẢ đầu vào được mã hóa cứng, văn bản màu đen cho TẤT CẢ công thức, màu xanh lục cho liên kết trang tính
### SAI: Chi phí hoạt động dựa trên lợi nhuận gộp`**Đừng làm điều này:**
`S&M: =E33*0.15 // E33 = Gross Profit (WRONG)
``**Tại sao sai:**
- Chi phí hoạt động tính theo doanh thu, không phải lợi nhuận gộp
- Tạo ra sự tăng trưởng lợi nhuận không thực tế
- Không phải cách doanh nghiệp thực sự vận hành`**Thay vào đó:**
`S&M: =E29*0.15 // E29 = Revenue (CORRECT)
``###TỔNG HỢP 5 LỖI HÀNG ĐẦU
1. **Tắt tham chiếu hàng công thức** → Xác định TẤT CẢ vị trí hàng TRƯỚC KHI viết công thức
2. **Thiếu nhận xét ô** → Thêm nhận xét NHƯ các ô được tạo chứ không phải ở cuối
3. **Bảng độ nhạy được đơn giản hóa** → Điền vào tất cả các ô có công thức tính toán lại DCF đầy đủ, không phải giá trị gần đúng
4. **Tham chiếu khối kịch bản sai** → Đảm bảo công thức IF lấy từ các khối Bear/Base/Bull chính xác
5. **Không viền** → Thêm đường viền phần chuyên nghiệp để có giao diện sẵn sàng cho khách hàng
Ngoài ra, hãy lưu ý những lỗi sau:
### Lỗi tính toán WACC
- Kết hợp giá trị sổ sách và giá trị thị trường trong cơ cấu vốn
- Sử dụng beta vốn chủ sở hữu thay vì beta tài sản/không có đòn bẩy không chính xác
- Áp dụng sai thuế suất vào chi phí nợ
- Lãi suất phi rủi ro không chính xác (phải sử dụng Kho bạc 10Y hiện tại)
- Không điều chỉnh được nợ ròng so với vị thế tiền mặt ròng
### Sai lầm giả định tăng trưởng
- Tăng trưởng cuối cùng > WACC (tạo ra giá trị vô hạn)
- Tốc độ tăng trưởng dự kiến không nhất quán với hiệu suất lịch sử
- Bỏ qua những hạn chế tăng trưởng của ngành
- Tăng trưởng doanh thu không phù hợp với kinh tế đơn vị
- Mở rộng biên lợi nhuận mà không cần biện minh cho hoạt động### Lỗi giá trị đầu cuối
- Sử dụng sai phương pháp tăng trưởng (vĩnh viễn so với bội số thoát)
- Giá trị cuối cùng >80% giá trị doanh nghiệp (cho thấy sự phụ thuộc quá mức)
- Biên độ đầu cuối không nhất quán với các giả định trạng thái ổn định
- Thời gian chiết khấu sai cho giá trị đầu cuối
### Lỗi dự báo dòng tiền
- Chi phí hoạt động dựa trên lợi nhuận gộp thay vì doanh thu
- Tỷ lệ phần trăm D&A/CapEx không phù hợp với mô hình kinh doanh
- Thay đổi vốn lưu động không được tính toán đúng
- Thuế suất không thống nhất giữa các năm
- Lỗi tính toán NOPAT`**Những lỗi này là phổ biến nhất. Đọc lại phần này trước khi bắt đầu bất kỳ bản dựng DCF nào.**`</common_mistakes
## Tạo tệp Excel`**Kỹ năng này sử dụng kỹ năng
`xlsx
` cho tất cả các thao tác trên bảng tính.** Kỹ năng xlsx cung cấp:
- Quy tắc xây dựng công thức chuẩn hóa
- Quy ước định dạng số
- Tính toán lại công thức tự động thông qua tập lệnh
`recalc.py
- Kiểm tra và xác nhận lỗi toàn diện
Tất cả các tệp Excel được tạo bằng kỹ năng này phải tuân theo các yêu cầu về kỹ năng xlsx, bao gồm cả lỗi công thức bằng 0 và tính toán lại thích hợp.
## Phiếu tự đánh giá chất lượng
Mọi mô hình DCF phải tối đa hóa:
1. **Giả định về doanh thu và tỷ suất lợi nhuận thực tế** dựa trên hiệu suất lịch sử
2. **Tính toán chi phí vốn phù hợp** với phương pháp CAPM phù hợp
3. **Phân tích độ nhạy toàn diện** hiển thị phạm vi định giá
4. **Xóa tính toán giá trị đầu cuối** với cơ sở hỗ trợ
5. **Cấu trúc mô hình chuyên nghiệp** cho phép phân tích kịch bản
6. **Tài liệu minh bạch** về tất cả các giả định chính
## Yêu cầu đầu vào
### Đầu vào bắt buộc tối thiểu
1. **Mã nhận dạng công ty**: Mã cổ phiếu hoặc tên công ty
2. **Giả định tăng trưởng**: Tỷ lệ tăng trưởng doanh thu trong thời kỳ dự báo (hoặc "sử dụng sự đồng thuận")
3. **Thông số tùy chọn**:
- Thời gian dự kiến (mặc định: 5 năm)
- Các trường hợp kịch bản (Giả định về tỷ lệ ký quỹ và tăng trưởng Bear/Cơ sở/Bull)
- Tốc độ tăng trưởng cuối cùng (mặc định: 2,5-3,0%)
- Đầu vào WACC cụ thể nếu không sử dụng CAPM
## Cấu trúc mô hình Excel
### Kiến trúc trang tính
Tạo **hai tờ**:
1. **DCF** - Mô hình định giá chính với phân tích độ nhạy ở phía dưới
2. **WACC** - Tính giá vốn`**TUYỆT VỜI**: Bảng độ nhạy nằm ở DƯỚI của trang DCF (không phải trên một trang riêng). Điều này giữ tất cả các kết quả định giá cùng nhau.
### Tính lại công thức (BẮT BUỘC)
Sau khi tạo hoặc sửa đổi mô hình Excel, **tính toán lại tất cả các công thức** bằng cách sử dụng tập lệnh
`recalc.py
` từ kỹ năng
`excel-author
:
``` bash
Python recalc.py [path_to_excel_file] [timeout_seconds]
`
``Ví dụ:
`
`bash
Python recalc.py AAPL_DCF_Model_2025-10-12.xlsx 30
`
``Kịch bản sẽ:
- Tính toán lại tất cả các công thức trong tất cả các sheet bằng LibreOffice
- Quét TẤT CẢ các ô để tìm lỗi Excel (#REF!, #DIV/0!, #VALUE!, #NAME?, #NULL!, #NUM!, #N/A)
- Trả về JSON chi tiết với vị trí và số lượng lỗi`**Định dạng đầu ra dự kiến:**
`
``` json
{
"status": "success", // or "errors_found"
"total_errors": 0, // Total error count
"total_formulas": 42, // Number of formulas in file
"error_summary": \{} // Only present if errors found
}
`
``**Nếu tìm thấy lỗi**, đầu ra sẽ bao gồm các chi tiết:
`
`JSON
{
"status": "errors_found",
"total_errors": 2,
"total_formulas": 42,
"error_summary": {
"#REF!": {
"count": 2,
"locations": ["DCF!B25", "DCF!C25"]
}
}
}
`
``**Sửa tất cả lỗi** và chạy lại recalc.py cho đến khi trạng thái "thành công" trước khi phân phối mô hình.
### Tiêu chuẩn định dạng`**QUAN TRỌNG**: Thực hiện theo kỹ năng xlsx để biết các quy tắc xây dựng công thức và quy ước định dạng số. Kỹ năng DCF bổ sung thêm các tiêu chuẩn trình bày trực quan cụ thể.
**Phối hợp màu - Hai lớp**:
**Lớp 1: Màu phông chữ (BẮT BUỘC từ kỹ năng xlsx)**
- **Văn bản màu xanh lam (RGB: 0,0,255)**: TẤT CẢ thông tin đầu vào được mã hóa cứng (giá cổ phiếu, cổ phiếu, dữ liệu lịch sử, giả định)
- **Văn bản màu đen (RGB: 0,0,0)**: TẤT CẢ các công thức và phép tính
- **Văn bản màu xanh lá cây (RGB: 0,128,0)**: Liên kết đến các trang tính khác (tham chiếu trang tính WACC)**Lớp 2: Tô màu - Bảng màu Xanh lam/Xám chuyên nghiệp (Mặc định trừ khi người dùng chỉ định khác)**
- **Giữ nó ở mức tối thiểu** — chỉ sử dụng màu xanh lam và xám để tô màu. KHÔNG sử dụng màu xanh lá cây, màu vàng, cam hoặc nhiều màu nhấn. Một người mẫu có quá nhiều màu sắc sẽ trông nghiệp dư.
- **Bảng màu tô mặc định:**
- **Tiêu đề phần**: Nền màu xanh đậm (RGB: 31,78,121 /
#1F4E79
) với văn bản in đậm màu trắng
- **Tiêu đề phụ/tiêu đề cột**: Nền màu xanh nhạt (RGB: 217,225,242 /
#D9E1F2
) với chữ in đậm màu đen
- **Ô đầu vào**: Nền màu xám nhạt (RGB: 242.242.242 /
#F2F2F2
) với phông chữ màu xanh lam — hoặc chỉ màu trắng với phông chữ màu xanh lam nếu bạn muốn tối giản tối đa
- **Ô tính toán**: Nền trắng chữ đen
- **Hàng đầu ra/tóm tắt** (giá trị trên mỗi lượt chia sẻ, EV, v.v.): Nền màu xanh lam trung bình (RGB: 189.215.238 /
#BDD7EE
) với phông chữ đậm màu đen
- **Chỉ vậy thôi — 3 màu xanh lam + 1 màu xám + trắng.** Chống lại mong muốn thêm nhiều hơn nữa.
- Các mẫu do người dùng cung cấp hoặc tùy chọn màu sắc rõ ràng LUÔN LUÔN ghi đè các giá trị mặc định này.
**Cách các lớp hoạt động cùng nhau:**
- Ô đầu vào: Phông chữ màu xanh + màu xám nhạt = "Đầu vào được mã hóa cứng"
- Ô công thức: Phông chữ đen + nền trắng = "Giá trị tính toán"
- Link trang tính: Phông chữ xanh + nền trắng = "Tham khảo từ trang khác"
- Đầu ra phím: Phông chữ đậm màu đen + màu xanh vừa phải = "Đây là câu trả lời"`**Màu phông chữ cho bạn biết nó là gì (đầu vào/công thức/liên kết). Màu tô cho bạn biết bạn đang ở đâu (tiêu đề/dữ liệu/đầu ra).**
### Tiêu chuẩn Biên giới (BẮT BUỘC để có vẻ ngoài chuyên nghiệp)
**Đường viền dày** (1,5pt) xung quanh các phần chính:
- Phần ĐẦU VÀO CHÍNH
- Phần GIẢ ĐỊNH DỰ ÁN
- Phần DỰ BÁO DÒNG TIỀN 5 NĂM
- Phần GIÁ TRỊ CUỐI CÙNG
- Phần TÓM TẮT ĐỊNH GIÁ
- Mỗi bảng PHÂN TÍCH ĐỘ NHẠY`**Đường viền trung bình** (1pt) giữa các phần phụ:
- Chi tiết công ty so với hiệu suất lịch sử
- Giả định tăng trưởng so với tỷ suất lợi nhuận EBIT và thông số FCF`**Đường viền mỏng** (0,5pt) xung quanh bảng dữ liệu:
- Bảng giả định kịch bản (Bear | Base | Bull | Selected)
- Ma trận tài chính lịch sử và dự kiến`**Không có đường viền:** Các ô riêng lẻ trong bảng (giữ sạch sẽ, có thể quét được)
**Biên giới là bắt buộc** - các mô hình không có biên giới chuyên nghiệp sẽ không sẵn sàng cho khách hàng.
**Định dạng số** (tuân theo tiêu chuẩn kỹ năng xlsx):
- **Năm**: Định dạng dưới dạng chuỗi văn bản (ví dụ: "2024" chứ không phải "2.024")
- **Tỷ lệ phần trăm**:
`0.0%
` (một chữ số thập phân)
- **Tiền tệ**:
$#,##0
` cho hàng triệu;
$#,##0.00
` cho mỗi lượt chia sẻ - LUÔN chỉ định đơn vị trong tiêu đề ("Doanh thu ($mm)")
- **Số không**: Sử dụng định dạng số để tạo tất cả số 0 "-" (ví dụ:
$#,##0;($#,##0);-
)
- **Số lớn**:
#,##0
` có dấu phân cách hàng nghìn
- **Số âm**:
(#,##0)
` trong ngoặc đơn (KHÔNG phải dấu trừ)
**Nhận xét ô (BẮT BUỘC đối với tất cả đầu vào được mã hóa cứng)**:
Theo kỹ năng xlsx, TẤT CẢ các giá trị được mã hóa cứng phải có nhận xét ô ghi lại nguồn. Định dạng: "Nguồn: [Hệ thống/Tài liệu], [Ngày], [Tham khảo], [URL nếu có]"`**TUYỆT VỜI**: Thêm nhận xét NHƯ CÁC Ô ĐƯỢC TẠO. Đừng trì hoãn đến cùng.
### Cấu trúc chi tiết của bảng DCF`**Phần 1: Tiêu đề**
`
`csv
Row,Content
1,[Company Name] DCF Model
2,Ticker: [XXX] | Date: [Date] | Year End: [FYE]
3,Blank
4,Case Selector Cell (1=Bear 2=Base 3=Bull)
5,Case Name Display (formula: =IF([Selector]=1"Bear"IF([Selector]=2"Base""Bull")))
`
``**Phần 2: Dữ liệu thị trường (KHÔNG phụ thuộc vào từng trường hợp)**
`
`csv
Item,Value
Current Stock Price,$XX.XX
Shares Outstanding (M),XX.X
Market Cap ($M),[Formula]
Net Debt ($M),XXX [or Net Cash if negative]
`
``**Phần 3: Giả định về kịch bản DCF**
Tạo các khối giả định riêng biệt cho từng kịch bản (Giảm, Cơ sở, Tăng) với các giả định dành riêng cho DCF (% Tăng trưởng doanh thu, Tỷ suất lợi nhuận EBIT %, Thuế suất %, D&A % doanh thu, CapEx % doanh thu, Thay đổi NWC % của ΔRev, Tốc độ tăng trưởng cuối kỳ, WACC) được trình bày theo chiều ngang trong các năm dự báo. Mỗi khối phải bao gồm tiêu đề phần, hàng tiêu đề cột hiển thị các năm dự báo (FY1, FY2, v.v.) và các hàng dữ liệu. Xem phần
<correct_patterns
` "Cấu trúc bảng giả định chính xác" để biết bố cục chính xác.
**Phần 4: Lịch sử tài chính và dự kiến**`**Tham chiếu cột hợp nhất (ví dụ: "Trường hợp đã chọn") lấy từ các khối kịch bản**, không phân tán các công thức IF trong mỗi hàng chiếu.
`csv
Income Statement ($M),2020A,2021A,2022A,2023A,2024E,2025E,2026E
Revenue,XXX,XXX,XXX,XXX,[=E29*(1+$E$10)],[=F29*(1+$E$11)],[=G29*(1+$E$12)]
% growth,XX%,XX%,XX%,XX%,[=E29/D29-1],[=F29/E29-1],[=G29/F29-1]
,,,,,,
Gross Profit,XXX,XXX,XXX,XXX,[=E29*E33],[=F29*F33],[=G29*G33]
% margin,XX%,XX%,XX%,XX%,[=E33/E29],[=F33/F29],[=G33/G29]
,,,,,,
Operating Expenses:,,,,,,,
S&M,XXX,XXX,XXX,XXX,[=E29*0.15],[=F29*0.14],[=G29*0.13]
R&D,XXX,XXX,XXX,XXX,[=E29*0.12],[=F29*0.11],[=G29*0.10]
G&A,XXX,XXX,XXX,XXX,[=E29*0.08],[=F29*0.07],[=G29*0.07]
Total OpEx,XXX,XXX,XXX,XXX,[=E36+E37+E38],[=F36+F37+F38],[=G36+G37+G38]
,,,,,,
EBIT,XXX,XXX,XXX,XXX,[=E33-E39],[=F33-F39],[=G33-G39]
% margin,XX%,XX%,XX%,XX%,[=E41/E29],[=F41/F29],[=G41/G29]
,,,,,,
Taxes,(XX),(XX),(XX),(XX),[=E41*$E$24],[=F41*$E$24],[=G41*$E$24]
Tax rate,XX%,XX%,XX%,XX%,[=E43/E41],[=F43/F41],[=G43/G41]
,,,,,,
NOPAT,XXX,XXX,XXX,XXX,[=E41-E43],[=F41-F43],[=G41-G43]
`
``**Mẫu công thức chính**:
- Tăng trưởng doanh thu:
=E29*(1+$E$10)
` trong đó $E$10 là cột hợp nhất cho mức tăng trưởng của Năm 1
- KHÔNG:
=E29*(1+IF($B$6=1,$B$10,IF($B$6=2,$C$10,$D$10)))
``Cách tiếp cận này sạch hơn, dễ kiểm tra hơn và ngăn ngừa lỗi công thức bằng cách tập trung logic kịch bản.
**Phần 5: Xây dựng dòng tiền miễn phí**`**TUYỆT VỜI**: Xác minh các tham chiếu hàng trỏ đến các hàng giả định ĐÚNG. Kiểm tra công thức ngay sau khi tạo.
`csv
Cash Flow ($M),2020A,2021A,2022A,2023A,2024E,2025E,2026E
NOPAT,XXX,XXX,XXX,XXX,[=E45],[=F45],[=G45]
(+) D&A,XXX,XXX,XXX,XXX,[=E29*$E$21],[=F29*$E$21],[=G29*$E$21]
% of Rev,XX%,XX%,XX%,XX%,[=E58/E29],[=F58/F29],[=G58/G29]
(-) CapEx,(XX),(XX),(XX),(XX),[=E29*$E$22],[=F29*$E$22],[=G29*$E$22]
% of Rev,XX%,XX%,XX%,XX%,[=E60/E29],[=F60/F29],[=G60/G29]
(-) Δ NWC,(XX),(XX),(XX),(XX),[=(E29-D29)*$E$23],[=(F29-E29)*$E$23],[=(G29-F29)*$E$23]
% of Δ Rev,XX%,XX%,XX%,XX%,[=E62/(E29-D29)],[=F62/(F29-E29)],[=G62/(G29-F29)]
,,,,,,
Unlevered FCF,XXX,XXX,XXX,XXX,[=E57+E58-E60-E62],[=F57+F58-F60-F62],[=G57+G58-G60-G62]
`
`**Ví dụ tham khảo hàng** (dựa trên quy hoạch bố cục):
- $E$21 = Giả định % D&A (cột tổng hợp, hàng 21)
- $E$22 = Giả định % CapEx (cột tổng hợp, hàng 22)
- $E$23 = Giả định % NWC (cột tổng hợp, hàng 23)
- E29 = Doanh thu trong năm (hàng 29)
- E45 = NOPAT cho năm (hàng 45)
**Trước khi viết công thức**: Xác nhận các số hàng này khớp với bố cục thực tế. Kiểm tra một cột, sau đó sao chép qua.
**Phần 6: Chiết khấu và Định giá**
`
`csv
DCF Valuation,2024E,2025E,2026E,2027E,2028E,Terminal
Unlevered FCF ($M),XXX,XXX,XXX,XXX,XXX,
Period,0.5,1.5,2.5,3.5,4.5,
Discount Factor,0.XX,0.XX,0.XX,0.XX,0.XX,
PV of FCF ($M),XXX,XXX,XXX,XXX,XXX,
,,,,,,
Terminal FCF ($M),,,,,,,XXX
Terminal Value ($M),,,,,,,XXX
PV Terminal Value ($M),,,,,,,XXX
,,,,,,
Valuation Summary ($M),,,,,,
Sum of PV FCFs,XXX,,,,,
PV Terminal Value,XXX,,,,,
Enterprise Value,XXX,,,,,
(-) Net Debt,(XX),,,,,
Equity Value,XXX,,,,,
,,,,,,
Shares Outstanding (M),XX.X,,,,,
IMPLIED PRICE PER SHARE,$XX.XX,,,,,
Current Stock Price,$XX.XX,,,,,
Implied Upside/(Downside),XX%,,,,,
`
### Cấu trúc tấm WACC
`csv
COST OF EQUITY CALCULATION,,
Risk-Free Rate (10Y Treasury),X.XX%,[Yellow input]
Beta (5Y monthly),X.XX,[Yellow input]
Equity Risk Premium,X.XX%,[Yellow input]
Cost of Equity,X.XX%,[Calculated blue]
,,
COST OF DEBT CALCULATION,,
Credit Rating,AA-,[Yellow input]
Pre-Tax Cost of Debt,X.XX%,[Yellow input]
Tax Rate,XX.X%,[Link to DCF sheet]
After-Tax Cost of Debt,X.XX%,[Calculated blue]
,,
CAPITAL STRUCTURE,,
Current Stock Price,$XX.XX,[Link to DCF]
Shares Outstanding (M),XX.X,[Link to DCF]
Market CAPItalization ($M),"X,XXX",[Calculated]
,,
Total Debt ($M),XXX,[Yellow input]
Cash & Equivalents ($M),XXX,[Yellow input]
Net Debt ($M),XXX,[Calculated]
,,
Enterprise Value ($M),"X,XXX",[Calculated]
,,
WACC CALCULATION,Weight,Cost,Contribution
Equity,XX.X%,X.X%,X.XX%
Debt,XX.X%,X.X%,X.XX%
,,
WEIGHTED AVERAGE COST OF CAPITAL,X.XX%,[Green output]
`
``**Các công thức WACC chính:**
`
Market Cap = Price × Shares
Net Debt = Total Debt - Cash
Enterprise Value = Market Cap + Net Debt
Equity Weight = Market Cap / EV
Debt Weight = Net Debt / EV
WACC = (Cost of Equity × Equity Weight) + (After-tax Cost of Debt × Debt Weight)
`
### Phân tích độ nhạy (Dưới cùng của tờ DCF)
** NHẮC NHỞ VỀ THUẬT NGỮ**: "Bảng độ nhạy" = lưới 2D đơn giản với tiêu đề hàng, tiêu đề cột và công thức trong mỗi ô dữ liệu. KHÔNG phải tính năng "Bảng dữ liệu" của Excel (Dữ liệu → Phân tích điều gì xảy ra → Bảng dữ liệu). Bạn sẽ sử dụng openpyxl để viết các công thức Excel thông thường vào từng ô.
**Vị trí**: Hàng 87+ trên trang DCF (KHÔNG phải trang riêng)
**Ba bảng độ nhạy, xếp chồng lên nhau theo chiều dọc:**
1. **WACC so với Tăng trưởng đầu cuối** (hàng 87-100) - Lưới 5x5 = 25 ô có công thức
2. **Tăng trưởng doanh thu so với tỷ suất lợi nhuận EBIT** (hàng 102-115) - Lưới 5x5 = 25 ô có công thức
3. **Tỷ lệ Beta so với không có rủi ro** (hàng 117-130) - Lưới 5x5 = 25 ô có công thức`**Tổng số công thức cần viết: 75** (điều này là bắt buộc, không bắt buộc)
**TUYỆT VỜI**: Tất cả các ô trong bảng độ nhạy phải được điền theo chương trình bằng các công thức sử dụng openpyxl. KHÔNG sử dụng các phím tắt gần đúng tuyến tính. KHÔNG để lại văn bản giữ chỗ hoặc ghi chú về các bước thủ công. KHÔNG hợp lý hóa việc để trống các ô vì "nó phức tạp" - hãy sử dụng vòng lặp Python để tạo công thức.
**Thiết lập bảng:**
1. Tạo cấu trúc bảng với tiêu đề hàng/cột (các giá trị giả định cần kiểm tra)
2. Điền vào MỌI ô dữ liệu bằng công thức:
- Sử dụng giá trị tiêu đề hàng (ví dụ: WACC = 9,0%)
- Sử dụng giá trị tiêu đề cột (ví dụ: Tăng trưởng đầu cuối = 3,0%)
- Tính toán lại toàn bộ DCF với các giả định cụ thể đó
- Trả về giá cổ phiếu ngụ ý cho kịch bản đó
3. Tất cả các ô phải chứa công thức làm việc khi được phân phối
4. Định dạng ô với định dạng có điều kiện: Thang màu xanh cho giá trị cao hơn, thang màu đỏ cho giá trị thấp hơn
5. In đậm ô chữ cơ sở
6. Để trống 1-2 hàng giữa các bảng`**Không cần can thiệp thủ công** - bảng độ nhạy phải hoạt động đầy đủ khi người dùng mở tệp.
## Triển khai bộ chọn trường hợp`**Khung ba trường hợp:**
### Vỏ gấu
- Tăng trưởng doanh thu thận trọng (mức thấp trong phạm vi lịch sử)
- Nén lề hoặc không mở rộng
- WACC cao hơn (tăng phí bảo hiểm rủi ro)
- Tốc độ tăng trưởng cuối cùng thấp hơn
- Giả định CapEx cao hơn
### Vỏ cơ sở
- Đồng thuận hoặc hướng dẫn quản lý tăng trưởng doanh thu
- Mở rộng biên độ vừa phải dựa trên đòn bẩy hoạt động
- WACC ngụ ý theo thị trường hiện tại
- Tăng trưởng cuối cùng phù hợp với GDP (2,5-3,0%)
- Giả định CapEx tiêu chuẩn
### Trường hợp bò
- Tăng trưởng doanh thu lạc quan (cao hơn dự báo)
- Mở rộng biên độ đáng kể
- WACC thấp hơn (giảm phí bảo hiểm rủi ro)
- Tăng trưởng cuối kỳ cao hơn (3,5-5,0%)
- Giảm cường độ CapEx`**Thực hiện công thức:**`**KHÔNG sử dụng các công thức IF lồng nhau rải rác khắp nơi.** Thay vào đó, hãy tạo một cột hợp nhất sử dụng các công thức INDEX hoặc OFFSET để lấy từ khối kịch bản thích hợp.
**Mẫu đề xuất (sử dụng INDEX):**
=INDEX(B10:D10, 1, $B$6)
` trong đó
`B10:D10
` = Giá trị Bear/Base/Bull,
`1
` = bù hàng,
$B$6
` = ô chọn trường hợp (1, 2 hoặc 3)
**Sau đó tham chiếu cột hợp nhất** trong tất cả các phép chiếu:
`Revenue Year 1: =D29*(1+$E$10)
` trong đó $E$10 là giá trị cột hợp nhất cho mức tăng trưởng của Năm 1.
Cách tiếp cận này tập trung hóa logic kịch bản, giúp việc kiểm tra và bảo trì mô hình dễ dàng hơn.
## Cấu trúc sản phẩm bàn giao`**Đặt tên tệp**:
[Ticker]_DCF_Model_[Date].xlsx
``**Hai tờ**:
1. **DCF** - Mô hình hoàn chỉnh với các trường hợp Bear/Base/Bull + ba bảng độ nhạy ở dưới cùng (WACC so với Tăng trưởng cuối kỳ, Tăng trưởng doanh thu so với Biên EBIT, Beta so với Tỷ lệ phi rủi ro)
2. **WACC** - Tính giá vốn`**Các tính năng chính**: Bộ chọn trường hợp (1/2/3), cột hợp nhất với các công thức INDEX/OFFSET, các ô được mã hóa màu, nhận xét ô trên tất cả các đầu vào, đường viền chuyên nghiệp
## Các phương pháp hay nhất###Xây dựng mô hình
1. **Xây dựng tăng dần**: Hoàn thành từng phần trước khi chuyển sang phần tiếp theo
2. **Test as build**: Nhập số mẫu để kiểm chứng công thức
3. **Sử dụng cấu trúc nhất quán**: Các phép tính tương tự tuân theo các mẫu tương tự
4. **Nhận xét các công thức phức tạp**: Thêm ghi chú cho các phép tính bất thường
5. **Séc tích hợp**: Kiểm tra tổng và kiểm tra số dư nếu có
### Tài liệu
1. **Ghi lại tất cả các giả định**: Giải thích lý do đằng sau các thông tin đầu vào chính
2. **Trích dẫn nguồn dữ liệu**: Lưu ý nguồn gốc của từng điểm dữ liệu
3. **Giải thích phương pháp**: Mô tả mọi phương pháp tiếp cận không chuẩn
4. **Gắn cờ cho sự không chắc chắn**: Đánh dấu các khu vực có tầm nhìn hạn chế
### Kiểm soát chất lượng
1. **Tính toán kiểm tra chéo**: Xác minh toán học bằng nhiều cách
2. **Giả định stress test**: Chạy độ nhạy để đảm bảo mô hình mạnh mẽ
3. **Đánh giá ngang hàng**: Nhờ người khác kiểm tra công thức
4. **Kiểm soát phiên bản**: Lưu phiên bản theo tiến độ công việc
## Các biến thể phổ biến
### Công ty công nghệ tăng trưởng cao
- Thời gian chiếu dài hơn (7-10 năm)
- Tốc độ tăng trưởng ban đầu cao hơn (20-30%)
- Biên độ mở rộng đáng kể theo thời gian
- WACC cao hơn (12-15%)
- Mô hình kinh tế đơn vị (người dùng, ARPU, v.v.)
### Các công ty trưởng thành/ổn định
- Thời gian chiếu ngắn hơn (3-5 năm)
- Tốc độ tăng trưởng khiêm tốn (GDP +1-3%)
- Biên độ ổn định
- WACC thấp hơn (7-9%)
- Tập trung vào việc tạo ra tiền mặt và phân bổ vốn
### Công ty có tính chu kỳ
- Mô hình xuyên suốt chu kỳ kinh tế
- Bình thường hóa lợi nhuận ở giữa chu kỳ
- Xem xét kịch bản đáy và đỉnh
- Điều chỉnh beta theo chu kỳ
### Công ty đa phân khúc
- DCF riêng cho từng đơn vị kinh doanh
- Tốc độ tăng trưởng và tỷ suất lợi nhuận khác nhau theo từng phân khúc
- Định giá tổng hợp các bộ phận
- Xem xét sự phối hợp
## Khắc phục sự cố`**Nếu bạn gặp lỗi hoặc kết quả không hợp lý, hãy đọc [TROUBLESHOOTING.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/optional-skills/finance/dcf-model/TROUBLESHOOTING.md) để biết hướng dẫn gỡ lỗi chi tiết.**
## Tích hợp quy trình làm việc
### Khi bắt đầu xây dựng DCF
1. **Thu thập dữ liệu thị trường**:
- Kiểm tra các máy chủ MCP có sẵn để biết dữ liệu thị trường hiện tại
- Sử dụng tìm kiếm/tìm nạp trên web để biết giá cổ phiếu, phiên bản beta và các số liệu thị trường khác
- Yêu cầu từ người dùng nếu cần dữ liệu cụ thể
2. **Thu thập tài chính lịch sử**:
- Kiểm tra các máy chủ MCP có sẵn (Daloopa, v.v.)
- Yêu cầu từ người dùng nếu không có sẵn qua MCP
- Trích xuất thủ công từ 10-Ks nếu cần thiết
3. **Bắt đầu xây dựng mô hình** sử dụng phương pháp DCF được nêu chi tiết trong kỹ năng này
### Trong quá trình xây dựng mô hình
1. **Xây dựng mô hình Excel** sử dụng openpyxl với các công thức (không phải giá trị được mã hóa cứng)
2. **Tuân theo các quy ước về kỹ năng xlsx** để xây dựng và định dạng công thức
3. **Chỉ áp dụng màu tô nếu người dùng yêu cầu** hoặc nếu có cung cấp nguyên tắc thương hiệu cụ thể
### Trước khi giao mẫu (BẮT BUỘC)
1. **Xác minh cấu trúc**:
- Các khối kịch bản cho Bear/Base/Bull với các giả định qua các năm dự báo
- Chức năng chọn trường hợp với các công thức tham chiếu các khối kịch bản chính xác
- Bảng độ nhạy ở cuối tờ DCF (không phải tờ riêng)
- Màu phông chữ: Đầu vào màu xanh lam, công thức màu đen, liên kết trang tính màu xanh lá cây
- Nhận xét ô về TẤT CẢ các đầu vào được mã hóa cứng
- Đường viền chuyên nghiệp xung quanh các mặt cắt lớn
2. **Tính lại công thức**: Chạy
`Python recalc.py model.xlsx 30
3. **Kiểm tra đầu ra**:
- Nếu
`status
` là
"success"
` → Tiếp tục bước 4
- Nếu
`status
` là
"errors_found"
` → Kiểm tra
`error_summary
` và đọc [TROUBLESHOOTING.md](https://GitHub.com/NousResearch/Hermes-agent/blob/main/optional-skills/finance/dcf-model/TROUBLESHOOTING.md) để biết hướng dẫn gỡ lỗi
4. **Sửa lỗi và chạy lại recalc.py** cho đến khi trạng thái "thành công"
5. **Công thức kiểm tra tại chỗ**:
- Kiểm tra một công thức FCF - nó có tham chiếu đến các hàng giả định chính xác không?
- Thay đổi bộ chọn trường hợp - cột hợp nhất có cập nhật đúng cách không?
- Xác minh cột hợp nhất tham chiếu công thức doanh thu (không phải công thức IF lồng nhau)
6. **Giao mẫu**
### Nguồn dữ liệu có sẵn
- **Máy chủ MCP**: Nếu được định cấu hình (Daloopa cho tài chính lịch sử)
- **Tìm kiếm/tìm nạp trên web**: Để biết giá cổ phiếu hiện tại, phiên bản beta và dữ liệu thị trường
- **Dữ liệu do người dùng cung cấp**: Lịch sử tài chính, ước tính đồng thuận
- **Trích xuất thủ công**: Hồ sơ SEC EDGAR làm dự phòng
## Danh sách kiểm tra đầu ra cuối cùng
Trước khi cung cấp mô hình DCF:
**Bắt buộc:**
- Chạy
`Python recalc.py model.xlsx 30
` cho đến khi trạng thái “thành công” (không có lỗi công thức)
- Hai tờ: DCF (có độ nhạy ở phía dưới), WACC
- Màu phông chữ: Xanh dương=đầu vào, Đen=công thức, Xanh lục=liên kết trang tính
- Nhận xét ô về TẤT CẢ các đầu vào được mã hóa cứng
- Bảng độ nhạy được điền đầy đủ các công thức
- Đường viền chuyên nghiệp xung quanh các mặt cắt lớn**Xác thực:**
- OpEx dựa trên doanh thu (không phải lợi nhuận gộp)
- Giá trị đầu cuối 50-70% EV
- Tăng trưởng đầu cuối < WACC
- Thuế suất 21-28%
- Đặt tên file:
[Ticker]_DCF_Model_[Date].xlsx
## Nguồn dữ liệu - MCP đầu tiên, dự phòng web
Nhiều đoạn văn bên dưới có nội dung "sử dụng S&P Kensho MCP / Daloopa MCP / FactSet MCP". Đó là các MCP dữ liệu tài chính thương mại từ bối cảnh plugin Cowork ban đầu. Ở Hermes:
- **Nếu bạn đã định cấu hình MCP dữ liệu tài chính có cấu trúc** (Hermes hỗ trợ MCP - xem kỹ năng
`native-MCP
), hãy ưu tiên nó cho các khoản tính toán theo thời điểm, các giao dịch trước đó và hồ sơ.
- **Nếu không**, hãy quay lại:
-
`web_search
` /
`web_extract
` chống lại SEC EDGAR (
`https://www.sec.gov/cgi-bin/browse-edgar
) đối với hồ sơ tại Hoa Kỳ
- Trang IR của công ty dành cho thông cáo báo chí, báo cáo thu nhập
-
`browser_navigate
` dành cho cổng dữ liệu tương tác
- Dữ liệu do người dùng cung cấp (hỏi rõ ràng khi ngữ cảnh không có)
- **Không bao giờ bịa đặt**. Nếu không thể tìm được nguồn gốc của bội số, số tiền lệ hoặc số hồ sơ, hãy gắn cờ ô đó là
[UNSOURCED]
` và hiển thị nó cho người dùng.
## Ghi công
Kỹ năng này được điều chỉnh từ bộ plugin Claude dành cho Dịch vụ Tài chính của Anthropic (Apache-2.0). Các đường dẫn Office-JS / Cowork live-Excel đã bị xóa; phiên bản này nhắm mục tiêu openpyxl không đầu thông qua các quy ước của kỹ năng
`excel-author
. Bản gốc: https://GitHub.com/Anthropics/financial-services