Bài 3: Random Walk: Đầu tư hay tung đồng xu?

Từ "xác định" tới "ngẫu nhiên", cùng tìm hiểu về Random Walk trong tài chính và chi tiết cách mô phỏng trên Python/Excel.

Trong bài viết trước, sau khi theo chân Emanuel Derman bước qua những hành lang quyền lực tại Phố Wall, chúng ta nhận ra rằng cốt lõi của nghề Quant nằm ở khát vọng mô hình hóa thế giới. Nhưng làm thế nào để chúng ta mô hình hóa một thứ dường như hoàn toàn hỗn loạn như giá cổ phiếu? Liệu những dòng code và phương trình toán học có đủ quyền năng để dự đoán tương lai?

Hôm nay, chúng ta sẽ bắt đầu hành trình đi tìm trật tự trong sự ngẫu nhiên.

Trong bài viết này:

1. Từ “xác định” tới “ngẫu nhiên”

Trong suốt hàng thế kỷ, khoa học bị thống trị bởi tư duy Xác định/Định mệnh (Deterministic). Đỉnh cao của tư tưởng này là Laplace’s Demon – một giả thuyết cho rằng nếu một ai đó hay “ác quỷ” biết được vị trí và vận tốc của mọi hạt trong vũ trụ tại một thời điểm, thì giá trị quá khứ và tương lai của chúng tại bất kỳ thời điểm nào đều được suy ra.

Thế giới xác định (Deterministic)

Trong thế giới này, mọi thứ vận hành giống như một kịch bản phim đã viết sẵn. Nếu bạn biết đầu vào $x$, bạn chắc chắn có đầu ra $y$, thông qua công thức $y = f(x)$.

Khi NASA phóng một tàu thăm dò lên Sao Hỏa, họ sử dụng các phương trình vi phân xác định. Dù hành trình dài hàng triệu dặm, nhưng nhờ các định luật Newton, họ biết chính xác tàu sẽ ở đâu vào giây thứ $n$. Sai số chỉ đến từ việc đo lường, không phải từ bản chất của vũ trụ.

Trong tài chính cổ điển, người ta từng mơ mộng về việc tìm ra một công thức toán học “cứng”, hay là đi tìm một hàm $y = f(x)$ như thế.

Khi Phố Wall không phải là Sao Hỏa

Khi các nhà khoa học mang tư duy này vào tài chính, họ sớm nhận ra một cú sốc. Giá cổ phiếu không vận hành theo các định luật Newton. Nó không rơi theo một đường thẳng, nó nhảy múa, rung lắc và đôi khi đảo chiều một cách không tưởng.

Bạn không thể dùng vận tốc tăng trưởng giá cổ phiếu của ngày hôm qua để khẳng định vị trí giá cổ phiếu của ngày hôm nay.

Thế giới ngẫu nhiên (Stochastic)

Stochastic không có nghĩa là vô định hay hỗn loạn. Giống như một trò chơi tung xúc xắc liên tục. Bạn không biết chính xác số tiếp theo là gì, nhưng bạn có thể biết xác suất của nó.

Để bạn đọc dễ hình dung, hãy so sánh hai cách nhìn về một khoản đầu tư:

  • Góc nhìn xác định (lãi suất tiết kiệm): Bạn gửi một tỷ vào ngân hàng với lãi suất 7%/năm. Bạn biết chắc chắn sau 10 năm mình có bao nhiêu tiền. Biểu đồ là một đường cong mượt mà, đi lên đều đặn, giống như một hàm số trong toán học.

  • Góc nhìn ngẫu nhiên (thị trường chứng khoán): Bạn mua một tỷ cổ phiếu Apple. Trung bình nó có thể tăng 10%/năm, nhưng trên đường đi, nó có thể giảm 20% vì một tin tức chính trị, hoặc tăng 15% vì một dòng tweet. Biểu đồ giá cổ phiếu là một đường răng cưa hỗn loạn.


So sánh một khoản đầu tư vào tiền gửi ngân hàng (xác định) và vào cổ phiếu (ngẫu nhiên)
Hình 1: So sánh một khoản đầu tư vào tiền gửi ngân hàng (xác định) và vào cổ phiếu (ngẫu nhiên).

Sự giằng xé giữa hai thế giới

Sự đối lập giữa tính xác địnhngẫu nhiên có một lịch sử trí tuệ lâu đời vượt xa phạm vi tài chính.

Đầu thế kỷ 20, Albert Einstein khi nghiên cứu chuyển động hỗn loạn của các hạt phấn hoa đã chỉ ra rằng: Sự ngẫu nhiên này thực chất có thể giải thích bằng những va chạm xác định của vô số phân tử siêu nhỏ. Hiện tượng này trông có vẻ ngẫu nhiên chỉ vì chúng ta không thể theo dõi hết số lượng khổng lồ các nguyên nhân tiềm ẩn bên dưới [1].

Thật kinh ngạc, cùng thời điểm đó vào năm 1900, Louis Bachelier đã đưa sự ngẫu nhiên vào mô hình tài chính trong luận án tiến sĩ Théorie de la spéculation. Bachelier là người tiên phong dùng Brownian Motion để mô tả sự biến động của giá tài sản, từ rất lâu trước khi nó trở thành khái niệm trung tâm của tài chính hiện đại. Sau này, các nhà kinh tế học như Paul SamuelsonRobert C. Merton đã kế thừa và phát triển chúng thành mô hình Black-Scholes-Merton lẫy lừng [1].

Sự sụp đổ của thế giới xác định trong tài chính đến từ nhận định: Rủi ro không phải là sai số, rủi ro là bản chất. Các Quant hiện đại tin rằng việc dự báo giá tương lai từ dữ liệu quá khứ là vô ích vì mọi thông tin đã được phản ánh vào giá hiện tại, thay vào đó, công việc của họ là mô hình hóa rủi ro và sự ngẫu nhiên. Sự thành công không đến từ việc đoán đúng giá, mà từ việc hiểu rõ biên độ của sự rung lắc để thực hiện các chiến lược phòng vệ nhằm triệt tiêu sự ngẫu nhiên.

Tuy nhiên, cuộc tranh luận này vẫn chưa dừng lại. Những học giả như Benoît Mandelbrot đã thách thức mô hình Gaussian truyền thống khi chỉ ra rằng phân phối thực tế của giá tài sản có “đuôi béo”, nghĩa là các biến động cực đoan xảy ra thường xuyên hơn nhiều so với dự đoán của toán học thông thường. Ông đặt câu hỏi: “Liệu thị trường là ngẫu nhiên thực sự, hay chúng là những cấu trúc hữu định cực kỳ phức tạp mà các mô hình hiện tại của chúng ta chưa thể nắm bắt hết?”. Việc sử dụng xác suất đôi khi chỉ là một công cụ tiện lợi để ép thế giới thực vào các mô hình có thể tính toán được thay vì là một lời khẳng định cuối cùng về bản chất thật sự của thị trường [4].

Bạn có suy nghĩ gì về vấn đề này? Hãy để lại ý kiến ở phần bình luận nhé!

2. Random Walk: Trò chơi tung đồng xu

Trong vật lý cổ điển, mục tiêu của chúng ta là tìm ra quỹ đạo chính xác của vật thể. Trong tài chính, các nhà toán học cũng nỗ lực làm điều tương tự: Mô hình hóa quỹ đạo của giá cổ phiếu. Để hiểu về cách giá cổ phiếu vận động, hãy tạm quên đi những bảng điện tử phức tạp và tưởng tượng về một trò chơi tung đồng xu đơn giản.

2.1. Mô hình hóa bước đi của giá

Bài toán gốc: Hãy tưởng tượng bạn đang đứng tại vạch số 0 (ký hiệu là $S_0$) trên một trục số dài vô tận. Bạn cầm trên tay một đồng xu và bắt đầu một trò chơi.

  • Mỗi khi tung được mặt Ngửa, bạn bước sang phải 1 bước ($+1$).
  • Mỗi khi tung được mặt Sấp, bạn bước sang trái 1 bước ($-1$).

Kết quả mỗi lần tung là một biến ngẫu nhiên $X_i$ nhận hai giá trị $\pm 1$. Sau nhiều lần tung, bạn sẽ thấy quỹ đạo đường đi của mình nhảy múa trên đồ thị theo một hình răng cưa không thể đoán trước. Trong tài chính, một con đường mà quỹ đạo di chuyển không theo bất kỳ quy luật định sẵn nào như vậy được gọi là bước đi ngẫu nhiên (Random Walk) [2].

Vị trí của bạn sau $n$ lần (ký hiệu là $S_n$) chính là tổng của tất cả các bước đi từ vị trí đầu tiên:

\[S_n = S_0 + X_1 + X_2 + \dots + X_n \tag{3.1}\]
Mô phỏng lộ trình Random Walk Mô phỏng lộ trình Random Walk
Hình 2: Mô phỏng lộ trình Random Walk.

Ví dụ: Bạn chơi trò chơi này 3 lần. Bạn tung đồng xu và nhận được các giá trị lần lượt là: Ngửa, Ngửa, Sấp. Với giả thiết bài toán như trên, bạn có: vị trí đứng ban đầu: $S_0 = 0$; giá trị ba lần tung đồng xu: $X_1 = 1, X_2 = 1, X_3 = -1$; vị trí cuối cùng: $S_3 = 0 + 1 + 1 - 1 = 1$. Tức là bạn đứng lệch một bước về phía bên phải sau 3 lần chơi.


Bài toán tổng quát: Giả sử giá cổ phiếu hôm nay là $S_0$. Trong mỗi bước thời gian $i \in {1, 2, \dots, n}$, giá cổ phiếu sẽ tăng/giảm theo một biến ngẫu nhiên $X_i$ nhận hai giá trị $\pm 1$.

  • $n$: tổng số bước
  • $n_u$: số bước tăng
  • $n_d$: số bước giảm
  • $k$: vị trí cuối
  • $X_i = +1$ với xác suất $p$
  • $X_i = -1$ với xác suất $q = 1 - p$

Giá cổ phiếu tăng/giảm tại mỗi bước thời gian $i$:

\[\Delta S_i = X_i \tag{3.2}\]

Giá cổ phiếu sau $n$ bước sẽ là:

\[S_n = S_0 + \sum_{i=1}^{n} X_i \tag{3.3}\]

Mục tiêu của bài toán là đi tìm xác suất giá cổ phiếu ở vị trí $k$ sau $n$ bước, ký hiệu là $P(S_n = k)$.


Mô phỏng lộ trình Random Walk với số bước đi khác nhau (50 bước và 500 bước)
Hình 3: Mô phỏng lộ trình Random Walk với số bước đi khác nhau (50 bước và 500 bước).

Nếu chỉ có 50 bước, biểu đồ của bạn trông sẽ rất thô và rời rạc. Nhưng nếu tăng lên 500 bước, quỹ đạo dần trờ thành những đường cong chuyển động liên tục. Bạn có bắt đầu thấy quen thuộc (như biểu đồ giá cổ phiếu bạn xem hàng ngày)?

2.2. Ba trụ cột của bước đi ngẫu nhiên

Nhiều người sẽ hỏi: Tại sao các nhà toán học lại dùng trò chơi này để mô phỏng thị trường tài chính? Tại sao lại coi giá cổ phiếu là ngẫu nhiên, chẳng phải các nhà phân tích luôn tìm cách dự đoán giá cổ phiểu sao?

Câu trả lời nằm ở giả thuyết thị trường hiệu quả (Efficient Market Hypothesis). Thị trường như một cỗ máy tiêu hóa thông tin: Mọi thông tin bạn biết về một công ty (lợi nhuận, tin đồn, kế hoạch tương lai) đều đã được phản ánh ngay lập tức vào giá hiện tại. Vì tin tức, theo định nghĩa, là những sự kiện bất ngờ, nên sự thay đổi của giá cũng phải mang tính ngẫu nhiên [3].

Bước đi ngẫu nhiên sở hữu 3 tính chất cực kỳ quan trọng sau đây:

  • Tính không có trí nhớ (Markov Property): Đồng xu không có trí nhớ, việc hôm nay bạn tung được mặt Ngửa không làm tăng hay giảm khả năng ngày mai bạn lại tung được mặt Ngửa. Trong tài chính, điều này có nghĩa là mức giá của ngày hôm nay đã chứa đựng tất cả lịch sử của quá khứ. Để dự đoán giá ngày mai, dữ liệu quan trọng duy nhất bạn cần là giá ngày hôm nay, còn việc hôm qua giá tăng hay giảm bao nhiêu không hề giúp ích gì cho dự đoán đó [3].

  • Kỳ vọng bằng 0 (Martingale): Đây là một trò chơi công bằng, hay trò chơi có kỳ vọng bằng 0. Vì xác suất Ngửa/Sấp là 50/50, nên trung bình bạn sẽ không thắng cũng không thua. Điều này có nghĩa là: Trong một thị trường ngẫu nhiên thuần túy không có xu hướng chủ đạo drift, bạn không thể kỳ vọng kiếm lời chỉ bằng cách dựa vào vận may của các bước nhảy. Trong dài hạn, số lần thắng và thua sẽ tự triệt tiêu lẫn nhau, khiến vị thế trung bình của bạn không đổi so với vạch xuất phát [4].

  • Rủi ro tăng theo thời gian (Variance): Dù trung bình bạn đứng yên, nhưng càng tung đồng xu nhiều lần, bạn càng có khả năng đi rất xa khỏi vạch xuất phát (về cả hai phía). Sau $n$ lần tung, độ lệch chuẩn vị trí của bạn là $\sqrt{n}$. Rủi ro không tăng gấp đôi khi thời gian tăng gấp đôi, rủi ro tăng theo căn bậc hai của thời gian.

Ba đặc điểm này tạo nên một nghịch lý thú vị: Tuy chúng ta không thể biết chắc giá cổ phiếu sẽ đi về đâu, nhưng chúng ta lại biết rất rõ mức độ sai số của dự báo đó sẽ lớn dần như thế nào theo thời gian (quy tắc căn bậc hai). Đây chính là nền tảng để các nhà định lượng tính toán phí cho các quyền chọn.

2.3. Giải mã Random Walk

Khi chúng ta nói về giá cổ phiếu di chuyển theo một bước đi ngẫu nhiên, điều đó không có nghĩa là chúng ta hoàn toàn mù tịt về tương lai. Trong thế giới ngẫu nhiên, chúng ta không đi tìm một số xác định như nghiệm của bài toán, mà sử dụng các công cụ thống kê như phân phối xác suất (probability distribution), kỳ vọng (expectation), và phương sai (variance) để mô tả hình dạng của sự không chắc chắn đó.

Sau đây là bảng tóm tắt lời giải cho bài toán bước đi ngẫu nhiên. Nếu không muốn đi sâu vào phần toán, bạn đọc có thể bỏ qua và tới thẳng Phần 2.4.

Khái niệm Công thức Ý nghĩa đơn giản
Vị trí cuối $k$ $k = n_u - n_d$ Hiệu số giữa số lần tăng và giảm
Xác suất dừng tại $k$ $P(S_n = k) = \binom{n}{\frac{n+k}{2}} p^{\frac{n+k}{2}} q^{\frac{n-k}{2}}$ Tỉ lệ phần trăm ở $k$ sau $n$ bước
Kỳ vọng $E[S_n] = S_0 + n(p-q)$ Xu hướng chung của bước đi (lên, xuống hay đứng yên)
Phương sai $Var(S_n) = 4npq$ Độ rộng của sự phân tán (đo lường rủi ro)
Bảng 1: Tóm tắt lời giải cho bài toán Random Walk.

2.3.1. Phân phối xác suất: Dự báo các kịch bản có thể xảy ra

Hãy tưởng tượng bạn cân những quả bí ngô. Bạn không biết chính xác quả tiếp theo nặng bao nhiêu, nhưng nếu bạn cân hàng trăm quả, bạn sẽ thấy một quy luật: Đa số chúng có cân nặng trung bình, và rất ít quả cực nhẹ hoặc cực nặng [5].

Ta có hệ phương trình dựa trên tổng số bước ($n_u + n_d$) và vị trí cuối cùng ($n_u - n_d$) như sau:

\[\begin{cases} n_u + n_d = n \\ n_u - n_d = k \end{cases}\]

Giải hệ phương trình này, ta được:

\[n_u = \frac{n + k}{2}, \quad n_d = \frac{n - k}{2} \tag{3.4}\]

Để $k$ là một vị trí khả thi, cả $n_u$ và $n_d$ phải là số nguyên. Điều này có nghĩa là $n$ và $k$ phải cùng tính chẵn lẻ (cùng chẵn hoặc cùng lẻ) và $\lvert k \rvert \le n$.

Xác suất để có đúng $n_u$ bước tăng trong tổng số $n$ bước được tính theo hệ số nhị thức:

\[\begin{align} P(S_n = k) &= \binom{n}{n_u} p^{n_u} q^{n_d} \\ &= \binom{n}{\frac{n+k}{2}} p^{\frac{n+k}{2}} q^{\frac{n-k}{2}} \end{align} \tag{3.5}\]

Trường hợp đối xứng ($p = q = 1/2$):

\[P(S_n = k) = \binom{n}{\frac{n+k}{2}} \left( \frac{1}{2} \right)^n \tag{3.6}\]

Trong đó $\binom{n}{n_u}$ là ký hiệu của tổ hợp chập $n_u$ của $n$ phần tử (còn gọi là hệ số nhị thức) thể hiện số cách chọn $n_u$ phần tử từ một tập hợp gồm $n$ phần tử mà không phân biệt thứ tự:

\[\binom{n}{n_u} = \frac{n!}{n_u!(n - n_u)!} \tag{3.7}\]

Phân phối xác suất cho bạn biết tất cả các vùng giá có thể xảy ra sau $n$ bước và tỉ lệ phần trăm rơi vào vùng giá đó. Điều này giúp bạn biết xác suất cổ phiếu tăng lên 100 hoặc giảm xuống 20, với thông tin giá cổ phiếu ngày hôm nay là 80, là bao nhiêu. Nếu không biết phân phối xác suất, bạn không thể biết được vùng an toàn của giá cổ phiếu để tránh cháy tài khoản.

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

Tại mỗi bước, biến ngẫu nhiên $X_i$ nhận hai kết quả: $X_i = 1$ với xác suất $p$ và $X_i = -1$ với xác suất $q = 1-p$. Kỳ vọng là trung bình trọng số của các kết quả:

\[E[X_i] = (1)p + (-1)q = p - q \tag{3.8}\]

Vị trí sau $n$ bước $S_n$ là tổng của các bước đơn lẻ $X_i$. Vì $X_i$ là các biến ngẫu nhiên độc lập (bước đi hôm nay không phụ thuộc vào hôm qua) và tính chất tuyến tính của kỳ vọng, ta có:

\[\begin{align} E[S_n] &= E[S_0] + E[X_1] + E[X_2] + \dots + E[X_n] \\ &= E[S_0] + n E[S_i] \\ &= S_0 + \mathbf{n(p-q)} \end{align} \tag{3.9}\]

Trường hợp đối xứng ($p = q = 1/2$):

\[E[S_n] = S_0 \tag{3.10}\]

Kỳ vọng trả lời cho câu hỏi: Nếu bạn lặp lại mô hình này 1 000 lần, vị trí trung bình của giá cổ phiếu là ở đâu? Trong tài chính, điều này cũng giúp phân định tài sản tốt hay xấu. Nếu xác suất tăng ($p$) lớn hơn xác suất giảm ($q$), hay kỳ vọng của một bước đi ngẫu nhiên mang lại lợi nhuận dương $(E[S_n] \ge S_0)$, đó là một tài sản đáng đầu tư.

2.3.3. Phương sai (Variance): Thước đo rủi ro và biên độ biến động

Phương sai đo lường bình phương khoảng cách từ các kết quả đến giá trị trung bình như sau:

\[Var(X_i) = E\left[ (X_i - E[X_i])^2 \right] = E\left[ X_i^2 \right] - (E\left[ X_i \right])^2 \tag{3.11}\]

Tính $E\left[ X_i^2 \right]$ dựa trên trung bình trọng số:

\[E\left[ X_i^2 \right] = (1^2 \times p) + ((-1)^2 \times q) = p + q = 1 \tag{3.12}\]

Thay (3.8)(3.12) vào (3.11):

\[\begin{align} Var(X_i) &= E\left[ X_i^2 \right] - (E[X_i])^2 \\ &= 1 - (p - q)^2 \\ &= 1^2 - (p - q)^2 \\ &= (p + q)^2 - (p - q)^2 \\ &= (p^2 + 2pq + q^2) - (p^2 - 2pq + q^2) \\ &= 4pq \end{align} \tag{3.13}\]

Tương tự phần trước, sau $n$ bước:

\[\begin{align} Var(S_n) &= Var(S_0) + Var(X_1) + Var(X_2) + \dots + Var(X_n) \\ &= 0 + n Var(X_i) \\ &= \mathbf{4npq} \end{align} \tag{3.14}\]

Trường hợp đối xứng ($p = q = 1/2$):

\[Var(S_n) = n \tag{3.15}\]

Phương sai đo lường việc giá cổ phiếu bị văng đi xa khỏi điểm trung bình bao nhiêu. Phương sai càng lớn, các bước đi càng hỗn loạn và khó đoán. Điều này cũng có nghĩa là cổ phiếu đó rất rủi ro; giá có thể vọt lên rất cao nhưng cũng có thể rơi xuống rất sâu. Trong tài chính, chúng ta quan tâm đến độ lệch chuẩn ($\sigma = \sqrt{Var}$) hay độ biến động (volatility) hơn là phương sai. Rủi ro không tăng tuyến tính, nếu thời gian tăng gấp 4 ($n=4$), rủi ro chỉ tăng gấp 2 ($\sqrt{4}=2$).

2.4. Hạn chế: Khi giả thuyết rời xa thực tế

Mặc dù bước đi ngẫu nhiên là một công cụ tuyệt vời để bắt đầu, nhưng khi đặt nó cạnh thị trường chứng khoán thực tế, chúng ta sẽ thấy những điểm vênh đáng kể. Hiểu được những hạn chế này không phải để bác bỏ mô hình, mà để chúng ta biết cách tinh chỉnh để nó trở nên mạnh mẽ hơn.

  • Tính rời rạc (Discreteness): Cổ phiếu trong thực tế được giao dịch liên tục từng giây, từng mili giây. Random Walk chỉ mô tả giá tại các mốc thời gian cố định ($t=1, 2, 3…$). Việc mô hình hóa theo các bước nhảy rời rạc chỉ là một sự lý tưởng hóa để chúng ta có thể tính toán được.

  • Bước nhảy không đổi (Fixed Increments): Hãy nhớ lại trò chơi tung đồng xu, giá chỉ có thể tăng hoặc giảm đúng một đơn vị cố định. Thực tế khắc nghiệt hơn nhiều, giá cổ phiếu di chuyển theo những biên độ khác nhau, từ những rung động nhỏ 1–3% đến những cú nhảy khổng lồ 20–50% do tin tức bất ngờ. Nếu chỉ dựa trên bước nhảy cố định của bước đi ngẫu nhiên, chúng ta sẽ lầm tưởng rằng hàng tỷ năm mới xảy ra một lần.

  • Giá trị tuyệt đối (Percentage vs. Absolute): Trong Random Walk, bước nhảy từ 10 lên 11 được coi là giống hệt bước nhảy từ 100 lên 101 (đều là +1). Tuy nhiên, nhà đầu tư quan tâm đến tỉ suất sinh lợi hơn. Bước nhảy 1 trên giá 10 (10%) quan trọng hơn nhiều so với 1 trên giá 100 (1%). Điều này dẫn đến một hệ quả phi lý: Giá cổ phiếu có thể rơi xuống mức âm.

Chính những hạn chế này đã thúc đẩy các nhà toán học đi tìm một phiên bản xịn hơn, liên tục hơn. Nếu chúng ta làm cho các bước đi ngày càng nhỏ ($\Delta t \to 0$) và số lượng bước đi ngày càng nhiều ($n \to \infty$), Random Walk không còn là những điểm gãy khúc rời rạc mà dần trờ thành những đường răng cưa liên tục. Đây chính là khoảnh khắc chúng ta bước vào thế giới của Black-Scholes.

3. Thực hành mô phỏng Random Walk

Ví dụ

  • Số bước: $n = 4$
  • Xác suất tăng: $p = 1/2$
  • Xác suất giảm: $q = 1/2$
  • Vị trí bắt đầu: $S_0 = 10$

Mô phỏng 16 lộ trình có thể xảy ra cho Random Walk 4 bước Mô phỏng 16 lộ trình có thể xảy ra cho Random Walk 4 bước
Hình 4: Mô phỏng 16 lộ trình có thể xảy ra cho Random Walk 4 bước.

Vì mỗi bước có hai lựa chọn (tăng hoặc giảm), với $4$ bước sẽ có tổng cộng $2^4 = 16$ lộ trình có thể xảy ra. Xác suất cho mỗi vị trí $k$ có thể được suy ra trực tiếp không dùng công thức tổ hợp như sau:

  • Nếu $4$ bước đều tăng: Chỉ có $1$ lộ trình duy nhất có thể xảy ra trong $16$ lộ trình. Giá cổ phiếu tăng từ $10, 11, 12, 13, 14$ $(Tăng, Tăng, Tăng, Tăng)$. Xác suất cho lộ trình này là $1/16$.

  • Nếu $3$ bước tăng, $1$ bước giảm: Có $4$ lộ trình có thể xảy ra như sau: $(Tăng, Tăng, Tăng, Giảm)$; $(Tăng, Tăng, Giảm, Tăng)$; $(Tăng, Giảm, Tăng, Tăng)$; $(Giảm, Tăng, Tăng, Tăng)$. Xác suất cho những lộ trình này là $4/16$.

Dưới đây là bảng phân bổ xác suất cho vị trí kết thúc $k$:

Vị trí kết thúc ($k$) Số bước tăng ($n_u$) Số bước giảm ($n_d$) Cách tổ hợp $\binom{n}{n_u}$ Xác suất $P(S_4 = k)$
14 4 0 $\binom{4}{4} = 1$ $1/16 = 6.25\%$
12 3 1 $\binom{4}{3} = 4$ $4/16 = 25.0\%$
10 2 2 $\binom{4}{2} = 6$ $6/16 = 37.5\%$
8 1 3 $\binom{4}{1} = 4$ $4/16 = 25.0\%$
6 0 4 $\binom{4}{0} = 1$ $1/16 = 6.25\%$
Bảng 2: Phân phối xác suất cho ví dụ Random Walk.
  • Phân phối xác suất: Vì tổng số bước $n = 4$ là số chẵn, giá cổ phiếu chỉ có thể dừng ở các vị trí chẵn ($0, \pm 2, \pm 4$). Vị trí có khả năng cao nhất là $k = 10$ ($37.5\%$). Vị trí $k = 12$ và $k = 8$ có xác suất là hoàn toàn bằng nhau ($25\%$).

  • Kỳ vọng: Với xác suất tăng/giảm là như nhau, kỳ vọng sẽ hội tụ về vị trí ban đầu.

\[E[S_4] = S_0 + n(p - q) = 10 + 4(0.5 - 0.5) = 10\]
  • Phương sai: Các đường đi tỏa ra như một chiếc quạt. Càng về sau, khoảng cách giữa các vị trí càng lớn, minh chứng cho việc phương sai tăng dần theo thời gian.
\[Var(X_4) = 4npq = 4(4)(0.5)(0.5) = 4\]
  • Độ lệch chuẩn: Mặc dù trung bình là vị trí ban đầu, nhưng thông thường giá cổ phiếu sẽ nằm cách vị trí ban đầu khoảng $2$ đơn vị.
\[\sigma = \sqrt{Var(X_4)} = \sqrt{4} = 2\]

Thực hành Python

Nếu bạn chưa cài đặt Python trên máy tính, bạn có thể sử dụng Google Colab để chạy code ngay trên trình duyệt. Tôi đã chuẩn bị source code cho ví dụ trên, bạn chỉ cần đăng nhập Gmail và nhấn vào nút bên dưới để bắt đầu. Bạn nhấn biểu tượng hình tam giác hoặc tổ hợp phím Ctrl + Enter để chạy code. Bạn có thể thay đổi các biến để xem sự thay đổi. Đừng sợ làm hỏng nó, bạn luôn có thể tải lại trang để bắt đầu lại.

Colab

Trước tiên, chúng ta cần khai báo hai thư viện: numpy cho tính toán ma trận, đại số tuyến tính và matplotlib để vẽ biểu đồ một cách chuyên nghiệp.

import numpy as np
import matplotlib.pyplot as plt

Chúng ta khai báo các biến start_value, p, n_steps như giả thiết của bài toán. Chúng ta thêm biến n_walks cho số lần mô phỏng bước đi ngẫu nhiên, số lần càng lớn (1000 lần) xác suất thực nghiệm (empirical probability) càng chuẩn.

# --- 1. Configuration ---
start_value = 10    # Initial position
p = 0.5             # Probability
n_steps = 4         # Number of steps
n_walks = 1000      # Number of trajectories

Tiếp theo, ta tính toán lộ trình của bước đi ngẫu nhiên.

Hàm np.full tạo ra một vector với kích cỡ 1000x1, tất cả đều mang giá trị khởi tạo start_value. Hàm np.random.choice giúp tạo số ngẫu nhiên ($\pm 1$) và gán vào steps ma trận kích cỡ 1000x4. Hàm np.cumsum giúp tính tổng tích lũy theo từng hàng axis=1. Nếu các bước là $[0, 1, 1, -1]$, kết quả cộng dồn sẽ là $[10, 11, 12, 11]$. Đây chính là tọa độ thực tế qua từng thời điểm.

# --- 2. Create starting position vector ---
start_pos = np.full((n_walks, 1), start_value)

# --- 3. Generate random steps (+1 or -1) ---
steps = np.random.choice([1, -1], size=(n_walks, n_steps), p=[p, 1-p])

# --- 4. Stack start position with steps and calculate cumulative sum ---
paths = np.hstack([start_pos, steps])
positions = np.cumsum(paths, axis=1)
final_positions = positions[:, -1]

Ta thử kiểm tra biến steps là trái tim của mô phỏng. Nếu không có sai xót gì thì ma trận này chỉ chứa hai giá trị duy nhất ($\pm 1$). Kết quả thu được đúng như ta mong muốn!

print('steps = ')
print(steps)
steps = 
[[-1 -1 -1  1]
 [ 1 -1 -1  1]
 [ 1  1  1  1]
 ...
 [-1  1 -1 -1]
 [-1 -1 -1 -1]
 [ 1  1 -1 -1]]

Ta dùng matplotlib để vẽ biểu đồ lộ trình bước đi ngẫu nhiên cũng như biểu đồ phân phối xác suất.

# --- 5. Visualization ---
plt.figure(figsize=(12, 6))

# Subplot 1: Path trajectories
plt.subplot(1, 2, 1)
plt.plot(positions[:10].T, alpha=0.8) # Plot the first 10 walks to show movement patterns 
plt.title(f"Paths of the first 10 Simulations")
plt.xlabel("Step")
plt.ylabel("Position")

# Subplot 2: Final distribution (Histogram)
plt.subplot(1, 2, 2)
bins = np.arange(start_value - n_steps - 1, start_value + n_steps + 2) - 0.5 # centered on integers
plt.hist(final_positions, bins=bins, rwidth=0.8, color='blue', edgecolor='black')
plt.title(f"Final Position Distribution (Simulations={n_walks})")
plt.xlabel("Final Position")
plt.ylabel('Number of trajectories')

plt.tight_layout() #ensure labels don't overlap
plt.show()

Biểu đồ lộ trình Random Walk được vẽ bên trái. Thuộc tính positions[:10] giúp lấy ra 10 mẫu đầu tiên trong 1000 mô phỏng để tránh làm rối biểu đồ. Biểu đồ phân phối xác suất (histogram) được vẽ bên phải nhờ hàm plt.hist.


Mô phỏng lộ trình và phân phối xác suất cho Random Walk 4 bước
Hình 5: Mô phỏng lộ trình và phân phối xác suất cho Random Walk 4 bước.

Hai cột 8 và 12 trong biểu đồ histogram có vẻ không bằng nhau (cột 8 thấp hơn cột 12). Ta thử tính lại xác suất thực nghiệm (empirical probability) xem sao. Hàm np.unique giúp đếm xem có bao nhiêu vị trí cuối là duy nhất và ở mỗi vị trí này có bao nhiêu quan sát.

# --- 6. Calculate probabilities ---
unique_values, counts = np.unique(final_positions, return_counts=True) # find unique value and count their occurrences
probabilities = counts / n_walks

print("--- Empirical Probability: ---")
for val, prob in zip(unique_values, probabilities):
    current_count = counts[np.where(unique_values == val)[0][0]]
    print(f"Position {int(val):>2}: {prob:>6.2%} (Count: {int(current_count)})")
--- Empirical Probability: ---
Position  6:  5.70% (Count: 57)
Position  8: 23.60% (Count: 236)
Position 10: 37.00% (Count: 370)
Position 12: 28.30% (Count: 283)
Position 14:  5.40% (Count: 54)

Kết quả thực nghiệm hơi lệch so với kết quả lý thuyết ta tính được trong Bảng 2. Xác suất thực nghiệm tại vị trí 8 là 23.60% thấp hơn khá nhiều so với vị trí 12 là 28.30%, và khác với tính toán lý thuyết 25.0%. Điều này có thể lý giải bởi số lần mô phỏng vẫn chưa đủ lớn (1000 lần).

Ta thử thực hiện lại với số lượng bước đi nhiều hơn n_steps (500 bước) và tăng số lần mô phỏng n_walks (100 000 lần).

n_steps = 500       # Number of steps
n_walks = 100000    # Number of trajectories

Hàm plt.hist cần được sửa lại bằng cách tăng số lượng cột bins=50 và gán density=True giúp đổi trục tung từ số lượng thành mật độ xác suất (tổng diện tích các cột bằng 1).

# Increase the number of bins to show more detail (more columns)
# density=True changes the y-axis from 'Count' to 'Probability Density'
plt.hist(final_positions, bins=50, color='skyblue', edgecolor='black', alpha=0.7, density=True, 
         label='Simulated Results')

Mô phỏng lộ trình và phân phối xác suất cho Random Walk 4 bước
Hình 6: Mô phỏng phân phối xác suất cho Random Walk với số bước đi lớn.

Khi tăng nhanh số bước đi n_steps và số lần mô phỏng n_walks, histogram sẽ không còn là các cột tách rời như trong phân phối nhị thức (Binomial Distribution) mà dần hội tụ về một đường cong hình chuông mượt mà của phân phối chuẩn (Normal Distribution).

Việc tăng n_steps từ 4 lên 500 khiến độ rộng của các vị trí cuối cùng dãn ra rất nhiều. Điều này là minh chứng về mặt toán học rằng sự không chắc chắn (rủi ro) sẽ tăng lên theo thời gian.

Thực hành Excel/VBA

Bạn có thể download file Excel bên dưới để bắt đầu thực hành.

ExcelExcel Workbook

Worksheet 1 “Standalone Random Walk”: Trang tính này mô phỏng quỹ đạo của một bước đi ngẫu nhiên đơn lẻ, giúp bạn hình dung cách một chuỗi các bước độc lập tiến triển theo thời gian. Bạn có thể điều chỉnh các tham số để quan sát các hành vi ngẫu nhiên khác nhau.


Công thức Excel tạo số ngẫu nhiên Công thức Excel tính vị trí hiện tại cho Random Walk
Hình 7: Công thức Excel tạo số ngẫu nhiên và tính vị trí hiện tại cho Random Walk.

Công thức tại ô B7 như sau.

=IF(RAND() < $B$2, 1, -1)

Hàm RAND() được dùng để tạo một số ngẫu nhiên bất kỳ từ 0 đến 1. Xác suất $p$ ở $B$2 như vạch kẻ đường: Nếu số ngẫu nhiên nhỏ hơn $p$ ta coi như một bước tiến ($+1$), và ngược lại là một bước lùi ($-1$). Như vậy chúng ta đã tạo ra được một bộ sinh số ngẫu nhiên với hai giá trị duy nhất $\pm 1$.

Công thức tại ô C7 như sau.

=C6 + B7

C6 là vị trí quá khứ, B7 là biến động của hiện tại. Vị trí hiện tại là tổng của vị trí trước đó và biến động hiện tại. Dựa trên kết quả từ C6:C258, ta vẽ được biểu đồ lộ trình Random Walk như dưới đây.


Mô phỏng lộ trình Random Walk trong Excel
Hình 8: Mô phỏng lộ trình Random Walk trong Excel.

Bạn có thể nhấn phím F9 trong Excel để hàm RAND() sinh một bộ số ngẫu nhiên mới. Bạn sẽ thấy lộ trình Random Walk lúc thì vọt lên cao, lúc thì tụt sâu xuống dưới, dù thông số $p=0.5$ không đổi. Bạn cũng có thể thử đổi giá trị ô B2 thành $p=0.65$ (xu hướng tăng nhẹ), bạn sẽ thấy biểu đồ bắt đầu có xu hướng dốc lên rõ rệt.

Worksheet 2 “Distribution Analysis”: Trang tính này minh họa cho ví dụ bước đi ngẫu nhiên 4 bước ở trên. Nó bao gồm biểu đồ histogram so sánh tần suất quan sát thực nghiệm với phân phối nhị thức lý thuyết.


Công thức Excel tính vị trí cuối cùng cho Random Walk 4 bước
Hình 9: Công thức Excel tính vị trí cuối cùng cho Random Walk 4 bước.

Công thức tại ô F7 như sau.

=A7 + SUM(B7:E7)

Đây chính là công thức (3.3), vị trí hiện tại là tổng tích lũy của những cú sốc ngẫu nhiên trước đó và vị trí ban đầu. Khác với phần trước, kết quả F7:F1006 thể hiện vị trí kết thúc cho 1000 mô phỏng chứ không phải lộ trình cho một *bước đi ngẫu nhiên duy nhất.

Công thức tại ô I7 như sau.

=COUNTIF(F:F,H7)

Ta cần đếm số lượng mẫu tại mỗi vị trí kết thúc $6, 8, 10, 12, 14$ để vẽ biểu đồ histogram.


Mô phỏng phân phối xác suất cho Random Walk 4 bước trong Excel
Hình 10: Mô phỏng phân phối xác suất cho Random Walk 4 bước trong Excel.

Tương tự phần Python, xác suất thực nghiệm (empirical probability) khá lệch so với tính toán lý thuyết do số lần mô phỏng chưa đủ lớn (1000 lần).

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

Trong bài viết này, chúng ta đã có một cách nhìn mới về thị trường tài chính:

  • Từ xác định tới ngẫu nhiên: Chúng ta đã bước ra khỏi thế giới xác định (deterministic) – nơi mọi thứ đều có thể dự báo bằng phương trình kiểu Newton – để chấp nhận thế giới ngẫu nhiên (stochastic). Trong tài chính, rủi ro không phải là sai số đo lường, mà là bản chất cốt lõi.

  • Triết lý của rủi ro: Sự ngẫu nhiên không phải là sự hỗn loạn vô nghĩa. Như Einstein đã chứng minh qua hạt phấn hoa hay Bachelier qua giá cổ phiếu, sự ngẫu nhiên có quy luật riêng của nó và có thể mô hình hóa được thông qua xác suất.

  • Trò chơi tung đồng xu (Random Walk): Chúng ta đã mô hình hóa giá cổ phiếu một cách đơn giản nhất từ những bước đi $\pm 1$ rời rạc. Đây là nền tảng để hiểu về các tính chất của thị trường như: tính không có trí nhớ, tính công bằng, và rủi ro tăng theo căn bậc hai của thời gian $\sqrt{n}$.

  • Thực hành Python

  • Thực hành Excel ExcelExcel Workbook

Trước khi sang bài tiếp theo, hãy cùng suy ngẫm về một vài câu hỏi gây tranh cãi trong giới Quant:

  • Thị trường có thực sự ngẫu nhiên? Nếu giá cổ phiếu thực sự là một Random Walk, tại sao các huyền thoại như Warren Buffett lại có thể chiến thắng thị trường trong hàng thập kỷ? Liệu có một quy luật xác định cực kỳ phức tạp nào đó ẩn sau sự hỗn loạn mà chúng ta chưa thấy?

  • Rủi ro hay cơ hội? Công thức $\sigma = \sqrt{n}$ cho thấy thời gian càng dài, rủi ro càng lớn. Nhưng trong đầu tư giá trị (mua cổ phiếu có mức giá thấp hơn giá trị thực), thời gian được coi là bạn đồng hành giúp giảm thiểu rủi ro. Bạn đứng về phía toán học thuần túy hay thực tế đầu tư?

  1. Deutsch, H. P. (2004). Introduction to Quantitative Methods for Financial Markets. Wiley Finance.
  2. Wilmott, P. (2006). Paul Wilmott on Quantitative Finance (2nd ed.). Wiley.
  3. Hull, J. C. (2008). Options, Futures, and Other Derivatives, 7th Edition, Pearson Education.
  4. Ross, S. M. (1996). Stochastic Processes (2nd ed.). Wiley.
  5. Durbin, M. (2010). All About Derivatives (2nd ed.). McGraw-Hill Education.
  6. Buchanan, J. R. (2006). An Undergraduate Introduction to Financial Mathematics (2nd ed.). World Scientific Publishing.
  7. MathsIsFun. Random Variables. Retrieved from https://www.mathsisfun.com/data/random-variables.html
  8. Investopedia. Random Walk Theory. Retrieved from https://www.investopedia.com/terms/r/randomwalktheory.asp
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.