Skip to content

Cụm TVM — Giá trị thời gian của tiền

Cụm gốc của mọi định giá. Nguồn: Schweser 2025 L1 Book 1, Reading 1 (Rates and Returns) + Reading 2 (The Time Value of Money in Finance).

Mô hình 2 lớp: lớp hiểu (đồ thị + thẻ khái niệm dưới đây) tách khỏi lớp tính (tvm.py + test_tvm.py, gọi lib chuẩn).

Đồ thị khái niệm

Node xanh lá = ứng dụng vào chứng khoán thật (chỗ TVM nối ra định giá). Đọc theo mũi tên: trái phiếu = dòng tiền đều (coupon) + hiện giá mệnh giá; cổ phiếu = dòng tiền vĩnh viễn có tăng trưởng.

Thẻ khái niệm (lõi)

  • Lãi suất r — giá thuê tiền một kỳ. Gốc của cả cụm. (Thẻ đầy đủ ở sample_concept-dag.md.)
  • Giá trị tương lai FVFV = PV*(1+r)^n. Bỏ PV nay, lãi gộp r, sau n kỳ thành FV.
  • Giá trị hiện tại PVPV = FV/(1+r)^n. Kéo tiền tương lai về nay; nền mọi định giá.
  • Lãi hiệu dụng năm EAR(1+r/m)^m - 1. Lãi thực khi gộp m lần/năm; so sánh công bằng khác tần suất.
  • Dòng tiền đều AnnuityPV = pmt*(1-(1+r)^-n)/r. Chuỗi tiền bằng nhau n kỳ.
  • Dòng tiền vĩnh viễn PerpetuityPV = pmt/r. Chuỗi đều mãi mãi (cổ phiếu ưu đãi).
  • Hiện giá ròng NPV — tổng PV dòng tiền trừ vốn bỏ ra; >0 = tạo giá trị.
  • Lợi suất nội bộ IRR — lãi làm NPV=0; giải số.
  • Tăng trưởng kép CAGR(end/begin)^(1/n)-1; cũng là lợi suất ngầm định.

Node ghép (ứng dụng) — chỗ TVM nối ra định giá thật

  • Giá trái phiếu = annuity_pv(coupon) + present_value(mệnh giá). Ghép thẳng 2 node lõi.
  • Định giá cổ phiếu (DDM/Gordon) = perpetuity có tăng trưởng: V = D1/(k-g).

Ví dụ có lời giải (đối chiếu Schweser Reading 2)

Mỗi ví dụ test một node, đáp án lấy từ answer key Schweser → là "đáp án độc lập", không tự khớp:

  • Perpetuity: ưu đãi $9/năm, yêu cầu 11% → 9/0.11 = $81.82.
  • Trái phiếu: 10 năm, coupon 5% trên mệnh giá $10,000,000, YTM 6% → giá $9,263,991.
  • CAGR: cổ tức 5 → 7 sau 3 năm → (7/5)^(1/3)-1 = 11.87%.

Cách chạy

cd 100_quant/01_tvm
../../.venv/bin/python -m pytest -q

Test xanh = công thức khớp cả công thức đóng, numpy-financial, lẫn đáp án Schweser. Đây là vòng phản hồi đo được của cụm.