Ôn Tập ii: Từ biến ngẫu nhiên tới rủi ro danh mục đầu tư

Khám phá cách sử dụng biến ngẫu nhiên, kỳ vọng và ma trận hiệp phương sai để đo lường rủi ro danh mục đầu tư. Hướng dẫn tính toán thực tế trên Python/Excel với các cổ phiếu từ S&P 500.

Chào mừng bạn quay trở lại với series Ôn Tập (Refresher Course). Trong bài trước, chúng ta đã hiểu tại sao log return lại là ngôn ngữ chuẩn mực để đo lường lợi nhuận.

Nếu log return là thước đo, thì biến ngẫu nhiên (Random Variable) chính là đối tượng mà chúng ta đang đo lường. Trong thế giới của Quant, mọi thứ từ giá cổ phiếu, lợi suất cho đến rủi ro đều được coi là những giá trị ngẫu nhiên. Việc hiểu rõ bản chất của chúng từ kỳ vọng, phương sai, cho đến sự tương quan giữa các biến là vô cùng quan trọng.

Bài viết này cũng giới thiệu về lý thuyết tối ưu hóa danh mục đầu tư (Portfolio Optimization). Như câu thành ngữ “Đừng bỏ trứng vào cùng một giỏ”, chúng ta sẽ cùng giải mã tại sao việc chia trứng lại có thể giúp bạn ngủ ngon hơn giữa những biến động của thị trường.

Lưu ý: Nếu bạn đã quá quen thuộc với các khái niệm xác suất thống kê cơ bản, bạn hoàn toàn có thể bỏ qua và chờ đợi bài tiếp theo về Option Pricing.

Trong bài viết này:

1. Biến ngẫu nhiên trong tài chính

Biến ngẫu nhiên (random variable) là một biến nhận các giá trị dựa trên sự ngẫu nhiên. Hãy tưởng tượng biến ngẫu nhiên là một hộp đen mà mỗi khi bạn lắc, nó sẽ rơi ra một con số theo một quy luật may rủi nào đó. Ví dụ điển hình nhất là một con xúc xắc, nó có thể cho ra các giá trị từ 1 đến 6 với xác suất đồng nhất.

Trong thế giới tài chính, biến ngẫu nhiên là ngôn ngữ để mô tả thị trường. Giá cổ phiếu không chỉ chạy theo các công thức có sẵn (deterministic) mà luôn bị tác động bởi những yếu tố bất ngờ (stochastic). Để mô hình hóa, các chuyên gia thường lấy mẫu của sự ngẫu nhiên tại mỗi bước thời gian nhằm dự đoán mức tăng/giảm của tài sản. Nếu không có biến ngẫu nhiên, chúng ta không thể thực hiện các mô phỏng Monte Carlo hay định giá quyền chọn (option pricing).

Chúng ta thường chia biến ngẫu nhiên thành hai loại khác nhau:

Cách xử lý mỗi loại có sự khác biệt, nhưng nguyên lý cơ bản nền tảng thì giống nhau. Mỗi biến ngẫu nhiên đều tuân theo một phân phối xác suất (probability distribution), một hàm số dùng để mô tả chính nó. Với một biến ngẫu nhiên $X$ cho trước, chúng ta biểu diễn xác suất để $X$ bằng một giá trị $x$ là $P(X = x)$.

1.1. Biến ngẫu nhiên rời rạc

Hãy nghĩ về những thứ bạn có thể đếm được bằng tay. Số lần tung đồng xu hiện mặt ngửa, số chấm trên con xúc xắc, hay số lượng cổ phiếu bạn mua… đó là các biến ngẫu nhiên rời rạc.

Để mô tả chúng, ta dùng hàm khối xác suất Probability Mass Function (PMF), ký hiệu là $p_X(x)$ hay viết gọn lại là $p(x)$. Hàm PMF được định nghĩa như sau:

\[p(x) = P(X = x) \tag{ii.1}\]

Có thể hiểu PMF như một bảng phân bổ trọng lượng. Xác suất chỉ tập trung tại các giá trị cụ thể (như $1, 2, 3, \dots $), xác suất bằng $0$ tại những điểm ở giữa (như $1.5$).

Hai quy tắc vàng bạn cần nhớ:

  • $0 \leq p(x) \leq 1$: Xác suất của mỗi kết quả $p(x)$ phải nằm từ $0$ đến $1$, không ai nói “khả năng xảy ra là $120\%$” cả.
  • $\sum p(x) = 1$: Tổng xác suất của tất cả mọi kết quả $p(x)$ cộng lại phải bằng đúng $1$.

Dù là rời rạc hay liên tục, chúng ta còn có một công cụ mô tả khác là hàm phân phối tích lũy Cumulative Distribution Function (CDF), ký hiệu là $F_X(x)$. Hàm CDF được định nghĩa như sau:

\[F_X(x) = P(X \le x) \tag{ii.2}\]

Hàm CDF trả lời cho câu hỏi: “xác suất để kết quả nhỏ hơn hoặc bằng $x$ là bao nhiêu?”. Với ví dụ trên, để biết xác suất tung được mặt $\leq 3$, bạn cần cộng dồn xác suất của các mặt $1$, $2$, và $3$.

Dưới đây là biểu đồ minh họa hàm khối xác suất (PMF) và hàm phân phối tích lũy (CDF).

  • Phần trên (PMF): Bạn sẽ thấy các điểm đứng riêng biệt, thể hiện việc xác suất chỉ tồn tại tại các giá trị nguyên cụ thể ($0, 1, 2…$). Độ cao của mỗi điểm chính là xác suất chính xác để sự kiện đó xảy ra, ví dụ $P(X = 5)$ là giá trị cao nhất trong biểu đồ trên.

  • Phần dưới (CDF): Đồ thị có dạng hình bậc thang? Đây là đặc điểm nhận dạng quan trọng nhất của biến rời rạc – xác suất không thay đổi khi ở giữa hai số nguyên, nó chỉ nhảy vọt lên khi chạm đến giá trị có khả năng xảy ra tiếp theo. Giá trị tại một điểm $x$ cho biết xác suất để biến ngẫu nhiên nhận giá trị nhỏ hơn hoặc bằng $x$.


Mối quan hệ giữa hàm khối xác suất (PMF) và hàm phân phối tích lũy (CDF)
Hình 1: Mối quan hệ giữa hàm khối xác suất (PMF) và hàm phân phối tích lũy (CDF).

Dù giá cổ phiếu thường được coi là liên tục, nhưng thực tế các Quant vẫn sử dụng biến ngẫu nhiên rời rạc trong định giá phái sinh với mô hình cây nhị phân (Binomial Tree), hay để mô phỏng xác suất khách hàng vỡ nợ (Credit Default Risk).

1.2. Biến ngẫu nhiên liên tục

Khác với việc đếm bằng tay, biến liên tục mô tả những thứ đo lường được trên một thước đo. Chiều cao của một người, thời gian chờ xe bus, hay tỉ suất lợi nhuận của cổ phiếu… đó là các biến liên tục. Vì có vô số kết quả tiềm năng, xác suất để biến ngẫu nhiên liên tục nhận chính xác một giá trị cụ thể ví dụ $P(X = 1)$ luôn bằng $0$.

Thay vì tìm xác suất tại một điểm, chúng ta cần tìm xác suất trong một khoảng. Để làm điều này, ta dùng hàm mật độ xác suất Probability Density Function (PDF), ký hiệu là $f_X(x)$, sao cho:

\[P(a < X < b) = \int_a^b f_X(x) \, dx \tag{ii.3}\]

Xác suất lúc này chính là diện tích nằm dưới đường cong của hàm PDF.

Cần lưu ý rằng vì xác suất tại một điểm riêng lẻ bằng $0$, nên xác suất tại các điểm chặn của một khoảng cũng bằng $0$. Do đó các xác suất dưới đây là như nhau.

\[P(a \leq X \leq b) = P(a < X \leq b) = P(a \leq X < b) = P(a < X < b) \tag{ii.4}\]

Tương tự như phần phân phối rời rạc, hàm PDF cần thỏa mãn hai yêu cầu sau:

  • $f_X(x) \geq 0$ với mọi giá trị của $X$: Hàm mật độ xác suất không bao giờ âm.
  • $P(-\infty < X < \infty) = \int_{-\infty}^{\infty} f_X(x) \, dx = 1$: Tổng diện tích dưới đường cong phải bằng $1$.

Hàm phân phối tích lũy (CDF) tại giá trị $x$ chính là tích phân (tổng xác suất) của hàm mật độ xác suất từ $-\infty$ cho đến $x$.

\[F_X(x) = \int_{-\infty}^x f_X(u) \, du \tag{ii.5}\]

và ngược lại hàm mật độ xác suất $f_X(x)$ là đạo hàm của hàm phân phối tích lũy $F_X(x)$

\[f_X(x) = \frac{d}{dx} F_X(x) \tag{ii.6}\]

Dưới đây là biểu đồ minh họa mối quan hệ giữa hàm mật độ xác suất (PDF) và hàm phân phối tích lũy (CDF). Biểu đồ này giải thích cách chúng ta chuyển đổi từ PDF sang CDF thông qua phép tính tích phân – diện tích dưới đường cong. Ngược lại, nếu bạn biết đạo hàm – độ dốc – của CDF, bạn sẽ tìm lại được hàm PDF.

  • Phần trên (PDF): Đường cong hình chuông biểu diễn mật độ xác suất tại từng điểm. Phần diện tích tô màu dưới đường cong, tính từ $-\infty$ đến một giá trị $x$ cụ thể (trong hình $x = 0.8$), chính là giá trị của tích phân: $\int_{-\infty}^{x} f_X(u) \, du$. Diện tích này đại diện cho xác suất $P(X \leq x)$.

  • Phần dưới (CDF): Đường cong này biểu diễn tổng xác suất tích lũy. Độ cao (giá trị trục $y$) của đường CDF tại điểm $x = 0.8$ tương ứng chính xác với diện tích phần được tô màu ở biểu đồ PDF phía trên. Khi $x$ tiến dần về dương vô cùng, giá trị của CDF sẽ tiến dần về $1$.


Mối quan hệ giữa hàm mật độ xác suất (PDF) và hàm phân phối tích lũy (CDF)
Hình 2: Mối quan hệ giữa hàm mật độ xác suất (PDF) và hàm phân phối tích lũy (CDF).

2. Các đặc trưng của biến ngẫu nhiên

Nếu biến ngẫu nhiên là một hộp đen chứa đựng vô vàn kịch bản có thể xảy ra của thị trường, thì các chỉ số thống kê chính là bộ công cụ giúp chúng ta mở khóa chiếc hộp đó.

Thay vì quan sát từng điểm dữ liệu rời rạc, các Quant tập trung vào việc tóm tắt toàn bộ dữ liệu thông qua các đặc trưng cốt lõi. Trong tài chính, việc xác định các đặc trưng này không chỉ là giải toán, mà là quá trình chuyển đổi từ sự bất định sang rủi ro có thể đo lường.

2.1. Kỳ vọng (Expectation): Điểm dừng trung bình

Với chiếc hộp đen cho trước, câu hỏi của một nhà đầu tư luôn là: trung bình thì tôi sẽ nhận được bao nhiêu?. Trong một mẫu dữ liệu khổng lồ với rất nhiều quan sát (ví dụ giá cổ phiếu trong 1000 ngày qua), chúng ta không thể chọn đại một con số để nói về tương lai. Kỳ vọng của một biến ngẫu nhiên chính là giá trị đại diện – một mỏ neo cho toàn bộ dữ liệu đó.

Tùy vào loại dữ liệu chúng ta đang xử lý mà công thức sẽ khác nhau một chút.

Biến ngẫu nhiên rời rạc

Kỳ vọng là tổng của các giá trị $x_i$ có thể xảy ra, mỗi giá trị được nhân trọng số bởi xác suất xuất hiện $p(x_i)$ của nó.

\[E[X] = \sum_{i=1}^{n} x_i p(x_i) \tag{ii.7}\]

Ví dụ: Bạn dự báo cổ phiếu A trong năm tới có: 30% khả năng tăng 20% (kinh tế tốt), 50% khả năng tăng 5% (kinh tế ổn định), 20% khả năng giảm 10% (khủng hoảng). Kỳ vọng lợi nhuận sẽ là:

\[E[X] = (20\% \times 0.3) + (5\% \times 0.5) + (-10\% \times 0.2) = 6.5\%\]

Khi khả năng xảy ra của các biến cố $x_i$ là như nhau thì kỳ vọng đơn giản là trung bình cộng:

\[E[X] = \frac{1}{n} \sum_{i=1}^{n} x_i \tag{ii.8}\]

Biến ngẫu nhiên liên tục

Khi lợi nhuận cổ phiếu có thể là bất kỳ con số nào, chúng ta không thể cộng từng điểm được nữa mà phải dùng đến phép tính tích phân.

\[E[X] = \int_{-\infty}^{+\infty} x f(x) \, dx \tag{ii.9}\]

Lưu ý: Đừng nhầm lẫn giữa công thức xác suất (ii.3) và công thức kỳ vọng (ii.9) (ở đây ta có thêm biến $x$ trong tích phân). Xác suất là diện tích dưới đường cong $f(x)$, kỳ vọng là điểm cân bằng của đường cong đó. Hãy tưởng tượng hàm mật độ xác suất là một vật thể có hình dáng lồi lõm. Nếu bạn đặt vật thể đó lên một cái bập bênh, giá trị kỳ vọng chính là vị trí đặt điểm tựa sao cho cái bập bênh nằm thăng bằng hoàn toàn.

Tính chất của kỳ vọng

  • Kỳ vọng của một hằng số: $E[C] = C$. Nếu ngân hàng cam kết lãi suất tiết kiệm là 6% cố định, thì kỳ vọng của bạn luôn là 6%.
  • Tính tuyến tính (Linearity): $E[aX + b] = aE[X] + b$.
  • Kỳ vọng của một tổng: $E[X + Y] = E[X] + E[Y]$. Lợi nhuận kỳ vọng của một danh mục đầu tư bằng tổng lợi nhuận kỳ vọng của từng cổ phiếu thành phần.
  • Kỳ vọng của tích (nếu X, Y độc lập): $E[X Y] = E[X] E[Y]$.

Minh họa sự thay đổi của kỳ vọng dưới tính chất tuyến tính (shift, scaling)
Hình 3: Minh họa sự thay đổi của kỳ vọng dưới tính chất tuyến tính (shift, scaling).

Tính chất tuyến tính là vũ khí cực mạnh cho phép chúng ta đơn giản hóa những bài toán phức tạp. Chúng ta đã sử dụng tính chất này trong Bài 3. Random Walk. Bạn còn nhớ?

  • Shift: Khi bạn cộng hằng số $b$ (ví dụ chịu phí giao dịch cố định) vào mọi kết quả, toàn bộ phân phối sẽ trượt sang phải/trái. Kỳ vọng cũng trượt theo đúng một khoảng bằng $b$.

  • Scaling: Khi bạn nhân hằng số $a$ (ví dụ dùng đòn bẩy margin), lợi nhuận kỳ vọng của bạn cũng sẽ được nhân lên $a$ lần. Tuy nhiên, hãy chú ý trên đồ thị: đường cong màu đỏ thấp hơn và rộng hơn – điều này minh họa việc lợi nhuận kỳ vọng tăng lên thì rủi ro cũng tăng theo tỉ lệ thuận.

Ví dụ Python

Chúng ta sử dụng lại ví dụ trong Bài 5 với dữ liệu thực tế của 4 mã cổ phiếu blue-chips trên sàn S&P500 như AAPL (Apple Inc.), JPM (JPMorgan Chase & Co.), JNJ (Johnson & Johnson), XOM (Exxon Mobil Corp.) cho giai đoạn 01/2024 tới 01/2026. Dữ liệu được lấy từ Polygon.io. Nếu chạy local trên máy tính của bạn, Zipmarket_data.zip cần đặt cùng thư mục chứa code Python.

Tôi cũng chuẩn bị file Excel ExcelExcel Workbook cho bài này. Tuy nhiên, tôi xin phép bỏ qua phần hướng dẫn vì tương đối đơn giản. Mục đích chính của file Excel là giúp bạn kiểm tra lại các phép tính trong code Python.

Colab

Dòng code log_returns.sum() / len(log_returns) chính là công thức (ii.8). Bạn có thể print(expected_return_def) để so sánh với expected_return_func được tính bằng thư viện pandas của Python.

Dòng code expected_return_func * 252 giúp đổi lợi suất ngày về lợi suất năm. 252 chính là số ngày giao dịch trung bình trong một năm tại thị trường chứng khoán Mỹ.

# --- 2. EXPECTED RETURN (E[R]) ---
# Calculate Log Returns: ln(P_t / P_{t-1})
log_returns = np.log(df_pivot / df_pivot.shift(1)).dropna()

# Method 1: Mathematical Definition E[X] = sum(X) / n
expected_return_def = log_returns.sum() / len(log_returns)

# Method 2: Python built-in function
expected_return_func = log_returns.mean()

print("--- Comparison: Expected Returns (Annually) ---")
print(expected_return_func * 252)

Ta có kết quả như bảng dưới đây:

--- Comparison: Expected Return (Annually) ---
ticker
AAPL    0.174843
JNJ     0.155222
JPM     0.304700
XOM     0.144496
  • JPM: Giá trị ~0.3047 nghĩa là cổ phiếu JPM đem lại lợi nhuận kỳ vọng khoảng 30.47%/năm trong 2 năm qua. Điều này phản ánh một giai đoạn tăng trưởng mạnh của ngành ngân hàng hoặc chu kỳ kinh tế thuận lợi cho tài chính.

  • XOM: Có mức sinh lời thấp nhất trong nhóm (~0.1444). Tuy nhiên, trong quản trị danh mục, một cổ phiếu có lợi suất thấp đôi khi vẫn được giữ lại nếu nó ít tương quan với các mã còn lại (giúp giảm rủi ro tổng thể).

2.2. Phương sai (Variance): Thước đo của rủi ro

Trong tài chính, có một quy luật bất biến: “High Risk, High Return” (Hình 3). Nhưng làm sao để đo lường cái gọi là “Risk” một cách định lượng? Chúng ta sử dụng phương sai để đo lường mức độ phân tán của dữ liệu xung quanh giá trị kỳ vọng.

  • Nếu phương sai thấp: Giá cổ phiếu biến động rất ít, gần sát với mức trung bình (ít rủi ro).
  • Nếu phương sai cao: Giá nhảy múa hỗn loạn, lúc tăng cực mạnh, lúc giảm cực sâu (rủi ro cao).

Phương sai ký hiệu là $Var(X)$ hoặc $\sigma^2$, được định nghĩa là trung bình của bình phương các sai số. Viết gọn lại kỳ vọng $E[X]$ là $\mu$, ta có công thức phương sai như sau:

Biến ngẫu nhiên rời rạc

\[Var(X) = \sum_{i=1}^{n} (x_i - \mu)^2 p(x_i) \tag{ii.10}\]

Biến ngẫu nhiên liên tục

\[Var(X) = \int_{-\infty}^{+\infty} (x - \mu)^2 p(x) \, dx \tag{ii.11}\]

Thay vì phải trừ từng giá trị cho $\mu$ rồi bình phương (rất tốn thời gian), chúng ta thường sử dụng một tính chất cực kỳ quan trọng. Phần chứng minh được trình bày dưới Phụ lục (A1).

\[Var(X) = E[X^2] - (E[X])^2 \tag{ii.12}\]

Độ lệch chuẩn (Standard Deviation)

Mặc dù phương sai rất tuyệt vời về mặt toán học, nhưng đơn vị của nó là bình phương (ví dụ: $\%^2$). Nhược điểm này khiến chúng ta rất khó hình dung trong thực tế. Để đưa rủi ro về cùng một đơn vị với lợi nhuận (%), chúng ta sử dụng độ lệch chuẩn ký hiệu là $\sigma$:

\[\sigma = \sqrt{Var(X)} \tag{ii.13}\]

Tại sao con số này lại quan trọng? Trong tài chính, nếu lợi nhuận tuân theo phân phối chuẩn, độ lệch chuẩn sẽ cho bạn biết nhanh các ngưỡng an toàn.

  • Khoảng $68\%$ khả năng lợi nhuận thực tế sẽ nằm trong khoảng $[E[X] - \sigma, E[X] + \sigma]$.
  • Khoảng $95\%$ khả năng lợi nhuận thực tế sẽ nằm trong khoảng $[E[X] - 2\sigma, E[X] + 2\sigma]$.
  • Khoảng $99\%$ khả năng lợi nhuận thực tế sẽ nằm trong khoảng $[E[X] - 3\sigma, E[X] + 3\sigma]$.

Ví dụ: Nếu cổ phiếu có $\mu = 12\%$ và $\sigma = 10\%$. Bạn có thể tự tin khoảng $95\%$ rằng năm tới bạn sẽ không lỗ quá $-8\%$ ($12\% - 2 \times 10\%$) và không lãi quá $32\%$ ($12\% + 2 \times 10\%$) như hình bên dưới. Đây chính là cách để nhà đầu tư lập kế hoạch quản trị rủi ro.


Khoảng tin cậy theo độ lệch chuẩn của phân phối chuẩn
Hình 4: Khoảng tin cậy theo độ lệch chuẩn của phân phối chuẩn.

Ví dụ Python

Tại sao lại là np.sqrt(252)? Vì chúng ta giả định các ngày giao dịch là độc lập ($i.i.d$). Khi đó, phương sai có thể cộng dồn theo thời gian: $Var[X_{annual}] = Var[X_{daily}] \times 252$. Độ lệch chuẩn là căn bậc hai của phương sai, nên khi quy đổi ra năm, ta phải dùng căn bậc hai của thời gian \(\sigma_{annual} = \sigma_{daily} \times \sqrt{252}\).

# --- 3. VARIANCE & STD DEV ---
# Method 1: Mathematical Definition Var(X) = E[X^2] - (E[X])^2
variance_def = (log_returns**2).mean() - (log_returns.mean())**2

# Method 2: Python built-in function
# Note: ddof=0 is used to match the population variance definition in math
variance_func = log_returns.var(ddof=0)

print("--- Comparison: Volatility (Annually) ---")
print(np.sqrt(variance_func) * np.sqrt(252))

Ta có kết quả như bảng dưới đây. Trong tài chính, thuật ngữ volatility thường được sử dụng thay cho standard deviation.

--- Comparison: Volatility (Annually) ---
ticker
AAPL    0.276182
JNJ     0.177937
JPM     0.245571
XOM     0.219428
  • AAPL (27.62%): Apple có mức biến động cao nhất trong nhóm. Điều này dễ hiểu vì cổ phiếu công nghệ thường nhạy cảm với tin tức thị trường và kỳ vọng tăng trưởng.

  • JNJ (17.79%): Johnson & Johnson có mức biến động thấp nhất. Đây là đặc trưng của ngành chăm sóc sức khỏe và hàng tiêu dùng thiết yếu (Defensive Sector). Nếu đối chiếu với kỳ vọng ở trên, JNJ có lợi suất cao hơn XOM (15.5% vs 14.4%) nhưng lại có rủi ro thấp hơn (17.8% vs 21.9%), cổ phiếu JNJ rõ ràng là lựa chọn tối ưu hơn.

2.3. Hiệp phương sai (Covariance): Chìa khóa của sự đa dạng hóa

Nếu phương sai cho bạn biết một cổ phiếu nhảy múa ra sao, thì hiệp phương sai cho bạn biết hai cổ phiếu nhảy múa cùng nhau như thế nào. Hiệp phương sai đo lường mối quan hệ tuyến tính giữa hai biến ngẫu nhiên. Khi hiệp phương sai giữa hai biến lớn hơn $0$, chúng có quan hệ đồng biến và ngược lại.

Hiệp phương sai giữa hai biến ngẫu nhiên $X, Y$ được kí hiệu là $Cov(X,Y)$ được tính như sau

\[Cov(X, Y) = E[(X - E[X])(Y - E[Y])] \tag{ii.14}\]

hoặc tính nhanh bằng:

\[Cov(X, Y) = E[XY] - E[X]E[Y] \tag{ii.15}\]

Phần chứng minh được trình bày dưới Phụ lục (A2).

Trường hợp xác suất đồng nhất – mọi cặp giá trị $(x_i, y_i)$ đều có xác suất xảy ra là $p_i = \frac{1}{n}$, toán tử kỳ vọng $E[\dots]$ trở thành trung bình cộng đơn giản của các sai phân. Công thức hiệp phương sai có thể viết lại như sau:

\[Cov(X, Y) = \frac{1}{n} \sum_{i=1}^{n} (x_i - E[X])(y_i - E[Y]) \tag{ii.16}\]

Hệ số tương quan (Correlation)

Hiệp phương sai có một nhược điểm là đơn vị rất khó hiểu. Để chuẩn hóa, chúng ta dùng hệ số tương quan ($\rho$), đưa mọi thứ về khoảng từ $-1$ đến $1$:

\[\rho_{XY} = \frac{Cov(X, Y)}{\sigma_X \sigma_Y} \tag{ii.17}\]
  • $\rho = 1$: Tương quan thuận hoàn hảo. Rủi ro nhân đôi.
  • $\rho = -1$: Tương quan nghịch hoàn hảo. Rủi ro phi hệ thống có thể được triệt tiêu hoàn toàn.
  • $\rho = 0$: Không có mối tương quan.

Tại sao Quant lại ám ảnh bởi tương quan? Trong lý thuyết danh mục đầu tư, chúng ta đạt được trạng thái đa dạng hóa tối ưu khi $\rho = -1$. Tại điểm này, các biến động ngược chiều của các tài sản sẽ tự triệt tiêu lẫn nhau, cho phép nhà đầu tư thiết lập một danh mục có rủi ro cực tiểu (Minimum Variance Portfolio) trong khi vẫn duy trì được mức lợi nhuận mục tiêu.

Ma trận hiệp phương sai (Covariance Matrix)

Khi danh mục của bạn không chỉ có 2 mà là 3, 10, hay 100 cổ phiếu, chúng ta cần một cách hệ thống để quản lý mối quan hệ giữa chúng. Đó chính là lúc ma trận hiệp phương sai xuất hiện.

Với một danh mục gồm $n$ tài sản, ma trận hiệp phương sai ($\mathbf{\Sigma}$) là một ma trận vuông $n \times n$.

\[\mathbf{\Sigma} = \begin{bmatrix} Var(X_1) & Cov(X_1, X_2) & \dots & Cov(X_1, X_n) \\ Cov(X_2, X_1) & Var(X_2) & \dots & Cov(X_2, X_n) \\ \vdots & \vdots & \ddots & \vdots \\ Cov(X_n, X_1) & Cov(X_n, X_2) & \dots & Var(X_n) \end{bmatrix} \tag{ii.18}\]

Các tính chất cần ghi nhớ:

  • Đường chéo chính: Là phương sai của từng cổ phiếu $Var(X_i)$. Nó cho biết rủi ro nội tại của chính cổ phiếu đó.
  • Các phần tử ngoài đường chéo: Là hiệp phương sai giữa các cặp cổ phiếu.
  • Tính đối xứng: $Cov(X_i, X_j) = Cov(X_j, X_i)$

Tương tự, ta có ma trận tương quan ($\mathbf{R}$) như dưới đây. Điểm khác biệt quan trọng nhất là các phần tử trên đường chéo chính luôn bằng $1$, vì tương quan của một biến với chính nó luôn hoàn hảo.

\[\mathbf{R} = \begin{bmatrix} 1 & \rho_{12} & \dots & \rho_{1n} \\ \rho_{21} & 1 & \dots & \rho_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ \rho_{n1} & \rho_{n2} & \dots & 1 \end{bmatrix} \tag{ii.19}\]

Để tính rủi ro của cả một danh mục, chúng ta không đơn giản là cộng phương sai của từng mã. Công thức tính rủi ro danh mục sử dụng đại số tuyến tính (Linear Algebra) như sau:

\[\sigma^2_p = \vec{w}^T \Sigma \vec{w} \tag{ii.20}\]

Trong đó:

  • $\vec{w}$ là vector tỷ trọng (weights) của các cổ phiếu trong danh mục.
  • $\mathbf{\Sigma}$ là ma trận hiệp phương sai giữa các cổ phiếu.

Công thức này cho thấy rủi ro danh mục phụ thuộc mật thiết vào việc các cổ phiếu tương tác với nhau như thế nào thông qua ma trận $\mathbf{\Sigma}$. Như đã thảo luận, khi các phần tử ngoài đường chéo $Cov(X_i, X_j)$ mang giá trị âm hoặc rất nhỏ, tổng rủi ro danh mục $\sigma^2_p$ sẽ giảm đáng kể.

Ví dụ Python

Ta thử tính toán thực nghiệm bằng code Python.

# --- 4. COVARIANCE & CORRELATION MATRIX ---
# Calculate the Covariance Matrix
# Note: bias=Truis used to match the population variance definition in math
cov_matrix = np.cov(log_returns.T, bias=True)
cov_matrix_df = pd.DataFrame(cov_matrix, index=log_returns.columns, columns=log_returns.columns)

# Calculate the Correlation Matrix
cor_matrix = log_returns.corr()

print("\n--- Covariance Matrix ---")
print(cov_matrix_df)
print("\n--- Correlation Matrix ---")
print(cor_matrix)
--- Covariance Matrix ---
ticker      AAPL       JNJ       JPM       XOM
ticker                                        
AAPL    0.000303  0.000008  0.000083  0.000056
JNJ     0.000008  0.000126  0.000019  0.000024
JPM     0.000083  0.000019  0.000239  0.000070
XOM     0.000056  0.000024  0.000070  0.000191

--- Correlation Matrix ---
ticker      AAPL       JNJ       JPM       XOM
ticker                                        
AAPL    1.000000  0.039730  0.307609  0.233967
JNJ     0.039730  1.000000  0.111412  0.157417
JPM     0.307609  0.111412  1.000000  0.328261
XOM     0.233967  0.157417  0.328261  1.000000

Ma trận hiệp phương sai (Covariance Matrix) chứa đựng thông tin về phương sai của từng mã và mối quan hệ biến động giữa chúng.

  • Đường chéo chính: Nếu bạn để ý, các con số như $0.000303$ (AAPL) hay $0.000126$ (JNJ) chính là phương sai $Var[X]$. AAPL có con số lớn nhất, củng cố nhận định ở phần trước rằng đây là mã biến động mạnh nhất.

  • Các phần tử ngoài đường chéo: Tất cả đều là số dương. Điều này có nghĩa là về cơ bản, các cổ phiếu này có xu hướng di chuyển cùng chiều với thị trường chung (khi thị trường lên, tất cả cùng lên và ngược lại).

  • $Cov[AAPL, JNJ]$ hoàn toàn bằng $Cov[JNJ, AAPL]$. Đây là tính chất đối xứng của ma trận hiệp phương sai $\mathbf{\Sigma} = \mathbf{\Sigma}^T$.

Ma trận tương quan (Correlation Matrix) là phiên bản chuẩn hóa giúp chúng ta đọc hiểu dễ dàng hơn vì các giá trị luôn nằm trong khoảng $[-1, 1]$. Ma trận này thường được biểu diển dưới dạng heat map (Hình 5) để có cái nhìn trực quan hơn, ta có thể thấy ngay cặp cổ phiếu nào có tương quan cao (màu đậm) hoặc thấp (màu nhạt).

  • Đường chéo chính luôn bằng 1. Một cổ phiếu luôn biến động hoàn hảo với chính nó.

  • Cặp cổ phiếu AAPL/JNJ: Tương quan cực thấp ~0.039 gần như bằng 0 cho thấy hai mã này gần như không liên quan đến nhau. Kết hợp hai mã này sẽ giảm rủi ro danh mục đáng kể.

  • Cặp JPM/XOM (~0.328) và JPM/AAPL (~0.307): Đây là mức tương quan trung bình thấp, cho thấy có một chút kết nối do các yếu tố kinh tế vĩ mô (lãi suất, lạm phát) tác động lên cả ngành tài chính, năng lượng và công nghệ, nhưng vẫn đủ thấp để mang lại lợi ích đa dạng hóa.


Heatmap ma trận tương quan của AAPL, JPM, JNJ, XOM
Hình 5: Heatmap ma trận tương quan của AAPL, JPM, JNJ, XOM, giai đoạn 01/2024 – 01/2026.

Tiếp theo, giả sử bạn đầu tư vào 4 mã này, mỗi mã chiếm 25% tỷ trọng. Ta tiến hành đánh giá hiệu suất của danh mục đầu tư này xem sao.

# --- 5. PORTFOLIO RISK CALCULATION ---
# Define weights (25% for each stock)
weights = np.array([0.25, 0.25, 0.25, 0.25])

# Formula: Var_p = w.T * Sigma * w
portfolio_variance_daily = weights.T @ cov_matrix @ weights
portfolio_volatility_daily = np.sqrt(portfolio_variance_daily)

# Annualize the volatility
portfolio_volatility_annual = portfolio_volatility_daily * np.sqrt(252)
print(f"Annualized Portfolio Volatility: {portfolio_volatility_annual:.4f}")

# Compare with individual volatilities
individual_vols = np.sqrt(np.diag(cov_matrix)) * np.sqrt(252)
print("\nIndividual Annualized Volatilities:")
print(individual_vols)

Bạn có thể thấy phép màu của sự đa dạng hóa (Diversification) trong bảng kết quả dưới đây.

Annualized Portfolio Volatility: 0.1474

Individual Annualized Volatilities:
[0.27618203 0.17793708 0.2455711  0.21942764]

Hãy thử so sánh con số portfolio_volatility_annual với các individual_vols. Rủi ro của danh mục (~14.74%) thấp hơn đáng kể so với mã rủi ro nhất AAPL (~27.61%) và thậm chí còn thấp hơn rủi ro của mã ít rủi ro nhất JNJ (~17.79%). Tại sao? Vì các phần tử ngoài đường chéo trong ma trận tương quan của danh mục này nhỏ, khi các mã không nhảy cùng một điệu, biến động của mã này sẽ triệt tiêu bớt biến động của mã kia.

Để có cái nhìn trực quan, chúng ta thử vẽ đồ thị của danh mục đầu tư cùng những cổ phiếu đơn lẻ.

  • Bạn sẽ thấy các đường màu xám (cổ phiếu riêng lẻ) nhảy lên xuống rất gắt (đặc biệt là AAPL hay JPM). Trong khi đó, đường màu xanh (danh mục) có xu hướng mượt mà hơn.

  • Dù danh mục có thể không đạt đỉnh cao nhất như mã thành công nhất, nhưng nó bảo vệ nhà đầu tư khỏi việc sụt giảm quá sâu của mã tệ nhất tại một thời điểm bất kỳ. Điều này thể hiện rõ nhất trong giai đoạn thị trường sụp đổ 04/2025.


So sánh hiệu suất của danh mục đầu tư tỉ trọng đều với các cổ phiếu riêng lẻ
Hình 6: So sánh hiệu suất của danh mục đầu tư tỉ trọng đều với các cổ phiếu riêng lẻ, giai đoạn 01/2024 – 01/2026.

Cuối cùng, ta vẽ thử biểu đồ Risk-Return Scatter Plot – linh hồn của lý thuyết danh mục đầu tư hiện đại (Modern Portfolio Theory).

  • Điểm quan trọng nhất: bạn sẽ thấy dấu sao (danh mục đầu tư với tỷ trọng đều) nằm dịch hẳn về phía bên trái trục X so với bốn dấu chấm (cổ phiếu đơn lẻ). Đây là minh chứng trực quan cho việc đa dạng hóa giúp triệt tiêu một cách thần kỳ rủi ro không hệ thống (unsystematic risk) của từng mã cổ phiếu. Dấu sao nằm ở giữa các cổ phiếu thành phần trên trục Y, cho thấy bạn vẫn nhận được mức lợi nhuận trung bình của các tài sản, nhưng với một cái giá về rủi ro rẻ hơn nhiều.

  • Đám mây màu vàng đại diện cho hàng ngàn tổ hợp danh mục ngẫu nhiên (tỷ trọng không còn là 25% cho mỗi mã cổ phiếu). Bạn có thể thấy rằng hầu hết các điểm trong đám mây đều nằm về phía bên trái so với các cổ phiếu riêng lẻ. Điều này chứng minh rằng việc kết hợp nhiều tài sản giúp giảm rủi ro đáng kể mà không nhất thiết phải hy sinh lợi nhuận.

Lời khuyên cuối cùng: “Đừng bỏ trứng vào cùng một giỏ”. Trong đầu tư, sai lầm lớn nhất không phải là chọn sai một cổ phiếu, mà là đặt tất cả niềm tin và tài sản vào một cổ phiếu duy nhất. Hãy để toán học giúp bạn chia số trứng đó ra một cách khoa học nhất!


So sánh Risk-Return của danh mục đầu tư tỉ trọng đều với các cổ phiếu riêng lẻ
Hình 7: So sánh Risk-Return của danh mục đầu tư tỉ trọng đều với các cổ phiếu riêng lẻ, giai đoạn 01/2024 – 01/2026.

3. Tóm tắt và thảo luận

Chúng ta đã đi qua một hành trình từ những khái niệm toán học thuần túy như kỳ vọng, phương sai cho đến ứng dụng thực tiễn trong việc quản trị một danh mục đầu tư. Dưới đây là những điểm cần ghi nhớ:

  • Biến ngẫu nhiên là nguyên liệu. Mọi mô hình định giá hay quản trị rủi ro hiện đại đều bắt đầu từ việc giả định lợi suất cổ phiếu là một biến ngẫu nhiên tuân theo một phân phối nào đó.

  • Đa dạng hóa là “bữa trưa miễn phí” duy nhất. Trong tài chính, hiếm khi bạn có thể giảm rủi ro mà không làm giảm lợi nhuận. Nhưng nhờ vào việc kết hợp các tài sản có tương quan thấp, chúng ta đã chứng minh được rằng rủi ro danh mục có thể thấp hơn cả cổ phiếu an toàn nhất trong nhóm (như trường hợp của JNJ).

  • “Đừng bỏ trứng vào cùng một giỏ”. Đây không còn là một lời khuyên cảm tính, nó được định lượng chính xác qua ma trận hiệp phương sai $\mathbf{\Sigma}$ và công thức $\sigma^2_p = \vec{w}^T \mathbf{\Sigma} \vec{w}$.

  • Thực hành Python Colab Zipmarket_data.zip

  • Thực hành Excel ExcelExcel Workbook

Chúng ta có thể làm tốt hơn không? Trong ví dụ trên, chúng ta đã sử dụng chiến thuật Equal Weight (chia đều 25% cho mỗi mã cổ phiếu). Đây là một cách tiếp cận đơn giản và hiệu quả, nhưng liệu nó đã là tốt nhất? Trong đám mây màu vàng có danh mục nào tốt hơn? Làm sao để tìm ra một bộ tỷ trọng $\vec{w}$ sao cho với cùng một mức rủi ro, chúng ta thu được lợi nhuận cao nhất có thể?

Hẹn các bạn trong một ngày không xa, chúng ta sẽ cùng tìm hiểu về tối ưu hóa danh mục đầu tư (Portfolio Optimization) và sử dụng các thuật toán tối ưu để không chỉ “chia trứng vào nhiều giỏ”, mà còn biết chính xác nên đặt bao nhiêu quả trứng vào giỏ nào.

Appendix

A1. Chứng minh công thức phương sai từ kỳ vọng

\[\begin{aligned} Var(X) &= E[(X - \mu)^2] \\ &= E[X^2 - 2\mu X + \mu^2] \\ &= E[X^2] - E[2\mu X] + E[\mu^2) \\ &= E[X^2] - 2\mu E[X] + \mu^2 \\ &= E[X^2] - 2\mu \cdot \mu + \mu^2 \\ &= E[X^2] - 2\mu^2 + \mu^2 \\ &= E[X^2] - \mu^2 \\ &= E[X^2] - (E[X])^2 \end{aligned} \tag{ii.A1.1}\]

Điều cần chứng minh, công thức (ii.12).

A2. Chứng minh công thức hiệp phương sai từ kỳ vọng

\[\begin{aligned} Cov(X, Y) &= E[(X - E[X])(Y - E[Y])] \\ &= E[XY - X E[Y] - Y E[X] + E[X]E[Y]] \\ &= E[XY] - E[X E[Y]] - E[Y E[X]] + E[E[X]E[Y]] \\ &= E[XY] - E[Y]E[X] - E[X]E[Y] + E[X]E[Y] \\ &= E[XY] - E[X]E[Y] - E[X]E[Y] + E[X]E[Y] \\ &= E[XY] - E[X]E[Y] \end{aligned} \tag{ii.A2.1}\]

Điều cần chứng minh, công thức (ii.15).

Hãy để lại câu hỏi tại phần bình luận hoặc trên GROUP để nhận được câu trả lời sớm nhất nhé. Bạn đọc có thể ủng hộ blog qua BUY ME A COFFEE ở góc trên bên phải. Cảm ơn bạn đã tiếp thêm năng lượng để tôi hoàn thiện những bài viết tâm huyết hơn mỗi ngày.

Cusdis

Đừng ngần ngại để lại bình luận nhé!
Bạn không cần tạo tài khoản, chỉ cần nhập tên và nội dung tin nhắn.