Ta tính được giá của quyền chọn mua/bán kiểu Âu có giá thực thi là 120 (ngàn), thời gian đáo hạn là 9 tháng, lãi suất phi rủi ro là 3,79 % (năm)5 theo công thức Black-Scholes:
32
Quyền chọn mua 9.385954 Quyền chọn bán 19.72298
Các câu lệnh của phần mềm R giúp thực hiện tính toán bao gồm: #Lệnh gọi thư viện
library(fOptions) #Lệnh nhập các giá trị
S0 = 106.3; K = 120; r = 0.0379; T = 3/4
#Lệnh tính giá quyền chọn mua kiểu Âu theo công thức Black-Scholes
GBSOption(TypeFlag = "c", S =S0, X =K, Time = T, r = r, sigma = vic_sigma, b = r)@price
Lưu ý: TypeFlag = "p" để tính giá quyền chọn bán; b=r cho kết quả mô hình Black- Scholes cổ điển, giá trị b được sử dụng cho các mô hình mở rộng (chẳng hạn có chia cổ tức).
Câu lệnh tính trực tiếp từ công thức Black-Scholes: #Hàm tính quyền chọn mua
call.price <- function(x = 1, t = 0, T = 1, r = 1, sigma = 1, K = 1) { d2 <- (log(x/K) + (r - 0.5 * sigma^2) * (T - t))/(sigma * sqrt(T - t)) d1 <- d2 + sigma * sqrt(T - t)
x * pnorm(d1) - K * exp(-r * (T - t)) * pnorm(d2) }
#Hàm tính quyền chọn bán
put.price <- function(x = 1, t = 0, T = 1, r = 1, sigma = 1, K = 1) { d2 <- (log(x/K) + (r - 0.5 * sigma^2) * (T - t))/(sigma * sqrt(T - t)) d1 <- d2 + sigma * sqrt(T - t)
K * exp(-r * (T - t)) * pnorm(-d2) - x * pnorm(-d1) }
2.2.2. Mô hình cây nhị thức
Ta tính được giá của quyền chọn mua/bán kiểu Âu/Mỹ có giá thực thi là 120 (ngàn), thời gian đáo hạn là 9 tháng, lãi suất phi rủi ro là 3,79 % (năm) theo mô hình cây nhị phân:
33
Kiểu Âu Kiểu Mỹ Quyền chọn mua 9.393412 9.393412 Quyền chọn bán 19.73043 20.30882
Các câu lệnh của phần mềm R giúp thực hiện tính toán bao gồm: #Lệnh gọi thư viện
library(fOptions) #Lệnh nhập các giá trị
S0 = 106.3; K = 120; r = 0.0379; T = 3/4
#Lệnh tính giá quyền chọn mua kiểu Âu theo mô hình cây nhị phân
CRRBinomialTreeOption(TypeFlag = "ce", S = S0, X = K,Time = T, r = r, b = r, sigma = vic_sigma, n = 300)@price
Ta cũng có thể quan sát được các giá trị trên toàn cây quyền chọn của quyền chọn mua kiểu Âu (để đơn giản ta chọn số bước là 3)
Hình 7. Sơ đồ cây 3 bước
34
CRRTree <- BinomialTreeOption(TypeFlag = "ce", S = S0, X = K,Time = T, r = r, b = r, sigma = vic_sigma, n = 3)
BinomialTreePlot(CRRTree, dy = 1, xlab = "Time steps", ylab = "Number of up steps", xlim = c(0,4))
Lưu ý rằng, các câu lệnh để tính giá và hiển thị cây của các quyền chọn khác tương tự, chỉ thay đổi TypeFlag = “ce” , “pe”, “ca”, “pa” cho quyền chọn mua/bán kiểu Âu/Mỹ. Giá trị n thể hiện số cây của mô hình.
Bảng dưới đây liệt kê giá quyền chọn trong các trường hợp khác nhau của số bước:
Số bước (n) Giá quyền chọn mua
100 9.369051
500 9.389833
1000 9.384315
2000 9.387339
3000 9.386956
Rõ ràng là khi số bước n tăng, thì của giá quyền chọn tính theo phương pháp cây nhị thức tiến gần tới giá trị tính theo công thức Black-Scholes. Ỡ cỡ số lần bước là 103 thì độ chính xác là 1/1000. Đây cũng là minh họa cho lý thuyết rằng mô hình cây nhị thức là trường hợp rời rạc hóa của mô hình Black-Scholes.
2.2.2. Phương pháp mô phỏng Monte Carlo
a) Quyền chọn kiểu Âu
Ta tính được giá của quyền chọn mua/bán kiểu Âu có giá thực thi là 120 (ngàn), thời gian đáo hạn là 9 tháng, lãi suất phi rủi ro là 3,79 % (năm) theo phương pháp mô phỏng Monte Carlo:
35
Quyền chọn bán 19.78064
Các câu lệnh của phần mềm R giúp thực hiện tính toán bao gồm: #Lệnh nhập các giá trị
S0 = 106.3; K = 120; r = 0.0379; T = 3/4
#Lệnh tính giá quyền chọn mua kiểu Âu theo phương pháp mô phỏng Monte Carlo
f <- function(x) max(0, x - K) M <- 1000
MCPrice <- function(x = 1, t = 0, T = 1, r = 1, sigma = 1,M = 1000, f) { h <- function(m) {
u <- rnorm(m/2)
tmp <- c(x * exp((r - 0.5 * sigma^2) * (T - t) + sigma *sqrt(T - t) * u), x * exp((r - 0.5 * sigma^2) * (T - t) + sigma * sqrt(T - t) * (-u))) mean(sapply(tmp, function(xx) f(xx))) } p <- h(M) p * exp(-r * (T - t)) } MCPrice(x = S0, t = 0, T = T, r = r, vic_sigma, M = M, f = f) Lưu ý, để tính giá quyền chọn bán ta thay f <- function(x) max(0, K - x).
Bảng dưới đây liệt kê giá quyền chọn trong các trường hợp khác nhau của số lần giả lập:
Số lần giả lập (M) Giá quyền chọn mua
5000 9.255016
10000 9.40181
50000 9.412703
36 500000 9.377533 1000000 9.40439 5000000 9.392689 10000000 9.386598 20000000 9.38712 30000000 9.389777
Rõ ràng là khi số lần giả lập M tăng, thì của giá quyền chọn tính theo phương pháp mô phỏng tiến gần tới giá trị tính theo công thức Black-Scholes. Ỡ cỡ số lần giả lập là 107 thì độ chính xác là 1/1000.
Một vấn đề quan trọng khi sử dụng phương pháp mô phỏng Monte Carlo là vấn đề tăng tốc độ xử lý khi số lần giả lập tăng bằng tính toán song song. Câu lệnh dưới đây sẽ minh học việc áp dụng thư viện foreach của R để giải quyết vấn đề này.
MCPrice <- function(x = 1, t = 0, T = 1, r = 1, sigma = 1,M = 1000, f) { require(foreach)
h <- function(m) { u <- rnorm(m/2)
tmp <- c(x * exp((r - 0.5 * sigma^2) * (T - t) + sigma * sqrt(T - t) * u), x * exp((r - 0.5 * sigma^2) * (T - t) + sigma * sqrt(T - t) * (-u)))
mean(sapply(tmp, function(xx) f(xx))) }
nodes <- getDoParWorkers()
p <- foreach(m = rep(M/nodes, nodes),.combine = "c") %dopar% h(m) p <- mean(p)
p * exp(-r * (T - t)) }
37
Ta tính được giá của quyền chọn kiểu Á có giá thực thi là 120 (ngàn), thời gian đáo hạn là 9 tháng, lãi suất phi rủi ro là 3,79 % (năm) theo phương pháp mô phỏng Monte Carlo:
Quyền chọn mua 5.837051 Quyền chọn bán 14.26662
Các câu lệnh của phần mềm R giúp thực hiện tính toán bao gồm: #Thư viện để giả lập quá trình ngẫu nhiên
require(sde)
#Lệnh nhập các giá trị
S0 = 106.3; K = 120; r = 0.0379; T = 3/4
#Lệnh tính giá quyền chọn kiểu Á theo phương pháp mô phỏng Monte Carlo MCAsian <- function(S0 = 100, K = 100, t = 0, T = 1, mu = 0.1,
sigma = 0.1, r = 0.1, N = 100, M = 1000) { h <- function(x) {
z <- colMeans(sde.sim(X0 = S0, model = "BS", theta = c(mu, + sigma), M = x, N = N)) f <- function(x) max(x - K, 0) p0 <- mean(sapply(z, f)) } p<-h(M) p <- mean(p) p * exp(-r * (T - t)) }
MCAsian(S0 = S0, K = K, t = 0, T = T, mu = 0.1, sigma = vic_sigma, r = r, N = 250, M = M)
Lưu ý, để tính giá quyền chọn bán ta thay f <- function(x) max(0, K - x). c) Quyền chọn kiểu Mỹ
38
Ta tính được ước lượng trên và dưới của quyền chọn kiểu Mỹ có giá thực thi là 120 (ngàn), thời gian đáo hạn là 9 tháng, lãi suất phi rủi ro là 3,79 % (năm) theo phương pháp mô phỏng Monte Carlo:
Ước lượng dưới Ước lượng trên Quyền chọn mua 9.268182 9.322991 Quyền chọn bán 19.31975 19.66887 #Lệnh nhập các giá trị S0 = 106.3; K = 120; r = 0.0379; T = ¾ #Số chu kỳ b <- 100 #Số nhánh d <- 3 #Hàm lợi nhuận
f <- function(x) sapply(x, function(x) max(x - K, 0)) #Cây giả lập
simTree <- function(b, d, S0, sigma, T, r) { tot <- sum(b^(1:(d - 1))) S <- numeric(tot + 1) S[1] <- S0 dt <- T/d for (i in 0:(tot - b^(d - 1))) { for (j in 1:b) { S[i * b + j + 1] <- S[i + 1] * exp((r - 0.5 * sigma^2) * dt + sigma * sqrt(dt) * rnorm(1))
39 }
} S }
#Hàm ước lượng dưới
lowerBG <- function(S, b, d, f) { tot <- sum(b^(1:(d - 1))) start <- tot - b^(d - 1) + 1 end <- tot + 1 p <- S p[start:end] <- f(S[start:end]) tot1 <- sum(b^(1:(d - 2))) m <- numeric(b) for (i in tot1:0) { v <- f(S[i + 1]) for (j in 1:b) { m[j] <- mean(p[i * b + (1:b)[-j] + 1]) m[j] <- ifelse(v > m[j], v, p[i * b + (1:b)[j] + 1]) } p[i + 1] <- mean(m) } p }
#Hàm ước lượng trên
upperBG <- function(S, b, d, f) { tot <- sum(b^(1:(d - 1)))
40 end <- tot + 1 P <- S P[start:end] <- f(S[start:end]) tot1 <- sum(b^(1:(d - 2))) for (i in tot1:0) { m <- mean(P[i * b + 1:b + 1]) v <- f(S[i + 1]) P[i + 1] <- max(v, m) } P }
#Câu lệnh tính các ước lượng
S <- simTree(b, d, S0, vic_sigma, T, r) lowerBG(S, b, d, f)[1]
upperBG(S, b, d, f)[1] Phương pháp bình phương nhỏ nhất
Ta tính được giá của quyền chọn kiểu Mỹ có giá thực thi là 120 (ngàn), thời gian đáo hạn là 9 tháng, lãi suất phi rủi ro là 3,79 % (năm) theo phương pháp mô phỏng Monte Carlo:
Quyền chọn mua 9.351296 Quyền chọn bán 20.10392
#Lệnh nhập các giá trị
S0 = 106.3; K = 120; r = 0.0379; T = 3/4
#Lệnh tính giá quyền chọn kiểu Mỹ theo phương pháp mô phỏng Monte Carlo LSM <- function(n, d, S0, K, sigma, r, T) {
41 dt <- T/d
z <- rnorm(n)
s.t <- s0 * exp((r - 1/2 * sigma^2) * T + sigma * z * (T^0.5))
s.t[(n + 1):(2 * n)] <- s0 * exp((r - 1/2 * sigma^2) * T - sigma * z * (T^0.5))
CC <- pmax(1 - s.t, 0)
for (k in (d - 1):1) {
z <- rnorm(n)
mean <- (log(s0) + k * log(s.t[1:n]))/(k + 1)
vol <- (k * dt/(k + 1))^0.5 * z
s.t.1 <- exp(mean + sigma * vol)
mean <- (log(s0) + k * log(s.t[(n + 1):(2 * n)]))/(k + 1)
s.t.1[(n + 1):(2 * n)] <- exp(mean - sigma * vol)
CE <- pmax(1 - s.t.1, 0)
idx <- (1:(2 * n))[CE > 0]
discountedCC <- CC[idx] * exp(-r * dt)
basis1 <- exp(-s.t.1[idx]/2)
basis2 <- basis1 * (1 - s.t.1[idx])
basis3 <- basis1 * (1 - 2 * s.t.1[idx] + (s.t.1[idx]^2)/2)
p <- lm(discountedCC ~ basis1 + basis2 + basis3)$coefficients
estimatedCC <- p[1] + p[2] * basis1 + p[3] * basis2 + p[4] * basis3
EF <- rep(0, 2 * n)
EF[idx] <- (CE[idx] > estimatedCC)
CC <- (EF == 0) * CC * exp(-r * dt) + (EF == 1) * CE
42 } payoff <- exp(-r * dt) * (CC[1:n] + CC[(n + 1):(2 * n)])/2 usprice <- mean(payoff * K) error <- 1.96 * sd(payoff * K)/sqrt(n) data.frame(usprice, error) } LSM(10000, 3, S0, K, vic_sigma, r, T)
Lưu ý, để tính giá quyền chọn bán ta thay CC <- pmax(-1 + s.t, 0) và CE <- pmax(-1 + s.t.1, 0)
43
Chương 3.
KẾT LUẬN VÀ KIẾN NGHỊ
4.1. Các kết luận và phát hiện qua nghiên cứu
Mặc dù khái niệm quyền chọn được trình bày trong hầu hết các giáo trình về tài chính của Việt Nam, nhưng có rất ít tài liệu mô tả phương pháp định giá quyền chọn. Đây là một khoảng trống khá lớn đối với người đọc vì nó sẽ ảnh hưởng lớn đến kỹ năng hiểu và vận dụng quyền chọn trong thực tiễn. Bài viết này chứng tỏ:
- Phương pháp định giá quyền chọn theo mô hình cây nhị phân là phù hợp để trình bày trong các tài liệu về tài chính ở Việt Nam, kiến thức toán học để hiểu mô hình này chỉ dừng lại ở những phần đầu của lý thuyết xác suất.
- Việc sử dụng phần mềm R để định giá quyền chọn cho cổ phiếu trên thị trường chứng khoán Việt Nam là rất tiện lợi và thu được hiệu quả nhanh chóng.
4.2. Những hạn chế và vấn đề đặt ra cần tiếp tục nghiên cứu
Trong bài viết này, chúng tôi đã chấp nhận các giả định sau:
(1) thị trường quyền chọn, trái phiếu và cổ phiếu là “không có ma sát” và không có bất kỳ cơ hội kinh doanh chênh lệch giá nào,
(2) lãi suất phi rủi ro là không đổi trong suốt chu kỳ của quyền chọn, và (3) cổ phiếu cơ sở không trả cổ tức trong suốt vòng đời của quyền chọn.
Thuật ngữ “không có ma sát” hàm ý rằng không có chi phí giao dịch, không có thuế, không có hạn chế đối với bán khống (kể cả pháp lý hoặc tài chính, chẳng hạn như quy định về ký quỹ), và cổ phiếu của tất cả các chứng khoán có thể được phân chia một cách vô hạn.
Hướng nghiên cứu tiếp theo của nhóm tác giả có thể là: nghiên cứu định giá quyền chọn trong tình huống có hiện tượng cổ phiếu trả cổ tức. Một hướng nghiên cứu khác là mở rộng phạm vi ứng dụng của lý thuyết định giá quyền chọn không chỉ trên thị trường chứng khoán mà có thể là đối với thị trường bất động sản, hay với thị trường ngoại hối. Một hướng nghiên cứu trong định giá quyền chọn rất phát triển trong thời gian gần đây là ứng dụng công nghệ của trí tuệ nhân tạo, vì vậy, một hướng phát triển khác của đề tài là: Ứng dụng học sâu (Deep Learning) để định giá cho quyền chọn trên thị trường chứng khoán Việt Nam.
44
TÀI LIỆU THAM KHẢO
1. Bùi Phúc Trung. 2011. Định giá quyền chọn chứng khoán phái sinh bằng mô hình
cây nhị phân. Tạp chí phát triển kinh tế Số 246
2. Gergely Darócziet al. 2013. Introduction to R for Quantitative Finance. Packt Publishing
3. Hui Gong, Aerambamoorthy Thavaneswaran and You Liang. 2011. Recent
Developments in Option Pricing. Journal of Mathematical Finance, 1, 63-71
4. Lê Thị Anh Đào, Ngô Văn Toàn. 2019. Định giá quyền chọn sử dụng Garch và
mô hình Black-Scholes: nghiên cứu thực nghiệm tại Việt Nam. Tạp chí Kinh tế và
Ngân hàng châu Á, S. 160
5. Luc Tri Tuyen. 2013. Markov financial model using hidden Markov model.
International Journal of Applied Mathematics and Statistics 40 (10), 72-83
6. Marek Capinski and. Tomasz Zastawniak. 2003. Mathematics for Finance An
Introduction to Financial Engineering. Springer
7. Nguyễn Tiến Dũng và Đỗ Đức Thái. 2014. Nhập môn Toán tài chính. Ebook. 8. Phạm Hữu Hồng Thái. 2013. Ứng dụng mô hình Black-Scholes định giá quyền
chọn VN30. Tạp chí Nghiên cứu Kinh tế. Số 422
9. Stefano M. Iacus. 2011. Option Pricing and Estimation of Financial Models with R. John Wiley & Sons
10.Thân Thị Thu Thủy. 2011. Ứng dụng quyền chọn cổ phiếu trên thị trường chứng
45
PHỤ LỤC
A. Giới thiệu phần mềm R
R là phần mềm (cũng gọi là ngôn ngữ lập trình R) để phân tích dữ liệu được xây dựng bởi Ross Ihaka và Robert Gentleman tại The University of Auckland, New Zealand, tiếp tục được phát triển bởi nhóm R Development Core Team. Phần lớn các kỹ thuật phân tích trong kinh doanh đều được R hỗ trợ: từ Thống kê đến Học máy hay các kỹ thuật Tối ưu hóa. Bằng chứng cho sức mạnh của R đó là những giải thưởng và sự tán dương từ những tạp chí hay cộng đồng uy tín trên thế giới như New York Times, Forbes, Intelligent, Enterprise, InfoWorld và The Register; cũng như được tích hợp phát triển bởi các tập đoàn công nghệ hàng đầu như Microsoft, Google, IBM, Oracle, Amazon-AWS. Các lí do chính nên sử dụng R trong học thuật cũng như thực tiễn là: Miễn phí (và mã nguồn mở); Phần mềm mạnh nhất trong các phần mềm miễn phí; Cạnh tranh (thậm chí vượt trội) so với các phần mềm thương mại6; Đã sử dụng nhiều trong thực tiễn; Chạy được trên nhiều hệ điều hành.
Các thư viện (gói lệnh) của R hỗ trợ định giá quyền chọn.
fOptions: Hỗ trợ định giá quyền chọn kiểu Âu/Mỹ theo hai phương pháp mô hình Black-Scholes và mô hình cây nhị phân.
sde: Hỗ trợ giả lập quá trình ngẫu nhiên.
Download và cài đặt trên Windows (R có cả phiên bản trên Linux và (Mac) OS X)
Truy cập vào trang chủ: http://www.r-project.org/, click vào CRAN (dưới chữ Download ở cột bên trái), sẽ đến trang CRAN Mirrors, click vào một link (ví dụ của Thailand), click tiếp Download R for Windows, click tiếp install R for the first time, click tiếp Download R *.*.* for Windows sẽ download được file R-*.*.*- win.exe (*.*.* chỉ version tại thời điểm download).
Cài đặt như các phần mềm khác.
Cài đặt thư viện
Thư viện fOptions: Tại cửa sổ lệnh của R gõ: install.packages("fOptions")
Các thư viện khác cài tương tự
Sử dụng thư viện:
Để sử dụng các hàm của thư viện fOptions (chẳng hạn), mỗi lần chạy R, tại cửa sổ lệnh gõ: library(fOptions)
46
ỨNG DỤNG MÔ HÌNH CÂY NHỊ PHÂN ĐỊNH GIÁ QUYỀN CHỌN CHO THỊ TRƯỜNG CHỨNG KHOÁN VIỆT NAM
Lê Văn Tuấn
Trường Đại học Thương mại Email: tuanlevan@tmu.edu.vn
Nguyễn Thu Thủy Trường Đại học Thương mại Email: nguyenthuthuy@tmu.edu.vn
Ngô Duy Đô
Trường Đại học Thương mại Email: ngoduydo78@gmail.com
Nguyễn Thị Mai Dung Trường Đại học Thương mại Email: maidung.n7@gmail.com
Ngày nhận:Ngày nhận lại:Ngày duyệt đăng:
Bài viết trình bày cơ sở lý thuyết của mô hình cây nhị phân trong định giá quyền chọn kiểu Âu và kiểu Mỹ; bên cạnh đó, chúng tôi cũng thực nghiệm ứng dụng mô hình này trên phần mềm R để định giá các loại quyền chọn cho cổ phiếu niêm yết trên thị trường chứng khoán Việt Nam. Bài báo cung cấp một phương pháp tốt trong định giá quyền chọn, có thể triển khai thực hiện trên thị trường chứng khoán Việt Nam.
Từ khóa:Mô hình cây nhị phân, Phần mềm R, Quyền chọn kiểu Âu/Mỹ, Thị trường chứng khoán Việt Nam.
JEL Classification: D40, G12
1. Giới thiệu
Lý thuyết định giá tài sản trên thị trường tài chính là một lý thuyết quan trọng trong nghiên cứu lý thuyết cũng như thực tiễn về thị trường tài chính. Hai loại chứng khoán chính là cổ phiếu và trái phiếu. Một cổ phiếu đại diện cho quyền sở hữu một phần của một công ty với một khoản hoàn vốn chưa xác định phụ thuộc vào hiệu quả kinh doanh của doanh nghiệp phát hành cổ phiếu. Còn trái phiếu là các khoản vay phải được hoàn trả ngoại trừ trong các trường hợp vỡ nợ. Trái phiếu có thể được phát hành bởi chính phủ hoặc doanh nghiệp. Thị trường tài
47
chính hiện đại cung cấp nhiều công cụ khác bên cạnh cổ phiếu và trái phiếu. Một trong số các công cụ này là các sản phẩm phái sinh. Các sản phẩm này gọi là phái sinh vì giá của chúng được tính từ giá trị của các tài sản khác. Ví dụ phổ biến nhất về một phái sinh là một quyền chọn, đại