Nội dung cụ thể: Giới thiệu các thành phần cơ bản của MabLab bao gồm: - Khái niệm về MatLab - Tính toán trên ma trận - Đồ họa hai chiều - Không gian 3D - Lập trình trong MatLab - Tạo g
Trang 1Để thấy được khả năng ứng dụng của MatLab vào lĩnh vực tài chính, luận văn sẽ trình bày tổng quan về Matlab (đặc biệt là hộp công cụ tài chính), giới thiệu sơ lược các bài toán thông dụng trong tài chính và thiết kế hệ thống giải một số bài toán tài chính thông qua Matlab
Nhằm tạo sự giao tiếp thân thiện và thể hiện tính năng giao tiếp của MatLab với các ngôn ngữ khác, hệ thống được thiết kế giao diện, xử lý trên nền tảng NET (cụ thể là ngôn ngữ C#) và sử dụng MatLab để tính toán
Khả năng tích hợp MatLab với NET chỉ được hỗ trợ từ MatLab version 7.2 trở lên (Hộp công cụ Matlab Builder for NET)
Nội dung cụ thể:
Giới thiệu các thành phần cơ bản của MabLab bao gồm:
- Khái niệm về MatLab
- Tính toán trên ma trận
- Đồ họa hai chiều
- Không gian 3D
- Lập trình trong MatLab
- Tạo giao diện người sử dụng đồ họa (GUI)
Giới thiệu một số bài toán cơ bản trong tài chính bao gồm
- Bài toán cơ bản trong hệ thống lãi đơn
- Bài toán cơ bản trong hệ thống lãi kép
- Bài toán về các khoản tiền thanh toán theo chu kỳ
- Bài toán tính chỉ số
- Bài toán về dự đoán
Trang 2 Giới thiệu các hàm về tài chính trong Matlab
- Các hàm về tác vụ tài chính phổ biến
- Các hàm trong hệ thống lãi đơn
- Các hàm về các khoản thanh toán theo chu kỳ
- Các hàm về tác vụ phổ biến của đối tượng FTS1
- Các hàm về dự báo theo chuỗi thời gian
Thiết kế hệ thống giải các bài toán tài chính thông qua Matlab
Bố cục luận văn bao gồm 4 chương:
Chương 1 : Giới thiệu tổng quan về Matlab
Chương 2 : Giới thiệu một số bài toán trong tài chính
Chương 3 : Các hàm về tài chính trong Matlab
Chương 4: Thiết kế hệ thống giải các bài toán tài chính thông qua Matlab
1 Financial Time Series: Chuỗi thời gian tài chính
Trang 3Chương 1 GIỚI THIỆU TỔNG QUAN VỀ MATLAB
Matlab (Matrix Laboratory) là phần mềm của tập đoàn The Math Works, Inc of Natick, Massachusetts – Mỹ, được phân chia thành các lĩnh vực ứng dụng dựa vào các hộp công cụ (toolbox), đặc biệt là dùng trong tính toán kỹ thuật Matlab kết hợp việc tính toán, hiển thị và lập trình trong một môi trường dễ sử dụng Ở đó, các vấn đề và giải pháp được trình bày bằng những
ký hiệu toán học quen thuộc
Nhà phân tích số học Cleve Moler đã xây dựng phiên bản đầu tiên của Matlab vào những năm 1970 bằng FORTRAN Sau đó, Matlab được viết bằng ngôn ngữ C trên cơ sở các thư viện đã có và phát triển thêm nhiều lĩnh vực ứng dụng khác Nó đưa ra nhiều tác vụ thực tế được kết hợp với việc giải quyết các vấn đề số học Điều này làm giảm bớt thời gian suy nghĩ và khuyến khích các thử nghiệm Matlab cung cấp các lệnh mạnh và hiệu quả, giúp hiện thực những tác vụ phức tạp chỉ bằng một hoặc hai dòng lệnh Ngoài những hàm được Matlab cung cấp sẵn, ta cũng có thể tạo ra hàm mới để phục vụ cho các ứng dụng riêng của mình
Các ứng dụng tiêu biểu bao gồm:
Hỗ trợ toán học và tính toán
Phát triển thuật toán
Yêu cầu cung cấp dữ liệu
Mô hình, mô phỏng và lấy mẫu
Phân tích, khảo sát và hiển thị dữ liệu
Khoa học và kỹ thuật đồ họa
Phát triển ứng dụng với giao diện người dùng đồ họa (GUI)
2 Tài Liệu Tham Khảo
Trang 41.2 Các chức năng của Matlab:
9 1 3
5 4 2
M = zeros(n,m) Ma trận kích thước nxm với toàn các phần tử là 0
M = ones(n,m) Ma trận kích thước nxm với toàn các phần tử là 1
M = eye(n) Ma trận đường chéo (ma trận vuông cấp n)
M = eye(n,m) Ma trận đường chéo mở rộng (kích thước nxm)
M = magic(n) Ma trận ma phương bậc n
M = rand(n,m) Ma trận kích thước nxm với các số ngẫu nhiên
Bảng 1 1: Một số ma trận đặc biệt trong Matlab
1.2.1.2 Xử lý ma trận:
Các phép toán cơ bản:
Trong Matlab, ký hiệu A’ là ma trận chuyển vị của ma trận A
Các ma trận được cộng , trừ và nhân bằng các ký hiệu toán học thông thường là +, –, * và / Đặc biệt Matlab còn cung cấp phép chia phải (dùng trong giải phương trình tuyến tính) ký hiệu là \
3 Toán tử “:” biểu diễn cho cả dòng hoặc cả cột của ma trận Nếu nó nằm giữa 2 số nguyên thì đại diện cho tất cả các số nguyên ở giữa 2 số nguyên đó (Xem chi tiết trong [3], TLTK)
Trang 5Ví dụ : >>A = [5 7 0 ; 2 1 8] ;
>>B = [6 1 4 ; 5 3 1] ; >>C = A+B
Kết quả : C =
947
4811
Chú ý : Với phép nhân vô hướng hai ma trận cùng kích thước A và
B phải viết là A.*B thay vì A*B (số hàng ma trận A phải bằng số cột ma
trận B)
Lấy các giá trị của một ma trận: (Xem chi tiết trong [4], TLTK)
M(i, j) : là phần tử dòng i cột j của ma trận M
M(:, j) : là cột thứ j của ma trận M
M(i:k, :) : biểu diễn các dòng từ i đến k
M(i:k, j:l) : chọn ma trận con gồm các phần tử thuộc hàng từ i đến k và
từ cột j đến l
Ví dụ: cho ma trận A =
6 12 8 9
3 2 5 1
1 7 4 2
>>B = A(2:3, 2:3)
B =
128
25
1.2.1.3 Các hàm cơ bản : (Xem chi tiết trong [5], TLTK)
Nếu A là một ma trận, sẽ trả về vector hàng chứa các phần tử lớn nhất của mỗi cột
min(A) Tương tự max(A), nhưng lựa chọn phần tử bé nhất sum(A) Tính tổng các phần tử trong từng cột của ma trận A,
kết quả chứa trong vector hàng
sort(A) Sắp xếp mỗi cột của ma trận A theo thứ tự giá trị tăng
dần từ hàng 1 đến hàng cuối rot90(M) Quay các phần tử trong ma trận M ngược chiều kim
đồng hồ một góc 90 độ
fliplr(M) Đảo các phần tử trong ma trận M từ trái sang phải flipud(M) Đảo các phần tử trong ma trận M từ trên xuống dưới reshape(M, n, m) Hàm dùng để định dạng lại số hàng và cột của ma
trận Kết quả trả về là ma trận mới với số hàng và cột
Trang 6khác với M, nhưng số phần tử của 2 ma trận thì bằng nhau Với n, m là số hàng và cột tương ứng của ma trận mới
diag(M)
diag(M, k)
diag(V)
Lấy các phần tử trên đường chéo chính của M
Ta có thể chọn đường chéo dựa vào k
k = 0: chọn đường chéo chính
k<0: chọn đường chéo thứ k ở dưới đường chéo chính k>0: chọn đường chéo thứ k ở trên đường chéo chính Tạo ma trận vuông với đường chéo chính là vec-tơ V triu(M)
triu(M, k) Tạo ra ma trận mới cùng kích thước và chứa các phần tử thuộc và nằm phía trên đường chéo chính (hoặc thứ
1.2.2 Đồ họa hai chiều trong MatLab:
1.2.2.1 Một số lệnh kiểm soát: (Xem chi tiết trong [3], TLTK)
figure(gef) Hiển thị cửa sổ đồ họa hiện hành
whitebg(ColorSpec) Thay đổi màu nền của màn hình đồ họa
home Chuyển con trỏ đến vị trí “home”– vị trí phía trên
bên trái màn hình
elf Xóa cửa sổ đồ họa hiện hành
hold on Giữ lại tất cả màn hình đã vẽ Các lệnh sau sẽ thêm
vào màn hình đồ họa chứ không xóa màn hình cũ hold off Bỏ chức năng “hold on”, đây là trạng thái mặc định
của màng hình đồ họa
ishold Trả về 1 nếu trạng thái của hold là on, ngược lại trả
về 0
subplot(m,n,p) Chia màn hình đồ họa thành ma trận mxn của
những khung ảnh con với p là khung ảnh hiện hành Những khung ảnh con được đánh số theo chiều từ phải sang trái và từ trên xuống
grid on/off Bật/tắt chế độ thêm lưới vào khung nhìn trong màn
hình đồ họa
axis([xmin,xmax,ymin,ymax]) Đặt giới hạn cho trục x và y của hệ tọa độ hiện
hành
Bảng 1 3: Các lệnh kiểm soát
Trang 7plot(X1,Y1,…,Xn,Yn) Vẽ tất cả các đường được định nghĩa bởi cặp Xn,
Yn Nếu Xn hoặc Yn là ma trận, vec-tơ được vẽ
là các hàng hoặc các cột của ma trận, phụ thuộc vào kích thước hàng hoặc cột của vec-tơ có phù hợp với ma trận hay không
plot(X1,Y1, 'LineSpec', ) Vẽ tất cả các đường được định nghĩa bởi bộ ba
Xn, Yn và LineSpec LineSpec là đặc tả xác định kiểu đường, ký hiệu và màu của đường được vẽ (Xem danh sách các LineSpec ở phụ lục)
plot( ,'PName',PValue, ) Thiết lập các thuộc tính với các giá trị thuộc tính
được chỉ định cho tất cả các đối tượng đồ họa lineseries tạo ra bởi lệnh plot
plot(axes_handle, ) Vẽ trong hệ tọa độ với ô điều khiển axes_handle
thay cho hệ tọa độ hiện hành
h = plot(…) Trả về một vec-tơ cột của các ô điều khiển cho
các đối tượng đồ họa lineseries, một ô điều khiển trên một hàng
hline = plot(‘v6’,…) Trả về các ô điều khiển cho các đối tượng đường
(line) thay cho đối tượng lineseries
Trang 8Kết quả:
Hình 1 1: Ví dụ cách dùng lệnh plot
Ngoài ra, còn một số lệnh có cú pháp và ý nghĩa tương tự như lệnh plot:
• Lệnh loglog: vẽ đồ thị với giá trị logarith theo cả hai trục
• Lệnh semilogx: vẽ đồ thị với giá trị logarith theo trục x và tuyến tính theo trục y
• Lệnh semilogy: vẽ đồ thị với giá trị logarith theo trục y và tuyến tính theo trục x
• Lệnh plotyy: vẽ đồ thị với nhãn y được dán bên cạnh trái và phải
1.2.2.3 Văn bản trong màn hình đồ họa :
Matlab hỗ trợ các lệnh để tạo văn bản trên màn hình đồ họa Ta có thể gán thêm các nhãn vào các trục tọa độ, hay đặt một chuỗi ký tự vào vị trí bất kỳ trên đồ thị,…
title(‘text’) Đặt tiêu đề với nội dung “text”
xlable(‘text’) Gán nhãn “text” ở giữa trục x
ylable(‘text’) Gán nhãn “text” ở giữa trục y
zlable(‘text’) Gán nhãn “text” ở giữa trục z
legend(‘s1’,’s2’,…) Thêm chuỗi s1, s2 (trong hộp – box) với vị trí của box
có thể được điều khiển bởi chuột
text(x,y,’txt’) Hiện chuổi ký tự txt ở vị trí x,y trên màn hình đồ họa gtext(‘txt’) Dùng chuột click để đặt chuỗi ký tự txt tại vị trí mong
muốn Mỗi hàm gtext(…) được click 1 lần
Bảng 1 5: Các hàm về văn bản trong màn hình đồ họa
Trang 91.2.3 Không gian 3D (3D – Visualization):
• Đặt thuộc tính colormap và shading
• Thêm thuộc tính lighting
• Đặt điểm nhìn
• Đặt trục giới hạn và tick marks
• Set aspect ratio(Đặt tỉ lệ tương quan)
• Chú thích hình ảnh với nhãn tọa độ, chú giải và chủ đề
• In biểu đồ
1.2.3.2 Các hàm vẽ 3D cơ bản:
plot3 (x, y, z) Tạo ra một đường 3D với các điểm tọa độ là thành phần của x,
y, z (với x, y, z là 3 vector có cùng độ dài) và sau đó tạo ra thể
hiện đường 2D nằm trên màn hình
mesh(x, y, z ) Vẽ một khung lưới với màu được xác định bởi z để màu tương
ứng với độ cao của bề mặt Nếu x, y là vec-tơ thì length(x) = n
và length(y)=m, [m,n] = size(z)
meshc(x, y, z ) Vẽ một hình đường nét ở dưới hình lưới
surf(x ,y, z ) Tạo ra một bề mặt được tô đậm dần với z là đối số dùng để tô
màu
Bảng 1 6: Các hàm vẽ 3D cơ bản
Khái niệm về lighting:
Đây là một kỹ thuật dành cho việc tạo khả năng hiện thực khung nhìn
đồ họa Nó thực hiện mô phỏng khu vực sáng tối xuất hiện trên những đối
tượng dưới độ sáng tự nhiên Để tạo hiệu ứng lighting, MatLab định nghĩa
đối tượng gọi là light MatLab áp dụng lighting cho đối tượng bề mặt và
chắp vá
Trang 10 Các lệnh lighting:
Camlight: Tạo hoặc di chuyển một light đối với vị trí máy quay
- Headlight: tạo một light tại vị trí máy quay
- Right(mặc định): tạo một light bên phải và trên xuống từ máy quay
- Left: tạo một light bên trái và trên xuống từ máy quay
Lightangle: Tạo hoặc xác định vị trí một light trong tọa độ hình cầu
Light: Tạo đối tượng light Gồm ba thuộc tính quan trọng:
- Color: Thuộc tính Color xác định màu của light được định hướng
từ nguồn light Màu của một đối tượng trong khung nhìn được xác định bởi màu của đối tượng và nguồn sáng
- Style: Style xác định liệu nguồn sáng là một điểm phát ra từ một vị trí xác định trong tất cả các hướng hay là một nguồn sáng được đặt tại vô cực tỏa ra từ một vị trí xác định với những chùm sáng song song
- Position: Position xác định vị trí nguồn sáng Trong trường hợp nguồn sáng tại vô cực, Position định rõ hướng đến nguồn sáng
Lighting: Chọn thuật toán lighting để tính hiệu ứng của đối tượng light
trên tất cả các đối tượng surface và patch trong tọa độ hiện tại Gồm các thuộc tính:
- none: tắt thuộc tính lighting
- flat: tạo màu đồng nhất cho mỗi mặt của đối tượng Chọn phương pháp này để xem rõ một số mặt của đối tượng
- gouraud: tính toán màu tại đỉnh và nội suy màu thông qua các mặt.Chọn phương pháp này để xem bề mặt cong
- phong: Nội suy đỉnh qua mỗi mặt và tính toán hệ số phản xạ trên mỗi pixel Chọn phương pháp này để xem bề mặt cong phong lighting cho kết quả tốt hơn Gouraud nhưng mất nhiều thời gian để thể hiện
Material: Đặt thuộc tính hệ số phản xạ của đối tượng light
Các thuộc tính lighting:
AmbientLightColor: Thuộc tính axes xác định màu nền của khung
nhìn, không định hướng và ảnh hưởng đồng đều đến tất cả đối tượng Hiệu ứng độ sáng xung quanh chỉ xuất hiện khi có một đối tượng light
có thể thấy được trong hệ trục
AmbientStrength: Thuộc tính patch và surface xác định cường độ
thành phần ánh sáng xung quanh được phản xạ từ đối tượng
Trang 11 DiffuseStrength: Thuộc tính patch và surface xác định cường độ thành
phần ánh sáng khuếch tán được phản xạ từ đối tượng
SpecularStrength: Thuộc tính patch và surface xác định cường độ thành phần ánh sáng phản chiếu được phản xạ từ đối tượng
SpecularExponent: Thuộc tính patch và surface xác định kích thước
chỗ phản chiếu sáng nhất
SpecularColorReflectance: Thuộc tính patch và surface xác định mức
độ ánh sáng phản xạ được tô màu bởi đối tượng color hoặc màu nguồn sáng
FaceLighting: Thuộc tính patch và surface xác định phương pháp tính
hiệu ứng ánh sáng trên những bề mặt đối tượng Nếu chọn thuộc tính này thì không có thuộc tính lighting flat, phong, gouraud
EdgeLighting: Thuộc tính patch và surface xác định phương pháp tính
hiệu ứng ánh sáng trên các đỉnh của đối tượng Nếu chọn thuộc tính này thì không có thuộc tính lighting flat, phong, gouraud
BackFaceLighting: Thuộc tính patch và surface xác định cách các bề
mặt được chiếu sáng khi đỉnh của chúng cách xa máy quay.Thuộc tính này hữu ích để phân biệt bề mặt bên trong và bên ngoài của một đối tượng
FaceColor: Thuộc tính patch và surface xác định màu bề mặt đối tượng
EdgeColor: Thuộc tính patch và surface xác định màu đỉnh đối tượng
VertexNormals: Thuộc tính patch và surface chứa những vectơ pháp
tuyến cho mỗi đỉnh MatLab dùng các vec-tơ đỉnh pháp tuyến để thể hiện tính toán sự phân bố ánh sáng MatLab tạo ra dữ liệu này tự động
NormalMode: Thuộc tính patch và surface xác định liệu MalLab có
tính toán lại các vec-tơ nếu ta thay đổi dữ liệu( auto ) hoặc dùng giá trị hiện tại của thuộc tính VextexNormals(manual) Nếu ta xác định giá trị VextexNormals, MatLab đặt thuộc tính này là manual
1.2.3.4 Độ trong suốt (Transparency):
Đối tượng Transparency:
Tạo đối tượng đồ họa nửa trong suốt là một kỹ thuật hữu ích trong không gian 3D làm dễ dàng thấy được thông tin của đối tượng trong khi
nó hoàn toàn mờ đục
Trang 12 Hàm Transparency:
alpha : Đặt, truy vấn thuộc tính Transparency cho những đối tượng trong tọa độ hiện tại
- Thuộc tính FaceAlpha: flat, interp, texture, opaque(=1), clear(=0)
- Thuộc tính AlphaData: x, y, z, color, rand
- Thuộc tính AlphaDataMapping: scaled, direct, none
alphamap: Xác định hình thái alphamap
- Parameter: default, rampup, rampdown, vup, vdown, increase, decrease, spin
alim: Đặt, truy vấn giới hạn tọa độ alpha
- alimMode: auto, manual
Hình 1 2 : Kiểu dữ liệu trong Matlab
Trang 13 Kiểu logic (logical):
Kiểu dữ liệu logic thể hiện trạng thái true hoặc false bằng cách dùng lần lượt hai số 1 và 0 Các hàm hay toán tử trả về true hoặc false để cho biết điều kiện được tìm thấy là đúng hay không Dữ liệu logic không có hướng, Matlab hỗ trợ các mảng giá trị logic
Một cách để tạo mảng logic là nhập giá trị true hoặc false cho mỗi phần tử của mảng True trả về mức logic 1 và false trả về mức logic 0
Ví dụ : >>X = [true false false true false]
Kết quả: X = [1 0 0 1 0]
Kiểu ký tự và chuỗi (char and string):
Trong Matlab từ ‘string’ được nhắc đến như một mảng các ký tự Unicode Matlab thể hiện mỗi ký tự bên trong như giá trị số tương ứng của nó Tuy nhiên, nếu không muốn truy cập những giá trị này, thì có thể
dễ dàng làm việc với các ký tự như hiển thị của chúng trên màn hình Chúng ta tạo ra dữ liệu ký tự bằng cách ghi các ký tự trong dấu nháy đơn
Ví dụ: Tạo biến “Ten” với giá trị là “Nguyen Van A”
>>Ten = ‘Nguyen Van A’
Hay tạo mảng ký tự hai chiều như sau:
>>Ten_Lop = [‘Nguyen Van A’; ‘Lop 02CNPM’]
Có thể chuyển đổi qua lại giữa hai kiểu dữ liệu numeric và string
Kiểu số (numeric):
Kiểu dữ liệu số trong Matlab bao gồm các số nguyên (integer) có dấu
và không dấu, single và double
Cách tạo dữ liệu kiểu số nguyên: >>tên biến = kiểu(giá trị)
Ví dụ: để tạo biến x có giá trị là 123 kiểu integer 16 bit ta viết:
>>x = int16(123);
Riêng với kiểu double không cần viết x = double(123.456) Ta viết
x = 123.456 Vì mặc định, Matlab lưu trữ các giá trị số là kiểu double
Mảng các ô (Cell Arrays):
Mảng ô cung cấp một cơ chế lưu trữ cho các loại dữ liệu khác nhau
Có thể lưu các mảng của kiểu và/hoặc kích thước khác nhau bên trong các
ô của mảng ô Để truy cập dữ liệu bên trong mảng các ô, ta dùng chỉ mục
ma trận tương tự như các mảng và ma trận trong Matlab Tuy nhiên, phải dùng cặp ngoặc {} thay vì () như thông thường
Trang 14Tạo mảng các ô bằng cách sau:
+ Dùng các câu lệnh có sẵn
+ Chỉ định mảng dùng hàm “cell”, sau đó đưa dữ liệu vào
Kiểu cấu trúc (structure):
Cấu trúc là mảng Matlab với tên “data containers” được gọi là trường (feild) Các trường của một cấu trúc có thể chứa bất kỳ loại dữ liệu nào
Ta có thể xây dựng cấu trúc bằng hai cách :
+ Dùng các câu lệnh có sẵn
+ Dùng hàm “struct”
1.2.4.3 Thành phần lập trình cơ bản:
Biến trong Matlab:
Biến (variable) trong Matlab là một ký hiệu được sử dụng để chứa một giá trị
Matlab cung cấp ba kiểu biến cơ bản: biến cục bộ (local variables), biến toàn cục (global variables) và biến thường trực (persistent variables)
- Biến cục bộ: Mỗi hàm trong Matlab đều có biến cục bộ riêng của
nó Các biến được định nghĩa trong một hàm không lưu lại trong bộ nhớ từ một hàm gọi đến hàm kế tiếp, nếu chúng không được định nghĩa là global hoặc persistent
- Biến toàn cục: Khi biến trong một hàm có giá trị với tất cả các hàm khác thì ta phải khai báo biến đó là global Để khai báo biến global chỉ cần thêm vào trước tên biến từ khóa “global”
Cách khai báo: global <tênbiến1> <tênbiến2> <tênbiến3>…
(Các biến phải cách nhau bởi khoảng trắng, không dùng dấu phẩy) Một số lệnh liên quan đến biến toàn cục:
clear global: xóa bỏ các biến toàn cục
isglobal(tên_biến): hàm trả về 1 nếu tên_biến là biến toàn cục, ngược lại trả về 0
- Biến thường trực: đặc điểm của biến thường trực:
Ta chỉ có thể khai báo và dùng chúng bên trong các hàm M-file
Chỉ trong hàm mà biến được định nghĩa mới có quyền truy cập biến đó
Matlab không xóa chúng trong bộ nhớ khi thoát khỏi hàm Vì vậy giá trị của nó được giữ lại từ một hàm gọi đến hàm kế tiếp
Cách khai báo : persistent <tên_biến>
Trang 15Khi ta xóa hàm mà biến thường trực được định nghĩa (dùng lệnh clear <tên hàm> hoặc clear all), hoặc chỉnh sửa M-file cho hàm đó, thì Matlab sẽ xóa tất cả các biến thường trực được sử dụng trong hàm
Đặt tên biến: Tên biến trong Matlab phải bắt đầu bằng một chữ cái, tiếp theo là các chữ cái, số, hay dấu gạch dưới Matlab phân biệt chữ hoa và thường Mặc dù tên biến có thể dài tùy thích, nhưng Matlab chỉ
dùng N (được trả về từ hàm namelengthmax) ký tự đầu tiên của tên
biến Vì vậy, nên đặt tên biến trong khoảng N (N = 63) ký tự để Matlab có thể phân biệt các biến với nhau
- Số âm : Toán tử hai chấm ^ Lũy thừa
.' Hoán vị (chuyển vị) ' Complex conjugate transpose
* Nhân ma trận / Chia phải ma trận
Trang 16- Toán tử logic:
& Nếu hai phần tử tương ứng ở hai mảng đều có giá trị là
true thì trả về 1 Ngược lại trả về 0
| Nếu một trong hai phần tử tương ứng ở hai mảng có giá
trị là true thì trả về 1 Ngược lại trả về 0
~ Lấy bù từng phần tử của mảng
xor Trả về một nếu hai phần tử tương ứng ở hai mảng có giá
trị khác nhau Ngược lại trả về 0
Bảng 1 9: Toán tử logic
Câu lệnh điều kiện:
Lệnh if: đánh giá biểu thức logic và thực thi nhóm lệnh dựa trên
giá trị của biểu thức Các lệnh if có thể lồng nhau
Trang 17Nếu biểu thức 1 đúng thì thực hiện Nhóm lệnh 1 Biểu thức 2 đúng thì thực hiện nhóm lệnh 2,…,biểu thức n đúng thì thực hiện nhóm lệnh n Nếu không có biểu thức nào đúng thì không có nhóm lệnh nào được thi hành
Lệnh switch: thực thi các nhóm lệnh dựa trên giá trị của một biến
+ Cú pháp 2: for chỉ số = <biểu thức>
end
Trang 18<Biểu thức> là một ma trận (một vec-tơ hay một đại lượng vô hướng), ‘Nhóm lệnh’ được thực thi với số lần bằng số cột của ma trận biểu thức Trong mỗi bước lặp chỉ số = giá trị của một phần tử của ma trận
Nếu biểu thức là ma trận rỗng thì vòng lặp không được thực thi
Vòng lặp while: thực hiện một lệnh hoặc một nhóm lệnh lặp đi lặp
lại nhiều lần khi biểu thức là đúng ( bằng 1)
Lệnh break: kết thúc việc thực thi vòng lặp for hoặc while Khi
gặp lệnh break thì chương trình sẽ thoát khỏi vòng lặp và tiếp tục thực thi các lệnh ở bên ngoài vòng lặp Trong vòng lặp lồng nhau, break chỉ thoát khỏi vòng lặp ở trong cùng
Lệnh continue: chuyển đến lần lặp kế tiếp của còng lặp for hoặc
while Tại vị trí lệnh continue xuất hiện, nó bỏ qua tất cả các lệnh phía sau nó trong thân vòng lặp
1.2.4.4 Lập trình bằng M-file
Khi viết một chương trình trong Matlab và lưu lại thành file, thì file đó được gọi là M-file (với phần mở rộng là m) Có hai loại M-file là script và function
Script file
Script là loại đơn giản nhất của M-file bởi vì chúng không có đối số nhập và xuất Nó được dùng cho các chuỗi tự động của các lệnh Matlab, cũng như việc tính toán mà ta phải thực hiện lặp đi lặp lại từ dòng lệnh (command line)
Có thể dùng các chương trình soạn thảo nói chung để tạo script file
Nó được lưu dưới dạng các ký tự ASCII
Trang 19Các điểm cần lưu ý: (Xem chi tiết trong [10], TLTK)
Trong Matlab, các ký tự được viết sau ký hiệu “%” được xem là chú thích (comment)
Nếu không muốn hiển thị các kết quả ra màn hình sau khi câu lệnh được thực thi, ta thêm dấu “;” vào cuối mỗi dòng lệnh
Không cần phải khai báo các biến sử dụng trong chương trình Matlab tự động nhận biết các biến và giá trị của chung khi ta đưa vào chương trình
Để chạy script file ta chỉ cần gõ tên file (không cần phần mở rộng) và nhấn phím (Enter) Khi thực thi nội dung file không được hiển thị lên màn hình
Một số lệnh cơ bản dùng trong script file:
disp(…) Hiển thị giá trị của biến hoặc hiển thị một chuỗi (nằm
trong cặp nháy đơn),…
input(‘text’) Hiển thị chuỗi ký tự và dấu nhắc chờ nhận một giá trị từ
bàn phím
keyboard Trao điều khiển tạm thời cho bàn phím
echo Điều khiển cửa sổ lệnh lặp lại các lệnh của script-file
trong khi thực thi Được dùng để debug hoặc hiển thị các lệnh trong M-file khi chúng được thực thi
type(‘filename’) Hiển thị nội dung của file có tên nằm trong cặp nháy
đơn Nội dung được hiển thị trong cửa sổ lệnh của Matlab
what Cho biết các file M-file và MAT-file có trong vùng làm
việc hiện hành hay không
mfilename Trả về tên của M-file đang chạy
pause Dừng lại đến khi người dùng nhấn phím bất kỳ
pause(n) Dừng lại n giây
waitforbuttonpress Dừng lại cho đến khi người dùng nhấn chuột hoặc phím
Bảng 1 10: Các lệnh cơ bản dùng trong script file
Hàm (function) và tạo hàm trong Matlab
Function là một chương trình thủ tục (routine), được hiện thực trong M-file, nhận đối số nhập vào (input) và trả về các đối số xuất (output) Nó thao tác trên các biến ở bên trong không gian làm việc (workspace) riêng của mình Không gian làm việc này riêng biệt với không gian mà ta truy cập tại dấu nhắc lệnh của Matlab
Các hàm này cũng được lưu trong M-file và được dùng như các hàm
mà Matlab cung cấp sẵn M-file có thể chứa nhiều hơn một hàm
Trang 20(function), những hàm được thêm vào gọi là hàm con (subfunction) Các hàm này chỉ nhìn thấy hàm chính hoặc các hàm con khác trong cùng một file
Các quy tắc viết hàm trong Matlab: (Xem chi tiết trong [5], TLTK)
Hàm phải được bắt đầu bằng từ khóa “function” Tiếp theo là các
tham số đầu ra (được bao trong cặp ngoặc vuông và cách nhau bởi dấu phẩy), dấu bằng, tên hàm, tham số đầu vào (nằm trong cặp ngoặc đơn và cách nhau bằng dấu phẩy)
Nên viết chú thích cho hàm ở các dòng đầu tiên Khi gõ lệnh help
với tên hàm, thì các chú thích này sẽ được hiển thị
Các giá trị trả về của hàm được lưu trong tham số (ma trận) đầu
ra Vì vậy, phải chắc chắn rằng trong hàm có chứa câu lệnh xác định giá trị của tham số đầu ra
Các biến (ma trận) cùng tên có thể được sử dụng bởi hàm và chương trình cần đến nó Vì các hàm và chương trình được thực hiện tách biệt nhau Các giá trị tính toán trong hàm, tham số đầu
ra không chịu tác động của chương trình
Các biến đặc biệt nargin và nargout dùng để xác định số tham số đầu vào và ra được sử dụng trong hàm Các tham số này chỉ là biến cục bộ
Ví dụ: function [tsr1, tsr2,…,tsrn] = tên_hàm(tsv1, tsv2,…,tsvn)
% ghi chú 1…
% ghi chú n <Nhóm lệnh>
1.2.5.1 Tạo firgure
Trong MatLab, GUI là figure Trước khi thêm các thành phần vào figure, cần tạo một figure xác định f = figure, f là handle của figure
Chú ý: Trước khi tạo các thành phần mà không có figure thì MatLab có
thể tạo figure tự động nhưng ta không biết handle của figure
Sau đây là các thuộc tính của figure:
MenuBar: hiển thị bảng chọn của Menu bar
- Giá trị: none,figure(mặc định)
Name: Tựa đề hiển thị trong cửa sổ figure Nếu NumberTitle là on, chuỗi này được thêm vào số figure
- Giá trị: string
Trang 21 NumberTitle: on( mặc định ), off
Position: kích thước của figure GUI và vị trí của nó cân đối với góc dưới bên trái màn hình
- [ left, bottom, width, height ]
Resize: Xác định khả năng người dùng có thể thay đổi kích thước figure bằng chuột
- Giá trị: on( mặc định ), off
Toolbar: Hiển thị hoặc ẩn thanh công cụ mặc định
- none: không hiển thị thanh công cụ
- auto: hiển thị thanh công cụ nhưng nó bị bỏ qua nếu thanh công cụ khác thêm vào
- figure( mặc định ): hiển thị thanh công cụ
Units: đơn vị đo lường
- Giá trị: centimeters, characters, inches, normalized, points, pixels( mặc định )
Visible: Hiển thị figure trên màn hình
- Giá trị: on( mặc định ), off
Button Group: giống như panel nhưng dùng để quản lý các radio
button và toggle button
Trang 22 Pop-Up Menu: hiển thị danh sách chọn lựa khi người dùng click vào
1.2.5.3 Thêm điều khiển giao diện người dùng (User Interface Controls)
uich = uicontrol( parent, ‘PropertyName’, ‘PropertyValue’, )
Nếu không xác định parent thì figure hiện tại được xem parent
Các thuộc tính được dùng phổ biến
- Max: giá trị lớn nhất, phụ thuộc vào thuộc tính Style Mặc định là 1
- Min: giá trị lớn nhất, phụ thuộc vào thuộc tính Style Mặc định là 0
- Position: kích thước và vị trí của thành phần tương ứng với parent
- String: Tạo tựa đề
- Style: pushbutton( mặc định ), togglebutton, radiobutton, checkbox, edit, text, slider, listbox, popupmenu
- Units: đơn vị đo lường Gồm: pixels( mặc định ), normalized, inches, centimeters, points, characters
- Value: phụ thuộc vào thuộc tính Style
Trang 23 List Box:
- Style = ‘listbox’
- value = scalar :số thứ tự của item được chọn
- Max – Min > 1, value = [ ] :chọn nhiều item
- Max – Min: xác định khoảng giá trị của slider
- value: min <= value <= max
- SliderStep = [min_step, max_step]
min_step: giá trị nhỏ nhất khi thay đổi
max_step: giá trị lớn nhất khi thay đổi
Static Text:
- Style = ‘text’
Toogle Button:
- Style = ‘tooglebutton’
- value = 1: chọn, value = 0: không chọn
1.2.5.4 Thêm Panel và Button Groups
Các thuộc tính được dùng phổ biến
- Parent: Xác định figure, panel, group button là thành phần cha
- Position: Kích thước và vị trí của thành phần trong parent của nó
- Title: Dùng để gán nhãn
- TitlePosition: vị trí của title
Các giá trị: lefttop( mặc định ), centertop, righttop, leftbottom, centerbottom, rightbottom
Trang 24- Units: Đơn vị đo lường
Các giá trị: pixels, normalized( mặc định ), inches,
centimeters, points, characters
- Parent: Xác định figure, panel, group button là thành phần cha
- Position: Kích thước và vị trí của thành phần trong parent của nó
- Units: Đơn vị đo lường
Các giá trị: pixels, normalized( mặc định ), inches, centimeters, points, characters
1.2.5.6 Thêm ActiveX Controls
h = actxcontrol('progid', position, fig_handle) → tạo trình điều khiển tại
vị trí xác định trong cửa sổ figure hiện tại Cửa sổ này được nhận biết bởi fig_handle( mặc định là gcf )
1.2.5.7 Các thành phần Aligning
align( HandleList, ‘HorizontalAlignment’, ‘VerticalAlignment’ )
HandleList: tất cả handle phải có cùng parent
HorizontalAlignment: None, Left, Center, Right, Distribute, Fixed
VerticalAlignment: None, Top, Middle, Bottom, Distribute, Fixed
1.2.5.8 Thiết lập Tab Oder
Tab Oder mặc định: là thứ tự khi tạo các thành phần
Ta không thể tab đến axes và static text
Thay đổi thứ tự TabOder
- uistack(h): thay đổi thứ tự của đối tượng
- uistack(h, stackopt )
stackopt = up: di chuyển h lên một vị trí
stackopt = down: di chuyển h xuống một vị trí
stackopt = top: di chuyển h đến đỉnh của thứ tự hiện tại
Trang 25 stackopt = bottom: di chuyển h xuống vị trí dưới cùng của thứ
tự hiện tại
- uistack( h, ‘up’, n ): di chuyển h lên n bậc
- uistack(h, ‘down’, n): di chuyển h xuống n bậc
off: item bị mờ, không dùng được
- HandleVisibility: Xác định handle của nó có nằm trong danh sách của parent của nó
on( mặc định):
off: để ngăn chặn những hoạt động không mong đợi
- Label:
String: dùng hiển thị nhãn cho menu
- Position: vị trí menu item trong menu
- Separator: Đường chia
on: Hiển thị
off( mặc định ): không hiển thị
Trang 261.2.5.10 Tạo Context Menu
Thuộc tính phổ biến
- HandleVisibility: Xác định handle của nó có nằm trong danh sách của parent của nó
on( mặc định )
off: ngăn chặn những hoạt động không mong đợi
- Parent: Parent của Context Menu
- Position[ 0 0]: Khoảng cách từ góc dưới bên trái của parent figure tới góc trên bên trái của context menu Thuộc tính này chỉ được dùng khi Visible = on
- Visible:
on: Hiển thị
off( mặc định ): Không hiển thị
Tạo Context Menu
- handle = uicontextmenu(‘PropertyName’, PropertyValue,… )
Thêm Menu item vào Context Menu
- mh = uimenu(handle,'PropertyName',PropertyValue, )
Giao tiếp với Context Menu : dùng thuộc tính UIContextMenu
- set( parent, ‘UIContextMenu’, handle )
1.2.5.11 Tạo Toolbars
∗ tbh = uitoolbar(h, ‘PropertyName’, PropertyValue,… )
∗ pth = uipushtool(h, ‘PropertyName’, PropertyValue,… )
∗ pth = uitoggletool(h, ‘PropertyName’, PropertyValue,… )
Thuộc tính phổ biến
- CData : Định dạng màu RGB
Giá trị 3D trong khoảng 0.0 đến 1.0
- HandleVisibility : Xác định handle của nó nằm trong danh sách handle của parent
on( mặc định ):
off : Ngăn chặn những hành động mong muốn
- Separator : Vẽ đường chia
Giá tri: on, off
- State : Tình trạng của dụng cụ
on: Được chọn, bị nhấn xuống
off: Không chọn
Trang 27- TooltipString : dùng để giải thích chức năng của công cụ
Hiển thị Toolbar chuẩn:
- set( fh, ‘Toolbar’, ‘figure’ ): hiển thị thanh công cụ chuẩn
- set( fh, ‘Toolbar’, ‘none’ ): không hiển thị thanh công cụ chuẩn
- set( fh, ‘Toolbar’, ‘auto’ ): Đây là thuộc tính mặc định Hiển thị thanh công cụ chuẩn nhưng khi tạo mới thanh công cụ thì thanh công cụ chuẩn sẽ bị xóa
1.2.5.12 Hàm Callback
Các hàm dùng để lập trình các hành vi của các thành phần trong GUI
Khai báo biến cho các đối số nhập và xuất
- mInputArgs =varagin: Khai báo đối số nhập
- mOutputArgs = {}: Khai báo đối số được trả về
Hàm Callback
- function objectTag_Callback(hObject, eventdata, handles)
hObject: đối tượng gọi hàm callback
eventdata: trống- để sử dụng trong tương lai
handles: Một cấu trúc chứa các handle của tất cả các thành phần trong GUI Nó cũng có thể được dùng để chuyển dữ liệu đến các hàm callback khác hoặc đến dòng lệnh (command line)
Trang 28Chương 2 GIỚI THIỆU MỘT SỐ BÀI TOÁN TRONG TÀI CHÍNH
2.1 Mở đầu:
Trong đời sống hằng ngày, chúng ta vẫn bắt gặp các hoạt động mua bán, tài chính diễn ra thường xuyên Qua đó cho thấy việc tính toán tài chính rất gần gũi (tùy theo mức độ công việc) Đối với các sinh viên kinh tế, bộ môn
‘Toán Tài Chính’ rất quan trọng và không thể thiếu Vì nó gắn liền với các môn học: nghiệp vụ ngân hàng, thị trường đầu tư, thị trường thương mại, thị trường tài chính, quản lý tài chính.v.v…Nền tảng của các công thức thuộc lĩnh vực tài chính là gì? Nó dựa trên toán học và hệ thống lãi suất
Và trong thực tế, nó cũng là công cụ góp phần không nhỏ cho thành công của các nhà kinh doanh Vậy tại sao chúng ta không dành đôi chút thời gian để tìm hiểu các vấn đề cơ bản của bộ môn này?
9 Tiền lãi: Là giá trị chênh lệch giữa vốn đầu tư ban đầu và giá trị thu
được sau n chu kỳ đầu tư (cho vay)
9 Lãi đơn: Là tiền lãi phải trả (cho trường hợp vay nợ) hoặc kiếm được
(trong trường hợp tiền được đem đi đầu tư), chỉ tính trên số vốn gốc
9 Giá trị tương lai: Là giá trị của một số lượng tiền tệ tăng trưởng nếu nó
được đem đầu tư với một lãi suất nhất định trong một khoảng thời gian
Trang 292.3 Hệ thống lãi đơn (Xem chi tiết trong [6], TLTK)
2.3.1 Các đối số
In : Tiền lãi của vốn đầu tư sau n chu kỳ
i : Lãi suất của 1 chu kỳ (Lãi suất 1 ngày, 1 tháng, 1 quý, 1 năm)
n : Số chu kỳ đầu tư (số ngày, số tháng, số quý, số năm)
C0 : Vốn đầu tư ban đầu
Cn : Giá trị của vốn đầu tư sau n chu kỳ
A : Mệnh giá thương phiếu
a : Hiện giá sau khi chiết khấu
0.07%
0250.000.00
35.000.0007
2%
0250.000.00
0đ120.000.002
24%
0250.000.00
0102.000.00
0100.000.000
I n = 0 ×
n a
a A i
×
−
=
Trang 302.3.4 Lãi suất chiết khấu
Công thức:
Bài toán:
Một thương phiếu có mệnh giá 128000 đồng đáo hạn ngày 22/12 đem đi chiết khấu tại ngày 10/11 cho một số tiền 124775 đồng Tính lãi suất chiết khấu
Giải
Số ngày chiết khấu từ 10/11 đến 22/12 là 42 ngày
Lãi suất chiết khấu cho thương phiếu:
%06.042
280001
124775128000
Một thương gia thương lượng một hối phiếu 450.000 đồng hạn kỳ
từ ngày thương lượng đến ngày đáo hạn của hối phiếu là 55 ngày với lãi suất chiết khấu ngân hàng áp dụng 20% năm Tính tiền ngân hàng giữ lại và tiền thương gia nhận được.[6]
Giải:
Tiền chiết khấu ngân hàng giữ lại là A.n.i
13.750360
20%
55450.000
a A i
n 1
i n A A
a
n) i (1 C
C 0= n − ×
Trang 31Thay 3 hối phiếu trên bằng hối phiếu A duy nhất có n = 42 ngày với
i = 20% năm Xác định C0.
Giải:
Ta có phương trình tương đương:
)360
20%
6011.200.000(
)360
20%36
1850.000(
)360
20%
241500.000(
)360
20%
421(
C0
×
−+
×
−+
360
18%
1201150.000(
2.4.1 Các đối số
In: Tiền lãi của vốn đầu tư sau n chu kỳ
i: Lãi suất của 1 chu kỳ (Lãi suất 1 ngày, 1 tháng, 1 quý, 1 năm) n: Số chu kỳ đầu tư (số ngày, số tháng, số quý, số năm)
C0: Vốn đầu tư ban đầu
Cn: Giá trị của vốn đầu tư sau n chu kỳ
Trang 325Ci
)i1(C5C
8
8 0 0
8 0
En: Tiền chiết khấu
Cn: Mệnh giá của của vốn tại ngày đáo hạn
Trang 332.4.6 Giá trị tương lai
a: Khoản tiền thanh toán vào cuối kỳ (đầu kỳ)
i: Lãi suất một chu kỳ
n: Số chu kỳ thanh toán
Vn: Tổng giá trị tương lai của các khoản thanh toán cuối kỳ tại n
V0: Tổng giá trị hiện tại của các khoản thanh toán cuối kỳ tại 0
V’n: Tổng giá trị tương lai của các khoản thanh toán đầu kỳ tại n
V’0: Tổng giá trị hiện tại của các khoản thanh toán đầu kỳ tại 0
2.5.2 Tổng giá trị tương lai của các khoản thanh toán cuối kỳ
Công thức:
Bài toán:
Tính tổng giá trị tương lai của 10 khoản thanh toán Nếu mỗi khoản thanh toán là 250.000đ đóng vào cuối mỗi quý lãi suất là 6.25% quý
Giải
3.334,1430.0625
10.0625)(1
250.000V
n
n
−+
×
=
Trang 342.5.3 Tổng giá trị hiện tại của các khoản thanh toán cuối kỳ
Công thức:
Bài toán:
Cho biết số tiền có thể vay được vào đầu năm dưới sự đảm bảo của 12 kỳ trả góp vào cuối mỗi tháng số tiền 20.000đ, lãi suất 2.8% tháng
Giải
201.4780.028
0.028)(1
120.000V
Giải
409.992.6)22.01(0.22
10.22)(1
200.000V'
Giải
468.0300.015
0.015)(1
10.015)(1
-000.50V'
i
1 i) (1 i) a(1 V'
n n
−++
=
i
i) (1 - 1 i) (1 a V'
-n 0
++
=
Trang 352.5.6 Định giá các khoản tiền thanh toán cuối kỳ
0.01)(1
01.0000.000.5
24
=
−+
Giải
( ) 29.597
10.011
0.01)(1
0.01900.000
35
=
−+
0i ni 0
: n
q P
q P 100
L
(1 i 1)
i) (1 i V
n 0
−+
-1 n 0
−+
+
×
=
Trang 36ni ni 0
: n
q P
q P 100
P
Chỉ số INDEX
Chỉ số đo lường sự thay đổi trung bình trong giá cả đối với mô hình mua bán cố định Chỉ số cho n chu kỳ được thể hiện bởi công thức sau:
P
* L
2.6.3 Bài toán
Giá cả và khối lượng của cá tuyết và cá bơn ở Anh
1990 1995 Khối lượng Giá Khối lượng Giá
562.48
1.83345.56102.1
776.06100
×+
×
×+
562.48
2.73345.5687.9
776.06100
×+
×
×+
×
×
=
I1:0 = 136.6348
2.7 Dự báo theo chuỗi thời gian (Time Series Forecasting)
(Xem chi tiết trong [7], TLTK)
Lấy giá trị trung bình của các thời điểm trước làm giá trị dự báo
cho thời điểm hiện tại
Công thức:
F(t) = ∑n
1 A(t) / n f(t +τ) = F(t)
Trang 37 Bài toán:
Thời gian Lượng bán thực tế Độ dịch chuyển trung bình trong ba tháng
Hai năm trước
Bảng 2 1: Bài toán về dự báo theo dịch chuyển trung bình
2.7.3 Dự báo theo dịch chuyển trung bình có trọng số (Weighted
Moving Average)
Phương pháp:
Lấy giá trị trung bình có trọng số các thời điểm trước làm giá trị
dự báo cho thời điểm hiện tại
Công thức:
Weigh for periods t: Trọng số cho thời gian t Demand in period t: nhu cầu trong thời gian t
Weighs
t) period in
t)(Demand periods
for (Weigh W.M.A
∑
∑
=
Trang 38Kết quả dự đoán theo phương pháp này thể hiện trong bảng sau:
thực tế
Độ dịch chuyển trung bình có trọng số trong ba tháng Hai năm trước
Tháng 4 18 ( 3x19 + 2x20 + 21 )/6 = 19.67 Tháng 5 14 ( 3x18 + 2x19 + 20 )/6 = 18.67 Tháng 6 15 ( 3x14 + 2x18 + 19 )/6 = 16.17 Tháng 7 22 ( 3x15 + 2x14 + 18 )/6 = 15.17 Tháng 8 28 ( 3x22 + 2x15 + 14 )/6 = 18.33 Tháng 9 25 ( 3x28 + 2x22 + 15 )/6 = 28.83 Tháng 10 25 ( 3x25 + 2x28 + 22 )/6 = 25.50 Tháng 11 25 ( 3x25 + 2x25 + 28 )/6 = 25.50 Tháng 12 20 ( 3x25 + 2x25 + 25 )/6 = 25
Một năm trước
Tháng 1 25 ( 3x20 + 2x25 + 25 )/6 = 22.50 Tháng 2 25 ( 3x25 + 2x20 + 25 )/6 = 23.33 Tháng 3 24 ( 3x25 + 2x25 + 20 )/6 = 24.17 Tháng 4 28 ( 3x24 + 2x25 + 25 )/6 = 24.50 Tháng 5 36 ( 3x28 + 2x24 + 25 )/6 = 26.17 Tháng 6 32 ( 3x36 + 2x28 + 24 )/6 = 31.33 Tháng 7 25 ( 3x32 + 2x36 + 28 )/6 = 32.67 Tháng 8 23 ( 3x25 + 2x32 + 36 )/6 = 29.17 Tháng 9 22 ( 3x23 + 2x25 + 32 )/6 = 25.17 Tháng 10 23 ( 3x22 + 2x23 + 25 )/6 = 22.83 Tháng 11 22 ( 3x23 + 2x22 + 23 )/6 = 22.67 Tháng 12 27 ( 3x22 + 2x23 + 22 )/6 = 22.33
Bảng 2 2: Kết quả dự đoán theo pp dịch chuyển trung bình có trọng số
Trang 392.7.4 Dự báo theo hàm trơn đơn (Single Exponential Smoothing)
Bảng 2 3: Bài toán dự báo theo hàm đơn trơn
Dự đoán mới = dự báo thời gian trước + a( nhu cầu
thời gian trước – dự báo thời gian trước )
Trang 40Chương 3 CÁC HÀM VỀ TÀI CHÍNH TRONG MATLAB
3.1 Giới thiệu:
MatLab và hộp công cụ tài chính (Financial Toolbox – FT) cung cấp môi trường tính toán được tích hợp hoàn chỉnh cho việc nghiên cứu và phân tích tài chính Hộp công cụ có mọi thứ cần thiết để thực hiện các phép toán, phân tích thống kê dữ liệu tài chính và hiển thị kết quả bằng hình ảnh đồ họa đặc trưng Trong lập trình bảng tính hay truyền thống, ta phải xử lý tất cả các chi tiết như: khai báo, loại dữ liệu, kích thước,…Nhưng với Matlab, tất cả các việc đó đều được xử lý tự động Ta chỉ cần viết biểu thức theo cách mà ta nghĩ về vấn
đề Không cần chuyển đổi công cụ, thay đổi file hoặc viết lại ứng dụng
MatLab và hộp công cụ tài chính cung cấp các chức năng sau:
Tính toán và phân tích giá cả, lợi nhuận và độ nhạy cho vốn đầu tư, các chứng khoán và danh mục vốn đầu tư chứng khoán
Định giá lợi tức cố định tích hợp theo Hội liên hiệp kinh doanh chứng khoán (Securities Industry Association – SIA), lợi nhuận và phân tích
độ nhạy
Phân tích và quản lý vốn đầu tư
Dự kiến và đánh giá hàng rào chiến lược
Nhận biết, ước tính và điều khiển rủi ro
Phân tích và tính toán chu kỳ tiền mặt, bao gồm tỉ lệ hoàn trả và dòng giảm giá
Phân tích và dự đoán hoạt động kinh tế
Quan sát và phân tích dữ liệu chuỗi thời gian tài chính
Tạo các công cụ tài chính có cấu trúc, bao gồm công cụ chuyển đổi ngoại tệ
Giảng dạy và hướng dẫn nghiên cứu học thuật