Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Sử dụng MAPLE trong Toán tài chính

Ta xét một số vấn đề cơ bản trong Toán tài chính và sử dụng phần mềm MAPLE để hỗ trợ
việc tính toán: lập các hàm tài chính, vẽ đồ thị và sử dụng một số thủ tục sẵn có trong
MAPLE.

1. Lãi đơn và lãi gộp


Giả sử C là số tiền đầu tư ban đầu, i - lãi suất một thời kỳ, n - số thời kỳ. Sau n thời kỳ, số
tiền thu được theo lãi đơn và theo lãi gộp được tính theo công thức
Cn,đơn = C(1+in) và Cn,gôp = C(1+i)n
Trong MAPLE ta biểu diễn các đại lượng trên bằng các hàm 3 biến C, i, n:
> restart: Cd:=(C,i,n)->C*(1+i*n): Cg:=(C,i,n)->C*(1+i)^n:
Để tính các đại lượng Cd (số tiền thu được theo lãi đơn), Cg (số tiền thu được theo lãi
gộp), ta thay các giá trị của C, i, n vào hàm số vừa thiết lâp. Chẳng hạn tìm số tiền thu
được sau 10 năm theo lãi đơn và lãi gộp của khoản tiền đầu tư ban đầu 3.000 USD với lãi
suất 9%/năm, ta viết lệnh sau:
> Cnd:=Cd(3000,0.09,10); Cng:=Cg(3000,0.09,10);
Cnd := 5700.00 Cng := 7102.091025

Cũng có thể sử dụng các hàm số đó để tìm yếu tố thứ 4 khi đã biết 3 yếu tố khác.
Xét bài toán sau: Biết số tiền thu được theo lãi gộp là 7200 USD sau 10 năm với lãi suất
9%/năm, tìm số tiền đầu tư ban đầu:
> C0g:=fsolve(Cg(C,0.09,10)=7200,C);
C0g := 3041.357809

Bài toán về cách tìm C0g và Cng cũng là bài toán về cách tìm giá trị hiện tại và giá trị
tương lai của tiền tệ theo lãi gộp.
Việc đi tìm lãi suất i khi biết C, Cg, n được nêu qua ví dụ sau: Biết số tiền thu được theo
lãi gộp là 7200 USD sau 10 năm, và số tiền đầu tư ban đầu là 3000 USD, tìm lãi suất i:
> Laisuat:=fsolve(Cg(3000,i,10)=7200,i,0..1);
Laisuat := 0.09149342562

Lãi suất i xấp xỉ 9,15%.


Sử dụng đồ thị ta có thể dễ dàng so sánh số tiền thu được theo lãi đơn và lãi gộp trong
từng thời kỳ.
> with(plots):
> plot({Cg(3000,0.09,ceil(x-1)),Cd(3000,0.09,ceil(x-1))},
x=0..11);

1
Qua đồ thị ta biết được sự chênh lệch giữa hai số tiền thu được từ thời kỳ thứ 1 đến 11.

2. Dãy niên kim


Cho một dãy gồm n niên kim {Ak } dưới dạng một mảng (array) A. Giá trị thu được Vn
của dãy niên kim được tính tại thời điểm n – thời điểm gửi niên kim cuối cùng. Giá trị hiện
tại V0 của dãy niên kim được tính tại thời điểm 0 (thời điểm gốc) - thời điểm trước thời
điểm gửi niên kim đầu tiên một thời kỳ. Ta thể hiện 2 đại lượng đó qua các hàm 2 biến
Vn(A, i) và V0(A,i):
n n
Vn = ∑ Ak (1 + i ) n − k ; V0 = ∑ Ak (1 + i ) − k
k =1 k =1

> restart:
> Vn:=(A,i)->add(A[k]*(1+i)^(n-k),k=1..n):
V0:=(A,i)->add(A[k]*(1+i)^(-k),k=1..n):
Để tính Vn và V0 ta đưa mảng A và i vào hàm số.
Chẳng hạn cho dãy gồm 6 niên kim A = {1, 2, 3, 4, 5, 6} với lãi suất 9%/năm, tính giá trị
thu được Vn và giá trị hiện tại V0 của dãy:
> A:=[1,2,3,4,5,6]; n:=nops(A):Vn(A,0.09); V0(A,0.09);
A := [1, 2, 3, 4, 5, 6]

24.44927418

14.57830336

Biết các giá trị Vn và V0 ta có thể tìm lãi suất. Với Vn = 24, ta tìm được lãi suất:
> fsolve(Vn(A,i)=24,i,0..1);
0.07914496864

Với Vn = 25, ta tìm được lãi suất:


> fsolve(Vn(A,i)=25,i,0..1);
0.1029985617

Tuy nhiên với dãy có n niên kim cố định a, ta xây dựng trực tiếp các hàm tìm giá trị thu
được và giá trị hiện tại qua hàm 3 biến Vcdn(a, i, n) và Vcd0(a, i, n).

2
(1 + i ) n − 1 1 − (1 + i ) − n
Vcdn = a ; Vcd 0 = a
i i
> Vcdn:=(a,i,n)->a*(((1+i)^n-1)/i):
Vcd0:=(a,i,n)->a*((1-(1+i)^(-n))/i):
Tìm giá trị hiện tại và giá trị thu được của chuỗi 10 niên kim cố định với a = 30, i = 9%
> Vcd0(30,0.09,10); Vcdn(30,0.09,10);
192.5297310

455.7878917

Ta có thể tìm 1 yếu tố còn lại khi đã biết 3 yếu tố khác (thông thường yếu tố n đã được
biết). Biết giá trị hiện tại Vcd0 = 192, i = 9% và n = 10, tìm niên kim a:
> Nienkim:=fsolve(Vcd0(a,0.09,10)=192,a);
Nienkim := 29.91745726

hay biết giá trị thu được Vcdn = 455, i = 9% và n = 10, tìm niên kim a:
> Nienkim:=fsolve(Vcdn(a,0.09,10)=455,a);
Nienkim := 29.94814090

Tương tự, biết giá trị hiện tại Vcd0 = 192, a = 30 và n = 10, tìm lãi suất i:
> Laisuat:=fsolve(Vcd0(30,i,10)=192,i);
Laisuat := 0.09062643287

hay biết giá trị thu được Vcdn = 455, a = 30 và n = 10, tìm lãi suất i:
> Laisuat:=fsolve(Vcdn(30,i,10)=455,i);
Laisuat := 0.08963746142

3. Thẩm định dự án đầu tư: NPV, NFV và IRR


Do MAPLE đọc các phần tử của mảng bắt đầu từ chỉ số 1, nên cần viết các khoản thu
(Thu) và chi (Ch) theo dự án thành 2 mảng từ thời kỳ thứ 1 (bắt đầu dự án) đến thời kỳ thứ
n (kết thúc dự án). Mảng CF là mảng luồng tiền ròng thu được: CF = Thu – Ch. Lưu ý
rằng trong Toán tài chính thời điểm gốc của dự án thường được tính là thời điểm 0, vì tại
thời điểm 0, người ta đã bắt đầu phải rải ngân. Cần điều chỉnh các công thức tính MPV và
MFV: Giá trị hiện tại ròng (NPV) được tính tại thời điểm 1, còn giá trị tương lai ròng
(NFV) được tính tại thời điểm n. Lập các hàm NPV(CF,i) và NFV(CF,i):
n n
NPV = ∑ CFk (1 + i ) − k +1 ; NFV = ∑ CFk (1 + i ) n − k
k =1 k =1

Nếu NPV > 0 thì dự án khả thi theo lãi suất đầu tư i dự định.
> restart:
> CF:=Thu-Ch:NPV:=(CF,i)->add(CF[k]*(1+i)^(-k+1),k=1..n):
NFV:=(CF,i)->add(CF[k]*(1+i)^(n-k),k=1..n):
Cho hai dãy Thu và Ch sau:
> Thu:=[0,0,0,3,3,1]:Ch:=[4,1,0,0,0,0]:n:=nops(Thu):
Với lãi suất đầu tư giả định là 9%, tính NPV, NFV:
npv:=NPV(CF,0.09);nfv:=NFV(CF,0.09);

3
npv := 0.1743262663

nfv := 0.268222570

Vì NPV > 0, nên dự án khả thi với lãi suất 9%. Tuy nhiên với lãi suất 12%, ta có:
> npv:=NPV(CF,0.12);
npv := -0.2835353093

NPV < 0 nên dự án không khả thi với lãi suất 12%.
Tìm lãi suất IRR - lãi suất làm cho NPV = 0.
> IRR:=fsolve(NPV(CF,r)=0,r,0..1);
IRR := 0.1009520848

Theo dự án, lãi suất IRR ≈ 10,1%.


Sử dụng đồ thị, vẽ đường NPV với lãi suất từ 5% đến 15%
> with(plots): plot(NPV(CF,r),r=0.05..0.15);

Giá trị IRR chính là giá trị mà đường NPV cắt trục r

4. Thị trường chứng khoán: Hợp đồng quyền chọn mua (call option)
Trong các phần trên, ta lập trực tiếp các hàm tài chính cần quan tâm. Tuy nhiên, MAPLE
có gói thủ tục (package) Finance để tính toán một số vấn đề trong Tài chính. Gọi gói này
bằng:
> with(finance):
Ta nêu cách dùng thủ tục blackscholes trong gói Finance.
Xét các call option kiểu Mỹ. Giả sử một call option có giá thực hiện là 49 U (đơn vị tiền
tệ), và còn 199 ngày là đến ngày đáo hạn. Hiện một call option đó đang được bán với giá
50 U. Giả sử phương sai của giá cổ phiếu là 0,09 năm và lãi suất phi rủi ro là 7%/năm. Sử
dụng mô hình Black-Scholes, ta tính được giá quyền chọn (option value) của call option
đang xét. Thủ tục gọi blackscholes có 5 tham số: giá cổ phiếu, giá thực hiện, lãi suất phi
rủi ro, số năm tính đến ngày đáo hạn, căn bậc hai của phương sai giá cổ phiếu. Ở đây số
năm là 199/365.
> evalf(blackscholes(50.00,49.00,0.07,199/365,sqrt(0.09))):
5.849179520

Giá quyền chọn của call option xấp xỉ 5,85 U.

4
Thể hiện giá quyền chọn là một hàm của giá cổ phiếu:
> f:=x->evalf(blackscholes(x,49.00,0.07,199/365,sqrt(0.09))):
Nếu muốn giá quyền chọn ngày hôm đó đạt mức 6,5 thì phải chờ giá cổ phiếu đạt mức:
> solve(f(x)=6.5,x);
50.98296423

Ta vẽ đồ thị của mối quan hệ này với giá cổ phiếu biến thiên từ 30 U đến 100 U:
> with(plots): plot( f(x), x=30..100);

Nếu độ bấp bênh (giao động) của giá cổ phiếu tăng 0,01
> evalf(blackscholes(50, 49,0.07,199/365,sqrt(0.09+0.01)));
6.072347530

thì giá quyền chọn tăng.

5. Kết luận
Việc tự thiết lập các hàm tài chính cần nghiên cứu cho phép giải quyết các vấn đề theo yêu
cầu đặt ra một cách linh hoạt. Cũng có thể sử dụng các thủ tục sẵn có trong MAPLE để xử
lý một số bài toán trong Toán tài chính.
MAPLE trợ giúp đắc lực cho viêc giảng dạy và nghiên cứu Toán tài chính.

PHAN ĐỨC CHÂU

You might also like