You are on page 1of 259

Machine Translated by Google

Machine Translated by Google

Lập trình R và nó
Ứng dụng trong lĩnh vực tài chính
toán học
Machine Translated by Google
Machine Translated by Google

Lập trình R và nó
Ứng dụng trong lĩnh vực tài chính
toán học

Shuichi Ohsaki
Trưởng chiến lược tỷ giá Nhật Bản, Ngân hàng Đầu tư Hoa Kỳ, Tokyo, Nhật Bản

Jori Ruppert-Felsot
Nhà giao dịch chứng khoán phái sinh, Tokyo, Nhật Bản

Daisuke Yoshikawa
Đại học Hokkai-Gakuen, Sapporo, Hokkaido, Nhật Bản

p, p,
SÁCH NHÀ XUẤT BẢN KHOA HỌC
SÁCH NHÀ XUẤT BẢN KHOA HỌC
Machine Translated by Google

CRC Press

Nhóm Taylor & Francis


6000 Broken Sound Parkway NW, Suite 300
Boca Raton, FL 33487-2742

© 2017 bởi Taylor & Francis Group, LLC


CRC Press là một dấu ấn của Taylor & Francis Group, một doanh nghiệp của Informa

Không xác nhận quyền sở hữu đối với các công trình gốc của Chính phủ Hoa Kỳ

In trên giấy không axit


Ngày phiên bản: 20170119

Sách Tiêu chuẩn Quốc tế Số-13: 978-1-4987-4799-8 (Bìa cứng)

Cuốn sách này chứa thông tin thu được từ các nguồn xác thực và được đánh giá cao. Những nỗ lực hợp lý đã được thực hiện để xuất
bản dữ liệu và thông tin đáng tin cậy, nhưng tác giả và nhà xuất bản không thể chịu trách nhiệm về tính hợp lệ của tất cả các
tài liệu hoặc hậu quả của việc sử dụng chúng. Các tác giả và nhà xuất bản đã cố gắng truy tìm chủ sở hữu bản quyền của tất cả
tài liệu được sao chép trong ấn phẩm này và xin lỗi chủ sở hữu bản quyền nếu không được phép xuất bản dưới dạng này. Nếu bất
kỳ tài liệu bản quyền nào chưa được công nhận, vui lòng viết và cho chúng tôi biết để chúng tôi có thể sửa chữa trong bất kỳ
CRC tái
lần Press
bản nào trong tương lai.

Nhóm Taylor & Francis


Trừ
6000khi đượcSound
Broken cho phép theoNW,
Parkway Luật Bản quyền
Suite 300 Hoa Kỳ, không phần nào của cuốn sách này có thể được tái bản, tái bản, truyền tải,
hoặc
minh,được
bao sử
gồmdụng
Bocadưới bấtFL
Raton, kỳ33487-2742
hình thức nào bằng bất kỳ phương tiện điện tử, cơ khí hoặc phương tiện nào khác, hiện đã được biết đến hoặc sau này được phát

nhập máy photocopy, vi phim và ghi âm, hoặc trong bất kỳ hệ thống lưu trữ hoặc truy xuất thông tin nào mà không có văn bản 2018
sự cho phép
© 2017 của các
bởi Taylor & nhà xuấtGroup,
Francis bản. LLC
CRC Press là một dấu ấn của Taylor & Francis Group, một doanh nghiệp của Informa
Để được phép sao chép hoặc sử dụng tài liệu điện tử từ tác phẩm này, vui lòng truy cập www.copyright.com Không khiếu nại đối
(http://www.copyright.com/)
với hoặc
tác phẩm gốc của Chính phủ liên
Hoa Kỳ hệ với Trung tâm Xóa bản quyền, Inc. (CCC), 222 Rosewood Drive, Danvers, MA 01923,
978-750-8400. CCC là một tổ chức phi lợi nhuận cung cấp giấy phép và đăng ký cho nhiều loại Được in trên giấy không chứa axit
của người dùng. Đối với các tổ chức đã được CCC cấp giấy phép photocopy, một hệ thống thanh toán riêng đã được bố trí.
Ngày phiên bản: 20180104
20170119

Sách
ThôngTiêu
báo chuẩn Quốc
về Nhãn tế Số-13:
hiệu: 978-1-4987-6609-8
Tên sản978-1-4987-4799-8
phẩm hoặc công ty(Bìa cứng)
có thể là nhãn hiệu hoặc nhãn hiệu đã đăng ký và chỉ được sử dụng để nhận
dạng và giải thích mà không có ý định vi phạm.
Cuốn sách này chứa thông tin thu được từ các nguồn xác thực và được đánh giá cao. Những nỗ lực hợp lý đã được thực hiện để xuất
bản dữ liệu và thông tin đáng tin cậy, nhưng tác giả và nhà xuất bản không thể chịu trách nhiệm về Biên mục của Thư viện Quốc
hội Hoa Kỳ ‑ trong ‑ Dữ liệu xuất bản
hiệu lực của tất cả các tài liệu hoặc hậu quả của việc sử dụng chúng. Các tác giả và nhà xuất bản đã cố gắng truy tìm chủ sở
hữu bản quyền của tất cả các tài liệu được sao chép trong ấn phẩm này và xin lỗi chủ sở hữu bản quyền nếu được phép Tên: Liu,
Jian (Kỹ sư hóa học), biên tập viên. | Jiang, San Ping, chủ biên.
xuất bản trong hình thức này đã không được lấy. Nếu bất kỳ tài liệu bản quyền nào chưa được công nhận, vui lòng viết và để Tiêu
đề: Vật liệu mê hoặc để lưu trữ và chuyển đổi năng lượng tiên tiến
chúng tôi biết vì vậy chúng tôi có thể sửa chữa trong bất kỳ lần tái bản nào trong tương lai.
công nghệ / biên tập viên, Jian Liu, Khoa Kỹ thuật Hóa học,
Khoa Khoa học và Kỹ thuật, Đại học Curtin, Perth, WA,
Trừ khi được cho phép theo Luật Bản quyền Hoa Kỳ, không phần nào của cuốn sách này có thể được tái bản, tái bản, truyền tải,
Úc, San Ping Jiang, Viện Công nghệ Nhiên liệu và Năng lượng &
hoặc được sử dụng dưới bất kỳ hình thức nào bằng bất kỳ phương tiện điện tử, cơ khí hoặc phương tiện nào khác, hiện đã được biết đến
hoặc sau này được phát minh, bao gồm Khoa Kỹ thuật Hóa học, Đại học Curtin, Perth, WA,
sao chép, vi phim và ghi âm, hoặc trong bất kỳ hệ thống lưu trữ hoặc truy xuất thông tin nào mà không có văn bản của Úc.
sự cho phép của các nhà xuất bản.
Mô tả: Boca Raton, FL: CRC Press, Taylor & Francis Group, 2017. |
Series: Một cuốn sách của nhà xuất bản khoa học | Bao gồm tài liệu tham khảo thư mục
Để được phép sao chép hoặc sử dụng tài liệu điện tử từ tác phẩm này, vui lòng truy cập www.copyright.com
và chỉ mục.
(http://www.copyright.com/) hoặc liên hệ với Trung tâm Xóa bản quyền, Inc. (CCC), 222 Rosewood Drive, Danvers, Số nhận dạng:
LCCN 2016042509 | ISBN 9781498747998 (bìa cứng: giấy kiềm) |
MA 01923, 978-750-8400. CCC là một tổ chức phi lợi nhuận cung cấp giấy phép và đăng ký cho nhiều loại ISBN 9781498748018 (sách
điện tử)
của người dùng. Đối với tổ chức đã được CCC cấp giấy phép photocopy, hình thức thanh toán riêng Đối tượng: LCSH: Ắc quy điện -
Vật tư. | Pin nhiên liệu - Vật liệu. |
Đã được sắp xếp.
Pin mặt trời - Vật liệu. | Vật liệu lưới.
Phân loại: LCC TK2901 .M47 2017 | DDC 621.31 / 24240284 - dc23
Thông báo về nhãn hiệu: Tên sản phẩm hoặc công ty có thể là nhãn hiệu hoặc nhãn hiệu đã đăng ký và chỉ được sử dụng cho hồ sơ
LC có sẵn tại https://lccn.loc.gov/2016042509
xác định và giải thích mà không có ý định xâm phạm.

Dữ tại
Ghé thăm trang web Taylor & Francis liệu Biên mục của Thư viện Quốc hội

http://www.taylorandfrancis.com
Tên: Liu, Jian (Kỹ sư hóa học), biên tập viên. | Jiang, San Ping, chủ biên.
và trang web CRC Press tại
Tiêu đề: Vật liệu lưới để lưu trữ và chuyển đổi năng lượng tiên tiến
http://www.crcpress.com
công nghệ / biên tập viên, Jian Liu, Khoa Kỹ thuật Hóa học,
Khoa Khoa học và Kỹ thuật, Đại học Curtin, Perth, WA,
Australia, San Ping Jiang, Viện Công nghệ Năng lượng và Nhiên liệu &
Khoa Kỹ thuật Hóa học, Đại học Curtin, Perth, WA,
Châu Úc.

Mô tả: Boca Raton, FL: CRC Press, Taylor & Francis Group, 2017. |
Series: Một cuốn sách của nhà xuất bản khoa học | Bao gồm tài liệu tham khảo thư mục
Machine Translated by Google

Lời nói đầu

Tầm quan trọng của việc có kiến thức cơ bản về các phương pháp tính toán tiếp tục tăng
lên đối với những người làm việc trong ngành dịch vụ tài chính. Lý thuyết tài chính
tính toán đã phát triển cùng với những tiến bộ trong công nghệ máy tính.
Do đó, mục tiêu của cuốn sách này là giới thiệu về các phương pháp tính toán khác nhau
được sử dụng trong ngành dịch vụ tài chính, thông qua lập trình R
ngôn ngữ. Cuốn sách này dành cho sinh viên mới tốt nghiệp quan tâm đến tài chính tính
toán, nhân viên ngân hàng cơ sở, nhà kinh tế và thương nhân làm việc trong ngành tài
chính.
Chúng tôi có một số lý do tại sao R đã được sử dụng, thay vì các ngôn ngữ có sẵn
khác; ví dụ: C ++, C #, Java, Python, EXCEL VBA và MatLab, v.v. Đầu tiên, R có sẵn miễn
phí và là một ngôn ngữ lập trình mã nguồn mở. Do đó, nó có thể dễ dàng mở rộng thông
qua việc bổ sung các gói và có một cộng đồng người dùng R lớn và tích cực. Và là một
ngôn ngữ kịch bản cấp cao, nó rất dễ thiết lập và sử dụng. Thứ hai, R được phát triển
cho tính toán thống kê và do đó được trang bị với nhiều gói khác nhau cho phép chúng
tôi thực hiện phân tích hồi quy và kiểm tra thống kê, v.v. Điều này làm giảm thời gian
và nỗ lực cần thiết để thực hiện nhiều phương pháp thống kê và cho phép chúng tôi thực
hiện các thí nghiệm số một cách dễ dàng. Thứ ba, R được trang bị khả năng đồ họa để
trực quan hóa các bộ dữ liệu lớn và các kết quả phân tích. Đây là một tính năng hấp
dẫn, đặc biệt nếu chúng tôi muốn sản xuất đồ họa chất lượng cao để xuất bản. Hơn nữa,
những điều cơ bản mà chúng ta học ở đây với R, có thể dễ dàng áp dụng cho các ngôn ngữ
khác, bởi vì nhiều ngôn ngữ, như C # và Python có logic mã hóa tương tự, mặc dù cú pháp
khác nhau.
Chúng tôi mong người đọc viết và thực thi mã mẫu được giới thiệu trong cuốn sách
này. Làm theo mã mẫu sẽ giúp người đọc hiểu lý thuyết và cải thiện cơ sở của họ với R.
Tất nhiên, việc hiểu không đầy đủ về lý thuyết có thể dẫn đến mã hoạt động không tốt.
Tuy nhiên, quá trình sửa một đoạn mã không hoàn chỉnh là một bước quan trọng để hiểu lý
thuyết và cải thiện kỹ thuật viết mã của một người.

Chúng tôi tập trung vào hai khía cạnh chính của lý thuyết tài chính tính toán: (1)
phân tích thống kê dữ liệu tài chính và (2) định giá các công cụ tài chính. Chúng ta có
Machine Translated by Google

lập trình vi < R và các ứng dụng của nó trong toán học tài chính

đã chia cuốn sách thành một số phần. Phần I của cuốn sách này dành cho phân tích thống
kê và chuỗi thời gian, Phần II trình bày lý thuyết tài chính để định giá các công cụ tài
chính và chúng tôi tập trung vào các phương pháp số để định giá phái sinh trong Phần III.

Cuốn sách này được xuất bản lần đầu tiên bằng tiếng Nhật, bắt nguồn từ bộ bài giảng
của các tác giả Ohsaki và Yoshikawa tại Trường Quản lý Sau đại học, Đại học Kyoto vào
mùa Xuân năm 2008, 2009 và 2010. Các bài giảng hình thành nền tảng của Phần II và III ,
trong khi Chương 1 và Phần I được viết để xuất bản phiên bản tiếng Nhật của cuốn sách.
Mục 3.4.3 và Phụ lục B
đã được thêm vào phiên bản tiếng Anh hiện tại của cuốn sách.
Chúng tôi xin cảm ơn các nhà xuất bản, đặc biệt là biên tập viên Vijay Primlani vì
sự hiểu biết và kiên nhẫn của anh ấy và Tetsuya Ishii, người biên tập phiên bản tiếng
Nhật vì sự hiểu biết của anh ấy về việc xuất bản phiên bản tiếng Anh.
Chúng tôi cũng cảm ơn Toshifumi Ikemori, Hideki Iwaki, Yoshihiko Uchida và Zensho

Yoshida vì những lời khuyên hữu ích và hỗ trợ của họ trong việc hoàn thành bản thảo này.

Shuichi Ohsaki

Jori Ruppert-Felsot
Daisuke Yoshikawa
Machine Translated by Google

Nội dung

Lời nói đầu v

1 Giới thiệu về Lập trình R 1

1.1 Cài đặt toán tử 2


R 1.2 1.3 Cấu trúc 6
dữ liệu 1.3.1 Vô 7
hướng 1.3.2 9
Vectơ 1.3.3 Ma 11
trận 1.3.4 Danh 14
sách 1.3.5 17
Khung dữ liệu 20
1.3.6 Yếu tố 21
1.3.7 Điều tra kiểu và cấu trúc của dữ liệu 22
1.4 Các hàm 22
1.5 Các câu lệnh điều 24
khiển 1.5.1 Câu 25
lệnh if 1.5.2 Xử lý lặp lại: câu lệnh for, câu lệnh while 27
1.6 Đồ họa 29
1.7 Đọc và ghi dữ liệu 1.8 33
Đọc chương trình 1.9 Gói 34
36

PHẦN I: THỐNG KÊ TRONG TÀI CHÍNH

2 Phân tích thống kê với R 41

2.1 Thống kê cơ bản 41


2.2 Phân phối xác suất và số ngẫu nhiên 2.3 Kiểm 46
định giả thuyết 2.3.1 Kiểm định giả thuyết là 47
gì? 2.3.2 Kiểm định t của trung bình dân số 47
49
Machine Translated by Google

viii < R Lập trình và các ứng dụng của nó trong toán học tài chính

2.4 Phân tích hồi quy 2.5 54

Phân tích đường cong năng suất sử dụng phân tích thành phần 59
chính 2.5.1 Đường cong lợi nhuận 2.5.2 Phân tích thành 59

phần chính là gì? 61

2.5.3 Ví dụ về phân tích thành phần chính sử dụng JGB 2.5.4 64

Làm thế nào để tính toán phân tích thành phần chính? 70

Phân tích chuỗi 3 thời gian với R 73

3.1 Chuẩn bị dữ liệu chuỗi thời gian 74

3.2 Trước khi áp dụng mô hình 3.3 77

Việc áp dụng mô hình AR 3.3.1 Phân tích 80

phần dư 3.3.2 Dự báo 3.4 Các mô 83

hình mở rộng từ AR 84
87
3.4.1 Mô hình ARMA và ARIMA 3.4.2 87

Tự động hồi quy vectơ 3.4.3 Mô hình 91


GARCH 3.4.4 Đồng tích hợp 97
103

3.5 Ứng dụng phân tích chuỗi thời gian vào tài chính: Giao dịch theo cặp 107

PHẦN II: LÝ THUYẾT CƠ BẢN VỀ TÀI CHÍNH

4 Lý thuyết danh mục đầu tư hiện đại và CAPM 111

4.1 Danh mục đầu tư theo phương 113

sai 4.2 Danh mục thị trường 117


4.3 Nguồn gốc của CAPM 4.4 Sự 120
mở rộng của CAPM: Mô hình đa nhân tố 4.4.1 Lý thuyết 121

định giá chênh lệch giá 4.4.2 Mô hình 3 nhân 121


tố của Fama-French 125
4.5 Hình thức của biên giới hiệu quả 125

5 Hệ số hoán đổi lãi suất và chiết khấu 129

5.1 Hoán đổi lãi suất 129

5.2 Định giá hoán đổi lãi suất và hình thành các yếu tố 131
chiết khấu 5.3 Định giá hoán đổi lãi suất và rủi ro

của chúng 135

6 Mô hình thời gian rời rạc: Mô hình cây 139

6.1 Mô hình nhị thức một thời kỳ 140

6.1.1 Định giá phái sinh 6.1.2 141

Định giá theo biện pháp trung lập rủi 146

ro 6.2 Mô hình nhị thức nhiều thời kỳ 6.2.1 149

Tổng quát hóa cho mô hình đa thời kỳ 6.2.2 Định 149

giá quyền chọn mua 6.3 Mô hình tam thức 152


156
Machine Translated by Google

Nội dung n ix

7 Mô hình thời gian liên tục và công thức Black-Scholes 161

7.1 Tỷ suất sinh lợi liên tục 162


7.2 Bổ đề của It o 7.3 Công 165
thức Black-Scholes 7.4 Biến động 167

ngụ ý 170

PHẦN III: CÁC PHƯƠNG PHÁP SỐ TRONG TÀI CHÍNH

Mô phỏng 8 Monte Carlo 175

8.1 Khái niệm cơ bản về mô phỏng Monte Carlo 8.2 176


Phương pháp giảm phương sai 179
8.2.1 Phương pháp biến thể đối kháng 180

8.2.2 Phương pháp đối sánh thời điểm 182

8.3 Tùy chọn kỳ lạ 8.4 Tùy chọn đa tài 184

sản 8.5 Phương pháp biến thể kiểm soát 188


191

9 Định giá phái sinh với phương trình chênh lệch từng phần 199

9.1 Phương pháp rõ ràng 202

9.2 Phương pháp ngầm định 205

RUỘT THỪA

Tối ưu hóa với R 213

A.1 Bài toán tối ưu hóa nhiều biến thể 213

A.2 Bài toán biên giới hiệu quả bằng cách tối ưu hóa 216

B Giảm nhiễu thông qua Bộ lọc Kalman 221

B.1 Giới thiệu bộ lọc KalmanB.2 Bộ lọc 222


Kalman không tuyến tính 227

C Các tài liệu tham khảo khác về R 233

C.1 Nguồn thông tin về gói R 233

C.2R về tài chính 234

Người giới thiệu 235

Mục lục 245


Machine Translated by Google
Machine Translated by Google

Chương 1

Giới thiệu về R

Lập trình

NỘI DUNG

1,1 Cài đặt R ............................................... .... 2


1,2 Người điều hành: ................................................... ......... 6
1,3 Cấu trúc dữ liệu ................................................ ...... 7

1.3.1 Vô hướng .............................................. ....... 9


1.3.2 Vectơ .............................................. ...... 11
1.3.3 Ma trận .............................................. ...... 14
1.3.4 Danh sách .............................................. ......... 17
1.3.5 Khung dữ liệu ............................................. ... 20
1.3.6 Yếu tố ... ....... 21

1.3.7 Điều tra các dạng và cấu trúc của dữ liệu ................. 22
1,4 Chức năng ................................................. ......... 22
1,5 Câu lệnh kiểm soát ... .24 _

1.5.1 câu lệnh if .............................................. 25


1.5.2 Xử lý lặp lại: câu lệnh for, câu lệnh while ......... 27
1,6 Hình ảnh ... .......... 29
1,7 Đọc và ghi dữ liệu ........................................... 33
1,8 Chương trình đọc ... .. 34
1,9 Các gói hàng ................................................... ......... 36

Mục tiêu của cuốn sách này là tìm hiểu lý thuyết tài chính bằng cách sử dụng R
ngôn ngữ, là một ngôn ngữ lập trình được phát triển đặc biệt cho số

1
Machine Translated by Google

Lập trình 2 R và các ứng dụng của nó trong Toán tài chính

phép tính. Trước khi giới thiệu lý thuyết tài chính, chúng ta cần xây dựng các trường
hợp sử dụng R. Vì vậy, chương đầu tiên dành để giới thiệu về R, cách cài đặt của nó và
cách sử dụng cơ bản của R. Bạn đọc đã quen với lập trình R có thể bỏ qua chương này.

1.1 Cài đặt R


Hãy để chúng tôi bắt đầu với việc cài đặt R.1 Chúng tôi có thể lấy các tệp cơ bản để
cài đặt và các gói từ trang web của dự án CRAN (xem Hình 1.1)

http://www.r-project.org/index.html

Để tải tệp exe để cài đặt R, hãy nhấp vào tải xuống R (kể từ tháng 7 năm 2017).
Sau đó, màn hình chuyển sang màn hình sau như Hình 1.2. Chọn một địa điểm phản chiếu
gần với vị trí của bạn. Do đó, đối với Nhật Bản, chúng tôi chọn https://cran.ism.ac.jp/.
Sau đó, màn hình chuyển sang trạng thái đó như Hình 1.3. Đối với người dùng Windows,
hãy nhấp vào “Tải xuống R cho Windows” trên màn hình “Hoạt động của Mạng lưu trữ R toàn
diện”. Nếu bạn không phải là người dùng Windows, hãy chọn tùy chọn thích hợp.

Hình 1.1: Nhấp vào “tải xuống R” trên trang “Dự án R cho tính toán thống kê”

1 Phần này bao gồm việc cài đặt R từ một tệp thực thi dựa trên windows. Để cài đặt trên Mac, hãy

chọn “Tải xuống R cho (Mac) OS X” và trên Linux chọn “Tải xuống R cho Linux” (Hình 1.3).
Việc biên dịch từ mã nguồn phụ thuộc vào hệ điều hành. Ở đây, chúng tôi chỉ hiển thị ví dụ dựa trên
tệp thực thi dựa trên windows.
Machine Translated by Google

Giới thiệu về Lập trình R 3

Hình 1.2: Chọn một trang nhân bản

Hình 1.3: Nhấp vào “Tải xuống R cho Windows” trên màn hình “Mạng lưu trữ R toàn diện”
Machine Translated by Google

Lập trình 4 R và các ứng dụng của nó trong Toán tài chính

Hình 1.4: Nhấp vào “cơ sở” hoặc “cài đặt R lần đầu tiên”

Sau đó, màn hình như 1.4 xuất hiện. Nhấp vào “cơ sở” hoặc “cài đặt R lần đầu tiên”.

Trên màn hình tiếp theo Hình 1.5, bằng cách nhấp vào “Tải xuống R 3.4.1 cho Windows”,

chúng ta có thể nhận được “R-3.4.1-win.exe” (3.4.1 là tên phiên bản).

Bạn có thể bỏ qua quy trình này và truy cập trực tiếp vào trang web sau, nếu bạn sử dụng
Các cửa sổ.

https://cran.ism.ac.jp/bin/windows/base/

Bước cuối cùng bạn chỉ cần mở rộng tập tin exe để có thể dễ dàng cài đặt R.

Bây giờ chúng ta hãy bắt đầu R. Bạn sẽ có thể bắt đầu R từ phím tắt trên màn hình của

bạn hoặc thông qua menu bắt đầu. Nếu cài đặt thành công, bạn sẽ thấy bảng điều khiển R xuất

hiện như Hình 1.6.

Bạn có thể đóng cửa sổ và thoát khỏi R bằng cách chạy lệnh q () từ giao diện điều khiển

(Hình 1.7). Bạn cũng có thể thoát khỏi R bằng cách chọn “Thoát” trong “Tệp”
thực đơn.
Machine Translated by Google

Giới thiệu về Lập trình R 5

Hình 1.5: Trên màn hình “R-3.4.1 cho Windows (32/64 bit)”, nhấp vào “Tải xuống R 3.4.1 cho Windows”.
Sau đó, chúng ta có thể nhận được “R-3.4.1-win.exe”

Hình 1.6: Màn hình khởi động của R


Machine Translated by Google

Lập trình 6 R và các ứng dụng của nó trong Toán tài chính

Hình 1.7: Màn hình thoát R

Bây giờ chúng ta hãy bắt đầu học lập trình R bằng ví dụ. Đầu tiên, hãy lưu ý một số điều về R:

Có thể tốt hơn nếu chỉ định rõ ràng thư mục để đọc dữ liệu hoặc tập lệnh hoặc ghi kết quả

vào các tệp trong thư mục được chỉ định. Sau đó, chúng tôi giới thiệu cách đọc và ghi tệp

trong thư mục. Để chỉ định thư mục, hãy nhấp vào “Thay đổi thư mục” từ menu “Tệp” và chọn

thư mục bạn thích.

Câu lệnh bình luận: Bất kỳ dòng nào bắt đầu bằng ký tự # được thêm vào như một câu lệnh

bình luận, không được coi là trạng thái lập trình. Nếu chúng ta đặt # ở giữa dòng, bất

kỳ văn bản nào sau đây được coi là


như một bình luận.

1.2 Các toán tử Đầu

tiên chúng tôi giới thiệu các toán tử quan trọng của R, tức là các toán tử số
học, so sánh và logic.

Các toán tử số học bao gồm + để cộng hai đại lượng vô hướng hoặc vectơ, - để trừ đại lượng vô

hướng thứ hai hoặc vectơ từ cái đầu tiên, * đối với phép nhân, cả đại lượng vô hướng hoặc vectơ, /

để chia đại lượng vô hướng hoặc vectơ thứ nhất cho cái thứ hai,% % cho lời nhắc về phép chia,% /%

cho thương của đại lượng vô hướng đầu tiên hoặc vectơ cho cái thứ hai và ^ cho số mũ.

> 1 + 2

[1] 3>

3-5 [1]

-2> 3 *

2 [1] 6>

5/2 [1]

2,5> 5 %

% 2 [1] 1
Machine Translated by Google

Giới thiệu về Lập trình R 7

> 5% /%
2 [1] 2>
2 ^ 3 [1]
8

R cũng được trang bị các toán tử so sánh. Để kiểm tra xem các biến có bằng nhau
hay không, chúng ta sử dụng toán tử so sánh ==. Để kiểm tra xem nó có bằng nhau
không, chúng ta sử dụng toán tử! =. Để so sánh độ lớn (bất bình đẳng), chúng ta sử
dụng>,> =, <, hoặc <=.

Hơn nữa, R có các toán tử logic như && cho “AND” và || Cho hoặc". Các toán
tử so sánh ative và logic thường được sử dụng trong câu lệnh điều kiện được mô
tả trong phần 1.5.1.

Ngoài các toán tử này, toán tử cơ bản nhất là toán tử gán


thân mình; ví dụ: <-, << - và =.

1.3 Cấu trúc dữ liệu

R được trang bị các loại biến sau:

số

tổ hợp

hợp lý

tính cách

Trong các ngôn ngữ lập trình khác, ví dụ C, chúng ta cần khai báo kiểu của biến
như số nguyên hoặc kép. Tuy nhiên, trong R, chúng ta chỉ có thể khai báo một
biến theo tên mà không cần khai báo kiểu rõ ràng. Nói chung, chúng ta nên tránh
đặt tên biến xung đột với biến, hằng số hoặc hàm được định nghĩa trong R theo
mặc định, chẳng hạn như pi, sin, log.
R có một số hàm hữu ích mà chúng ta có thể sử dụng để thẩm vấn loại ables và
dữ liệu khác nhau.

> x <- 1>


is.numeric (x) # kiểm tra xem dữ liệu x có phải là số hay không [1]
TRUE> mode (x) # xuất ra loại x [1] "numeric"> x <- "foo">
là .numeric (x)

[1] SAI
Machine Translated by Google

Lập trình 8 R và các ứng dụng của nó trong Toán tài chính

> # vì nó không phải là số mà là ký tự, đầu ra là FALSE> mode (x) [1] "character"
# chúng ta có thể xác nhận nó là ký tự> # bằng cách sử dụng hàm mode ()> x <- 2
+ 4i> is .complex (x) # kiểm tra xem x có phải là số phức hay không [1] TRUE>

is.numeric (x)

[1] FALSE>
mode (x)
[1] "complex">
x <- c (T, F) # tạo vectơ có giá trị logic> mode (x) [1] "logic">
# tạo vectơ gồm các ký tự và giá trị số,> x <- c ("foo", 3)> mode

(x) # và để kiểm tra loại [1] "ký tự"

Ví dụ trên cho thấy mức độ ưu tiên của việc gán kiểu cho các biến trong R. Hệ
thống phân cấp gán kiểu được đưa ra như sau:

ký tự> phức hợp> số> lôgic

Hãy kiểm tra thứ tự ưu tiên này.

> # tạo vectơ của số phức và ký tự> x <- c (3 + 4i, "foo")> mode (x) #
kiểm tra kiểu của x [1] "ký tự"> # tạo vectơ của a số phức và số> x <- c
(3 + 4i, 3)> mode (x) # kiểm tra lại kiểu của x [1] "complex"> # tạo vectơ
của một số và số logic> x < - c (3.0, TRUE)> mode (x) # kiểm tra lại kiểu

của x [1] "số"

Hệ thống phân cấp này đưa ra một tiêu chí để R quyết định kiểu dữ liệu. Thật
vậy, nếu TRUE được thay thế thành một biến, nó được coi là logic. Tuy nhiên, nếu
cùng một "TRUE" có dấu ngoặc kép, nó được coi là ký tự. Tương tự, "3 + 4i" được
thay thế thành một biến, nó được coi là ký tự, mặc dù nó được coi là phức tạp mà
không có dấu ngoặc kép.
Machine Translated by Google

Giới thiệu về lập trình R 9

Đối với các loại biến đã nêu ở trên, R được trang bị dữ liệu sau
cấu trúc.

vô hướng

vectơ

ma trận

danh sách

khung dữ liệu

nhân tố

1.3.1 Vô hướng

Vô hướng trong R có thể thuộc các loại sau: số, số phức, ký tự và giá trị lôgic. Chúng ta

không cần quan tâm đến sự khác biệt giữa chúng. Hãy để chúng tôi mô tả những điều sau trong

giao diện điều khiển và gán số 4 cho biến x:

> x <- 4

> x # hiển thị giá trị của biến x [1] 4

Chúng ta cũng có thể sử dụng toán tử = để gán biến. Tuy nhiên, cách sử dụng phổ biến trong R

là toán tử <- mà chúng tôi theo dõi trong cuốn sách này.

Các phép tính số học cơ bản như cộng, trừ, nhân và

sự phân chia đơn giản trong R.

> y <- -3,2 # thay thế -3,2 thành y> x + y # tổng x

và y [1] 0,8

> x ^ 10 # tính lũy thừa thứ mười của x [1] 1048576> x ^


100 [1] 1,606938e + 60> x ^ 1000 [1] Inf

Inf có nghĩa là vô cùng. Điều này ngụ ý rằng kết quả vượt quá giới hạn của thứ tự mà R có thể
tính toán.
Machine Translated by Google

Lập trình 10 R và các ứng dụng của nó trong Toán tài chính

Để xác định một số phức, chúng ta thêm hậu tố i.

> 1i
[1] 0 + 1i
> 0i
[1] 0 + 0i
> tôi

Lỗi: không tìm thấy đối tượng 'i'>


1 + 2i
[1] 1 +
2i> (1 + 2i) * (2 +
1i) [1] 0 + 5i

Thông báo lỗi trên ngụ ý rằng bản thân tôi không được hiểu là một số phức.

Các ký tự giữa dấu ngoặc kép đơn 'hoặc dấu ngoặc kép' là
được hiểu là một chuỗi ký tự.

> # thay chuỗi ký tự "ký tự" thành y> y <- "ký tự"> y [1] "ký tự"> # thay
chuỗi ký tự "đã dán" thành z> z <- "đã dán"> y + z

Lỗi trong y + z: đối số không phải số đối với toán tử nhị phân

Toán tử cộng không được xác định cho hai chuỗi ký tự. Để kết hợp (nối) các chuỗi
ký tự, chúng ta sử dụng hàm paste ().

> paste (y, z)


[1] "ký tự đã dán"> dán (z,
y) [1] "dán ký tự"

Nếu bạn không muốn có khoảng trống giữa hai chuỗi ký tự, bạn
cần chỉ định đầu vào thứ ba như sau:

> dán (y, z, sep = "")


[1] "characterpasted"
Machine Translated by Google

Giới thiệu về Lập trình R 11

Ở đây, sep có nghĩa là dấu phân cách giữa các chuỗi đầu vào, là một ký tự
trống theo mặc định. Nếu chúng ta biểu thị bên trong sep = ",", nó hoạt động
như sau:

> paste (y, z, sep = ",")


[1] "ký tự, đã dán"

Chúng ta có thể sử dụng các con số hợp lý. Số logic bao gồm giá trị Đúng và Sai.
Giá trị logic true, được ký hiệu bằng R bằng T hoặc TRUE và giá trị logic sai bằng F
hoặc FALSE. Đây là những phân biệt chữ hoa chữ thường trong R.

> T
[1] ĐÚNG
> SAI
[1] SAI
> sai

Lỗi: không tìm thấy đối tượng 'false'


> ĐÚNG
[1] ĐÚNG

Hãy thử các phép tính đơn giản sau đây.

Bài tập

1. (3 × 4 + 3.5) /3.3

2. (1 + 3i) × (3 + 3i)

3. 'Tên' + 'của tôi' + 'là' + '(Daisuke)'

1.3.2 Véc tơ

Vectơ bao gồm một tập hợp các đại lượng vô hướng và có thể được tạo ra bởi hàm c ().

> x <- c (0,1,2,3,4)


> x
[1] 0 1 2 3 4>
y <- c ("tokyo", "kyoto")> y
[1] "tokyo" "kyoto"> x [2] #
trích xuất phần tử thứ hai của
vectơ [1] 1> y [1] # trích xuất phần tử đầu tiên của
vectơ [1] "tokyo"> x [c (1,3,5)] # trích xuất phần tử
thứ nhất, thứ 3 và thứ 5 cùng nhau [1] 0 2 4
Machine Translated by Google

Lập trình 12 R và các ứng dụng của nó trong Toán tài chính

Phép nhân các vectơ được định nghĩa là một tích của phần tử, đúng hơn là
hơn là một tích bên trong của vectơ.

> x <- c (1,2,3)>


y <- c (3,4,1)> x
* y [1] 3 8 3

Ví dụ dưới đây là một phép tính nhân tạo để tính sai số; để nhân các vectơ được
xác định là các chiều khác nhau.

> y <- c (3,4,1,1)> x


* y [1] 0 4 2 3 12

Tin nhắn cảnh báo:


Trong x * y: chiều dài đối tượng dài hơn không phải là bội số của chiều dài đối
tượng ngắn hơn

Ví dụ này cho chúng ta thấy rằng chúng ta cần đảm bảo rằng kích thước của các vectơ là
bằng nhau.

> y <- c (3,4,1) # xác định lại y là vectơ 3 chiều> x * y [1] 3 8 3

Để tính tích trong của hai vectơ, chúng ta sử dụng% *%. Ngoài ra, chúng ta có thể
sử dụng sum (x * y) trả về cùng một kết quả.

> x% *% y
[, 1]
[1,] 14

Hàm seq () cho phép chúng ta tạo một vector với một chuỗi các ký tự num.

> # tạo một chuỗi từ 0 đến 3 theo số gia 0,5> x <- seq (0,3, x = 0,5)

> x
[1] 0,0 0,5 1,0 1,5 2,0 2,5 3,0> # tạo

chuỗi từ 0 đến 3 với độ dài (số> # phần tử) 5> y <- seq (0,3, length = 5)> y
[1] 0,00 0,75 1,50 2,25 3,00
Machine Translated by Google

Giới thiệu về Lập trình R 13

> z <- 1:10 # tạo một chuỗi từ 1 đến 10 theo số gia 1

> z
[1] 1 2 3 4 5 6 7 8 9 10> z <- 10: 1 # tạo

ra một chuỗi từ 10 đến 1 theo các giảm của 1> z

[1] 10 9 8 7 6 5 4 3 2 1> z [3: 8] # trích


phần tử thứ 3 đến thứ 8 của z [1] 8 7 6 5 4 3

Hàm rep () tạo ra một chuỗi lặp lại như sau:

> z <- rep (1,8) # lặp lại giá trị vô hướng 1, 8 lần
> z
[1] 1 1 1 1 1 1 1 1> y

<- rep (c (1,2,3), 3) # lặp lại vectơ (1,2,3), 3 lần> y [1] 1 2 3 1 2 3 1 2


3> # lặp lại mỗi phần tử trong (1,2,3) 3 lần> z <- rep (c (1,2,3), each = 3)>
z

[1] 1 1 1 2 2 2 3 3 3

Chúng tôi thực hiện thêm một số thao tác với vectơ

> # tạo một chuỗi từ 0 đến 2 theo số gia 0,3> x <- seq (0,2, x = 0,3)

> x
[1] 0,0 0,3 0,6 0,9 1,2 1,5 1,8> length

(x) # chiều dài (số thứ nguyên) của vectơ x [1] 7> y <- 2: 5 # một dãy số
nguyên từ 2 đến 5> y [1 ] 2 3 4 5> z <- c (x, y) # kết hợp các vectơ x và y

> z
[1] 0,0 0,3 0,6 0,9 1,2 1,5 1,8 2,0 3,0 4,0 5,0
> rev (z) # vectơ ngược
[1] 5,0 4,0 3,0 2,0 1,8 1,5 1,2 0,9 0,6 0,3 0,0
> cấu trúc str (z) # của vectơ
num [1:11] 0 0,3 0,6 0,9 1,2 1,5 1,8 2 3 4 ...

Các tác giả cho rằng các hàm rep (), seq () và length () rất tiện lợi và
thường được sử dụng.
Machine Translated by Google

14 Lập trình R và các ứng dụng của nó trong Toán tài chính

1.3.3 Ma trận

Có hai phương pháp để tạo ma trận trong R. Một là sử dụng hàm


ma trận (). Cách khác là kết hợp một số vectơ hoặc một số ma trận.

Hãy để chúng tôi tạo một ma trận từ các phần tử tùy ý bằng cách sử dụng hàm
ma trận ().

> # tạo một chuỗi x từ 1 đến 8.


> x <- 1: 8
> x
[1] 1 2 3 4 5 6 7 8

> y <- ma trận (x, 2,4) # tạo ra a (2,4) -matrix


> # từ phần tử x

> y
[, 1] [, 2] [, 3] [, 4]
[1,] 1 3 5 7
[2,] 8 2 4 6

> y <- ma trận (x, 4,2) # tạo a (4,2) -matrix


> # từ phần tử x

> y
[, 1] [, 2]
[1,] 1 5
[2,] 2 6
[3,] 3 7
4 số 8

[4,]> # ví dụ trong đó số hàng và cột


> # không phù hợp với số

> # phần tử trong x

> y <- ma trận (x, 3,2)


Tin nhắn cảnh báo:
Trong ma trận (x, 3, 2):
độ dài dữ liệu [8] không phải là bội số con hoặc bội số
trong số hàng [3]

> y <- ma trận (x, 2,5)


Tin nhắn cảnh báo:
Trong ma trận (x, 2, 5):
độ dài dữ liệu [8] không phải là bội số con hoặc bội số
trong số các cột [5]

Ví dụ trên cho thấy rằng chúng ta cần xác định số lượng hàng và
cột phù hợp với số lượng phần tử: Số lượng hàng nhiều phần bằng số cột phải là

số phần tử.
Machine Translated by Google

Giới thiệu về Lập trình R 15

Tiếp theo, chúng tôi kết hợp các vectơ để tạo ra một ma trận.

> x <- 1: 4

> y <- 5: 8
> cbind (x, y) # kết hợp các vectơ cột
xy
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
> rbind (x, y) # kết hợp các vectơ hàng
[, 1] [, 2] [, 3] [, 4]
x 1 2 3 4
5 6 7 số 8

y> rbind (x, y, x) # kết hợp 3 vectơ hàng


[, 1] [, 2] [, 3] [, 4]
x 1 2 3 4

y 5 6 7 số 8

x 1 2 3 4
>

> cbind (matrix (x, 2,2), matrix (y, 2,2)) # kết hợp hai ma trận
[, 1] [, 2] [, 3] [, 4]
[1,] 1 3 5 7
4
[2,] 2 6> rbind (ma số 8

trận (x, 2,2), ma trận (y, 2,2))


[, 1] [, 2]
[1,] 1 3
[2,] 2 4
[3,] 5 7
[4,] 6 số 8

Chúng ta có thể tạo ma trận đường chéo bằng cách sử dụng hàm Diag ().

> cross (c (1,2,3)) # tạo ma trận đường chéo


[, 1] [, 2] [, 3]
[1,] 1 0 0
[2,] 0 2 0
0 0 3

[3,]> Diag (rep (1,3)) # tạo ma trận nhận dạng


[, 1] [, 2] [, 3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
Machine Translated by Google

16 Lập trình R và các ứng dụng của nó trong Toán tài chính

Tiếp theo, chúng tôi trích xuất các phần tử, hàng và cột từ ma trận và kiểm tra
số hàng và số cột của ma trận.

> x <- ma trận (seq (1,15, x = 2), 2,4)


> x
[, 1] [, 2] [, 3] [, 4]
[1,] 1 5 9 13
3 7 11 15

[2,]> x [2,3] # xuất phần tử từ hàng thứ 2 và cột thứ 3 [1] 11> x [2,] # xuất
ra hàng thứ 2 [1] 3 7 11 15> x [, 3] # xuất ra cột thứ 3 [1] 9 11> dim (x) #
xuất ra số hàng và cột> # của ma trận [1] 2 4> nrow (x) # xuất ra số hàng
[1 ] 2> ncol (x) # xuất ra số cột [1] 4

Chúng ta cũng có thể thực hiện phép nhân ma trận và vectơ.

> # tạo ma trận 3 x 3> mat <- rbind


(c (1,0.2,0.3), c (0,2,1,0,5), c (0,3,0.5,1))
> chiếu

[, 1] [, 2] [,
3] [1,] 1,0 0,2 0,3
[2,] 0,2 1,0 0,5 [3,]
0,3 0,5 1,0

> x <- c (1,0.4,0.3) # tạo vectơ 1 x 3


> x
[1] 1,0 0,4 0,3

Trong ví dụ sau, chúng ta áp dụng toán tử * có thể được sử dụng để nhân


ma trận và vectơ như chúng ta có ở trên. Tuy nhiên, toán tử này không tạo ra
sản phẩm bên trong như sau:
Machine Translated by Google

Giới thiệu về lập trình R 17

> # tính tích của các phần tử trong mỗi hàng> # của ma trận với mỗi
cột của vectơ
> mat * x
[, 1] [, 2] [,
3] [1,] 1,00 0,20 0,3
[2,] 0,08 0,40 0,2 [3,]
0,09 0,15 0,3

Để tính toán sản phẩm bên trong, chúng ta cần sử dụng toán tử% *%.

> mat% *% x # tính toán sản phẩm bên trong


[,
1] [1,]
1,17 [2,]
0,75 [3,] 0,80

> # tạo ra hai vectơ y và z. > # lưu ý


rằng; tách các phép tính trên một dòng. > y <- c (2,0.5,1.3); z
<-c (1,5,0.2)> # kết hợp các vectơ (x, y, z) dưới dạng các cột
của ma trận mới. > # lưu ý rằng việc sử dụng rbind (x, y, z) sẽ kết hợp các
vectơ> # dưới dạng các hàng của ma trận mới> xyz <-cbind (x, y, z)> xyz

xyz [1,]
1,0 2,0 1,0 [2,] 0,4
0,5 5,0 [3,] 0,3 1,3
0,2> # tính tích bên
trong của ma trận 'mat' và 'xyz'> mat% *% xyz

x z
y [1,] 1,17 2,49 2,06
[2,] 0,75 1,55 5,30 [3,]
0,80 2,15 3,00

1.3.4 Danh sách

Danh sách là một tập hợp các vectơ hoặc ma trận được kết hợp trong một đối tượng. Chúng ta có

thể tạo một danh sách trong R bằng cách sử dụng danh sách hàm (). Không cần thiết phải chỉ

định các loại yếu tố trong danh sách; một danh sách có thể đồng thời bao gồm các kiểu dữ liệu

khác nhau (tức là số và ký tự) và các mục có độ dài và kích thước khác nhau.
Machine Translated by Google

Lập trình 18 R và các ứng dụng của nó trong Toán tài chính

> # tạo danh sách bao gồm tháng, giá, thương hiệu> vốn chủ sở
hữu <- list (tháng = c (1,2,3), giá = c (100.300,240), + brand =
"muji")> vốn chủ sở hữu # hiển thị nội dung của vốn chủ sở hữu $ tháng
[1] 1 2 3

$ giá
[1] 100 300 240

$ brand

[1] "muji"

> # cấu trúc của đối tượng vốn chủ sở hữu ở định dạng nhỏ gọn hơn> str (vốn chủ sở
hữu)
Danh sách 3
$ tháng: num [1: 3] 1 2 3 $ giá:

num [1: 3] 100 300 240 $ thương hiệu:


chr "muji"

> vốn chủ sở hữu $ tháng # trích xuất tháng từ vốn chủ
sở hữu [1] 1 2 3> vốn chủ sở hữu $ price # trích giá từ

vốn chủ sở hữu [1] 100 300 240> vốn chủ sở hữu $ price
[3] # trích mục giá thứ 3 từ vốn chủ sở hữu [1] 240 >

vốn chủ sở hữu [[3]] # trích xuất khoản mục thứ 3 của vốn chủ sở hữu [1] "muji">
vốn chủ sở hữu [[2]] # để trích xuất khoản mục thứ 2 của vốn chủ sở hữu [1] 100

300 240

Chúng tôi có thể xác định lại tên của các mục có trong danh sách.

> # tạo danh sách> vốn


chủ sở hữu <- list (c (1,2,3), c (300,200,400), "muji")> vốn chủ
sở hữu [[1]] [1] 1 2 3

[[2]]
[1] 300 200 400

[[3]]

[1] "muji"
Machine Translated by Google

Giới thiệu về lập trình R 19

> # đặt tên cho các mục trong danh sách> tên (vốn
chủ sở hữu) <- c ("tháng", "giá", "thương hiệu")> vốn chủ
sở hữu $ tháng [1] 1 2 3

$ giá
[1] 300 200 400

$ brand
[1] "muji"

> # tên đầu ra của các mục trong vốn chủ sở hữu bằng cách
sử dụng> # tên hàm ()> tên (vốn chủ sở hữu) [1] "tháng"
"giá" "thương hiệu"> # thay đổi tên của mục thứ 3 thành
"công ty"> tên (vốn chủ sở hữu ) [3] <- "firm"> tên (vốn
chủ sở hữu) [1] "tháng" "giá" "công ty"> vốn chủ sở hữu $
tháng [1] 1 2 3

$ giá
[1] 300 200 400

$ firm
[1] "muji">
vốn chủ sở hữu $ tháng # trích xuất các mục trong tháng, sử dụng $
[1] 1 2 3> #, chúng tôi có thể nhân các mục trích xuất từ danh
sách với một đại lượng> vốn chủ sở hữu $ tháng * 3 [1] 3 6 9> # hoặc nhân
với một vectơ> vốn chủ sở hữu $ tháng * c (3,2,3) [1] 3 4 9> vốn chủ sở hữu
$ tháng% *% c (3,2,3) # tính một sản phẩm bên trong [1 ] 16> # phép nhân
của một mục được trích xuất duy nhất> vốn chủ sở hữu $ tháng [3] * c (3,2,3)
[1] 9 6 9
Machine Translated by Google

Lập trình 20 R và các ứng dụng của nó trong Toán tài chính

1.3.5 Khung dữ liệu

Khung dữ liệu là một loại danh sách. Chính xác hơn, khung dữ liệu là một danh
sách các mục có cùng cấu trúc; ví dụ: tất cả các vectơ hoặc ma trận có trong
khung dữ liệu có cùng kích thước (tức là số hàng và số cột). Chúng ta có thể tạo
một khung dữ liệu từ một danh sách chứa các biến có cùng thứ nguyên như sau.

> vốn chủ sở hữu <- list (tháng = c (1,2,3), giá = c (430,400,100), thỏa
thuận = c (1,4,10))> vốn chủ sở hữu $ tháng [1] 1 2 3

Giá $
[1] 430 400 100

$ thỏa
thuận [1] 1 4 10

> market <- data.frame (vốn chủ sở hữu)>


market # thông báo rằng định dạng đầu ra khác> # với danh sách

thỏa thuận giá tháng


1 1 430 1
2 2 400 4
3 100 10

3> giá thị trường # trích xuất các mặt hàng có giá
[1] 430 400 100> thị trường [2,] # trích xuất hàng
thứ 2 của thỏa thuận giá tháng thị trường 2 400 4

Cũng giống như danh sách, chúng ta có thể đổi tên các hàng và cột của khung dữ liệu.

> rownames (thị trường) # trích xuất tên của mỗi hàng [1] "1"
"2" "3"> tên hàng (thị trường) <- c ("Jan", "Feb", "Mar") #
đổi tên từng hàng> tên hàng (thị trường)

[1] "Jan" "Feb" "Mar">


colnames (market) # để trích xuất tên của từng hàng [1] "month"

"price" "deal"
Machine Translated by Google

Giới thiệu về Lập trình R 21

> # đổi tên từng cột


> colnames (market) <- c ("tsuki", "kakaku", "torihiki")

> market # xuất khung dữ liệu với tên đã đổi tên


> # hàng và cột
tsuki kakaku torihiki
Tháng một 1 430 1
Tháng Hai 2 400 4
Mar 3 100 10

1.3.6 Yếu tố

Factor là một loại được sử dụng để phân loại các yếu tố. Thật vậy, một khi một biến được đưa ra

như một yếu tố, chúng ta có thể xử lý không chỉ các phần tử của biến mà còn với
danh mục của các phần tử được sắp xếp theo thứ tự bảng chữ cái.
Ví dụ, một tập hợp {b, c, c, aa, ab, b} có sáu phần tử. Như một yếu tố, nó có bốn
loại aa, ab, b, c. Hơn nữa, thứ tự bảng chữ cái của các danh mục được áp dụng
sang số, chẳng hạn 1,2,3,41,14 được coi là các cấp của 1,14,2,3,41.
Hãy để chúng tôi tạo một biến của loại yếu tố. Để tạo ra một biến nhân tố
loại, chúng tôi sử dụng hàm thừa số ()

> tmp_factor <-c ("b", "c", "c", "aa", "ab", "b", 12,2,1,0, "aa")
> tmp_factor <-factor (tmp_factor)
> tmp_factor
[1] bcc aa ab b 12 2 1 0 aa
Mức độ: 0 1 12 2 aa ab bc

Như ví dụ trên cho thấy, Mức cung cấp các danh mục của một yếu tố. Lưu ý rằng
danh mục được sắp xếp theo thứ tự bảng chữ cái. Thật vậy, “12” có trước “2”.
Cấu trúc của yếu tố được thể hiện rõ ràng hơn bằng cách sử dụng hàm
thuộc tính()

> thuộc tính (tmp_factor)


$ cấp độ
[1] "0" "1" "12" "2" "aa" "ab" "b" "c"

$ lớp
[1] "hệ số"

Điều này cho thấy rõ ràng rằng loại yếu tố không phải là các loại vectơ thông thường,
như vậy yếu tố đó bao gồm các cấp độ và lớp học. Các cấp độ đưa ra thứ tự của các danh mục

0,1,12,2, aa, ab, b, c. Lớp cho thấy tmp_factor không phải là một vectơ thông thường, nhưng

loại yếu tố.


Lưu ý rằng dữ liệu được trích xuất từ tệp csv (việc sử dụng dữ liệu đọc được cung cấp trong

phần 1.7) tự động được coi là loại nhân tố. Để tránh việc khai thác
Machine Translated by Google

22 Lập trình R và các ứng dụng của nó trong Toán tài chính

của dữ liệu là một loại nhân tố, chúng ta nên ký hiệu chuỗi As Factors = FALSE
như một đối số của hàm read.csv ().

1.3.7 Điều tra các loại và cấu trúc của dữ liệu


R có một số hàm hữu ích mà chúng ta có thể sử dụng để thẩm vấn cấu trúc của dữ liệu, tức

là, chúng ta có thể thẩm vấn xem dữ liệu là vectơ, ma trận, danh sách, khung dữ liệu hay
thừa số.

> x <- 1
> is.vector (x)
[1] TRUE>
# một đại lượng vô hướng được coi là vectơ 1 chiều trong R> x <- c
(4,2,1)> is.vector (x)

[1] TRUE>
x <- matrix (x, 1,3)>
is.matrix (x)
[1] TRUE>
is.vector (x)
[1] FALSE>
x <- list (c (34,3,19), c ("foo", 'kaa'))>
is.list (x)
[1] TRUE>
is.data.frame (x)
[1] FALSE>
x <- data.frame (c (1,2,3), c (10,8,9))>
is.data.frame (x)
[1] TRUE>
tmp_factor <-c ("b", "c", "c", "aa", "ab", "b", 12,2,1,0, "aa")>
tmp_factor <- factor (tmp_factor)> is.factor (tmp_factor)

[1] ĐÚNG

1.4 Chức năng

Chúng tôi giới thiệu các hàm để lập trình phức tạp hơn. Một hàm có thể được
định nghĩa trong R bằng hàm (). Cấu trúc đơn giản để chúng ta sử dụng cách sử
dụng "tên của hàm" <- function () {}, nêu các đối số trong dấu ngoặc đơn () và
nêu các phương pháp tính toán trong dấu ngoặc nhọn {}. Ví dụ dưới đây cho chúng
ta thấy cách sử dụng.
Machine Translated by Google

Giới thiệu về Lập trình R 23

> # xác định một hàm để tính chu vi

> # của một hình tròn bán kính r

> circle <- function (r) {+ s <-

2 * pi * r # tính chu vi và + # thay nó thành s + return (s) # trả


về từ hàm kết quả s +}> circle (1) # để tính chiều dài hình tròn có

bán kính 1 [1] 6.283185

>

> # hàm cũng có thể nhận một vectơ làm đối số của nó> circle (c (1,3,2)) [1]
6.283185 18.849556 12.566371

>

> # cũng như ma trận> hình tròn

(ma trận (c (3,1,3,2), 2,2))

[, 1] [, 2] [1,]
18.849556 18.84956 [2,] 6.283185
12.56637> circle (3 + 3i) #

chúng ta có thể áp dụng hàm này cho a> # số phức [1] 18.84956 +
18.84956i> # Logic value TRUE được hiểu là> # giá trị số 1 và FALSE
là 0> circle (TRUE) [1] 6.283185> circle (FALSE) [1] 0> circle

("foo")

Lỗi trong 2 * pi * r: đối số không phải số đối với toán tử nhị phân

Ví dụ cuối cùng trả về lỗi vì chúng ta không thể sử dụng toán tử * với các đối số
không phải là số. Ví dụ cuối cùng cho kiểu ký tự không ngụ ý rằng hàm () trong R không
thể được áp dụng cho kiểu ký tự nói chung. Bằng cách xác định phép tính tương ứng với
loại ký tự, chúng ta có thể tạo hàm func lấy ký tự làm đối số.
Machine Translated by Google

Lập trình 24 R và các ứng dụng của nó trong Toán tài chính

> moji <- function (x) {+ y


<- paste (x, "goo") + return
(y) +}> moji ("ha") [1] "ha
goo"> moji (3) [1] "3 goo"

Chúng ta có thể xác định các hàm đa biến.

> multi <- function (x, y) {+ z


= x ^ 2 + y + return (z) +}>
multi (1,2) [1] 3> multi (c
(1,1), c (2 , 1)) # cho vectơ
dưới dạng đối số [1] 3 2> a <-
ma trận (c (3,2,1,0), 2,2)> b
<- ma trận (c (5,1,4,1 ), 2,2)> multi (a, b) # cho ma trận dưới
dạng đối số [, 1] [, 2]

[1,] 14 5
[2,] 5 1

Bài tập

Lập hàm tính diện tích hình tròn.

Ví dụ về giải pháp

> area <- function (r) {+


return (pi * r ^ 2) +}> area
(3) # tính diện tích của một
hình tròn có bán kính 3 [1] 28.27433

1.5 Câu lệnh kiểm soát

Chúng ta có thể tạo các mã phức tạp hơn bằng cách sử dụng các câu lệnh có điều kiện; “Nếu”,
“cho” và “trong khi”.
Machine Translated by Google

Giới thiệu về Lập trình R 25

1.5.1 câu lệnh if

Chúng ta thường sử dụng câu lệnh if trong script và trong định nghĩa các hàm.
Câu lệnh if cho phép chúng ta thực thi một khối mã nếu kết quả của câu lệnh if
là đúng và một khối mã thay thế nếu kết quả của câu lệnh if là sai.

Sau đây là các định dạng của câu lệnh if.

câu lệnh if (điều kiện) 1

câu lệnh if (điều kiện) 1 câu lệnh khác 2

if (điều kiện) câu lệnh 1 else if (điều kiện) câu lệnh 2

if (điều kiện) câu lệnh 1 else if (điều kiện) câu lệnh 2 else trạng thái
ment 3, ··

Đặc biệt trong trường hợp câu lệnh điều kiện, tốt hơn hết là chúng ta nên viết
đi viết lại phần lập trình để hiểu cấu trúc của câu lệnh điều kiện.
Hãy viết kịch bản để tính chu vi hình tròn có bán kính 3 nếu
biến x bằng bán kính chuỗi ký tự.

> r <-3 # xác định bán kính> #

thay chuỗi ký tự 'bán kính' thành x> x <- "bán kính"

> # kiểm tra điều kiện xem x có bằng> # ký tự> # string 'radius',>
if (x == "radius") + {+ z <-2 * pi * r # thay bán kính thành z +} >

z # kiểm tra kết quả [1] 18,84956

Tiếp theo, chúng ta viết một script để tính độ dài của một hình tròn nếu biến x là “bán
kính” và tính diện tích hình tròn nếu x không phải là “bán kính”.

> x <- "area" # thay 'area' thành x> if (x ==


"radius") + {+ z <-2 * pi * r +} else {# nếu x
không phải là 'radius' + z < - pi * r ^ 2 # tính

diện tích hình tròn +}

>
> z
[1] 28.27433
Machine Translated by Google

26 Lập trình R và các ứng dụng của nó trong Toán tài chính

Hơn nữa, chúng tôi viết script để tính chu vi của một hình tròn nếu biến thể x có thể
là "bán kính", diện tích hình tròn nếu x là "diện tích", thể tích và diện tích bề mặt
nếu x không phải là "bán kính" hay "diện tích ”.

> x <- "ball" # thay thế chuỗi ký tự 'ball'> if (x == "radius") + {+ z


<-2 * pi * r +} else if (z == "area") + { + z <- pi * r ^ 2 +} else {+
z <-c (4/3 * pi * r ^ 3,4 * pi * r ^ 2) +}

>
> z
[1] 113.0973 113.0973

Mặc dù hơi tẻ nhạt nhưng chúng ta có thể thực hiện các phép tính tương tự bằng cách sử dụng logic

các toán tử.

> if (x! = "radius" && x! = "area") + {+


z <-c (3/4 * pi * r ^ 3,4 * pi * r ^ 2)

+} else if (z = = "radius" || z! = "area")


+ {+ z <-2 * pi * r +} else {+ z <- pi * r ^ 2
+}

>
> z
[1] 113.0973 113.0973

Bây giờ chúng ta sử dụng câu lệnh if trong một hàm để kiểm tra xem đầu vào num
ber có lẻ hay không. Lưu ý rằng %% là toán tử để tính toán môđun.

> is.odd <- function (n) {# gán hàm cho is.odd + if (n %% 2 == 1) {+ return
(TRUE) +} else {+ return (FALSE) +}
Machine Translated by Google

Giới thiệu về Lập trình R 27

+}
>
> is.odd (4)
[1] FALSE>
is.odd (5)
[1] ĐÚNG

1.5.2 Xử lý lặp lại: câu lệnh for, câu lệnh while


Nếu chúng ta cần thực hiện lặp đi lặp lại các phép tính tương tự, rất tiện lợi khi
sử dụng câu lệnh for (vòng lặp for) hoặc câu lệnh while. Sau đây là một hàm để
tính một tích của các số nguyên từ 1 đến n, tức là, n giai thừa.

> acc <- function (n) {+


tmp <- 1 + # lặp lại phép
tính được mô tả bên dưới trong + # dấu ngoặc nhọn {} trong trường

hợp tôi nằm giữa 1 và n. + for (i in 1: n) {# 1: n là vectơ từ 1 đến


n, + # tăng thêm 1 + tmp <- tmp * i +} + return (tmp) +}

>
> tài khoản

(3) [1] 6>

tài khoản (0)

[1] 0

Trong ví dụ trên, chúng ta tính tích của các số nguyên từ 1 đến n; tức là,
chức năng là để tính toán n !. Tuy nhiên, hàm acc () trên không tính đúng 0!
= 1. Theo nghĩa này, hàm acc () không tương ứng chính xác với n! (tất nhiên,
nó đủ cho trường hợp n lớn hơn hoặc bằng 1). Chúng ta có thể sử dụng câu lệnh
while để sửa chức năng của mình. Câu lệnh while khác với câu lệnh

câu lệnh for trong phương thức để mô tả điều kiện lặp lại. Hãy xem xét ví dụ
sau:

> acc <- function (n) {+


tmp <- 1 + i <- 1 + # lặp
lại phép tính sau trong

dấu {} cho đến khi tôi + # lớn hơn n + while (i <= n) {


Machine Translated by Google

28 Lập trình R và các ứng dụng của nó trong Toán tài chính

+ tmp <- tmp * i


+ i <- i + 1 # mà không tăng i, điều kiện + # sẽ không bao giờ
được đáp ứng và phép tính sẽ

+ # lặp lại vô hạn +} +


return (tmp) +}

>

> acc (3) # sản phẩm từ 1 đến 3, tức là 3! [1] 6> acc
(0) # để tính 0! [1] 1

Chúng ta cũng có thể sử dụng câu lệnh if để sửa hàm tính n !.

> acc <- function (n) {+


if (n == 0) {+ return (1)
+} else {+ tmp <- 1 + for
(i in 1: n) {+ tmp <- tmp
* i + } + return (tmp) +}
+}> tài khoản (3) [1] 6>
tài khoản (0) [1] 1

Bài tập

Lập hai hàm để tính tổng từ 1 đến n; (1) sử dụng câu lệnh for và (2) sử dụng
câu lệnh while.

Ví dụ về giải pháp

> # tính tổng từ 1 đến n bằng câu lệnh for> sum_1 <- function (n) {+ tmp
<- 0 + for (i in 1: n) {+ tmp <- tmp + i +} + return (tmp)
Machine Translated by Google

Giới thiệu về lập trình R 29

+}
>

> # tính tổng từ 1 đến n bằng cách sử dụng câu lệnh> # while

> sum_2 <- function (n) {+ tmp

<- 0 + i <- 1 + while (i <= n)


{+ tmp <- tmp + i + i <- i + 1

+} +

return (tmp) +}>


sum_1 (10) [1] 55>
sum_2 (10) [1] 55

1.6 Đồ họa
Các hình mô tả kết quả bằng số rất hữu ích để trực quan hóa các bộ dữ liệu lớn và
thường cung cấp cái nhìn sâu sắc hơn hoặc quan điểm mới về phân tích. Đặc biệt,
điều quan trọng là người dùng TEX phải mô tả các tệp eps đẹp mắt. May mắn thay, R
được trang bị các chức năng tích hợp giúp dễ dàng hình dung. Cốt truyện func tion
() có thể được sử dụng để tạo đồ họa. Chúng ta hãy thử một vài ví dụ (xem bảng điều
khiển bên trái của Hình 1.8).

> # tạo số ngẫu nhiên từ tiêu chuẩn> # phân phối chuẩn> x


<- rnorm (10)

> x
[1] -0.24031720 2.21984392 -0.16325784 0.58818735 -1.28146059
-0.06356494 -1.22452429 0.05484006

> plot (x) # hiển thị các số trên trên một biểu đồ

Tiếp theo, chúng tôi tạo một số ngẫu nhiên khác y và biểu đồ x được tạo ở
trên trên trục hoành so với y trên trục tung (xem bảng điều khiển bên phải
của Hình 1.8).
Machine Translated by Google

Lập trình 30 R và các ứng dụng của nó trong Toán tài chính

2
1
1
0
x y
0
1

2 4 6 số 8 10 1 0 1 2

Mục lục x

Hình 1.8: Các số ngẫu nhiên x, so với số chỉ mục (trái) và (x, y) (phải)

> y <- rnorm (10)


> y
[1] 1,5564341 -1,2587830 0,3978732 -0,4926095 0,3683764
[8] -0,9308361 -1,3766497 0,5590627 -2.1707921 -1,5921009

> âm mưu (x, y)

Chúng ta hãy vẽ đồ thị của một hàm bậc hai (Hình 1.9).

> # tạo một chuỗi từ 0 đến 5 với gia số 0,2.


> x <- seq (0,5, x = 0,2)
> # tạo ra một hàm bậc hai từ dãy số trên.
> y <- 2 * x ^ 2-5 * x
> # vẽ một đường cong đặc của hàm bậc hai, cho phép x là
> # trục hoành và y là trục tung
> plot (x, y, type = "l")
> plot (x, y, type = "p") # đường cong điểm biểu đồ của
> # hàm bậc hai

Chúng ta cũng có thể vẽ biểu đồ các giá trị của một hàm, đặt tên hàm, chẳng hạn như 'sin',

'log', v.v., là đối số của plot () (Hình 1.10).

> # giá trị biểu đồ của hàm logarit có miền


> # từ 0 đến 10.

> plot (log, 0,10)

Khác với hàm log (), R được trang bị các hàm cal toán học tiêu chuẩn, như hàm
mũ exp () và các hàm lượng giác
sin (), cos (), v.v.
Machine Translated by Google

Giới thiệu về Lập trình R 31

y y
25
20
15
10 25
20
15
10

5 5
0 0

0 1 2 3 4 5 0 1 2 3 4 5

x x

Hình 1.9: Một đường cong đặc (trái) và các điểm (phải) của hàm số bậc hai y = 2x2 5x

khúc
gỗ
0

0 2 4 6 số 8 10

Hình 1.10: Các giá trị của hàm logarit y = lnx trong miền [0,10]

Chúng ta có thể thêm giá trị của các hàm vào một hình và thay đổi màu của các điểm
và các đường (Hình 1.11).

> x <- seq (-2,2, x = 0,2)


> plot (x, x ^ 3, type = "l")
> điểm (x, x ^ 2) # thêm điểm của f (x) = x ^ 2
> lines (x, x ^ 2) # thêm một đường cong đặc của hàm trên

> # thay đổi màu bằng cách chỉ định đối số col
> dòng (x, x ^ 2, col = "red")
Machine Translated by Google

32 Lập trình R và các ứng dụng của nó trong Toán tài chính

3
^
x
0

2 1 0 1 2

3 2
Hình 1.11: Sau khi vẽ biểu đồ, y = x , thêm điểm và đường cong đặc của y = x

Chúng ta có thể tạo các biểu đồ 3D trong R bằng cách sử dụng hàm phối cảnh (), thay vì biểu đồ ()

(bảng điều khiển bên trái của Hình 1.12).

> x <- seq (-3,3, length = 50) # đặt miền của trục x> y <- seq (-3,3,
length = 50) # đặt miền của trục y> # dnorm ( ) là hàm mật độ chuẩn thông
thường> gauss3d <- function (x, y) {dnorm (x) * dnorm (y)}> # các giá trị
của gauss3d với các đối số x, y được thay thế> # thành z

> z <- external (x, y, gauss3d)> #


hàm aw () tạo ra hình khối của (x, y, z)> perspective (x, y, z)

> # xoay hình khối đứng trước 30 độ sang trái,> # 20 độ lên trên và chia tỷ lệ
thành 0,5 kích thước> # chiều cao của nó> góc nhìn (x, y, z, theta = 30, phi =
-20, expand = 0,5)

Tương tự như plot (), chúng ta có thể thay đổi màu đường bằng cách chỉ định đối
số col trong phối cảnh (). Chúng tôi đưa ra ví dụ về script như sau để thay đổi màu
của hình khối thành màu xanh lam nhạt (bảng bên phải của Hình 1.12).

> # để thay đổi màu> phối cảnh


(x, y, z, theta = 30, phi = 30, expand = 0,5, col = "lightblue")
Machine Translated by Google

Giới thiệu về Lập trình R 33

y
x

Hình 1.12: Bảng điều khiển bên trái là biểu đồ 3D được tạo bởi phối cảnh (x, y, z), trong đó z = và
1 2 x 1 2
2
2 năm
bảng điều khiển bên phải hiển thị chuyển động quay của hình khối bên trái

bảng điều khiển nghiêng 30 độ sang trái, 20 độ trở lên và chia tỷ lệ thành 0,5 kích thước chiều cao.

Để mở nhiều số liệu đồng thời, chúng tôi sử dụng lệnh sau để


tạo cửa sổ trong đó các số liệu được chứa.

> windows ()

Là người dùng TEX, các tác giả thích lưu trữ đồ họa dưới dạng tệp eps (tồn tại các tùy chọn

để lưu trữ ở các định dạng khác, chẳng hạn như pdf). Tiếp theo, hãy xuất hình dưới dạng tệp eps.
Chúng ta cần đặt tên tệp được ghi trong thư mục hiện tại, như sau,

> dev.copy2eps (file = "fig.eps")

Chúng tôi cũng có thể xuất đồ họa bằng cách nhấp chuột phải vào hình và chọn 'lưu
dưới dạng tái bản.', Để lưu tệp eps với tên được chỉ định. Chúng ta có thể xuất đồ
họa sang tệp pdf thông qua dòng lệnh như sau.

> # mở tệp pdf có tên "bar.pdf" để viết> pdf (tệp = "bar.pdf")> # tạo
một số ô được ghi vào> # tệp pdf bar.pdf> ô (1: 10, rep (5,10), xlab =
"x", ylab = "y")> plot (1: 10,20: 11, xlab = "x", ylab = "y")> plot (1:
10, exp ( 1:10), xlab = "x", ylab = "y")> dev.off () # đóng tệp

Tệp pdf kết quả, bar.pdf, bao gồm 3 ô.

1.7 Đọc và ghi dữ liệu


Chúng ta có thể lưu trữ kết quả của các phép tính vào một tệp với các hàm R được tích hợp sẵn.

Bây giờ chúng ta hãy ghi kết quả của các phép tính vào một tệp và đọc dữ liệu trên

tệp ghi ten. Để ghi dữ liệu vào tệp, chúng ta có thể sử dụng các hàm write.table () hoặc
Machine Translated by Google

34 Lập trình R và các ứng dụng của nó trong Toán tài chính

ghi.csv (). Để đọc dữ liệu từ một tệp, chúng ta có thể sử dụng các hàm read.table ()
hoặc read.csv ().

> mat <-rbind (c (1,0.2,0.3), c (0,2,1,0,5), c (0,3,0.5,1)


> chiếu

[, 1] [, 2] [, 3]
[1,] 1,0 0,2 0,3 [2,]
0,2 1,0 0,5 [3,] 0,3 0,5
1,0> write.table (mat,
"matrix.txt")> write.csv (mat,
"matrix.csv")

Hai tệp kết quả từ trên sẽ được lưu vào thư mục hiện tại với tên là “matrix.txt” và “matrix.csv”.

Chúng tôi có thể đọc lại các tệp này trong R

không gian làm việc như sau.

> Rmatrix1 <-read.table ("matrix.txt")


> Rmatrix1
V1 V2 V3
1 1,0 0,2 0,3
2 0,2 1,0 0,5
3 0,3 0,5 1,0>
Rmatrix2 <-read.csv ("matrix.csv")
> Rmatrix2
X V1 V2 V3
1 1 1,0 0,2 0,3
2 2 0,2 1,0 0,5
3 3 0,3 0,5 1,0

1.8 Chương trình đọc


Đối với lập trình đơn giản, một tập lệnh ngắn sử dụng bảng điều khiển là đủ. Từ trước đến

nay, chúng ta thường viết những đoạn script dài và chạy nó nhiều lần. Chúng tôi cũng có thể

muốn thực hiện các chỉnh sửa nhỏ đối với chương trình của mình. Trong trường hợp này, chỉ giữ

một tập lệnh trong bảng điều khiển R hoặc viết lại nó mỗi lần là không đủ. May mắn thay, R

cho phép chúng ta lưu tập lệnh dưới dạng tệp và đọc nó nhiều lần.

Chúng ta có thể bắt đầu một tệp script mới từ lệnh “New Script” trong menu
“File”, khi đó màn hình như Hình 1.13 sẽ xuất hiện.
Hãy để chúng tôi viết chương trình sau đây.

x <- seq (-pi, pi, by = 0,1)


y <- sin (x) plot (x, y, type
= "l")
Machine Translated by Google

Giới thiệu về Lập trình R 35

Hình 1.13: Cửa sổ tập lệnh

Chúng tôi lưu tập lệnh này dưới dạng tệp có tên “program.r”. Tệp tập lệnh R được ký

hiệu bằng phần mở rộng tệp .r. Chúng tôi có thể lưu tệp kịch bản bằng cách chọn “Lưu” hoặc
“Lưu dưới dạng .... (tên thay thế)” từ menu “Tệp”. Khi chúng ta muốn sử dụng chương trình

này, chúng ta có thể gọi chương trình này bằng cách chọn “Open script ...” từ menu “File”
và chỉnh sửa nó.

Chúng ta có thể chạy tập lệnh từ cửa sổ giao diện điều khiển bằng hàm source (), như
bên dưới.

> source ("program.r")

Cách khác để chạy tập lệnh là chọn “Mở tập lệnh” từ menu “Tệp”, sau đó chọn “Chạy tất cả”

từ menu “Chỉnh sửa” sau khi tập lệnh “program.r” ap

quả lê.

Lưu ý rằng khi chúng ta viết một chương trình trong một tệp script, chúng ta cần chú ý

đến điểm bắt đầu của một dòng mới. Hãy xem xét tập lệnh được sử dụng để tính toán '3 + 4'

chứa các dòng sau

a <-3

+4

R diễn giải chương trình này là 3 nên được thay thế vào biến a và dòng được kết thúc. Sau

đó, +4 trên dòng tiếp theo được hiểu là giá trị +4 vừa được đưa ra để hiển thị hoặc được

lệnh để tính toán 0 + 4. Thật vậy, khi chạy tập lệnh này, R trả về kết quả sau.

> a <-3

> +4
Machine Translated by Google

Lập trình 36 R và các ứng dụng của nó trong Toán tài chính

[1] 4

Chúng ta hãy gọi biến a trên giao diện điều khiển.

> a

[1] 3

Chúng ta có thể thấy rằng chỉ có 3 đã được thay thế vào biến a. Nếu chúng ta tạo dòng
mới trước khi một phép tính kết thúc rõ ràng, R sẽ tìm kiếm nơi hoạt động sẽ kết thúc.
Hãy để chúng tôi viết chương trình sau trên kịch bản.

a <-3+ # không rõ nên thêm gì vào 3

4 # ở đây, R giải thích rằng 4 nên được thêm vào 3

Thật vậy, chúng ta có thể xác nhận kết quả sau bằng cách chạy đoạn mã trên.

> a <-3+
+ 4

Hãy để chúng tôi gọi một chế độ xem trên bảng điều khiển.

> a

[1] 7

Thật vậy, chúng ta có thể khẳng định “3 + 4 = 7” được thay thế vào biến a. Mặc dù cuộc
thảo luận ở trên trông có vẻ tầm thường, nhưng điều quan trọng là phải viết chương
trình với một tập hợp các thao tác rõ ràng trên mỗi dòng. Nếu mô tả trên một dòng quá
dài và bạn muốn bắt đầu dòng mới, bạn nên bắt đầu dòng mới để R có thể hiểu rằng phép
tính không kết thúc ở cuối dòng hiện tại.

1.9 Các gói Mặc dù

bản thân R được trang bị nhiều chức năng cài sẵn khác nhau, nhưng các gói bổ sung vẫn
có sẵn để mở rộng khả năng của R để thực hiện các phép tính và phép toán phức tạp hơn.
Có hai phương pháp cài đặt gói mới trong R: Một là truy cập trang web của dự án CRAN
và tải xuống các gói thông qua trình duyệt web. Điều này tương tự như phương pháp cài
đặt R. Thứ hai là thực hiện thông qua GUI của R. Vì phương pháp thứ hai dễ dàng hơn
và chúng tôi đã sử dụng GUI, chúng tôi hiển thị phương pháp bằng R GUI.

1. Trong R GUI, chọn menu “Gói” và nhấp vào “Cài đặt (các) gói ...”.

2. Cửa sổ như bảng điều khiển bên trái của Hình 1.14 xuất hiện để hiển thị các
trang nhân bản có thể phát sóng để tải các gói từ đó xuống. Chọn một trong số
chúng, như trường hợp cài đặt R. Ở đây, chúng tôi chọn “Nhật Bản (Tokyo)
[https]”, vì chúng tôi sống ở đó.
Machine Translated by Google

Giới thiệu về lập trình R 37

3. Cửa sổ giống như bảng điều khiển ở giữa của Hình 1.14 , nơi chúng ta có thể thấy tên của

các gói có sẵn để tải xuống. Ví dụ: để chọn độ tuổi gói “tseries” sẽ được sử dụng trong

Chương 3 và nhấp vào “OK” và “Yes” cho các câu hỏi liên tiếp, chẳng hạn như “Bạn có muốn

sử dụng thư viện cá nhân thay thế không?” Sau đó, quá trình tải xuống sẽ bắt đầu.

4. Trước khi sử dụng gói đã tải xuống, chúng ta chọn “Nạp gói ...” từ menu 'Gói'. Sau đó,

bảng bên phải của Hình 1.14 xuất hiện. Se giảng “tseries” và nhấp vào “OK”. Sau đó, chúng

ta có thể sử dụng các hàm có trong gói “tseries”. Để tải gói cụ thể từ giao diện điều

khiển, chúng tôi viết như sau;

> thư viện (tseries)

Hình 1.14: Lựa chọn trích dẫn gương (bảng điều khiển bên trái). Lựa chọn các gói để tải xuống (bảng điều

khiển ở giữa). Các gói có sẵn (bảng bên phải)

Nhiều gói khác cũng có sẵn. Sự gia tăng của các gói hàng là một trong những đặc điểm hấp dẫn
của R.

Cho đến nay, chúng ta đã học được một số kiến thức cơ bản về Lập trình R. Từ chương tiếp

theo, chúng ta hãy sử dụng R cho tài chính.


Machine Translated by Google
Machine Translated by Google

Phần I

THỐNG KÊ TRONG

TÀI CHÍNH
Machine Translated by Google
Machine Translated by Google

chương 2

Phân tích thống kê với R

NỘI DUNG

2.1 Số liệu thống kê cơ bản ... ..... 41 Phân phối xác suất và số ngẫu nhiên .........................

2.2 46 Kiểm định giả thuyết ............ ..................................... 47 2.3.1 Kiểm định
2.3 giả thuyết là gì? ................................ 47 2.3.2 t-Kiểm định trung bình dân

số ........ .......................... 49 Phân tích hồi quy ... .......................... 54


Phân tích đường
cong cong lợi suất
lợi nhuận sử dụng phân tích thành phần chính ............. .59
................................................... 592.5. 1 Đường
2.5.2 Phân
2,4 tích thành phần chính là gì? ..................... 61 2.5.3 Ví dụ về phân tích thành phần chính
2,5 sử dụng JGB ....... 64 2.5.4 Cách tính toán phân tích thành phần chính ? ......... 70

2.1 Số liệu thống kê cơ bản

Dữ liệu tài chính phổ biến nhất bao gồm giá tài sản, 1 chẳng hạn như giá cổ phiếu
của các công ty được giao dịch trên sàn chứng khoán.2 Những giá này có thể được lấy
mẫu hàng quý, hàng tháng hoặc hàng ngày khi kết thúc giao dịch. Chúng tôi thậm chí
có thể lấy mẫu mọi giao dịch chứng khoán trong thời đại giao dịch tần suất cao này,
có thể xảy ra trên quy mô thời gian dưới một phần nghìn giây, dẫn đến khối lượng dữ
liệu rất lớn.

1 hoặc lợi nhuận về giá, là phần trăm thay đổi so với giá trước đó.

2 Tất nhiên dữ liệu tài chính không nhất thiết phải giới hạn ở giá tài sản. Nó có thể là chuỗi thời gian của các giao dịch

khối lượng của một cổ phiếu nhất định hoặc dữ liệu kinh tế như GDP hàng tháng hoặc số liệu thất nghiệp.

41
Machine Translated by Google

42 Lập trình R và các ứng dụng của nó trong Toán tài chính

Chúng ta có thể thực hiện một số phép đo mô tả định lượng như tối thiểu, tối đa, kích

thước của dữ liệu (độ dài của chuỗi thời gian). Và chúng ta có thể hình dung hoặc vẽ biểu đồ

chuỗi thời gian tài chính để thực hiện phân tích định tính, tìm kiếm xu hướng hoặc mô hình.

Nhưng đối với những tập dữ liệu lớn, chúng ta sẽ cần những công cụ phân tích mạnh mẽ hơn.

Nếu chúng ta có một tập dữ liệu đủ lớn (hơn vài trăm mẫu), sẽ rất hữu ích khi sử dụng số

liệu thống kê để mô tả dữ liệu. Như chúng ta sẽ thấy ở phần sau, chúng ta có thể sử dụng số

liệu thống kê và giả định liên quan đến thống kê của dữ liệu để đưa ra dự đoán và hiểu dữ
liệu tài chính tốt hơn. 2

Để ước tính trung bình µ và phương sai là điều đầu tiên và là một trong những điều quan trọng nhất

σ những thứ để phân tích thống kê.

Điều quan trọng nhất là giả định rằng dữ liệu có thể được mô tả bằng phân phối khả năng

xác suất. Sự phân bố được mô tả dưới dạng khoảnh khắc. Giá trị trung bình và phương sai là
hai thời điểm đầu tiên. Hai thời điểm đầu tiên, giá trị trung bình và phương sai mô tả vị

trí tập trung phân phối và mức độ lan tỏa của các cửa sổ bật lên về giá trị trung bình.

Ước tính này giả định sự tồn tại của dân số giúp có thể lấy mẫu dữ liệu và ước tính số

liệu thống kê, như giá trị trung bình và phương sai.3 Trong bối cảnh tài chính, có thể khó

xác định dân số. Tuy nhiên, chúng tôi thường tách biệt dữ liệu tài chính, với giả định ngầm

về sự tồn tại của phân phối xác suất.

Đối sai
2 phương vớiˆstập dữ liệu đã cho (quan sát) x1, x2, ···, xn, trung bình mẫu ¯x và mẫu được
tính như sau, 4

x¯ =
1 1 Xnxi
(x1 + x2 + ··· + xn) = i = 1 ,
N N

2 2
2
=
1 Xn x¯ .
giây
i = 1 (xi x¯) = ¯x 2
N

Lưu ý rằng căn bậc hai của phương sai là sai số chuẩn của mẫu. Sử dụng
R, chúng ta có thể tính giá trị trung bình và phương sai như sau,

> x <- seq (1,10) # dãy từ 1 đến 10> mean (x) # trung bình

dưới dạng vô hướng [1] 5,5> ave (x) # trung bình dưới dạng
vectơ [1] 5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,5 5,5

> mean ((x-ave (x)) ^ 2) # để tính phương sai mẫu [1] 8.25

3 Ví dụ điển hình là xếp hạng chương trình truyền hình và các cuộc thăm dò ý kiến. Chúng là ước tính của phân bố dân số

bution từ dữ liệu được lấy mẫu.

4Mặc dù phương sai không chệch có thể được xác định là phương sai mẫu, chúng tôi gọi thống kê chia cho n

phương sai mẫu, thống kê chia cho n - 1 phương sai không chệch.
Machine Translated by Google

Phân tích thống kê với R 43

> # (bình phương trung bình của x) - (bình phương trung bình của x)> mean (x ^ 2)
- (mean (x)) ^ 2 [1] 8.25

R có một hàm tích hợp để tính toán phương sai và sai2 số chuẩn như var () và sai số chuẩn

và sd (), tương ứng: Phương sai không chệch s được định không chệch s;
nghĩa là
2
2

giây
=
1
Xn (xi x¯) .
n 1 i = 1

Lưu ý rằng phương sai không chệch và sai số chuẩn không chệch có ở mẫu số

n 1, không phải n. Khi đó, giá trị trung bình của phương sai không chệch cũng giống như phương sai của
pop 2 ulation σ
, mặc dù phương sai mẫu nhỏ hơn một chút so với phương sai của tổng thể.

> var (x) # phương sai không chệch [1]

9.166667> # phương sai mẫu là phương sai

không chệch được nhân> # với (n-1) / n> var (x) * 9/10 [1] 8.25> sd (x) #

không chệch lỗi tiêu chuẩn [1] 3.027650> sqrt (var (x)) [1] 3.027650

Thường không cần quan tâm đến điểm trên, bởi vì phương sai mẫu và phương sai không chệch

trong bối cảnh tài chính rất gần nhau do lượng dữ liệu lớn. Với kích thước mẫu lớn, phương

sai và phương sai không chệch hội tụ khi n 1 trở nên gần với n. Tuy nhiên, chúng ta nên

hiểu tại sao chúng ta cần sử dụng mẫu số n - 1 để tính phương sai không chệch. Đó là vấn đề

về mức độ tự do. Trước khi thảo luận về bậc tự do, chúng tôi xin giới thiệu định luật số

lớn5 và định lý giới hạn trung tâm. Cả hai đều là những định lý quan trọng và là nền tảng

của thống kê.

Định lý 2.1 Định luật Số lớn Khi


kích thước mẫu n tăng lên, xác suất để trung bình mẫu x khác ¯ với trung bình
tổng thể µ hội tụ bằng không.

Chính xác hơn, quy luật số lớn được chia thành hai phiên bản; tức là, luật yếu và mạnh của

số lượng lớn. Xem [CK05] ai là người đưa ra bằng chứng ngắn gọn cho chúng. [Dur05] cũng là một hướng dẫn tốt.

Ý tưởng về quy luật số lớn bắt nguồn từ Jacques Bernoulli vào thế kỷ 17. Định lý giới hạn trung tâm được de Moivre

và Laplace chứng minh vào thế kỷ 18. Xem [Wil91], [HH80] và [Shr04] để biết các chứng minh chi tiết về định lý giới

hạn trung tâm.


Machine Translated by Google

44 Lập trình R và các ứng dụng của nó trong Toán tài chính

Định lý 2.2 Định lý giới hạn trung tâm


lừa bịp
Tăng kích thước mẫu n, phân phối của mẫu chuẩn hóa trung bình √x¯ µ σ2 / n

các đỉnh trong phân phối đến phân phối chuẩn chuẩn, không phụ thuộc vào sự phân bố
¯
của dân số; nghĩa là, với n đủ lớn, trung bình mẫu x gần với phân phối chuẩn với
trung bình µ và phương sai σ 2 / n.

Lưu ý rằng định lý giới hạn trung tâm đảm bảo rằng phân phối của mẫu ized

chuẩn có nghĩa là một số lượng đủ lớn dữ liệu hội tụ về phân phối chuẩn chuẩn,
ngay cả khi phân phối tổng thể không chuẩn. Đây là cơ sở quan trọng để ước
tính dữ liệu trong thế giới thực theo phân phối chuẩn.
Thật vậy, chúng tôi tính toán giá trị kỳ vọng và phương sai của trung bình mẫu
¯x như sau,

1
E (x¯) = E (x1 + x2 + ··· + xn)
N

1
=
[E (x1) + E (x2) + ··· + E (xn)] = µ.
N

Var (x¯) = Var 1 (x1 + x2 + ··· + xn)


N

1 2 σ
= ,
[Var (x1) + Var (x2) + ··· + Var (xn)] =
2 n N

trong đó chúng tôi giả định rằng mẫu xi được phân bổ độc lập và giống hệt nhau
2
(iid) và sử dụng các dữ kiện E (xi) = µ, Var (xi) = σ .
Hơn nữa, chúng ta có thể xác nhận bằng thực nghiệm quy luật số lớn như sau,

> trung bình (rnorm


(10)) [1] 0.1094647>
trung bình (rnorm
(100)) [1] -0.0943789>
trung bình (rnorm (1000))
[1] -0.04676734> trung
bình (rnorm (10000)) [1]
0.0008186049

Hàm rnorm () tạo ra các số ngẫu nhiên từ một distri bution bình thường tiêu chuẩn.7
Hàm tạo một tập hợp các số ngẫu nhiên khác nhau mỗi khi nó được sử dụng. Tuy nhiên,
chúng ta có thể quan sát thấy giá trị trung bình hội tụ về 0 khi kích thước mẫu
ngày càng tăng.

7
Nếu bạn cần tạo n số ngẫu nhiên có phân phối chuẩn với m trung bình và sai số chuẩn s, hãy sử
dụng rnorm (n, m, s). Tức là, rnorm (n) = rnorm (n, 0,1).
Machine Translated by Google

Phân tích thống kê với R 45

Để chứng minh bằng thực nghiệm của định lý giới hạn trung tâm trong R, chúng tôi xác
định một hàm sao cho,

> Center <- function (n) {+


x <- rep (0,10000) + # tính
trung bình 10000 số ngẫu nhiên với + # kích thước mẫu n +
for (i in 1: 10000) {+ x [i] <- có nghĩa là (rnorm (n)) +} +
return (var (x)) +}

Chúng tôi tính toán hàm này với kích thước 10, 100, 1000 và 10000, như sau,

> Trung tâm


(10) [1]
0,09919644> Trung
tâm (100) [1]
0,00991062> Trung
tâm (1000) [1]
0,0009896516> Trung
tâm (10000) [1] 0,0001004920

Tính toán trên cho thấy rằng, với việc tăng kích thước mẫu n = 10 100 1000
10000, thứ tự phương sai của trung bình mẫu giảm xuống là 1 / n = 1/10
1/100 1/1000 1/10000 . Chúng tôi đã sử dụng các số ngẫu nhiên bình thường
trong ví dụ trên. Tất nhiên, kết quả tương tự sẽ xuất hiện với các số ngẫu
nhiên của một phân phối khác.
Chúng ta hãy quay trở lại cuộc thảo luận về phương sai không thiên vị. Chúng tôi có thể xác nhận người yêu cũ

giá trị pectation của phương sai không chệch giống với phương sai tổng thể
2 σ như sau,

(xi x¯) 2 # = i Xn
= 1
E h (xi - µ) 2 i nE h (x¯ µ) 2 i
E "Xn i = 1

2
σ 2 n
= Xni = 1 Var (xi) nVar (x¯) = nσ
N
2

= (n 1) σ , (2.1)
Machine Translated by Google

46 Lập trình R và các ứng dụng của nó trong Toán tài chính

nơi chúng tôi sử dụng dữ kiện sau đây,

2
Xn (xi x¯) = X [(xi - µ) - (x¯ µ)] 2
i = 1

2 2
= X (xi - µ) 2 (x¯ µ) X (xi - µ) + n (x¯ µ)
2 2
= X (xi - µ) 2 (x¯ µ) (nx¯ nµ) + n (x¯ µ)

2 2
n (x¯ µ) .
= X (xi - µ)

(2.1) ngụ ý rằng trung bình mẫu ¯x khác với trung bình tổng thể µ và phương sai của

trung bình mẫu Var (x¯) là σ 2 / n. Do đó, chúng ta phải

(xi x¯)
chia E hPn i = 1 2 i x n 1 để suy ra phương sai không chệch, không theo n.

2.2 Phân phối xác suất và số ngẫu nhiên


R có nhiều hàm khác nhau để tính toán hàm mật độ xác suất, hàm phân phối tích lũy và số

ngẫu nhiên của phân phối xác suất. Chúng tôi đã sử dụng phân phối chuẩn và các số ngẫu

nhiên được lấy từ phân phối nor mal. Lưu ý rằng, đối với tên của mật độ xác suất "aaa",

hàm R cho hàm mật độ xác suất được đưa ra bởi daaa (x), hàm phân phối tích lũy 8 được đưa

ra bởi paaa (x) và các số ngẫu nhiên được cho bởi phân phối được cho bởi raaa (x). Ví dụ,

chúng ta hãy mô tả hàm mật độ xác suất và hàm phân phối tích lũy của phân phối chuẩn
chuẩn (Hình 2.1).

> x <- seq (-4,4, b = 0,1) # tham số b = 0,1 có cùng ý nghĩa> # as by =


0,1> plot (x, dnorm (x), "l") # vẽ mật độ xác suất

> # chức năng

> plot (x, pnorm (x), "l") # vẽ biểu đồ phân phối tích lũy
> # chức năng

8 Hàm phân phối tích lũy được sử dụng để mô tả xác suất của một biến ngẫu nhiên X, sao cho

F (x) = P (X ≤ x),

trong đó F (·) là hàm phân phối tích lũy, P (·) là độ đo xác suất.
Machine Translated by Google

Phân tích thống kê với R 47

0,4 1,0

0,8
0,3

0,6

0,2

dnorm
(x) pnorm
(x)
0,4

0,1
0,2

0,0 0,0

4 2 0 2 4 4 2 0 2 4

x x

Hình 2.1: Hàm mật độ xác suất (trái) và phân phối tích lũy (phải) bình thường
phân bổ

R được trang bị với các phân phối xác suất khác nhau; log chuẩn phân phối bution (lnorm), phân

phối Poisson (độc), phân phối gamma (gamma), phân phối bino mial (binorm), phân phối t (t), phân

phối f (f), phân phối beta


2
(beta) và ξ -phân phối (chisq).

2.3 Kiểm tra giả thuyết

2.3.1 Kiểm định giả thuyết là gì?

Kiểm tra giả thuyết được sử dụng để kiểm tra các giả định thống kê trên một tập hợp bằng cách sử dụng

một ví dụ. Hãy xem xét một mẫu tập dữ liệu là kết quả của việc tung đồng xu

mười lần. Đồng xu “công bằng” sẽ có xác suất xuất hiện đầu hoặc đuôi bằng nhau

khi tung; tức là, chúng tôi sẽ mong đợi các đầu xuất hiện với xác suất 50% và

đuôi xuất hiện với xác suất 50%. Tuy nhiên, nếu các đầu xuất hiện 10 lần ra

trong số 10 lần tung, tự nhiên chúng ta sẽ nghi ngờ rằng đồng xu đó là công bằng. Tất nhiên, nó có thể

những cái đầu có thể xuất hiện mười lần liên tiếp với một đồng xu công bằng, nhưng xác suất này là
10
rất nhỏ, (1/2) '0,000977 = 0,0977%. Do đó, chúng ta thường coi đồng xu

là không công bằng. Theo cách này, trước tiên, chúng tôi đặt ra một giả thuyết như phần đầu và phần đuôi của một

đồng xu xuất hiện với 50% xác suất, và kiểm tra giả thuyết bằng cách

sử dụng mẫu có thể quan sát được. Đây là thử nghiệm giả thuyết.
Hãy xem xét hai kết quả của một loạt các lần tung đồng xu:

A: Đầu xuất hiện 6 lần trong số 10 lần tung đồng xu.

B: Đầu xuất hiện 60 lần trong số 100 lần tung đồng xu.

Lưu ý rằng ở cả hai đầu A và B, 60% số lần tung đồng xu. Trong giả thuyết

thử nghiệm, trước tiên chúng tôi giả định rằng đồng xu là công bằng và tính toán xác suất của các đầu
Machine Translated by Google

48 Lập trình R và các ứng dụng của nó trong Toán tài chính

và đuôi xuất hiện. Đối với một đồng xu công bằng, xác suất xuất hiện lần ngửa trong số lần

tung của n đồng xu là,

Xn nCi
i = r

P (n, r) = .
2 n

Trong đó nCi là số tổ hợp chọn i mục từ tập hợp n mục; tứcN!


là, nó được định nghĩa về mặt

toán học bởi nCi : = i! (n i)! . Chúng ta có thể tính combi Nation nCi trong R bằng cách
sử dụng hàm select (n, i). Sử dụng
điều này, chúng tôi xác định một chức năng sao cho

> Prob <- function (n, r) {+ tmp <-

0 + for (i in r: n) {+ tmp <- tmp +


select (n, i) +} + return (tmp / 2

^ n) + }

và chạy hàm này để nhận kết quả như sau,

> # xác suất xuất hiện đầu 6 lần trong số 10 lần> # lần tung đồng xu>
Xác suất (10,6) [1] 0,3769531> # xác suất xuất hiện trên 60 lần trong

tổng số> # 100 lần tung đồng xu> Prob (100,60 ) [1] 0,02844397

Kết quả này cho thấy xác suất xuất hiện của các đầu xuất hiện trên 6 lần là 37,7%, trong

khi xác suất xuất hiện của các đầu xuất hiện trên 60 lần chỉ là 2,8%. Vì vậy, chúng tôi có

thể không nghi ngờ đồng xu là không công bằng nếu chúng tôi nhận được đầu sáu lần trong số 10.
Tuy nhiên, với nhiều lần tung hơn, việc coi đồng xu đó là công bằng sẽ trở nên khó khăn hơn

nếu chúng ta kết thúc bằng đầu 60 lần trên 100.

Đây là ý tưởng cơ bản của việc kiểm tra giả thuyết (xem [NP33] cho thấy bản chất của

việc kiểm tra giả thuyết). Chúng tôi tóm tắt các thuật ngữ liên quan đến thử nghiệm hy

pothesis. Giả thuyết trong đó đồng xu là công bằng được gọi là giả thuyết vô hiệu và chúng

ta viết nó là H0 : q = 0,5, trong đó q là xác suất tung ngửa. Mặt khác, giả thuyết trong

đó đồng tiền không công bằng được gọi là giả thuyết thay thế và chúng ta viết nó là H1 : q

6 = 0,5. Trong kết quả A ở trên, xác suất có 6 đầu trong số 10 lần tung ra là để chúng ta

không thể bác bỏ giả thuyết vô hiệu. Tuy nhiên, trong kết quả B, xác suất có 60 đầu trong

số 100 lần tung là thấp và chúng tôi nghiêng về việc bác bỏ giả thuyết không.
Machine Translated by Google

Phân tích thống kê với R 49

Câu hỏi tự nhiên là, trong số 100 lần tung đồng xu thì có bao nhiêu lần cái đầu phải
đưa ra để bác bỏ giả thuyết không? Về mặt lý thuyết, chúng tôi đặt ra một ngưỡng về xác
suất xảy ra một kết quả và gọi đây là “mức ý nghĩa”. Câu hỏi đặt ra là: kết quả xảy ra
bao nhiêu lần trước khi xác suất giảm xuống dưới mức ý nghĩa. Chúng ta có thể đặt mức ý
nghĩa ở mức thấp, ví dụ: 5% hoặc 1%. Nếu xác suất của kết quả thấp hơn các giá trị này,
chúng ta nói rằng giả thuyết vô hiệu H0 bị bác bỏ với mức ý nghĩa 5% hoặc 1%. Do đó, đối
với kết quả B, H0 bị bác bỏ với mức ý nghĩa 5%, nhưng không bị bác bỏ với mức ý nghĩa 1%.

Hơn nữa, chúng ta có thể tính toán

> Prob (100,62) [1]


0,01048937> Prob

(100,63) [1]
0,006016488

Do đó, nếu chúng ta xác định tiêu chuẩn để loại bỏ H0 bằng các đầu xuất hiện trên 62 lần
thì mức ý nghĩa xấp xỉ 1%. Thay vì mức ý nghĩa, chúng ta có thể sử dụng tiêu chí theo

xác suất P (n, r), được gọi là giá trị p.


Lưu ý rằng chúng tôi không chứng minh một cách tích cực giả thuyết vô hiệu, mà là
chiến lược quỷ ám mà chúng tôi không thể nhất thiết bác bỏ giả thuyết vô hiệu. Do đó, có
thể đồng xu là không công bằng ngay cả trong trường hợp số đầu tăng lên 6 lần trong số
10, hoặc đồng tiền công bằng ngay cả khi số đầu tăng lên 60 lần trên tổng số 100. Tuy
nhiên, việc xác định mức ý nghĩa và thử nghiệm cho phép chúng tôi định lượng độ tin cậy
mà chúng tôi chấp nhận hoặc bác bỏ một giả thuyết.

2.3.2 Kiểm định t của trung bình dân số

Giả sử rằng giá trị trung bình của một mẫu là dương. Chúng ta có thể kiểm tra xem liệu
giá trị trung bình có dương tính đáng kể hay không? Xác suất trung bình của tổng thể
thực sự nhỏ hơn 0 là bao nhiêu? Phép thử t đưa ra một trong những giải pháp cho câu hỏi
như vậy. Chính xác hơn, phép thử t được sử dụng để tính toán độ sai lệch thống kê, hoặc
khoảng tin cậy, về việc liệu một trung bình tổng thể bị chi phối bởi phân phối chuẩn có
bằng một giá trị cụ thể hay không, hoặc liệu hai hàm popu có nghĩa là cả hai đều được mô
tả bởi phân phối chuẩn, bằng nhau. Trong lý thuyết tài chính, chúng ta thường sử dụng
phép thử t để kiểm tra xem liệu các hệ số hồi quy có khác 0 đáng kể hay không. Trước khi
thảo luận về kiểm định t, chúng ta cần giới thiệu phân phối t. Phân phối t là cơ sở của
kiểm định t và được sử dụng để ước tính giá trị trung bình của tổng thể phân bố chuẩn từ

một mẫu nhỏ.9

9
phân phối t được phát hiện bởi William Sealy Gosset, một kỹ sư và một nhà thống kê của Công ty
Guinness. Ông sử dụng bút danh Sinh viên trong hoạt động học tập của mình. Do đó, phân phối t còn
được gọi là phân phối t của Student, thay vì tên ban đầu của anh ta.
Machine Translated by Google

Lập trình 50 R và các ứng dụng của nó trong Toán tài chính

Cho x1, x2, ···, xn là các số ngẫu nhiên độc lập, có phân phối chuẩn với
2
nghĩa là µ và phương sai σ ; I E,

2
x1, x2, ···,xn N (µ, σ ).

2
Trung bình mẫu ¯x được chuẩn hóa bằng trung bình tổng thể µ và phương sai không chệch s

được gọi là thống kê t và là phân phối t với n 1 bậc tự do, nếu

x¯ µ
t = t (n 1).
s / √ n

Hàm phân phối của phân phối t được mô tả với hàm Gamma Γ (·) như sau,

- (ν + 1) / 2
Γ ((ν +1) / 2) 2 x
f (x) = √ νπ Γ (ν / 2) 1+ ,
ν

trong đó ν = n 1 là bậc tự do. Trong R, chúng ta có thể sử dụng hàm dt (x, ν) để tính

phân phối t và vẽ đồ thị phân phối như trong Hình 2.2.

> x <- seq (-4,4, b = 0,1)> #

hàm mật độ của phân phối t với bậc> # tự do 100

> plot (x, dt (x, 100), ylab = "f (x)", "l")> # hàm

mật độ của phân phối t với bậc> # tự do 10> lines (x, dt (x , 10), lty = 2)> # hàm
mật độ của phân phối t với bậc> # tự do 1

> lines (x, dt (x, 1), lty = 3)> #

the legend> legend (-4,0.4, legend

= c ("nu = 100", "nu = 10", "nu = 1") ,> # lty = c (1,2,3))

Kiểm định t là một kiểm định thống kê, cho dù một thống kê có tuân theo phân phối t

hay không. Chúng tôi kiểm định giả thuyết rằng trung bình dân số của mẫu trên là 0; tức

là, giả thuyết rỗng là H0 : µ = 0 và giả thuyết thay thế là H1 : µ 6 = 0.

Nếu dân số tuân theo phân phối chuẩn, giá trị trung bình của mẫu ¯x thỏa mãn

x¯ µ
t (n 1),
s / √ n

2
trong đó µ là giá trị trung bình của là phương sai dân số. Nếu giả thuyết vô hiệu

tổng thể và s µ = 0 là đúng,

√ nx¯
t = t (n 1). (2.2)
S
Machine Translated by Google

Phân tích thống kê với R 51

nu = 100
nu = 10
nu = 1

4 2 0 2 4

Hình 2.2: Hàm mật độ xác suất của phân phối t

Mức ý nghĩa 5% ngụ ý rằng khoảng tin cậy phải là


đặt 2,5% ở mỗi bên. Để tính toán khoảng tin cậy, R được trang bị
với hàm qt (). Ví dụ: khi chúng tôi thực hiện kiểm tra hai mặt với mức cance
signifi 5%, chúng tôi có thể tính điểm xác suất bằng qt (0,025, n-1) và
qt (0,975, n-1). Trong trường hợp bậc tự do 10, sử dụng như sau
mã số,

> qt (0,025,10) # xác suất thấp hơn 2,5%


[1] -2.228139

> qt (0,975,10) # xác suất trên 2,5%


[1] 2.228139

Từ những điều này, nếu thống kê t của (2.2) nằm trong [ 2.228139,2.228139], giả thuyết rỗng
được thông qua với mức ý nghĩa 5%. Nếu không, nó bị từ chối. Hơn nữa, cho một
thống kê t cho trước, hàm phân phối được tính như sau,

> pt (-2.228139,10) # Xác suất P [X <-2.228139]


> # cho t = -2.228139
[1] 0,02499999

> pt (2,228139,10) # Xác suất P [X <2,228139]


> # cho t = 2.228139
[1] 0,975

> pt (2,228139,10, thấp hơn = F) # Xác suất P [X> 2,228139]


[1] 0,02499999

R được trang bị các chức năng khác nhau để ước lượng và kiểm tra giả thuyết.
Để kiểm tra t, chúng ta có thể sử dụng t.test (). Chúng tôi hiển thị một ví dụ về t.test (). Để làm điều đó,

đầu tiên chúng ta tạo các số ngẫu nhiên với phân phối chuẩn.
Machine Translated by Google

52 Lập trình R và các ứng dụng của nó trong Toán tài chính

> # 20 số ngẫu nhiên bình thường có trung bình 0 và phương sai 1> data0
<- rnorm (20,0,1)> # 20 số ngẫu nhiên bình thường có trung bình 1 và
phương sai 1> data1 <- rnorm (20,1,1)

Chúng tôi kiểm tra trung bình dân số µ bằng 0 và tính toán khoảng tin cậy 95% bằng
cách sử dụng tập lệnh R sau đây,

> t.test (data0, mu = 0)

Một bài kiểm tra t mẫu

data: data0

t = 0,3717, df = 19, p-value = 0,7142 giả thuyết


thay thế: giá trị trung bình đúng không bằng 0 Khoảng tin cậy 95
phần trăm:
-0,3500176 0,5011681

ước lượng mẫu: trung


bình của x
0,07557523

Từ kết quả trên, chúng ta có thể đọc được thống kê t 0.3717 là độ tin cậy ở kỳ
hạn. df = 19 nghĩa là phép thử này được thực hiện bằng phân phối t với bậc tự do
19 (= 20-1). Nếu giá trị p nhỏ hơn 0,05, được coi là trung bình của lation popu
khác 0 đáng kể và giả thuyết không bị bác bỏ.
Tuy nhiên, kết quả trên cho thấy giá trị p = 0,7142.10 Do đó, không thể bác bỏ
giá trị rỗng H0 : µ = 0. Hơn nữa, khoảng tin cậy 95% là [ 0.3500176,0.5011681]
bao gồm 0. Do đó, giả thuyết rỗng H0 : µ = 0 được chấp nhận.11 Chúng tôi thực
hiện kiểm định tương tự đối với dữ liệu1.

> t.test (data1, mu = 0)

Một bài kiểm tra t mẫu

data: data1

t = 6,66, df = 19, p-value = 2,275e-06 Giả thuyết


thay thế: giá trị trung bình đúng không bằng 0 Khoảng tin cậy 95
phần trăm:
0,923481 1,769931

10 Giá trị này là xác suất thống kê t nằm trong khoảng tin cậy, tức là
pt (-0,3717,19) + pt (0,3717,19, thấp hơn = F).
11 Khoảng tin cậy được tính bằng giá trị trung bình (data0) + qt (0,975,19) * sd (data0) / sqrt (20).
Machine Translated by Google

Phân tích thống kê với R 53

ước lượng mẫu: trung


bình của x
1.346706

Kết quả trên cho thấy thống kê t là 6,66 và khoảng tin cậy là

[0,923481,1.769931]. Do đó, giả thuyết vô hiệu bị bác bỏ. Hơn nữa, chúng ta có
thể đọc giá trị p là 2.275e-06, nhỏ hơn đáng kể. Điều này cũng ngụ ý rằng giả
thuyết vô hiệu nên bị bác bỏ. Nếu chúng tôi thay đổi khoảng tin cậy thành 99%,
chúng tôi viết như sau,

> t.test (data1, mu = 0, conf.level = 0,99)

Một bài kiểm tra t mẫu

data: data1 t

= 6,66, df = 19, p-value = 2,275e-06 Giả thuyết


thay thế: giá trị trung bình đúng không bằng 0 Khoảng tin cậy 99
phần trăm: 0,7682037 1,9252086

ước tính mẫu: trung


bình của x 1.346706

Đối với trường hợp kiểm tra một phía, chúng tôi thêm

tập lệnh thay thế = "lớn hơn" hoặc "ít hơn" vào đối số (không có bất kỳ thông số cụ thể

nào, R thực hiện kiểm tra hai phía. Đặc điểm kỹ thuật cho kiểm tra hai phía được thực hiện

bởi tập lệnh, "hai bên").

> t.test (data1, mu = 0, alternative = "less", conf.level = 0,99)

Một bài kiểm tra t mẫu

data: data1

t = 6,66, df = 19, p-value = 1 giả


thuyết thay thế: giá trị trung bình đúng nhỏ hơn 0 Khoảng tin
cậy 99 phần trăm: -Inf 1,860209

ước lượng mẫu: trung


bình của x
1.346706

Cuối cùng, chúng tôi giới thiệu bài kiểm tra cho các phương tiện của data0 và data1 là

khác nhau. Nếu chúng tôi kiểm tra nó với giả định rằng cả hai phương sai của chúng đều

giống nhau, chúng tôi thêm tập lệnh var.equal = T vào các đối số. Nếu không, chúng tôi chỉ

không viết nó (hoặc viết var.equal = F).


Machine Translated by Google

54 Lập trình R và các ứng dụng của nó trong Toán tài chính

> t.test (data0, data1, var.equal = T)

Hai bài kiểm tra t mẫu

data: data0 và data1

t = -4.4326, df = 38, p-value = 7.671e-05 Giả thuyết


thay thế: sự khác biệt thực sự về phương tiện không bằng 0 Khoảng tin cậy
95 phần trăm:

-1,8516576 -0,6906043

ước tính mẫu: trung


bình của x trung bình của
y 0,07557523 1,34670618

Kết quả trên cho thấy thống kê t -4,4326 nằm ngoài độ tin cậy ở terval [ 1,8516576,

0,6906043] và giá trị p nhỏ hơn 0,05. Do đó, giả thuyết rỗng có nghĩa là data0
và data1 giống nhau bị bác bỏ.

2.4 Phân tích hồi quy Phân tích

hồi quy là một trong những phương pháp được sử dụng nhiều nhất trong tài
chính và kinh tế lượng. Bản chất là ước tính mối quan hệ giữa biến giải
12 thích X trong đó hệ số
và biến Y được giải thích là dạng tuyến tính Y = PaiXi + c,
ai là độ nhạy và c là hằng số. Trường hợp của một biến giải thích đơn lẻ có thể
tốt để có được trực giác của phân tích hồi quy, bởi vì nó dễ dàng mô tả biểu đồ
phân tán của các biến (X, Y). Trường hợp đơn biến như vậy được gọi là phân tích
hồi quy đơn, và trường hợp đa biến được gọi là phân tích hồi quy nhiều biến. Phân
tích hồi quy là một phương pháp quan trọng trong các lĩnh vực khác nhau bao gồm cả
tài chính. Do đó, nhiều phần mềm thống kê để phân tích hồi quy đã được phát triển.
Cái quen thuộc nhất có thể là EXCEL. Ở đây, chúng tôi thảo luận về cách chúng tôi
thực hiện phân tích hồi quy trong R.
Giả sử tốc độ thay đổi của giá cổ phiếu (Y = Cổ phiếu) và tốc độ thay đổi của
hai chỉ số kinh tế (X1 = Eco1, X2 = Eco2) được cho trong Bảng 2.1. Để phân tích
mức độ nhạy cảm của giá cổ phiếu đối với các chỉ số kinh tế, chúng tôi ước tính
phương trình hồi quy sau

Y = a1X1 + a2X2 + c. (2.3)

12 Ví dụ, chúng ta có thể chọn giá cổ phiếu như một biến giải thích và các chỉ số kinh tế vĩ mô làm biến
giải thích. Chúng tôi có thể dự báo giá cổ phiếu trong tương lai bằng cách sử dụng kết quả phân tích hồi quy
và các chỉ số kinh tế vĩ mô. Xem [MPV12] để biết thêm chi tiết về phân tích hồi quy.
Machine Translated by Google

Phân tích thống kê với R 55

Bảng 2.1: Tỷ lệ thay đổi giá chứng khoán và các chỉ số kinh tế

Cổ phiếu Eco1 Eco2

Tháng một 4.8 0,5 0,1


Tháng 2 –3.3 –1.8 –2.6
6.4 3.2 5.5
3 6,5
Tháng 4 –1,7
Tháng 5 –0,4 –0,9 1,9
2,9 tháng2,6
6 –2,4
Tháng 7 –8,2 –4,8 –2,6

Tháng 8 –2,5 0,1 –1,5


Tháng 9 6,9 0,7 5,3
Tháng 10 –5,1 –2,6 0,9
2,7 tháng 11 –2,4 1
Tháng 12 –7,9 –1,8 –0,6

Tức là phân tích hồi quy là xác định hệ số a1, a2 và hằng số


c trong (2.3) để phù hợp nhất với dữ liệu đã cho.

Chúng tôi tiến hành phân tích hồi quy trong R. Đầu tiên, chúng tôi cần thiết lập dữ liệu. 13

Đối với ví dụ của Bảng 2.1, chúng tôi xác định một khung dữ liệu được gọi là giá, như sau,

> cổ phiếu <- c (4,8, -3,3,6,4,3, -0,4,2,6, -8,2, -2,5,6,9, -5,1,


+ 2,7, -7,9)
> eco1 <- c (0,5, -1,8,5,5, -1,7, -0,9,2,9, -4,8,0.1,0,7,
-2,6, + 1, -1,8)
> eco2 <- c (0,1, -2,6,3.2,6.5,1,9, -2,4, -2,6, -1,5,5.3,0,9,
+ 2,4, -0,6)

> price <- data.frame (Stock = chứng khoán, Eco1 = eco1, Eco2 = eco2)

Từ chúng, chúng tôi có thể tính toán phương tiện, sai số tiêu chuẩn và các mối tương quan,

> mean (giá $ Cổ phiếu)


[1] -0,08333333

> sd (giá $ Cổ phiếu)


[1] 5.287521

> cor (giá $ Cổ phiếu, giá $ Eco1) # mối tương quan giữa Cổ phiếu
> # và Eco1

[1] 0,7679317

> cor (giá $ Cổ phiếu, giá $ Eco2) # mối tương quan giữa Cổ phiếu
> # và Eco2

[1] 0,5322617

13 Tham khảo Phần 2.5, nếu bạn cần đọc dữ liệu lớn từ tệp csv,
Machine Translated by Google

56 Lập trình R và các ứng dụng của nó trong Toán tài chính

> cor (giá $ Eco1, giá $ Eco2) # mối tương quan giữa Eco1
> # và Eco2

[1] 0,1751904

Nếu mối tương quan giữa các biến giải thích và biến được giải thích là
nhỏ, nó có thể gây ra sức mạnh giải thích yếu. Nếu mối tương quan giữa
các biến được giải thích là cao, nó có thể gây ra đa cộng tuyến.14 Do đó, nó là
quan trọng là kiểm tra các số liệu thống kê cơ bản trước khi phân tích hồi quy.

Đầu tiên, chúng ta hãy thử phân tích hồi quy đơn bằng Eco1. R có một chức năng
lm () để phân tích hồi quy. Đối số đầu tiên của lm () xác định hình thức của mô hình
nén lại. Trong trường hợp phân tích hồi quy đơn lẻ, chúng tôi ký hiệu Cổ phiếu ~ Eco1
trong đó Cổ phiếu được đặt là biến giải thích và Eco1 được đặt là biến giải thích
có thể. Đối với đối số thứ hai, chúng tôi chỉ định dữ liệu cho phân tích hồi quy.

> plot (Stock ~ Eco1, data = price) # scatter plot


> reg <- lm (Stock ~ Eco1, data = price) # phân tích hồi quy
> abline (reg) # mô tả đường hồi quy
> tóm tắt (reg) # tóm tắt phân tích

Gọi điện:

lm (công thức = Cổ phiếu ~ Eco1, dữ liệu = giá)

Dư lượng:
Min Trung vị 1Q 3Q Max
-5.466 -2.087 -1.053 1.624 5.563

Hệ số:

Ước tính Std. Lỗi t giá trị Pr (> | t |)

(Đánh chặn) 0,2812 Eco1 1,0299 0,273 0,79035


1,5086 0,3979 3,791 0,00354 **
---

Dấu hiệu. mã: 0 *** 0,001 ** 0,01 * 0,05. 0,1 1

Sai số tiêu chuẩn còn lại: 3.552 trên 10 bậc tự do


Nhiều R bình phương: 0,5897, thống kê Bình phương R đã điều chỉnh: 0,5487
F: 14,37 trên 1 và 10 DF, giá trị p: 0,003536

14 Nếu mối tương quan giữa các biến giải thích cao, một biến giải thích có thể được giải thích bằng
một biến giải thích khác. Do đó, việc sử dụng cả hai chúng làm biến giải thích có thể gây ra sự không ổn định
kết quả. Vấn đề này được gọi là đa cộng tuyến [GRS99]. Thử và sai là cần thiết để lựa chọn phù hợp
các biến giải thích.
Machine Translated by Google

Phân tích thống kê với R 57

0
phần
cổ

4 2 0 2 4

Eco1

Hình 2.3: Biểu đồ phân tán và đường hồi quy

Hình 2.3 mô tả kết quả của phân tích hồi quy. Tóm tắt của phân tích sion hồi quy
ngụ ý rằng hằng số của phương trình hồi quy là 0,2812 và hệ số đầy đủ là 1,5086. Chính
xác hơn, mô hình được trang bị phù hợp nhất được đề xuất bởi đơn này
phân tích hồi quy được đưa ra bởi phương trình tuyến tính (Cổ phiếu) = 1,5086 × (Eco1) +
0,2812. Chúng tôi giải thích các chi tiết của tóm tắt (reg).

Phần dư: Phần dư là một trong những số liệu thống kê cơ bản. Phần dư

là sự khác biệt giữa dữ liệu Cổ phiếu và các giá trị ước tính

1,5086 × (Eco1) + 0,2812. Tức là, phần dư là sự chênh lệch giữa các điểm phân

tán và đường hồi quy trong Hình 2.3. Các


tóm tắt (reg) hiển thị giá trị nhỏ nhất, giá trị lượng tử đầu tiên, giá trị trung bình

giá trị, giá trị lượng tử thứ ba và giá trị lớn nhất của phần dư. Nếu bạn muốn
để chỉ hiển thị giá trị mô hình, hãy nhập dự đoán (reg) và nếu bạn muốn
chỉ hiển thị phần dư, nhập phần dư (reg).

Hệ số: Đây là phần chính của phân tích hồi quy. Ước lượng
hiển thị các hệ số hồi quy được xác định để giảm thiểu
tổng sai số bình phương giữa dữ liệu và giá trị mô hình. (Đánh chặn)
hiển thị hằng số, Eco1 thể hiện hệ số hồi quy của biến số phẳng Eco1. Kết quả
này ngụ ý rằng phương trình hồi quy
được cho bởi (Cổ phiếu) = 1,5086 × (Eco1) + 0,2812. Hơn nữa, kết quả
của sai số chuẩn, thống kê t và giá trị p được hiển thị; tức là, thống kê t là
thống kê cho giả thuyết "hệ số hồi quy bằng 0" và
giá trị tuyệt đối của thống kê t nên lớn hơn giá trị xấp xỉ
2 được đưa ra như một tiêu chí tốt của thống kê t. Đó là lý do tại sao nhỏ
thống kê t có nghĩa là dấu của hệ số có thể bị đảo ngược; cái này
ngụ ý rằng độ tin cậy của mô hình là mong manh. Hơn nữa, giá trị p là
xác suất thống kê t nằm trong khoảng tin cậy. Do đó,
giá trị tuyệt đối của thống kê t càng lớn thì giá trị p càng nhỏ. R cho thấy
Machine Translated by Google

58 Lập trình R và các ứng dụng của nó trong Toán tài chính

mức độ tốt của giá trị p như dấu sao *. Nếu bạn muốn hiển thị

chỉ hệ số, viết hệ số (reg).

2
Bình phương R: R được gọi là hệ số xác định và được sử dụng để đánh giá
mô hình phù hợp với dữ liệu. Giá trị càng gần 1, thì mức độ phù hợp của

mô hình là. Nó là cách giải thích tiêu chuẩn của hệ số xác định.

R thể hiện nhiều R bình phương là hệ số xác định và

R-bình phương điều chỉnh là hệ số xác định đã điều chỉnh. Xác định 2
hệ số minant R là bình phương của mối tương quan R giữa mô hình

giá trị và mẫu. Hệ số xác định được điều chỉnh thường được sử dụng trong

phân tích hồi quy bội vì hệ số này được điều chỉnh phù hợp với kích thước dữ liệu

và số lượng biến giải thích. Mặc du

kích thước dữ liệu nhỏ, nếu số lượng lớn các biến giải thích là
2
đã qua sử dụng, R có thể rất cao. Để tránh điều này, chúng tôi khuyến nghị rằng

hệ số xác định đã điều chỉnh được sử dụng. Hơn nữa, thống kê F và

Giá trị p trong Bình phương R được điều chỉnh là số liệu thống kê cho phép thử cường

độ cao “Tất cả các hệ số đều bằng không”.

Chúng tôi tiến hành phân tích hồi quy bội. Trong R, chúng ta có thể làm điều đó bằng cách chỉ định

đối số đầu tiên của lm () là Stock ~ Eco1 + Eco2.

> # hồi quy về biến được giải thích Cổ phiếu có giải thích
> # biến Eco1 và Eco2

> reg <- lm (Cổ phiếu ~ Eco1 + Eco2, dữ liệu = giá)

> tóm tắt (đăng ký)

Gọi điện:

lm (công thức = Cổ phiếu ~ Eco1 + Eco2, dữ liệu = giá)

Dư lượng:

Min Trung vị 1Q 3Q Max

-4,942 -1,661 0,300 1,371 4,132

Hệ số:

Ước tính Std. Lỗi t giá trị Pr (> | t |)

(Đánh chặn) -0.08471 Eco1 0,85575 -0,099 0,92332

1.36738 0,33061 4,136 0,00254 **

Eco2 0,68653 0,28158 2,438 0,03748 *


---

Dấu hiệu. mã: 0 *** 0,001 ** 0,01 * 0,05. 0,1 1

Sai số tiêu chuẩn còn lại: 2,906 trên 9 bậc tự do

Nhiều R bình phương: 0,7529, R bình phương điều chỉnh: 0,698

Thống kê F: 13,71 trên 2 và 9 DF, giá trị p: 0,001853


Machine Translated by Google

Phân tích thống kê với R 59

Kết quả trên cho thấy ước tính được đưa ra bởi (Cổ phiếu) = 1,36738 × (Eco1) trong
2 2
+ 0,68653 × (Eco2) - 0,08471. R trường hợp này cao hơn R trong tổng số regres duy nhất

sion. Vì vậy, nó khẳng định rằng việc bổ sung Eco2 làm tăng sức mạnh giải thích.

Thống kê t của Eco1 và Eco2 lớn hơn 2, trong khi thống kê t của con stant là rất nhỏ.

Trường hợp như vậy có thể gợi ý cho chúng ta rằng không nên sử dụng hằng số để phân tích

ổn định. Nếu bạn không muốn sử dụng hằng, hãy thêm đối số -1 trong lm (); tức là, viết lm

(Cổ phiếu ~ Eco1 + Eco2-1, dữ liệu = giá). Nếu bạn muốn sử dụng tất cả các biến thể ngoại

trừ Cổ phiếu, hãy sử dụng dấu chấm; tức là, viết lm (Stock ~., data = price).

Nếu bạn muốn phân tích biến logarit, hãy sử dụng hàm log (); ví dụ: viết lm (log (Stock)

~ log (Eco1), data = price).

2.5 Phân tích đường cong lợi suất sử dụng phân tích thành
phần chính
Phần này được dành để mô tả phân tích thành phần chính, một phương pháp thường được sử

dụng trong lý thuyết tài chính như phân tích hồi quy, đặc biệt tập trung vào phân tích

đường cong lợi suất. Phân tích thành phần chính là một phương pháp tốt để trích xuất các

đặc điểm của dữ liệu hoặc phân loại dữ liệu. Trong phần này, chúng tôi sử dụng các ví dụ

về đường cong lợi suất, nhưng có khả năng áp dụng hiệu quả cho các lĩnh vực tài chính

khác. Vì phân tích đường cong lợi suất là vấn đề quan trọng nhất trong hầu hết các lĩnh

vực tài chính, bao gồm cả định giá phái sinh, nên việc nắm bắt bản chất của phân tích

đường cong lợi suất là rất có ý nghĩa đối với chúng ta.

2.5.1 Đường cong lợi suất

Hãy xem xét một mối quan hệ. Giá của trái phiếu được xác định bằng giá trị hiện tại (PV)

của các dòng tiền trong tương lai do trái phiếu tạo ra. Dòng tiền này bao gồm số tiền lãi

và tiền gốc của trái phiếu được chiết khấu theo lãi suất thích hợp. Lãi suất thích hợp này

được gọi là lợi tức (trái phiếu). Trước khi thảo luận chi tiết, chúng ta phải xác định

“chiết khấu theo lãi suất thích hợp” và “giá trị hiện tại”.

Hãy tưởng tượng bạn có một tài khoản ngân hàng 1 đô la trong 5 năm với lãi suất 1%.
5
Sau đó, bạn sẽ có 1,05101 đô la (= 1 đô la × (1 + 0,01) đô la khi đáo ). Như vậy, 1,05101

hạn (5 năm sau) và 1 đô la hiện tại phải có giá trị tương đương. Nói cách khác, 1 đô la
5
khi đáo hạn là 1 / (1 + 0,01) = 0,95147 đô la hiện tại. Như vậy, chúngtại
ta của
gọi 1giá
đô trị
la khi
hiện
đáo hạn là 0,95147 được chiết khấu 1% lãi suất. Nói một cách tổng quát hơn, hãy xem xét

một trái phiếu có phiếu giảm giá C một năm, thời gian đáo hạn là N năm sau và 100 đô la số

tiền gốc. Nếu giá trị hiện tại của trái phiếu này được cung cấp bằng các phiếu giảm giá và

số tiền gốc được chiết khấu theo lãi suất r sao cho

N
C 100
PV = X + (1 + r) i (1
+ r) N ,
i = 1
Machine Translated by Google

Lập trình 60 R và các ứng dụng của nó trong Toán tài chính

thì r được gọi là lợi suất trái phiếu. 15 Nếu phiếu giảm giá C / 2 được thanh toán hai lần một

năm, giá trị hiện tại được cho bởi

2N 100
C / 2
.
PV = X + (1 + r / 2) i (1 + 2N
r / 2)
i = 1

Các phương trình trên ngụ ý rằng lợi suất thấp tạo ra giá trái phiếu cao và
lợi suất cao tạo ra giá trái phiếu thấp.
Lợi tức khác với kỳ hạn của trái phiếu. Đường cong lợi suất được cho bởi một đường cong thể

hiện mối quan hệ giữa lợi tức và thời gian đáo hạn (Hình 2.4 là một ví dụ). Lợi tức của trái phiếu

dài hạn thường cao hơn lợi suất của trái phiếu ngắn hạn, và hiện tượng này được gọi là lợi tức kỳ

hạn.16 Ngược lại, nếu lợi tức của trái phiếu dài hạn thấp hơn lợi suất của trái phiếu ngắn hạn,

lợi tức được gọi là nghịch chuyển. năng suất.

Hình dạng của đường cong lợi suất thay đổi theo chu kỳ kinh doanh. Sự thay đổi này ảnh hưởng

đến giá trái phiếu. Vì vậy, nó có một vai trò quan trọng trong việc phân tích trái phiếu. Sự thay

đổi của đường cong lợi suất được phân loại thành 3 loại, và chúng ta có thể giải thích một cách

định tính và định lượng sự chuyển động của đường cong lợi suất bằng cách sử dụng 3 loại thay đổi sau.

0,3
0,2

suất
Năng
(%)

0,1
0,2
0,3
0,1
0,0

1Y 3Y 5Y 7Y 9Y 15Y 25Y 40Y

Năm

Hình 2.4: Đường cong lợi suất JGB vào ngày 29 tháng 7 năm 2016

Chính xác hơn, lợi suất này được gọi là lãi suất kép. Có các loại năng suất khác; ví dụ: lãi suất đơn
giản và lãi suất liên tục. Trong phần này, chúng tôi sử dụng cùng một cách sử dụng cho lợi tức và lãi suất,
nếu không có gì nhầm lẫn.

16 Ngay cả trong trường hợp cho vay cầm cố hoặc tiền gửi cố định, lãi suất của kỳ hạn dài thường cao hơn
của khoản vay ngắn hạn.
Machine Translated by Google

Phân tích thống kê với R 61

Sự chuyển động điển hình của đường cong lợi suất:

Sự thay đổi: Lợi tức cho tất cả các năm thay đổi theo cùng một hướng, nghĩa là tất cả lợi tức

di chuyển lên hoặc xuống.

Độ dốc: Lợi tức ngắn hạn thay đổi ngược lại với lợi tức dài hạn. Đối với kỳ
thi, khi lợi suất ngắn hạn tăng lên, lợi suất dài hạn giảm xuống.

Độ cong: Sự di chuyển của lợi suất ngắn hạn và dài hạn thay đổi theo hướng của
trang web đối với lợi suất trung hạn. Ví dụ, lợi tức ngắn hạn và dài hạn
lợi tức kỳ hạn tăng, trong khi lợi tức trung hạn giảm.

Giao dịch theo đường cong là chiến lược giao dịch sử dụng các điểm di chuyển của đường cong lợi

suất; ví dụ: thực hiện vị trí được gọi là chênh lệch lợi nhuận, bướm, brett hoặc thanh tạ.17 Đối với

phân tích định lượng của đường cong lợi nhuận, phân tích thành phần chính đưa ra
một cách hiệu quả để đưa ra quyết định mua hoặc bán trái phiếu nào và số lượng trái phiếu
trái phiếu để mua hoặc bán.

Nếu bạn cần lấy thông tin về JGB, bạn có thể lấy tại nhà sau
trang của Bộ Tài chính Nhật Bản. Trong phần này, chúng tôi sử dụng lợi suất JGB.

http://www.mof.go.jp/english/jgbs/reference/interest_rate/
index.htm

2.5.2 Phân tích thành phần chính là gì?

Chúng ta thường cần phân tích mối quan hệ giữa thị trường hoặc các biến số kinh tế
trong lĩnh vực tài chính. Phương pháp thống kê xử lý nhiều biến được gọi là phân tích

đa biến. Phương pháp trực quan nhất là phân tích hồi quy bội
được mô tả trong Phần 2.4 và được đưa ra bởi

Y = a1X1 + a2X2 + ··· + c (c là hằng số),

trong đó Y là biến giải thích, Xi là biến giải thích và hệ số ai là


sự nhạy cảm. Ví dụ: nếu bạn phân tích mô hình lãi suất, bạn có thể chọn
Y là lãi suất 10 năm và X là tăng trưởng kinh tế, biến động giá cả và
Sớm. Phân tích hồi quy xây dựng mối quan hệ tuyến tính giữa giải thích
và các biến được giải thích. Vì nó trực quan, nó là phương pháp tiêu biểu nhất
được sử dụng trong nhiều mô hình kinh tế.18

17 Nói một cách dễ hiểu, các chiến lược này cố gắng tạo ra lợi nhuận bằng cách mua một trái phiếu có thời hạn đáo hạn và bán

một trái phiếu có kỳ hạn khác, quan sát sự chuyển động của đường cong lợi tức. Chúng tôi thảo luận về các chiến lược này,
một lát sau.

18 Thay vì đơn giản, phân tích hồi quy có thể tạo ra đa cộng tuyến làm cho

ủ rũ trong phân tích. Để tránh nó, cần phải lựa chọn cẩn thận các biến giải thích.
Machine Translated by Google

62 Lập trình R và các ứng dụng của nó trong Toán tài chính

Mặc dù phân tích hồi quy cho phép chúng tôi giải thích lợi suất cho mỗi năm
bằng các biến số giải thích khác nhau, nhưng sản lượng có mối tương quan với nhau.
Phân tích thành phần chính (PCA) giúp có thể rút ra các đặc điểm của sự chuyển động
đồng thời của sản lượng và phân loại sản lượng trong một số nhóm. Chính xác hơn,
phân tích thành phần chính là một phương pháp để giảm thứ nguyên của các biến
[JW07]. Do đó, phương pháp này thường được sử dụng để nén dữ liệu số.
Chúng tôi giới thiệu bản chất của phân tích thành phần chính bằng ví dụ về dữ
liệu JGB. Để biết thêm chi tiết về tính toán bê tông, tham khảo Mục 2.5.4.
Hình 2.5 là biểu đồ phân tán của lợi suất JGB 5 năm và JGB 10 năm.
Chúng ta có thể quan sát mối tương quan tích cực giữa chúng. Một ngày, lợi suất của
trái phiếu 5 năm là 0,5% và lợi tức 10 năm là 1,2%. Sau đó, dữ liệu (0.5,1.2) được
đưa lên hình với trục hoành của trái phiếu 5 năm và trục tung của trái phiếu 10 năm.
Tuy nhiên, nếu các trục được quay và xác định một tọa độ mới x, y trong Hình 2.5,
thì trục x có thể giải thích trạng thái cơ bản của sản lượng 5 năm, bỏ qua các chi
tiết nhỏ. Trong khi, giá trị trên trục y có nghĩa là khoảng cách từ trục x. Nếu
dương, lợi suất 10 năm lớn hơn lợi suất 5 năm; tức là, đường cong lợi suất dốc.
Thành phần chính là các giá trị trên các trục quay x, y này. Lưu ý rằng, ví dụ
hiện tại cho thấy x có sức mạnh giải thích mạnh hơn y. Trục có công suất giải thích
cao nhất, x trong ví dụ trên, được gọi là thành phần nguyên tử đầu tiên (PC1), trục
thứ hai, y, được gọi là thành phần chính thứ hai (PC2), v.v. Hơn nữa, giá trị trên
mỗi trục được gọi là điểm thành phần chính. Ví dụ, đối với x = 1,5, điểm thành phần
chính là 1,5. Nói tóm lại, phân tích thành phần chính xác định tọa độ mới để giải
thích hiệu quả mối quan hệ giữa các biến và xác định giá trị trên tọa độ xác định
này.

Eigenvector

Để hiểu chính xác phân tích thành phần chính, cần phải xử lý eigenvector,
bởi vì phân tích thành phần chính là phân tích riêng biệt về mặt toán học
của một ma trận. Vì eigenvector cũng là vector, điều này chỉ ra một hướng
phù hợp với các thành phần chính. Do đó, cách giải thích của thành phần
chính tương đương với cách giải thích của người điều chỉnh.
Trong ngành dịch vụ tài chính, điều quan trọng là phải hiểu cách diễn giải mã ký
hiệu, hơn là hiểu ý tưởng toán học của bộ ký hiệu.
Mặc dù có một số cách để giải thích eigenvector, nhưng điểm cốt lõi của việc giải
thích eigenvector là xác định biến đổi biến từ các quan sát dữ liệu (trong bối cảnh
này là trái phiếu 5 năm và 10 năm) thành thành phần chính (x, y) . Qua quan sát của
eigenvector, chúng ta có thể nhận được thông tin như sau;

hướng của tọa độ mới (thành phần chính)

trọng số để tính điểm thành phần chính từ các quan sát


Machine Translated by Google

Phân tích thống kê với R 63

1,5

1,0

phiếu
Trái
năm
10
0,5

0,0

0,0 0,5 1,0 1,5

Trái phiếu 5 năm

Hình 2.5: Biểu đồ phân tán của lợi suất JGB 5 năm và JGB 10 năm

độ nhạy đối với điểm thành phần chính của các quan sát; I E,

các quan sát di chuyển một cách nhạy cảm như thế nào, khi thành phần chính

điểm số thay đổi

Liên quan đến cách giải thích thứ ba, chúng ta có thể mô tả sản lượng ở mỗi

năm của các nhà định vị, chẳng hạn như mô hình nhân tố (xem Phần 4.4), nghĩa là,

Yi = ai, 1PC1 + ai, 2PC2 + ··· + ci (ci là hằng số), (2.4)

trong đó Yi (i = 5y, 10y, v.v.) là lợi suất của 5,10, ··· năm trái phiếu, PC1, PC2 là hoàng tử

điểm thành phần cipal và độ nhạy ai, j là ký hiệu riêng.19 Biểu thức này

ngụ ý rằng thành phần chính đầu tiên nên được phân tích lúc đầu, bỏ qua

thành phần chính thứ hai. Thành phần chính thứ hai đứng trước tất cả

thành phần chính khác ngoại trừ thành phần chính đầu tiên. Logic tương tự liên quan đến thành

phần chính cuối cùng. Sau đó, các chuyển động chính của năng suất

đường cong có thể được nắm bắt một cách hiệu quả.

Đặc điểm của phân tích thành phần chính:

So sánh với phân tích hồi quy, phân tích thành phần chính có các đặc điểm thấp hơn,

Trong khi các biến giải thích là các giá trị quan sát được trong một hồi quy

phân tích, chúng không thể được quan sát thư mục trong PCA, vì chúng là các biến có

nguồn gốc nhân tạo để phát hiện các mẫu trong các biến được giải thích.

19Eigenvector thường được định nghĩa là ma trận chuẩn hóa: tức là ma trận hiệp phương sai ban đầu, trong
đó vectơ eigen có được bằng cách phân hủy, được điều chỉnh bằng cách chiết trung bình và chia theo sai số chuẩn.
Do đó, độ nhạy được cung cấp bởi eigenvector nhân với sai số tiêu chuẩn của các quan sát.
Machine Translated by Google

Lập trình 64 R và các ứng dụng của nó trong Toán tài chính

Các thành phần chính hơi khó giải thích hơn các biến giải thích của phân tích
hồi quy.

Với PCA, sự tùy tiện liên quan đến việc lựa chọn các phương án giải thích cho
phân tích hồi quy được loại bỏ.

Vì các thành phần chính độc lập lẫn nhau (trực giao), nên đa cộng tuyến không
phải là một vấn đề, vì nó thường xảy ra với phân tích hồi quy bội.

2.5.3 Ví dụ về phân tích thành phần chính sử dụng JGB

Chúng tôi đưa ra một ví dụ về phân tích thành phần chính với R bằng cách sử dụng dữ liệu

đường cong lợi suất.20 Qua ví dụ này, chúng ta sẽ nắm được bản chất của thành phần chính qua

đường hậu môn. Ở đây, chúng tôi sử dụng dữ liệu JGB từ trái phiếu 2 năm đến trái phiếu 30

năm. Đối với phân tích này, chúng tôi đã tải xuống dữ liệu từ trang chủ của Bộ Tài chính Nhật Bản.

Bằng cách nhấp vào “Dữ liệu lịch sử (1974 ~)”, quá trình tải xuống tệp csv có tên
“jgbcme_all.csv” sẽ bắt đầu. Chúng tôi đọc dữ liệu bằng read.csv ().

> # trích xuất dữ liệu dưới dạng chuỗi> dữ liệu


<- read.csv ("jgbcme_all.csv", stringAsFactors = FALSE)

Đây là dữ liệu rất dài và bao gồm các giá trị còn thiếu trên các trái phiếu dài hạn. Do đó,

chúng tôi trích xuất dữ liệu khi cần thiết. Ở đây, chúng tôi thu thập dữ liệu sau ngày 6 tháng

11 năm 2007 từ nơi JGB bao gồm trái phiếu 40 năm.

> jgb.data <-list (0)> for


(i in 1: length (data [1,])) + {+ # dòng
8691 tương ứng với ngày 6 tháng 11 năm

2007 + if (i == 1) {+ jgb.data [[i]] <- as.Date (data [8691:


length (data [, 1]), i]) +} else {+ jgb.data [[i]] <- as.numeric

(data [8691: length (data [, 1]), i]) +} +}> jgb.data <-data.frame (jgb.data)

>

> # cài đặt tên của data.frame> for (i in


1: length (jgb.data)) + {+ tên (jgb.data)
[i] <- data [1, i] +}

20 [LX08] cũng đưa ra các ví dụ điển hình bằng cách sử dụng PCA.
Machine Translated by Google

Phân tích thống kê với R 65

Tiếp theo, chúng ta xem giá trị trung bình và sai số chuẩn của dữ liệu.

> # sử dụng dữ liệu lãi suất từ trái phiếu 2 năm đến 30> # năm trái
phiếu> Trung bình <- rep (0,13)

> StDev <- rep (0,13)> for


(i in 1:13) + {+ Mean [i]
<- mean (jgb.data [, i +

2])
+ StDev [i] <- sd (jgb.data [, i + 2]) +}

> Trung

bình [1] 0,1783410 0,2296328 0,3089556 0,3809780 0,4581876


0,5528798
[9] 0,6742479 0,7967605 0,8972091 1,3355772 1,6516721
1,7795122
[13] 1,8385182>
StDev [1] 0,2377067
0,2780413 0,3173738 0,3444768 0,3692043
0,3825336
[9] 0,4057912 0,4403678 0,4579533 0,5056952 0,4684131
0,4742541
[13] 0,4651794

Chuẩn hóa dữ liệu thành giá trị trung bình 0 và lỗi chuẩn 1, chúng tôi tiến hành
phân tích chính yếu trên dữ liệu JGB.

> X <- t ((t (jgb.data [, 3: 15]) - Mean) / StDev)> # t


() là một hàm tạo ma trận chuyển vị

Lưu ý rằng R có một thang đo hàm () để tính toán chuẩn hóa dữ liệu.
21
Phân tích thành phần chính trong R có thể được thực hiện bởi hàm Princecomp ().

> # thành phần chính sử dụng ma trận tương quan không thiên vị
> PC <- Princecomp (X, cor = TRUE)

Chúng ta có thể thấy kết quả của phân tích thành phần chính bằng cách sử dụng hàm
str ().

21 Vì ví dụ này sử dụng dữ liệu chuẩn hóa, nên ma trận tương quan tạo ra cùng một kết quả với ma trận hiệp
phương sai. Nếu không, bạn phải chỉ định cor = TRUE cho phép phân tích sử dụng ma trận tương quan hoặc phải chỉ
định cor = FALSE cho phép phân tích sử dụng ma trận hiệp phương sai để thực hiện phân tích thành phần chính với R.
Machine Translated by Google

66 Lập trình R và các ứng dụng của nó trong Toán tài chính

> str (PC)


Danh sách
7 $ : Đã đặt tên num [1:13] 3.4806 0.8519 0.3589 0.1268 0.0788 ...
sdev ..- attr (*, "names") = chr [1:13] "Phần 1" "Phần 2" "Phần 3" ... $
loadings: tải [1:13, 1:13] -0.264 -0.269 -0.275 -0.279 ...
..- attr (*, "dimnames") = Danh sách
2 .. .. $: chr [1:13] "2Y" "3Y" "4Y" "5Y" ... .. ..
$: chr [ 1:13] "Phần 1" "Phần 2" "Phần 3" "Phần 4" ...
$ center: Đã đặt tên num [1:13] 5.89e-17 1.56e-17 7.20e-17 1.33e-17 ...
..- attr (*, "names") = chr [1:13] "2Y" "3Y" "4Y" "5Y" ...
$ scale: Đã đặt tên num [1:13] 1 1 1 1 1 ...
..- attr (*, "names") = chr [1:13] "2Y" "3Y" "4Y" "5Y" ... $
n.obs: int 2138 $ Score: num [1: 2138, 1 : 13] -6,06 -6 -5,86 -5,79
-5,73 ...
..- attr (*, "dimnames") = Danh sách
2 .. .. $: NULL .. .. $: chr [1:13]
"Phần 1" "Phần 2" "Phần 3" " Phần 4 "... $ call - attr (*," class ")
= chr" Princecomp "
: language Princecomp (x = X, cor = TRUE)

Tỷ lệ đóng góp, đóng góp tích lũy

Chúng tôi điều tra sức mạnh giải thích của từng thành phần chính. Để làm điều đó, hãy xem

các giá trị eigenvalue tương ứng với bình phương của $ sdev được dẫn xuất ở trên bằng lệnh
str (), vì tỷ lệ đóng góp và đóng góp tích lũy được tính dựa trên eigenvalue (chi tiết hơn

được giải thích trong Phần 2.5.4).

> PC $ sd ^ 2 # eigenvalue
> PC $ sd ^ 2 / sum (PC $ sd ^ 2) # tỷ lệ đóng góp> cumsum (PC

$ sd ^ 2 / sum (PC $ sd ^ 2)) # đóng góp tích lũy

Hình 2.6 mô tả tỷ lệ đóng góp và đóng góp tích lũy.22

> posit <-barplot (PC $ sd ^ 2 / sum (PC $ sd ^ 2), ylim = c (0,1.1), col = 8)> dòng

(posit, cumsum (PC $ sd ^ 2 / sum (PC $ sd ^ 2)))> điểm (posit, cumsum (PC $ sd ^ 2 /

sum (PC $ sd ^ 2)), pch = 5)> chú thích ("right", legend = c ('Tỷ lệ đóng góp', + 'Đóng

góp tích lũy'), bty = "n", lty = c (1, NA), + pch = c (5, NA), fill = c (0,8), border

= c (NA, 1), + x.intersp = c (1.2.0.5))

Theo kết quả này, chúng ta có thể thấy khoảng 99% sự chuyển động của đường cong lợi suất

chỉ có thể được giải thích bằng các thành phần chính thứ nhất, thứ hai và thứ ba.

22 Mặc dù chúng ta có thể mô tả nó bằng R, nhưng cũng có thể mô tả nó bằng EXCEL bằng cách xuất ra một văn bản
tập tin bằng lệnh: write.table (PC $ sd ^ 2, file = "eigen.txt"), chẳng hạn.
Machine Translated by Google

Phân tích thống kê với R 67

Tỷ lệ đóng góp
Đóng góp tích lũy

Phần 1 Phần 4 Phần 7 Phần 10 Phần 13

Hình 2.6: Kết quả phân tích thành phần chính của đường cong lợi suất: Tỷ lệ đóng góp và
đóng góp tích lũy

Eigenvector

Chúng tôi kiểm tra eigenvector và điểm thành phần chính để xem ý nghĩa
của mỗi thành phần chính.23 Chúng ta có thể thấy eigenvector bằng cách sử dụng hàm
tải ().

> unslass (tải (PC)) # eigenvector

Hàm unlass () xuất ra các đối số được trích xuất từ lớp đang hình thành. Về
phân tích lãi suất, các yếu tố quan trọng chỉ là yếu tố đầu tiên,
Thành phần chính thứ 2 và 3. Do đó, các thành phần chính khác được bao gồm:

> không phân loại (tải (PC) [, 1: 3])


Phần 1 Phần 2 Phần 3
2Y -0.2644728 -0.41713785 0.41602161
3Y -0,2690465 -0,39943444 0,21792955
4Y -0,2750215 -0,33676995 0,03337381
5Y -0.2792171 -0.26832556 -0.09379876
6Y -0,2837785 -0,15871381 -0,19215574
7 năm -0,2855189 -0,02340250 -0,25087538
8Y -0.2849840 0.05567663 -0.30026467
9 năm -0,2846106 0,09324031 -0,30150581
10 năm -0,2828399 0,14391048 -0,30802425
15Y -0,2784177 0,27062437 -0,13617938
20Y -0,2726930 0,35749091 0,17904979
25Y -0,2732279 0,33197337 0,34121182
30 năm -0,2706822 0,33399146 0,47611523

23Eigenvector hiển thị các tọa độ mới. Điểm thành phần chính là các giá trị trên tọa độ;
ví dụ: hướng của trục x và trục y trong Hình 2.5 là dấu hiệu riêng và các giá trị trên tọa độ là
điểm thành phần chính.
Machine Translated by Google

68 Lập trình R và các ứng dụng của nó trong Toán tài chính

Bằng đoạn mã sau, Hình 2.7 mô tả kết quả trên.

> barplot (t (pca3), bên cạnh = TRUE, col = c (8,1,0))


> chú thích (20,0.4, chú giải = c ("PCA1", "PCA2", "PCA3"), điền = c (8,1,0))

0,4

PCA1
PCA2
0,2
PCA3

0,0

0,2

0,4

2 năm 4Y 6Y 8Y 10Y 20Y 30Y

Hình 2.7: Kết quả phân tích thành phần chính: Eigenvector

Từ kết quả này, chúng tôi giải thích ý nghĩa của từng thành phần chính. Các
dấu hiệu của các thành phần chính thứ nhất (PCA1) là âm tính trong tất cả các năm
(2 năm-30 năm). Điều này ngụ ý rằng thành phần chính thứ nhất liên quan đến chuyển động
của mức sản lượng (trong ví dụ này, mức giảm của lợi tức, vì giá trị là phủ định).
Trong khi dấu hiệu của eigenvectors của các thành phần chính thứ 2 (PCA2) cor phản
ứng với ngắn hạn là tiêu cực, dấu hiệu của eigenvector đối với dài hạn là pos itive.
Điều này ngụ ý rằng thành phần chính thứ 2 liên quan đến sự thay đổi của
độ dốc của đường cong lợi suất (trong ví dụ này, sự giảm trong ngắn hạn và tăng
lợi tức lâu dài). Trên các dấu hiệu của eigenvectors của các thành phần chính thứ 3,
dấu hiệu của lợi suất trung hạn ngược lại với dấu hiệu của lợi suất ngắn hạn và dài hạn. Cái này

ngụ ý rằng thành phần chính thứ 3 thể hiện độ cong của lợi suất
đường cong.

Ví dụ trên cho chúng ta thấy hướng của thành phần chính thứ nhất ngụ ý
lãi suất giảm, hướng của thành phần chính thứ 2 ngụ ý rằng
đường cong sản lượng ngày càng dốc và hướng của thành phần chính thứ 3 tạo ra sự giảm
độ cong được gọi là con bướm tích cực: tức là sự gia tăng
lãi suất ngắn hạn và dài hạn và việc giảm lãi suất trung hạn.24

24 Dấu hiệu của eigenvector có thể có một dấu hiệu khác với kết quả trên, bằng cách sử dụng tập dữ liệu khác. Thế nào

từ trước đến nay, điều này chỉ có nghĩa là trường hợp hướng của tọa độ bị đảo ngược.
Machine Translated by Google

Phân tích thống kê với R 69

Điểm thành phần chính Ngoài

hướng của từng thành phần chính, chúng ta cần kiểm tra các điểm thành phần chính
cho biết trạng thái của đường cong lợi suất. Điểm thành phần chính được tính toán
bằng dữ liệu gốc và thiết bị định vị, như sau,

> # điểm thành phần chính> data.matrix


(X)% *% chưa phân loại (tải (PC))

Nếu bạn phân tích độ lệch của đường cong lợi suất hoặc mức độ phù hợp của giá trái
phiếu, thì tốt hơn hết là các điểm thành phần chính nên được chuẩn hóa để có giá
trị trung bình là 0 và phương sai 1. Việc chuẩn hóa giúp dễ dàng đánh giá mức độ
của điểm thành phần chính. Điều này cũng giúp dễ dàng phán đoán độ dốc và độ cong
của đường cong lợi suất lệch bao xa so với mức trung bình của chúng. Để tính toán
điểm thành phần chính được tiêu chuẩn hóa và tải trọng com ponent chính tương ứng,
chúng ta cần điều chỉnh các giá trị bằng cách sử dụng lỗi tiêu chuẩn PC $ sd,
nghĩa là

> # điểm thành phần chính được tiêu chuẩn hóa> Điểm <-
t (t (data.matrix (X)% *% unslass (+ tải (PC))) / PC $

sd)> # tải thành phần chính> Đang tải <- t (PC $ sd * t


(không phân loại (tải (PC))))

Chuỗi thời gian của điểm thành phần chính được thể hiện trong Hình 2.8. Nói chung,
nếu giá trị tuyệt đối của thành phần chính lớn hơn 2, nó được coi là lệch khỏi giá
trị trung bình. Thật vậy, giả định về phân phối chuẩn ngụ ý rằng xác suất vượt quá
2 là nhỏ hơn 2,5%.
Lưu ý rằng tải thành phần chính được cung cấp cho dữ liệu năng suất chuẩn hóa
(X). Để tính độ nhạy của dữ liệu năng suất không chuẩn hóa cho điểm thành phần
chính, nghĩa là, để tính hệ số ai, j trong (2.4), chúng
của
tôi
tập
sửdữ
dụng
liệu
sai
năng
số chuẩn
suất
ban đầu sao cho

> Đang tải * StDev

Đối với giao dịch theo đường cong, chúng ta cần điều tra trạng thái của đường
cong lợi suất bằng cách quan sát điểm thành phần chính và độ nhạy (eigenvector).
Ví dụ mà chúng tôi chọn ở đây cho thấy rằng điểm tăng của thành phần chính thứ
nhất ngụ ý mức độ giảm của đường cong lợi suất, điểm tăng của thành phần chính thứ
2 cho thấy độ dốc hơn của đường cong lợi suất và điểm tăng lên của thành phần
chính thứ 3 ngụ ý mức độ ngắn hạn tăng lên. và năng suất dài hạn và giảm năng suất
trung hạn. Do đó, nếu điểm của thành phần chính thứ 2 lớn, chúng tôi sẽ xây dựng
vị trí tạo ra lợi nhuận cho đường cong nịnh mắt, vì đặc điểm điểm cho thấy đường
cong quá dốc, so với mức hợp lý. Chiến lược này được gọi là flattener. Thật vậy,
chúng ta có thể thực hiện điều chỉnh bằng cách bán trái phiếu ngắn hạn và mua trái
phiếu dài hạn. Vị trí đối diện được gọi là steepener.
Machine Translated by Google

Lập trình 70 R và các ứng dụng của nó trong Toán tài chính

3
PCA1
2 PCA2
PCA3

0
Điểm
PCA

2008 2010 2012 2014 2016

Ngày tháng

Hình 2.8: Chuỗi thời gian của điểm thành phần chính được tiêu chuẩn hóa

2.5.4 Cách tính toán phân tích thành phần chính?

1 x
1
m ·· x 1

m
1 x
T T

1
Machine Translated by Google

Phân tích thống kê với R 71

1 2

x1

xT
1 m

2
0 = y
0

0 = v

0
Machine Translated by Google

72 Lập trình R và các ứng dụng của nó trong Toán tài chính

0
là toán tử của chuyển vị. Định nghĩa một hàm Lagrange và giải bài toán tối
ưu hóa bằng phương pháp nhân Lagrange; tức là, hàm Lagrange được cho bởi

0 0
L (v, λ) = v (X 0X) v λ (v v 1).

Điều kiện đặt hàng đầu tiên bắt nguồn từ nó như sau,

L
= 2 (X 0X) v 2λv = 0.
v

Nghiệm (v, λ) thỏa mãn phương trình trên. Tuy nhiên, phương trình này được mô phỏng
thành vấn đề đặc trưng sau trên ma trận tương quan,

(X 0X) v = λv, (2,6)

trong đó λ và v thỏa mãn (2.6) được gọi là eigenvalue và eigenvector, tương ứng với
nhau. Hơn nữa, nó giữ,

0 0 0
y y = v (X 0X) v = v λv = λ. (2,7)

Điều này ngụ ý rằng eigenvector tương ứng với eigenvalue tối đa hiển thị
hướng của thành phần chính thứ nhất. Theo thứ tự của các giá trị riêng, các
thành phần chính của quent phụ được xác định. Sau đó, chúng ta có thể xây
dựng các vectơ tương ứng với các thành phần chính thứ 2, 3, 4, v.v.
Sắp xếp các eigenvector xuất phát từ phần trên và xác định V = (v1, ···, vm).
Sau đó, điểm thành phần chính được suy ra như sau,

Y = XV.

Từ (2.7), tiêu chuẩn euclid của điểm thành phần chính là giá trị riêng λ. Do đó, cách
mỗi thành phần chính phản ánh thông tin của dữ liệu ban đầu phụ thuộc vào kích thước của
giá trị riêng. Tỷ lệ đóng góp của thành phần chính thứ i và đóng góp tích lũy của thành
phần chính thứ i tương ứng được đưa ra bởi

λi λ1 + ··· +
, .
λ1 + ··· + λm λi λ1 + ··· + λm

Nếu chúng ta sử dụng tập dữ liệu chuẩn hóa, nó chứa λ1 + ··· + λm = m.


Machine Translated by Google

Chương 3

Phân tích chuỗi thời gian với


R

NỘI DUNG

3.1 Chuẩn bị dữ liệu chuỗi thời gian ..................................... 74 3.2


Trước khi
Ứngápdụng
dụngcủa
chomôcác mô AR
hình hình.
... ....................................... 77 Phân
................................ 80 3.3.1 3.3

tích lượng dư ............ .............................. 83 3.3.2 Dự


báo ............... ................................ 84 3.4 Các mô hình mở
rộng từ AR ............ ............................. 87 3.4.1 Mô hình
ARMA và ARIMA ............. ................... 87 3.4.2 Tự động hồi quy
vectơ ......................... ............. 91 3.4.3 Mô hình

GARCH ............................... ............. 97 3.4.4 Đồng liên


kết ................................ ............. 103 Ứng dụng của phân
tích chuỗi thời gian vào tài chính: Giao dịch theo cặp ...... 107
3.5

Chúng ta đã học phân tích thống kê trong chương trước. Trong chương này, chúng ta sẽ
học phân tích chuỗi thời gian với R. Trong ngành dịch vụ tài chính, chúng ta thường sử
dụng nhiều dữ liệu khác nhau; ví dụ, lãi suất, giá cổ phiếu, tỷ giá ngoại tệ, v.v. Sẽ
rất hữu ích khi phân tích cách các biến này phát triển theo thời gian, độc lập cũng như
cùng với các tín hiệu khác. Tốt nhất, chúng tôi muốn dự báo chuyển động trong tương lai
của các quá trình này. Với phân tích chuỗi thời gian, chúng ta có thể sử dụng các mô
hình để dự báo chuỗi thời gian tài chính.

73
Machine Translated by Google

74 Lập trình R và các ứng dụng của nó trong Toán tài chính

3.1 Chuẩn bị dữ liệu chuỗi thời gian

Gói tseries mở rộng chức năng R bằng cách bao gồm nhiều hàm ful sử dụng để
phân tích chuỗi thời gian. Gói này bao gồm hàm get.hist.quote () có thể được
sử dụng để lấy dữ liệu chuỗi thời gian lịch sử cho nhiều loại tài sản.1 Ví
dụ: bằng cách sử dụng hàm này, chúng tôi nhận được dữ liệu lịch sử về giá
cổ phiếu của Google từ ngày 2 tháng 3 2016 đến 1 tháng 4, 2016: 2

> get.hist.quote (cụ = "GOOGL", start = "2016-3-2", + end =


"2016-4-2", quote = c ("Mở", "Cao", "Thấp", "Đóng"), + nhà cung cấp
= c ("yahoo"), nén = "d")

Sau đó, chúng ta có thể xem dữ liệu như sau.

Mở cao Đóng thấp

2016-03-02 742.87 743.12 733.25 739.48


2016-03-03 739.48 741.00 729.63 731.59
2016-03-04 734.80 735,00 725,62 730,22
2016-03-07 725.15 727.21 705.14 712.80
2016-03-08 708.39 722.25 704.00 713.53
2016-03-09 715.17 726.24 712.66 725.41
2016-03-10 727.79 736.54 723.29 732.17
2016-03-11 739,95 744.90 736,70 744,87
2016-03-14 744,97 754,26 743,66 750,24
2016-03-15 746.02 753.01 742.84 750.57
2016-03-16 749.05 759.00 746.50 757.36
2016-03-17 757,65 765,34 757,36 758,48
2016-03-18 761,63 762,14 751,82 755,41
2016-03-21 753,91 763,34 751,27 762,16
2016-03-22 758.44 765.00 757.88 760.05
2016-03-23 763,35 765,39 756,03 757,56
2016-03-24 751.20 757.56 750.50 754.84
2016-03-28 756.17 758.30 752.04 753.28
2016-03-29 753,68 767,18 748,29 765,89
2016-03-30 768.21 777.31 767.58 768.34
2016-03-31 768,34 769,08 758,25 762,90
2016-04-01 757.16 770.04 755.20 769.67

1Chúng tôi sử dụng get.hist.quote () ở đây, sử dụng Yahoo Finance của Hoa Kỳ. Tuy nhiên, lưu ý rằng dữ liệu chứng khoán

của Nhật Bản không được đưa vào Yahoo Finance của Mỹ. Vì các tác giả sống ở Nhật Bản, chúng tôi thường sử dụng hàm

getSymbols.yahooj () có trong gói quantmod, thay vì get.hist.quote (). Chúng tôi cũng có thể lấy dữ liệu tài chính, ví dụ,

bằng cách sử dụng hàm yahoo.import () trong gói fImport.

2 Dữ liệu được trích xuất vào ngày trước đó được ký hiệu là end = (phiên bản 3.4.1 của R). Do đó, bằng cách biểu thị end

= "2016-4-2", chuỗi thời gian kết thúc vào ngày 1 tháng 4 năm 2016.
Machine Translated by Google

Phân tích chuỗi thời gian với R 75

Các đối số của hàm get.hist.quote () phải được chỉ định như sau:

1. công cụ: Chúng tôi phải chỉ định ký hiệu báo giá. Tại đây, chúng tôi cố gắng giảm tải

giá cổ phiếu của Google bằng biểu tượng báo giá GOOGL.

2. bắt đầu và kết thúc: Chúng tôi chỉ định ngày bắt đầu và ngày kết thúc để dữ liệu xuống
nạp vào.

3. quote: Chúng tôi chỉ định loại dữ liệu trích dẫn. Ví dụ, nếu chúng ta chỉ cần dữ liệu

đóng, thì nó phải được mô tả là quote = "Close". Chúng ta có thể chỉ định nhiều trường

bằng cách sử dụng c ().

4. nhà cung cấp: Chúng tôi chỉ định nhà cung cấp dữ liệu. Đối với dữ liệu chứng khoán, chúng ta nên chỉ định
3
"Yahoo".

5. nén: Tần số dữ liệu. "d" là dữ liệu hàng ngày, "w" là dữ liệu hàng tuần

và "m" là dữ liệu hàng tháng.

Hàm get.hist.quote () có các đối số khác về phương thức, nguồn gốc, lớp học lại, im lặng

và thả, mà bạn có thể thấy hữu ích nhưng chúng ta sẽ không đi vào chi tiết ở đây. 4 Chúng ta

có thể sử dụng hàm get.hist.quote ( ) mà không chỉ định bắt đầu và kết thúc. Trong trường hợp

này, dữ liệu được tải xuống càng lâu càng tốt. Ví dụ: chúng tôi thử bằng cách đặt nén = "m"

để có dữ liệu hàng tháng.

> get.hist.quote (cụ = "GOOGL", + quote = c ("Mở",

"Cao", "Thấp", "Đóng"), nhà cung cấp = c ("yahoo"), + nén = "m" )

3Dữ liệu tỷ giá ngoại tệ đã có sẵn bằng cách biểu thị nhà cung cấp = c ("oanda") trên
phiên bản của get.hist.quote (). Tuy nhiên, nó không có sẵn, bây giờ.
4Để biết thêm chi tiết về get.hist.quote (), hãy xem liên kết sau để biết tài liệu về gói tseries:
https://cran.r-project.org/web/packages/tseries/tseries.pdf
Machine Translated by Google

76 Lập trình R và các ứng dụng của nó trong Toán tài chính

Sau đó, kết quả sau sẽ xuất hiện.

chuỗi thời gian bắt đầu từ 2004-09-01

chuỗi thời gian kết thúc 2017-07-01

Mở Cao Thấp Đóng


2004-09-01 51.401 67.578 49.520 64.86487
2004-10-01 65.465 100.075 64.515 95.41541
2004-11-01 96.872 100.901 80.736 91.08108
2004-12-01 91.066 100.040 84.319 96.49149

.
.
.

2016-10-01 802.550 839.000 796.230 809.90002 2016-11-01


810.870 816.040 743.590 775.88000
2016-12-01 778.550 824.300 753.360 809.45001
2017-01-01 800.620 867.000 796.890 820.19000
2017-02-01 824.000 853.790 812.050 844.92999
2017-03-01 851.380 874.420 824.300 847.79999
2017-04-01 848.750 935.900 834.600 924.52002
2017-05-01 924.150 999.600 920.800 987.09003
2017-06-01 990.960 1008.610 929.600 929.67999
2017-07-01 933.220 998.680 915.310 992.19000

Chúng ta cũng phải lưu ý rằng các hàm, như get.hist.quote (), phụ thuộc vào nhà
cung cấp dữ liệu. Nếu chính sách của nhà cung cấp thay đổi, chúng tôi có thể phải
tìm nguồn dữ liệu khác. Chúng tôi sử dụng get.hist.quote () tại đây, vì tính năng
này có sẵn kể từ tháng 7 năm 2017. Ngoài ra, chúng tôi phải lưu ý rằng, khi
get.hist.quote () không hoạt động tốt, chúng tôi nên cập nhật phiên bản R, trước tìm
một nguồn dữ liệu khác. Điều này là do chức năng này thường hoạt động trở lại trên
phiên bản R mới nhất.
Ở đây, chúng ta hãy tiến hành phân tích bằng cách sử dụng dữ liệu giá đóng cửa của kho
sữa. Do đó, chúng tôi lại tải xuống dữ liệu giá cổ phiếu của Google từ ngày 8 tháng 1 năm
2015 đến ngày 9 tháng 3 năm 2015 như sau;

> google <- get.hist.quote (tools = "GOOGL", start = "2015-1-8",


+ end = "2015-3-9", quote = "Close", provider = c ("yahoo" ), nén = "d")
Machine Translated by Google

Phân tích chuỗi thời gian với R 77

580

560

540
Google

520

500

15 tháng 1 01 tháng 2 15 tháng 2 01 tháng 3

thời gian

Hình 3.1: Dữ liệu giá cổ phiếu của google

Tiếp theo, chúng tôi vẽ biểu đồ dữ liệu của google (Hình 3.1)

> âm mưu (google, type = "l")

Ở đây, chúng tôi chỉ định dữ liệu bắt đầu là ngày 8 tháng 1 năm 2015, mặc dù chuỗi thời gian

dữ liệu của Google bắt đầu từ ngày 19 tháng 8 năm 2004.

Đó là lý do tại sao tập dữ liệu bao gồm dữ liệu quá cũ có thể không chính xác

phân tích. Ngoài ra, cơ cấu nền kinh tế có thể bị thay đổi về cơ bản;

ví dụ, nền kinh tế trước khi Lehman Brothers phá sản có thể khác

từ nền kinh tế sau sự kiện quan trọng này. Tuy nhiên, nó là rất tinh tế làm thế nào để

chỉ định số lượng dữ liệu sẽ được sử dụng để phân tích chuỗi thời gian. Là dữ liệu 30 ngày

phù hợp? 60 ngày? Hay chỉ 10 ngày? Đó là vấn đề nhạy cảm. Đây có thể là

tốt để quyết định kích thước mẫu dựa trên kinh nghiệm của chúng tôi, mặc dù có một số

lý thuyết về điều này. Ở đây, chúng tôi không tranh luận thêm về điểm này và sử dụng 2 tháng

dữ liệu hàng ngày.

3.2 Trước khi áp dụng cho các mô hình

Một trong những mục đích của phân tích chuỗi thời gian là chỉ định mô hình thống trị dữ liệu được

phục vụ và (nếu có thể) để ước tính các giá trị trong tương lai của chuỗi thời gian bằng cách sử dụng

mô hình đó. Trước khi chỉ định mô hình, chúng ta cần điều tra tính ổn định

của mẫu. Thật vậy, nếu chúng ta áp dụng một mô hình với giả định về sự ổn định cho

dữ liệu không cố định, ước tính sẽ đánh lừa chúng ta. Ở đây, sự cố định có nghĩa là

giá trị trung bình và phương sai của dữ liệu chuỗi thời gian không phụ thuộc vào thời gian và

tự tương quan của dữ liệu chuỗi thời gian chỉ phụ thuộc vào chênh lệch thời gian. Trước

tiếp tục, chúng ta nên kiểm tra mẫu về tính ổn định thống kê. Đơn vị gốc
Machine Translated by Google

Lập trình 78 R và các ứng dụng của nó trong Toán tài chính

kiểm tra thường được sử dụng để kiểm tra tính ổn định của dữ liệu chuỗi thời gian.5
Tuy nhiên, theo mặc định, R không được trang bị chức năng cho kiểm tra Dickey-Fuller
tăng cường thường được sử dụng cho kiểm tra gốc đơn vị. Do đó, chúng tôi cần giới
thiệu gói tseries được trang bị adf.test (), là một hàm được sử dụng cho bài kiểm
tra Dickey-Fuller tăng cường [DF79]. Hãy để chúng tôi chạy adf.test ().

> adf.test (google)

Kiểm tra Dickey-Fuller tăng cường

dữ liệu: google
Dickey-Fuller = -2,7298, Lag order = 3, p-value = 0,2865 giả thuyết thay
thế: tĩnh

Giả thuyết rỗng của kiểm tra gốc đơn vị là “tồn tại đơn vị gốc (dữ liệu không cố định)”.
Kết quả trên cho thấy giá trị p lớn, 0,2865. Do đó, chúng ta không thể bác bỏ giả
thuyết vô hiệu về sự tồn tại của căn bậc hai. Đó là, chúng tôi không thể đạt được dữ
liệu tĩnh.

Tuy nhiên, những hiện tượng như vậy thường xảy ra khi chúng ta xử lý dữ liệu chuỗi
thời gian tài chính. Người ta thường thấy rằng chuỗi thời gian tài chính của giá tài sản
là không cố định. Tuy nhiên, sự khác biệt giữa các mức giá kế tiếp thường gần như cố
định. Hãy để chúng tôi tính toán sự khác biệt của dữ liệu chuỗi thời gian bằng cách sử
dụng hàm diff (). Đầu tiên, chúng tôi sử dụng diff () và hiển thị kết quả như sau:

> google.diff <-diff (google)>


google.diff
Đóng
2015-01-09-6.190003
2015-01-12 -3.660003
2015-01-13 4.739990
2015-01-14 4.130005
2015-01-15 -1.919983
2015-01-16 6.449981
2015-01-20-0.519989
2015-01-21 10.450013
2015-01-22 16.909973
2015-01-23 4.650024
2015-01-26-5.230041
2015-01-27-15.529969
2015-01-28-8.760009

Kiểm tra gốc đơn vị là kiểm tra xem dữ liệu có đơn vị gốc hay không. Dữ liệu có gốc đơn vị được gọi là gốc đơn vị

và được coi là không cố định, nhưng chuỗi các giá trị trễ của chúng là đứng yên.
Machine Translated by Google

Phân tích chuỗi thời gian với R 79

.
.
.

2015-02-17 -6.149963
2015-02-18 -2.359986
2015-02-19 3.799988
2015-02-20 -4.650024
2015-02-23-6.799988
2015-02-24 3.650024
2015-02-25 8.679993
2015-02-26 11.959961
2015-02-27 3.340027
2015-03-02 12.390015
2015-03-03 3.769958
2015-03-04-0.459961
2015-03-05 3.099976
2015-03-06-8.529969
2015-03-09 1.199952

Có thể khẳng định google.diff là điểm khác biệt của google. Tiếp theo hãy áp dụng
kiểm tra đơn vị gốc cho google.diff.

> adf.test (google.diff)

Kiểm tra Dickey-Fuller tăng cường

data: google.diff Dickey-


Fuller = -4,2435, Lag order = 3, p-value = 0,0103 giả thuyết thay thế: tĩnh

Thật vậy, chúng ta có thể xác nhận tính ổn định của dữ liệu với giá trị p nhỏ, 0,0103.

Khác với việc lấy sự khác biệt của chuỗi thời gian, người ta thường tính toán sự
khác biệt cho các giá trị logarit của dữ liệu chuỗi thời gian6 để tạo ra dữ liệu tĩnh;
Ví dụ, chúng tôi làm điều đó như sau:

> diff (nhật ký (google))

Mặc dù phép kiểm tra Dickey-Fuller tăng cường thường được sử dụng để kiểm tra tính cố định

của dữ liệu chuỗi thời gian, phép thử Phillips-Perron cũng được sử dụng rộng rãi [Phi87, PP88].

Chúng tôi sử dụng phép thử Phillips-Perron với hàm PP.test ().

> PP.test (google.diff)

Kiểm tra gốc đơn vị Phillips-Perron

6 Sự khác biệt của các giá trị logarit của chuỗi thời gian được gọi là trả về log.
Machine Translated by Google

Lập trình 80 R và các ứng dụng của nó trong Toán tài chính

data: google.diff Dickey-

Fuller = -5.3009, tham số độ trễ cắt ngắn = 3, p-value = 0,01

Giá trị p là 0,01. Đối với giá trị này, tương tự như kết quả của thử nghiệm Dickey-Fuller

tăng cường, có vẻ là tốt nếu bác bỏ giả thuyết vô hiệu. Ở đây, chúng ta kết thúc quá trình kiểm

tra dữ liệu chuỗi thời gian để chuẩn bị ước lượng mô hình.

3.3 Ứng dụng của mô hình AR


Tiếp theo, chúng tôi điều tra mô hình phù hợp với dữ liệu trong phần trước.

Chúng tôi bắt đầu bằng cách chọn mô hình đơn giản nhất và, nếu mô hình đơn giản không thích hợp để giải

thích dữ liệu, hãy chuyển sang các mô hình phức tạp hơn. Do đó, chúng ta bắt đầu cuộc thảo luận với một

mô hình tự phục hồi (mô hình AR), là mô hình ba sic trong phân tích chuỗi thời gian. Mô hình AR giả định

rằng giá trị hiện tại phụ thuộc vào sự kết hợp tuyến tính của các giá trị trước đó và biến ngẫu nhiên

(không phân phối theo phương pháp ngẫu nhiên). Về mặt toán học, mối quan hệ này cho chuỗi thời gian có

thể được viết như sau {yt} ∞

t = ∞ = {..., y 1, y0, y1, y2, ...};

yt = c + a1yt 1 + a2yt 2 + ··· + anyt n + εt , (3,1)

2
trong đó εt N (0, σ ); tức là, ε là biến ngẫu nhiên có phân phối chuẩn với giá trị trung bình
2
0 và phương sai σ . Hơn nữa, đối với s 6 = t tùy ý, εt và εs là độc lập với nhau
khác.

Vì mô hình AR giả định dữ liệu cố định, chúng tôi áp dụng mô hình AR cho google.diff, thay

vì google (nhớ lại rằng tính ổn định của google đã bị từ chối).

Hàm ar () tính toán các tham số của mô hình AR bằng cách sử dụng dữ liệu đã cho. Ở đây, để

tính toán các tham số của mô hình, chúng tôi chỉ định phương pháp ols (bình phương nhỏ nhất thông

thường). Bằng cách sử dụng hàm ar (), chúng ta có thể tính toán các tham số của mô hình với

phương pháp khả năng tối đa, phương pháp Yule-Walker và phương pháp Burg, bằng cách chỉ định mle,

yw và burg, tương ứng. Hàm ar () lấy các đối tượng chuỗi thời gian làm đầu vào, vì vậy chúng ta

phải chuyển đổi dữ liệu trong google.diff thành dạng chuỗi thời gian bằng cách sử dụng ts ().

> # recast google.diff dưới dạng đối tượng chuỗi thời gian> google.diff

<-ts (google.diff)> google.ar <-ar (google.diff, method = "ols")>

google.ar # hiển thị kết quả

Gọi điện:

ar (x = google.diff, method = "ols")


Machine Translated by Google

Phân tích chuỗi thời gian với R 81

Hệ số:

1 2 3 4 5 6 7
0,7391 0,1081 -0,2562 -0,0955 0,2391 -0,1442 0,3313
số 8 9 10 11 12 13 14
0,1085 0,3191 0,4078 -0,0227 -0,0042 0,8089 -0,1368
15 16
-0,2072 0,5644

Đánh chặn: 1.212 (0.5323)

Đặt hàng đã chọn 16 sigma ^ 2 ước tính là 3,951

Hệ số chứa các hệ số của mô hình, tức là, a1, a2, ..., trong (3.1)
Intercept là hằng số c trong (3.1) và sigma ^ 2 là phương sai của ε. Lưu ý
rằng hàm ar () ước lượng các tham số dựa trên quan hệ, yt - µ = c˜ + a1 (yt
1 - µ) + ··· + an (yt n µ) + εt . Giá trị ước tính của ˜c là 1,212,
với sai số chuẩn là 0,5323 (trong ngoặc đơn). Chúng ta có thể sử dụng lệnh
google.ar $ asy.se.coef để kiểm tra lỗi chuẩn của các hệ số khác. Giá trị µ là giá
trị trung bình của dữ liệu chuỗi thời gian và được xác định bởi i µ: = PNcủa
= 1 mẫu Yi chuỗi
/ N cho
thời gian {Yi ; i = 1, ·· N}. Điều này được xác nhận như sau:

> google.ar $ x.mean


Đóng
1.679749

Do đó, hằng số c trong (3.1) được cho bởi c = c˜ + µ (1 - Pn ai)


i = 1 = 1.212 +
1.679749 (1 - 0.7391 - 0.1081 - ··· - 0.5644) = 5.847115. Thứ tự được chọn 16
có nghĩa là yt được giải thích bởi {yt 1, ··· , yt-16}, nghĩa là, ar () ước
tính mô hình sau:

yt = 5,8471 + 0,7391yt 1 + 0,1081yt 2 0,2562yt 3

0,0955yt 4 + 0,2391yt 5 0,1442yt 6 + 0,3313yt 7

+ 0,1085yt 8 + 0,3191yt 9 + 0,4078yt 10 0,0227yt 11

0,0042yt 12 + 0,8089yt 13 0,1368yt 14 0,2072yt 15

+ 0,5644yt 16 + εt . (3.2)

Tiếp theo, hãy kiểm tra độ chính xác của mô hình ước tính này.

Theo trực quan, tiêu chí về độ chính xác của mô hình là mức độ phù hợp của nó với chuỗi thời gian.

Đầu tiên, chúng tôi kiểm tra phần dư giữa các giá trị của mô hình và chuỗi thời gian bằng $
Residence.
Machine Translated by Google

82 Lập trình R và các ứng dụng của nó trong Toán tài chính

> google.ar $ Residence


Chuỗi thời gian:

Bắt đầu = 1
End = 40
Tần suất = 1
NA NA NA NA NA
NA NA NA NA NA
[1] NA NA NA NA NA
[6] NA 0,17892185 -2,77673899 0,44035111 1,24890528
[11] [16] [21] -1.36123915 -0.29251607 -1.59846218 1.78868008 0.42837244
[26] -3.72467250 -0.07598574 2.34073271 -2.08251981 -0.92633701
[31] 1.11508145 0.14500994 -1.38850160 2.89830593 2.23518718
[36] 2,57213506 -1,93007312 -3,61409037 3,47699394 0,90245956

Dữ liệu từ [1] đến [16] là NA, vì mô hình sử dụng 16 mẫu đầu tiên
để ước tính các hệ số của nó. Những phần dư này được vẽ trong bảng điều khiển bên trái của Hình
3.2.

> âm mưu (google.ar $ dư, xlab = "chỉ mục thời gian", ylab = "phần dư")

Hơn nữa, chúng tôi vẽ biểu đồ giá trị mô hình và chuỗi thời gian mẫu trong bảng điều khiển bên phải của Hình

3.2.

> âm mưu (google)


> # loại trừ 16 mẫu đầu tiên khỏi google,
> # 15 mẫu đầu tiên từ google.diff và phần còn lại
> # trước khi thêm chúng
> điểm (google [- (1:16)] + google.diff [- (1:15)]
+ -google.ar $ Residence [- (1:15)])

580

2
560

0 540
Google
phần

2 520

500
4

0 10 20 30 40 15 tháng 1 01 tháng 2 15 tháng 2 01 tháng 3

chỉ số thời gian thời gian

Hình 3.2: Phần dư của mô hình AR (bảng bên trái) và Giá trị mẫu và mô hình (bảng bên phải)
Machine Translated by Google

Phân tích chuỗi thời gian với R 83

3.3.1 Phân tích lượng dư

Bảng bên phải của Hình 3.2 hiển thị trực quan sự phù hợp của mô hình của chúng tôi với dữ liệu

chuỗi thời gian. Hãy kiểm tra định lượng thể lực bằng phương pháp thống kê.

Nếu phân tích là đúng, nghĩa là, nếu ước tính bằng phương pháp tự động hồi quy là đúng,
thì phần dư

εt = yt a1yt 1 a2yt 2 - ··· anyt n c

được phân phối chuẩn với giá trị trung bình 0 và tự tương quan 0. Để kiểm tra điều này, chúng

tôi sẽ sử dụng phép thử Jarque-Bera, được sử dụng để kiểm tra tính chuẩn của dữ liệu và phép

thử Box Ljung (Ljung-Box, Box-Pierce), được sử dụng để kiểm tra tự tương quan. Các bài kiểm
7
tra này được áp dụng cho phần dư, google.ar $ Residence. Chúng tôi có thể thực hiện kiểm

tra Jarque-Bera, như sau:

> jarque.bera.test (google.ar $ Residence [- (1:16)])

Kiểm tra Jarque Bera

dữ liệu: google.ar $ Residence [- (1:16)]

Bình phương X = 0,84357, df = 2, p-value = 0,6559

Giá trị p là 0,6559. Giả thuyết vô hiệu của kiểm định Jarque-Bera là "phân phối là

chuẩn" [JB78]. Vì giá trị p không thấp, nên rất khó để bác bỏ giả thuyết vô hiệu. Chúng tôi

cũng thực hiện kiểm tra Box-Ljung [LB78] , với hàm Box.test ().

> Box.test (google.ar $ Residence [- (1:16)], type = "Ljung")

Thử nghiệm Box-Ljung

dữ liệu: google.ar $ Residence [- (1:16)]

X bình phương = 0,23471, df = 1, p-value = 0,6281

Bằng kiểm định Box-Ljung, chúng tôi kiểm tra giả thuyết rỗng, "không có tự tương quan".

Vì giá trị p 0,6281 không nhỏ nên chúng ta không thể bác bỏ giả thuyết vô hiệu.

7Lưu ý rằng 16 dữ liệu đầu tiên của phần dư bị thiếu giá trị. Do đó, trước khi thử nghiệm, chúng tôi loại trừ chúng.

8Chúng tôi có thể kiểm tra tự tương quan theo thứ tự độ trễ được chỉ định. Ví dụ: bằng cách ký hiệu Box.test (google.ar

$ Residence [- (1:16)], lag = 5, type = "Ljung"), chúng tôi kiểm tra giả thuyết rỗng theo thứ tự trễ 5. Ở đây, chúng tôi

có 24 dữ liệu của google.ar $ Residence. Do đó, chúng ta có thể thực hiện kiểm tra Box-Ljung theo thứ tự trễ 24. Tuy nhiên,

đối với thứ tự trễ lớn hơn, kết quả của giá trị p đang giảm. Do đó, có vẻ như rất khó để chấp nhận giả thuyết vô hiệu.

Theo nghĩa này, chúng ta có thể kiểm tra sự tự tương quan.

Lưu ý rằng bằng cách không chỉ định thứ tự trễ, hàm Box.test () giả định thứ tự trễ 1.
Machine Translated by Google

84 Lập trình R và các ứng dụng của nó trong Toán tài chính

3.3.2 Dự báo
Khi chúng tôi có một mô hình phù hợp với chuỗi thời gian, chúng tôi có thể dự đoán điều

gì xảy ra tiếp theo trong chuỗi thời gian. Chúng tôi sử dụng hàm dự đoán (), để tính toán
các giá trị dự đoán.

> google.pred <-p Dự đoán (google.ar, n.ahead = 10)> # n.ahead


chỉ định thời lượng dự báo> google.pred $ pred Chuỗi thời gian:

Bắt đầu = 41
Kết thúc = 50

Tần suất = 1
[1] 10.999883 12.256805 11.158278 14.665264 20.041360
15.580047

[7] 9,923197 15,937889 16,602206 18,533166

$ se
Chuỗi thời gian:

Bắt đầu = 41
Kết thúc = 50

Tần suất = 1
[1] 1.987677 2.471603 2.792927 2.858944 2.859062 2.860384
2,864262

[8] 2,924782 3,110018 3,707299

Đối tượng google.pred bao gồm giá trị dự đoán $ pred, là giá trị thay đổi abso lute
so với giá trị trước đó trong chuỗi thời gian và lỗi chuẩn $ se.
Chúng tôi muốn kiểm tra xem các giá trị dự đoán có khớp với dữ liệu giá cổ phiếu thực như thế nào. Vì vậy, chúng

tôi làm điều đó như sau:

> # gọi dữ liệu giá chứng khoán trong 11 ngày của google từ ngày 9 tháng 3 năm 2015>
google.ft <- get.hist.quote (cụ = "GOOGL", start = "2015-3-9", + end = "2015-3 -21 ",
quote =" Close ", cung cấp = c (" yahoo "), nén =" d ") đang thử URL 'http://
chart.yahoo.com/table.csv?s=GOOGL&a=2&b=09&c= 2015 & d = 2 & e = 21 & f = 2015 & g = d
& q = q & y = 0 & z = GOOGL & x = .csv ' Loại nội dung 'text / csv' dài 200 byte được
tải xuống 758 byte

chuỗi thời gian kết thúc vào 2015-03-20

Thông báo cảnh báo:


Trong download.file (url, destfile, method = method, yên tĩnh = yên tĩnh):
độ dài đã tải xuống 758! = độ dài được báo cáo 200
> # lô dữ liệu tương lai của google> plot
(google.ft, type = "l", ylim = c (550,700), xlab = "time",
Machine Translated by Google

Phân tích chuỗi thời gian với R 85

+ ylab = "future values")> # vì


các giá trị được dự đoán là sự khác biệt, chúng tôi cần tạo> # giá trị chuỗi được dự
báo

> google.pred.orig <-google.ft>

google.pred.orig [1] <- google.ft [1]> for (tôi


trong 2:10) {+ google.pred.orig [i] <-

google .pred.orig [i-1] + google.pred $ pred [i-1] +}> # biểu đồ của các giá trị được dự đoán
theo AR> dòng (google.pred.orig [1:10], lty = "dotted" )

Hình 3.3 vẽ sơ đồ dữ liệu thị trường thực và các giá trị dự đoán bằng mô hình AR. Rất

tiếc, nó cho thấy độ chính xác yếu về dự báo. Mô hình AR của chúng tôi dự báo giá cổ phiếu

của Google sẽ tăng một cách đơn điệu, nhưng tốc độ tăng quá dốc. Nó không làm tốt công việc

dự báo. Vì vậy, chúng ta cần phải xem xét bước tiếp theo. Chúng tôi có các ứng cử viên sau đây;

1. bỏ dự báo bằng phân tích chuỗi thời gian

2. thử các sửa đổi của mô hình AR

3. thử các mô hình khác

Hãy để chúng tôi thảo luận về lựa chọn đầu tiên. Chúng tôi biết rằng các biến số kinh tế

thực phụ thuộc vào các sự kiện khác nhau, bao gồm các sự kiện đột ngột của chính phủ, thiên

tai, v.v., cũng như các sự kiện vi mô như một báo cáo thu nhập bất ngờ. Do đó, sẽ hợp lý khi

giả định rằng chúng ta không thể nhất thiết phải đưa ra dự báo dài hạn chỉ sử dụng phân tích

chuỗi thời gian. Do đó, chúng tôi thường tính toán khoảng tin cậy cho dự báo của mình, ví dụ:

trong khoảng 90%, 95%, v.v.

700

650

tương
lai
trị
giá

600

550

Ngày 09 tháng 3 Ngày 11 tháng 3 Ngày 13 tháng 3 Ngày 15 tháng 3 Ngày 17 tháng 3 Ngày 19 tháng 3

thời gian

Hình 3.3: Dữ liệu thị trường (đường liền nét) và các giá trị dự đoán của mô hình AR (đường chấm)
Machine Translated by Google

86 Lập trình R và các ứng dụng của nó trong Toán tài chính

Về tùy chọn thứ hai: Trên thực tế, chúng tôi đã thử dự báo "chính xác"

theo nghĩa lý thuyết. Do đó, chúng tôi không có chỗ cho sự tinh vi của AR

mô hình, theo một nghĩa nào đó. Những điều chúng tôi có thể làm không phức tạp, nhưng dựa trên thử nghiệm

và lỗi. Hàm ar () tự động tính toán thứ tự độ trễ tối ưu bằng cách

Tiêu chí thông tin Akaike (AIC). Lý thuyết thống kê khuyến nghị độ trễ

thứ tự của mô hình AR để giảm thiểu AIC. Ví dụ trên cho thấy thứ tự trễ

16 trong (3.2). Điều này có nghĩa là thứ tự trễ 16 giảm thiểu AIC.9 Chúng tôi có thể xác nhận

thứ tự trễ của mô hình AR như sau:

> google.ar $ đặt hàng


[1] 16

Giá trị của AIC được xác nhận bởi những điều sau:

> google.ar $ aic


0 1 2 3 4 5 6
75.89337 77.15111 79.39599 78.37233 79.61554 81.51611 82.33702
7 số 8 9 10 11 12 13
84.42860 82.88447 80.83700 82.41760 85.60000 84.43471 83.73723
14 15 16
84,75643 43,60518 0,00000

Trên thứ tự trễ 16, AIC lấy 0, có nghĩa là thứ tự trễ 16 thực sự

giảm thiểu AIC. Tuy nhiên, thứ tự độ trễ tối ưu được hiển thị bởi AIC có thể làm cho

mô hình quá phức tạp và độ chính xác của dự báo có thể kém hơn (đây là

gọi là quá lắp). Trong thực tế, đề cập đến AIC, chúng tôi thường giảm thứ tự độ trễ.

Không có cơ sở lý thuyết về thứ tự trễ nên được sử dụng. Chúng tôi quyết định nó

bằng cách tin tưởng vào cảm giác có kinh nghiệm của chúng tôi.10 Lưu ý rằng thứ tự trễ được hiển thị bởi AIC là

tối ưu theo nghĩa phù hợp với dữ liệu mẫu. Do đó, mô hình có độ trễ ngắn hơn

thứ tự làm xấu đi sự phù hợp với dữ liệu mẫu.

Ở đây, chúng ta hãy xây dựng lại mô hình AR bằng cách sửa thứ tự trễ thành 2.

quy trình ước tính gần giống như quy trình được mô tả trước đây, nhưng chúng tôi

cần xác định order.max = 2 trong hàm ar ().

> # AR với thứ tự trễ 2

> google.ar2 <- ar (google.diff, method = "ols", order.max = 2)

> # mô tả các giá trị tương lai

> plot (google.ft, type = "l", ylim = c (550,700), xlab = "time",

+ ylab = "giá trị tương lai")

> # mô tả các giá trị được dự đoán bằng AR (2)

9AIC ngụ ý mối quan hệ giữa khả năng xảy ra của mô hình và số lượng các tham số của mô hình.
[Aka74]

10 Mặc dù nó phụ thuộc vào loại dữ liệu, chúng tôi cảm thấy rằng độ trễ 1 là đủ. Bất cứ thứ gì sử dụng lớn hơn

thứ tự, 2 hoặc 3 của thứ tự trễ thường sẽ cho chúng ta kết quả tốt. Nói cách khác, chúng ta thường quan sát rằng

dự báo không đáng tin cậy xuất hiện nếu thứ tự độ trễ cao hơn được sử dụng để xây dựng mô hình AR.
Machine Translated by Google

Phân tích chuỗi thời gian với R 87

> google.pred2 <-p Dự đoán (google.ar2, n.ahead = 10)>


google.pred.orig2 <-google.ft> google.pred.orig2 [1] <- google.ft
[1]> cho (tôi trong 2:10) {+ google.pred.orig2 [i] <-
google.pred.orig2 [i-1] + + google.pred2 $ pred [i-1] +}> dòng

(google.pred.orig2 [ 1:10], lty = "dotted")

Ở đây, chúng tôi không kiểm tra phần dư, chỉ kiểm tra sự phù hợp của dự báo.
Hình 3.4 cho thấy dự báo bằng mô hình AR được cải thiện theo nghĩa là các giá trị
dự đoán gần với mẫu hơn bằng cách sửa thứ tự trễ là 2. Tuy nhiên, chúng tôi xin lưu ý
rằng điều này được tìm thấy bằng cách thử và sai, không phải bằng bất kỳ cơ sở lý thuyết
nào. Do đó, chúng ta sẽ tiến hành thảo luận về các mô hình được mở rộng từ mô hình AR
để cải thiện độ chính xác.

700 700

650 650

tương
lai
trị
giá tương
lai
trị
giá

600 600

550 550

Ngày 09 tháng 3 Ngày 11 tháng 3 Ngày 13 tháng 3 Ngày 15 tháng 3 Ngày 17 tháng 3 Ngày 19 tháng 3 Ngày 09 tháng 3 Ngày 11 tháng 3 Ngày 13 tháng 3 Ngày 15 tháng 3 Ngày 17 tháng 3 Ngày 19 tháng 3

thời gian thời gian

Hình 3.4: Dữ liệu thị trường (đường liền nét) và các giá trị dự đoán (đường chấm) của AR (16) (bảng
bên trái, vẽ lại Hình 3.3 ) và AR (2) (bảng bên phải)

3.4 Các mô hình mở rộng từ AR

3.4.1 Mô hình ARMA và ARIMA


Như đã thảo luận ở trên, theo kết quả phân tích phần dư, độ chính xác của mô hình AR
dường như không tệ, nhưng độ chính xác của dự báo là không tốt. Có thể cải thiện độ
chính xác bằng cách giảm thứ tự độ trễ.
Tuy nhiên, vì không có cơ sở lý thuyết về việc giảm thứ tự trễ bao nhiêu, nên không có
gì đảm bảo rằng chúng ta có thể cải thiện độ chính xác của dự báo bằng cách giảm thứ tự
trễ. Do đó, thay vào đó, có thể hữu ích nếu mở rộng mô hình AR.
Machine Translated by Google

88 Lập trình R và các ứng dụng của nó trong Toán tài chính

Trong phần này, chúng tôi xem xét mô hình đường trung bình động tự hồi phục (ARMA).
Mô hình ARMA được mô tả như sau:

P q

yt = c + X aiyt i + X bjεt j + εt .
i = 1 j = 1

Bây giờ chúng ta có hai tham số thứ tự trễ, p và q, và chúng ta viết mô hình là ARMA (p,

q). Điều này giống với mô hình AR, ngoại trừ số hạng thứ ba, Pq bjεt j j.= Một
1
trong
những giá
trị của ARMA là, bằng cách đưa ra tham số thứ tự độ trễ thứ hai, là giảm thứ tự độ trễ
tổng thể; quá nhiều thứ tự trễ thường xuất phát trong mô hình AR.
Thật vậy, ước tính AR được thảo luận trong phần trước cho thấy 16 bậc của độ trễ.11 Lý
do tại sao mô hình ARMA có thứ tự độ trễ ít hơn so với mô hình AR rất đơn giản. Mô hình
AR và mô hình trung bình động (MA) 12 có thể hoán đổi cho nhau. Vì AR và MA có nguồn gốc
từ nhau, ARMA, là mô hình tổng hợp của AR và MA, cũng bắt nguồn từ mô hình AR và MA.

Để xây dựng mô hình ARMA trong R, chúng ta sử dụng hàm arima ()

tạo đường trung bình động tích hợp tự động hồi phục (ARIMA) [BJRL15].
Như đã thảo luận ở trên, dữ liệu tài chính thường không cố định, nhưng sự khác biệt
của dữ liệu thường không cố định, được gọi là quy trình gốc đơn vị. Do đó, chúng tôi áp
dụng mô hình cho sự khác biệt của chuỗi thời gian, chứ không phải cho chính chuỗi thời
gian. Đối với các quy trình như vậy, chúng tôi áp dụng ARIMA thay vì ARMA. Ví dụ, ARIMA
của quy trình tích hợp bậc một được mô tả như sau:

P q

yt = c + X ai yt i + X bjεt j + εt .
i = 1 j = 1

Sự khác biệt có thể được thực hiện cho bất kỳ đơn đặt hàng nào. Trong trường hợp thứ tự thứ

d, chúng tôi ký hiệu ARIMA (p, d, q) để xác định thứ tự chênh lệch. Do đó, ARIMA (p, 0, q)

là ARMA (p, q).

Thật không may, gói tseries không được trang bị chức năng để tính toán tối ưu (p,

q). Do đó, chúng ta cần tính AIC liên tiếp và suy ra giá trị tối ưu (p, q) mà AIC cực
tiểu. Ví dụ, đoạn mã sau có thể hữu ích để tính toán tối ưu (p, q).

11 Có vẻ không hợp lý nếu kết quả như vậy xuất hiện trong ước tính sử dụng dữ liệu hàng tháng. Lệnh trễ 16 ngụ ý
rằng giá cổ phiếu hiện tại phụ thuộc vào dữ liệu của 16 tháng trước, có vẻ như quá cũ để ảnh hưởng đến giá hiện tại.

Mô hình 12MA được đặc trưng như sau:

yt = µ + Xq bjεt j + εt
,
j = 1

trong đó µ là hằng số. Điều này tương đương với ARMA, loại trừ thuật ngữ Pp i = 1 aiyt i .
13 Nếu một chuỗi có hiệu số bậc (d - 1) không đứng yên, nhưng chuỗi có hiệu số bậc d là đứng yên, thì chuỗi đó
được gọi là quá trình tích phân bậc d.
Machine Translated by Google

Phân tích chuỗi thời gian với R 89

> opt.order <-Chức năng (data_, pMax_, qMax _) {


+ aic <-0

+ opt.p <-1
+ opt.q <-1
+ cho (tôi trong 1: pMax_)
+ {
+ cho (j trong 1: qMax_)
+ {
+ # ARIMA (i, 0, j) cho data_
+ tmp <- arima (data_, order = c (i, 0, j))
+ nếu (tôi == 1 && j == 1) {
+ aic <- tmp $ aic
+ }khác{
+ if (aic> tmp $ aic) {
+ aic <-tmp $ aic
+ opt.p <-i
+ opt.q <-j
+ }
+ }
+}
+}
+ return (c (opt.p, opt.q))
+}

Sử dụng dữ liệu này và hàm opt.order (),

> opt.order (google.diff, 5,6)


[1] 2 1

Do đó, có vẻ tốt nếu chọn ARIMA (2,1,1) .14 Điều này làm giảm đáng kể
số lượng thông số mô hình như chúng tôi hy vọng. Chúng tôi vẽ mẫu và dự đoán
giá trị của ARIMA bằng cách sử dụng mã bên dưới.

> google.arima <- arima (google.diff, order = c (2,0,1))


> âm mưu (google, type = "l", xlab = "time", ylab = "Google price")
> điểm (google [- (1: 2)] + google.diff [-1] -
+ google.arima $ Residence [-1])

Hình 3.5 cho thấy sự phù hợp của mô hình có vẻ không tệ. Kiểm tra dư có thể
được thực hiện theo cùng một quy trình đã thảo luận trong phần trước. Dự báo
bởi ARIMA được đưa ra trong đoạn mã sau và kết quả được hiển thị trong Hình 3.6.

14 Hàm auto.arima () trong thư viện dự báo tự động tính toán giá trị tối ưu (p, q). Thế nào

bao giờ hết, nội dung của phép tính cũng đang tìm kiếm giá trị tối ưu (p, q) với phép lặp, như ví dụ của chúng ta.
Machine Translated by Google

Lập trình 90 R và các ứng dụng của nó trong Toán tài chính

580

560

540

Google
Giá

520

500

15 tháng 1 01 tháng 2 15 tháng 2 01 tháng 3

thời gian

Hình 3.5: Giá trị mẫu (đường liền nét) và mô hình theo ARMA (điểm)

700

650

Google
Giá

600

550

Ngày 09 tháng 3 Ngày 11 tháng 3 Ngày 13 tháng 3 Ngày 15 tháng 3 Ngày 17 tháng 3 Ngày 19 tháng 3

thời gian

Hình 3.6: Dự báo bằng ARMA (đường chấm)

> # vẽ các giá trị tương lai của google


> plot (google.ft, type = "l", ylim = c (550,700), xlab = "time",
+ ylab = "Google price")
>

> google.pred.arima <-dự đoán (google.arima, n.ahead = 10)


> # vì các giá trị dự đoán khác nhau, chúng tôi cần
> # cấu trúc lại chúng theo kiểu dữ liệu thô
> google.pred.orig <-google.ft
> google.pred.orig [1] <- google.ft [1]
> cho (tôi trong 2:10) {

+ google.pred.orig [i] <- google.pred.orig [i-1] +


+ google.pred.arima $ pred [i-1]
+}
Machine Translated by Google

Phân tích chuỗi thời gian với R 91

3.4.2 Tự động hồi quy vectơ

15

15 Gói vars rất tiện lợi vì nó được trang bị các chức năng để dễ dàng tính toán khoảng thời
gian làm việc và các phản ứng xung. Vì cách sử dụng của gói này tương tự như gói tseries, nên bạn
có thể dùng thử.
Machine Translated by Google

92 Lập trình R và các ứng dụng của nó trong Toán tài chính

> pp.test (apple) # Phillip-Perron test cho Apple> pp.test (msft)


# Phillip-Perron test cho Microsoft

Kết quả của bài kiểm tra Dickey-Fuller đối với dữ liệu giá cổ phiếu của Apple như sau:

Kiểm tra Dickey-Fuller tăng cường

dữ liệu: apple
Dickey-Fuller = -1.2681, Lag order = 3, p-value = 0.8614 giả thuyết thay thế:
tĩnh

Giá trị p là 0,8614 yếu để bác bỏ giả thuyết không. Các kết quả khác trên Apple và
Microsoft cũng tương tự. Do đó, mẫu không cho thấy sự cố định. Chúng tôi tiến hành lấy
sự khác biệt của mẫu và thực hiện tính ổn định
kiểm tra.

> apple.diff <-diff (apple)>


msft.diff <-diff (msft)

> adf.test (apple.diff)>


adf.test (msft.diff)> pp.test

(apple.diff)> pp.test (msft.diff)

Sau đó, chúng tôi có thể xác nhận các giá trị p thấp và xác nhận tính ổn định. Chúng tôi
sử dụng dữ liệu khác biệt như mô hình AR.

Khi chúng ta xây dựng mô hình VAR bằng gói tseries, chúng ta có thể làm điều đó với
giống như mô hình AR, như sau:

> # Ước tính VAR

> stock.data <-data.frame (google.diff, apple.diff, msft.diff)> tên (stock.data) <-


c ("Google", "Apple", "Microsoft")> stock.var < -ar (ts (stock.data), method =
"ols")

Sau đó, chúng tôi nhận được kết quả sau:

> stock.var

Gọi:

ar (x = stock.data, method = "ols")


Machine Translated by Google

Phân tích chuỗi thời gian với R 93

$ ar
, , 1

Google Apple Microsoft


Google 0,68794 1,1961 -3,7069
Apple -0.35092 0,1029 -1,0066
Microsoft -0.06356 0.1314 -0.1304

, , 2

Google Apple Microsoft


Google -0,81124 -0,66261 5,42666
Apple 0,37686 0,21498 -1,32115
Microsoft 0,05258 0,09758 -0,06469

, , 3

Google Apple Microsoft


Google -0.72290 -3.1696 1.7566
Apple -0.01380 0.8809 -1.5792
Microsoft -0.05759 -0.1639 0,7846

, , 4

Google Apple Microsoft


Google -0.53386 -2.7130 3.98597
Apple -0.12895 -0.3517 1.57675
Microsoft -0.09987 -0.2891 0.08013

, , 5

Google Apple Microsoft


Google -0,194115 0,5406 -10,5666
Apple -0.090934 -0.1692 Microsoft 2.2573
-0.007996 -0.2487 0,3063

, , 6

Google Apple Microsoft


Google -0.275710 -2.1957 7.007
Apple 0,015606 0,7418 -2.222
Microsoft -0,001699 0,1885 -1.345
Machine Translated by Google

94 Lập trình R và các ứng dụng của nó trong Toán tài chính

, , 7

Google Apple Microsoft


Google -0,34272 -1,52384 -6.2037
Apple -0,05153 0,44964 1.0256
Microsoft 0,01709 0,03935 0,3488

, , số 8

Google Apple Microsoft


Google -0.106550 -0.17890 8.353604
Apple 0,007622 -0,39895 -1,166703
Microsoft -0.026013 -0.03341 -0.001473

, , 9

Google Apple Microsoft


Google -0.32553 -2.47374 -1.0457
Apple -0,05996 0,93894 0,4948
Microsoft -0.02689 0.02276 0,7610

$ x.intercept
Google Apple Microsoft
4,3894 -0,7783 0,1549

$ var.pred
Google Apple Microsoft
Google 1,5028 0,6218 0,2465
Apple 0,6218 0,6676 0,3601
Microsoft 0,2465 0,3601 0,2326

Hơn nữa, chúng tôi thấy stock.var $ x.mean:

> stock.var $ x.mean


Google Apple Microsoft
1,6797493 0,3812500 -0,185001
Machine Translated by Google

Phân tích chuỗi thời gian với R 95

Điều này ngụ ý rằng mô hình ước tính có dạng sau:

Googlet 1.6797493 4.3894


= 0,7783
Applet 0.3812500
Microsoftt - (- 0.1185001) 0,1549

0,68794 1,1961 3,7069 Googlet 1 1.6797493


+ 0,35092 0,1029 1,0066 Applet 1 0.3812500
0,06356 0,1314 0,1304 Microsoftt 1 - (- 0.1185001)

0,81124 0,66261 5,42666 Googlet 2 1.6797493


+ 0,37686 0,21498 1.32115 Applet 2 0.3812500
0,05258 0,09758 0,06469 Microsoftt 2 - (- 0.1185001)

0,32553 2,47374 1,0457 Googlet 9 1.6797493


+ ··· + 0,05996 0,93894 0,4948 0,02689
0,02276 Applet 9 0.3812500
0,7610 Microsoftt 9 - (- 0.1185001)

1 ε
t

2
+ ε t
3

t ,

1 2 3 trong
đó ε ε ε t , t , t là biến ngẫu nhiên bình thường với giá trị trung bình là 0 và ma trận phương sai-hiệp phương sai

được cho bởi

1,5028 0,6218 0,2465


0,6218 0,6676 0,3601
0,2465 0,3601 0,2326 .

Tiếp theo, chúng tôi vẽ biểu đồ dữ liệu ước tính so sánh với dữ liệu mẫu. Vì chúng ta

có 3 biến nên chúng ta chọn Microsoft và vẽ biểu đồ trong Hình 3.7.

> lô (cổ phiếu. dữ liệu $ Microsoft, type = "l")> điểm

(cổ phiếu. dữ liệu $ Microsoft + cổ phiếu.var $ Residence [, 3])

Vì mẫu được đưa ra là dạng sai phân nên rất khó để đánh giá trực quan sự phù hợp là

tốt hay xấu (Hình 3.7). Do đó, chúng tôi thực hiện kiểm tra dư. Kết quả hạ thấp fol là của

thử nghiệm Jarque-Berra:

> jarque.bera.test (stock.var $ Residence [- (1: 9), 3])

Kiểm tra Jarque Bera

dữ liệu: stock.var $ Residence [- (1: 9), 3]

X bình phương = 1,0707, df = 2, p-value = 0,5855

Giá trị p không lớn và không thể bác bỏ giả thuyết "Phân phối chuẩn". Kết quả tiếp theo là

của bài kiểm tra Box-Ljung:


Machine Translated by Google

96 Lập trình R và các ứng dụng của nó trong Toán tài chính

Microsoft
của
Giá

0 10 20 30 40

chỉ số thời gian

Hình 3.7: Mẫu (đường liền nét) và các giá trị ước tính bằng VAR (điểm)

> Box.test (stock.var $ Residence [- (1: 9), 3], type = "Ljung")

Thử nghiệm Box-Ljung

dữ liệu: stock.var $ Residence [- (1: 9), 3]

X bình phương = 0,0031967, df = 1, p-value = 0,9549

Nó cũng cho thấy giá trị p lớn, 0,9549 và giả thuyết rỗng, "Chuỗi
không có tương quan tự động ”, không thể bác bỏ. Từ những kết quả này, chúng tôi xem xét
kiểm tra dư được thông qua và tiến hành dự báo.

> stock.pred.var <- dự đoán (stock.var, n.ahead = 10, se.fit = FALSE)

Cách sử dụng gần giống như trường hợp của AR. Sự khác biệt duy nhất là chúng tôi
cần chỉ định se.fit = FALSE trong hàm dự đoán (). Điều này là bởi vì
hàm dự đoán () không tương ứng với ước tính lỗi tiêu chuẩn trong
phân tích đa biến. Bằng cách vẽ biểu đồ đối tượng stock.pred.var, chúng ta có thể thấy
giá trị dự đoán của Google, Apple và Microsoft, đồng thời (Hình 3.8).

> plot (pred.cur.var, type = "l")

So sánh với dữ liệu thực, chúng tôi có thể xác nhận rằng các giá trị dự báo này
không vừa vặn. Vì mô hình VAR xử lý nhiều biến số kinh tế,
số lượng các tham số được ước tính là lớn. Do đó, có thể khó để có được một
kết quả tốt. Tuy nhiên, nói cách khác, sự phức tạp cho chúng ta cơ hội để cải thiện
mô hình; tức là, chúng tôi có thể tăng độ chính xác của mô hình VAR, mặc dù nó
yêu cầu chúng tôi tiến hành thử và sai. Ví dụ: chúng ta có thể thay thế chuỗi thời
gian của quốc gia combi (“Google”, “Apple”, “Microsoft”) thành (“Google”, “Yahoo”,
“Facebook”), có thể hạn chế một vài tham số về 0, có thể chuẩn hóa thời gian, v.v.
Nhiều thử nghiệm trong số này thường dựa trên kinh nghiệm của chúng tôi, không dựa trên
Machine Translated by Google

Phân tích chuỗi thời gian với R 97

stock.pred.var

Google

60
50
40
30
20
10

05

15
táo
Quả

25

Microsoft

1
2
3
4

42 44 46 48 50

chỉ số thời gian

Hình 3.8: Giá trị dự báo bằng mô hình VAR

lý thuyết.16 Tuy nhiên, có một lý do chính đáng để chúng tôi cố gắng sử dụng VAR, bởi vì

Mô hình VAR cho chúng ta thấy rõ ràng các mối quan hệ giữa các chuỗi thời gian khác nhau.

Ví dụ: chúng tôi có thể tính toán số lượng tác động của giá cổ phiếu Google đến

giá cổ phiếu khác của Apple và Microsoft.17

3.4.3 Mô hình GARCH


Cho đến nay, chúng tôi đã xem xét các phương pháp thống kê khác nhau bằng cách sử dụng R giả sử tuyến tính

Dữ liệu. Trong tiểu mục này, chúng tôi xem xét các trường hợp mà dữ liệu tài chính không

nhất thiết tuyến tính và hiển thị các phương pháp để đối phó với phi tuyến tính. Do đó, chúng tôi giới

thiệu mô hình GARCH không giả định tính tuyến tính của phần dư của các mô hình.

Phần còn lại trong mô hình chuỗi thời gian, như AR, ARMA, ARIMA và VAR,

đơn giản được coi là giá trị trung bình bằng 0 và phương sai không đổi. Tuy nhiên, thực

16 Lưu ý rằng chúng ta nên tin vào trực giác của mình. Ví dụ: chúng tôi đã nói rằng thứ tự của mô hình AR phải

không quá lớn. Điều này là do có vẻ không tự nhiên khi giá cổ phiếu hiện tại phụ thuộc vào giá cổ phiếu cũ.

Trong trường hợp của mô hình VAR, chúng tôi thường cố gắng giới thiệu nhiều loại dữ liệu; tức là giá cổ phiếu, GDP, lạm phát

tỷ lệ, v.v. Để sử dụng đồng thời các dữ liệu này, chúng tôi điều chỉnh dữ liệu giá cổ phiếu và GDP để thay đổi giá cổ phiếu

tỷ lệ và tốc độ tăng trưởng GDP, vì đơn vị dữ liệu nên trùng khớp với nhau. Để loại bỏ

các tính năng không tự nhiên, chúng ta nên làm bất cứ điều gì có thể. Ví dụ: nếu chúng tôi quyết định độ trễ thứ 3 là chấp nhận được

cấp độ của mô hình VAR, sau đó chúng tôi sẽ cố gắng ước tính mô hình với thứ tự độ trễ thứ nhất, thứ hai và thứ ba và

chọn một trong số chúng phù hợp với mẫu.

17 Tác động của một biến số lên các biến số khác được gọi là đáp ứng xung, dễ dàng tính được

bởi VAR. Thật vậy, gói vars giúp chúng ta có thể tính toán nó. Các độc giả quan tâm

trong đó, được khuyến khích để thử nó.


Machine Translated by Google

98 Lập trình R và các ứng dụng của nó trong Toán tài chính

dữ liệu tài chính cho thấy phần còn lại biến động. Theo đó, Engle [Eng82] đề
xuất mô hình được gọi là phương pháp thay đổi có điều kiện tự hồi quy (ARCH),
sau này được mở rộng thành phương sai thay đổi có điều kiện tự hồi quy tổng
quát (GARCH) [Bol86, Tay86].
Đặc biệt là xử lý dữ liệu tài chính, ARCH và GARCH đóng vai trò quan
trọng, bởi vì dữ liệu tài chính thường cho thấy hiện tượng được gọi là “đuôi
béo”, như được chỉ ra bởi [Man63] và [Fam65]. Tuy nhiên, “đuôi béo” không thể
được giải thích rõ bằng AR và VAR. Ở đây, đuôi béo là hiện tượng mà xác suất
của sự thay đổi cực kỳ lớn của giá lớn hơn xác suất được đưa ra bởi sự phân
bổ thông thường. Điều này ngụ ý rằng giả định về tính bình thường của giá cổ
phiếu có thể dẫn đến khoản lỗ cực kỳ lớn, do đánh giá thấp xác suất của khoản
lỗ lớn. Mặt khác, ARCH và GARCH cho thấy sự nhất quán đối với phần đuôi mỡ,
như được giải thích bên dưới. Do đó, chúng được coi là mô hình phù hợp với
thị trường tài chính thực tế (chúng tôi tham khảo [FY05] để thảo luận sau).
Quá trình ngẫu nhiên yt được gọi là ARCH, nếu yt là

yt = µ + ut , ut = p htνt , t = 1, ··· (3.3)


2 2
ht = ω + α1u t 1 + ··· + αmu t m, (3,4)

trong đó ω, α1, ···, αm là các hằng số dương, νt N (0,1), Var (νt , νs) = 0 với s 6 = t,

và m ≥ 1. Nếu Pm i = 1
αi <1 thì yt có điểm dừng (Định lý 1 của [Bol86]).
Để xác định thứ tự trễ, chúng tôi viết ARCH (m). Hãy để chúng tôi cho thấy khả năng

tồn tại của ARCH đối với đuôi béo. Lưu ý rằng kurtosis κν của νt được cho bởi]) 2 , chúng
4 2
κν = E [ν t ] / (E [νt tôi tính thời điểm thứ 4 của ut ;

4 2 4 2 2 2
EU t | ut 1, ··· , ut m] = ht E [ν t ] = κν giờt (E [ν t ]) 2 = κν (E [ut | ut 1, ··· , ut m]) 2 .

Dựa trên kỳ vọng của cả hai bên và sử dụng sự bất bình đẳng của Jensen, nó cho rằng

4 2 2 2
E [u t ] = κνE [(E [ut | ut 1, ··· , ut m]) 2 ] ≥ κν (E [E [u t | ut 1, ··· , ut m]]) 2 = κν (E [u t ] ) 2 .

Điều này ngụ ý rằng kurtosis của ut có thuộc tính sau:

4
EU t ]
≥ κν .
2
(E [u t ]) 2

Điều này cho thấy tính nhất quán của ARCH đối với đuôi béo.

Hãy để chúng tôi tiến hành GARCH. Các quy trình ngẫu nhiên yt được gọi là GARCH, nếu

nó được mô tả bằng

yt = µ + ut , ut = p htνt , (3.5)

2 αiu t i βjht j , (3.6)


ht = ω + Xm + Xr
i = 1 j = 1

trong đó ω, αi , βj là các hằng số dương, νt N (0,1) và Var (νt , νs) = 0 với s 6 = t.


Machine Translated by Google

Phân tích chuỗi thời gian với R 99

Để xác định thứ tự trễ, chúng tôi viết GARCH (m, r). Nếu Pm
i = 1 αi + Pr j = 1
βj
<1, GARCH cũng cho thấy tính đứng yên. Trong điều kiện này, giống như ARCH, GARCH
cũng thể hiện tính nhất quán đối với đuôi béo. Hơn nữa, đối với thứ tự nhỏ của m, r,
tính ổn định của GARCH được đảm bảo trong điều kiện thoải mái [Nel90]. Trong thực tế,
GARCH không yêu cầu thứ tự lớn để thể hiện sự phù hợp với dữ liệu thực.

Sử dụng R, chúng tôi áp dụng ARCH và GARCH cho chuỗi thời gian giá cổ phiếu Google
quay trở lại. Giới thiệu các gói tseries và fGarch, chúng tôi chạy tập lệnh sau.

> thư viện (tseries)>


thư viện (fGarch)

Chúng tôi nhận được giá cổ phiếu của Google bằng

> google <- get.hist.quote (tools = "GOOGL", start = "2014-6-9", + end = "2017-3-1",
quote = "Close", provider = c ("yahoo" ), nén = "d")> google <-data.frame (google)> google <-
ts (google)> google.d <-diff (log (google))

Dữ liệu từ ngày 9 tháng 6 năm 2014 đến ngày 28 tháng 2 năm 2017 được sử dụng tại đây. Chúng tôi

cố gắng áp dụng ARMA (1,1) -GARCH (1,1) cho dữ liệu này bằng cách sử dụng hàm garchFit ();

> google.fit <-garchFit (công thức = ~ arma (1,1) + garch (1,1), + data =
google.d, include.mean = TRUE)

Ở đây chúng tôi chỉ định mô hình bằng ~ arma (1,1) + garch (1,1). Nếu chúng ta đặt ~
garch (m, 0), mô hình ARCH (m) sẽ được áp dụng. Chúng ta có thể chọn xem µ có được
đưa vào mô hình hay không bằng tùy chọn include.mean, µ được đưa vào bằng cách chọn
TRUE và không được đưa vào FALSE.
Chúng ta có thể kiểm tra tóm tắt bằng cách tóm tắt ();

> tóm tắt (google.fit)

Tiêu đề:

Tạo mô hình GARCH

Gọi:

garchFit (công thức = ~ arma (1, 1) + garch (1, 1), data =


google.d, include.mean = TRUE)

Phương trình trung bình và phương


sai: data ~ arma (1, 1) + garch (1, 1) <môi
trường: 0x00000000066a1670>

[data = google.d]
Machine Translated by Google

Lập trình 100 R và các ứng dụng của nó trong Toán tài chính

Phân phối có điều kiện:

định mức

(Các) hệ số:
mu ar1 ma1 omega alpha1
1.1134e-04 7.9420e-01 -8.4532e-01 3.7289e-05 2.8883e-01
beta1
5.6804e-01

Std. Các lỗi:


dựa trên Hessian

Phân tích lỗi:


Ước tính Std. Lỗi t giá trị Pr (> | t |)
mu 1.113e-04 8.420e-05 1.322 0.18608
ar1 7.942e-01 7.550e-02 10.519 <2e-16 ***
ma1 -8.453e-01 6.630e-02 -12.750 <2e-16 ***

omega 3.729e-05 1.290e-05 alpha1 2,890 0,00386 **

2.888e-01 5.989e-02 beta1 5.680e-01 4,823 1,42e-06 ***


9.325e-02 6,091 1,12e-09 ***
---

Dấu hiệu. mã: 0 *** 0,001 ** 0,01 * 0,05. 0,1 1

Khả năng ghi nhật ký:


1984.317 chuẩn hóa: 2.89259

Sự miêu tả:
Thứ Hai, 20 tháng 3, 11:21:30, 2017 bởi người dùng: đường

Kiểm tra dư lượng tiêu chuẩn:

Giá trị p thống kê


Thử nghiệm Jarque-Bera R Chi ^ 2 672.2663 0

Kiểm tra Shapiro-Wilk R W 0,9580653 4,392398e-13

Kiểm tra hộp Ljung R Q (10) 9,965413 0,443533

Kiểm tra hộp Ljung R Q (15) 12.01441 0,6779382

Kiểm tra hộp Ljung R Q (20) 21.57816 0.3638321

Kiểm tra hộp Ljung R ^ 2 Q (10) 3.827194 0.954806

Kiểm tra hộp Ljung R ^ 2 Q (15) 5,429521 0,9878227

Kiểm tra hộp Ljung R ^ 2 Q (20) 18,27255 0,5694595


Kiểm tra vòm LM R TR ^ 2 4,093152 0,9816962
Machine Translated by Google

Phân tích chuỗi thời gian với R 101

Thống kê Tiêu chí Thông tin:

AIC BIC SIC HQIC


-5.767687 -5.728058 -5.767838 -5.752354

Trong (các) Hệ số, mu, omega, alpha1 và beta1 tương ứng với µ, ω, α1 và β1 trong mô

hình GARCH tương ứng. Chúng tôi cũng có thể kiểm tra lỗi chuẩn, thống kê t và giá trị p

cũng như giá trị ước tính trong Phân tích lỗi.

Chúng ta cũng có thể vẽ 13 loại biểu đồ bằng cách sử dụng plot () và chọn một số bên dưới;

> âm mưu (google.fit)

Thực hiện lựa chọn cốt truyện (hoặc 0 để thoát):

1: Chuỗi thời gian

2: SD có điều kiện

3: Sê-ri có 2 SD có điều kiện được chồng lên nhau


4: ACF của các quan sát

5: ACF của các quan sát bình phương


6: Tương quan chéo

7: Phần dư

8: SD có điều kiện

9: Phần dư tiêu chuẩn hóa

10: ACF của phần dư tiêu chuẩn hóa

11: ACF của phần dư chuẩn hóa bình phương


12: Tương quan chéo giữa r ^ 2 và r

13: QQ-Lô phần dư tiêu chuẩn hóa

Lựa chọn:

Nhập một mục từ menu hoặc 0 để thoát

Hoặc sử dụng tùy chọn mà =, ví dụ, mà = 3 hiển thị Sê-ri có 2 SD có điều kiện được
xếp chồng lên nhau (xem Hình 3.9)

> plot (google.fit, which = 3)

Để trích xuất phần dư, giá trị được trang bị và biểu thức công thức từ đối tượng
fGARCH được trang bị, chúng ta có thể sử dụng @residuals, @fitted và @formula tương ứng.
Giá trị được trang bị được vẽ trong Hình 3.10 bằng

> âm mưu (google.fit @ fit, type = "l")


Machine Translated by Google

102 R Lập trình và các ứng dụng của nó trong toán học tài chính

Sê-ri có 2 SD có điều kiện được chồng lên nhau

0,15

0,10

x 0,05

0,00

0,05

0 100 200 300 400 500 600 700

Mục lục

Hình 3.9: Chuỗi có 2 SD có điều kiện được chồng lên nhau bằng ứng dụng GARCH

mô hình cho giá cổ phiếu của Google

0,005

0,000

google.fit@fitted

0,005

0.010

0 100 200 300 400 500 600 700

Mục lục

Hình 3.10: Giá trị trang bị cho giá cổ phiếu của Google dựa trên mô hình GARCH

Để dự đoán âm mưu;

> dự đoán (google.fit, n.ahead = 10, plot = TRUE, crit_val = 2)


meanForecast meanError standard
1 0,0006541419 0,009957731 2 0,009957731 -0,01926132
0,0006308625 0,011068579 0,011056869 -0,02150629
3 0,0006123740 0,011938565 4 0,011918326 -0,02326476
0,0005976902 0,012636520 0,012609756 -0,02467535
5 0,0005860284 0,013205293 0,013173387 -0,02582456
6 0,0005767664 0,013673870 0,013637831 -0,02677097
7 0,0005694106 0,014062978 0,014023572 -0,02755655
8 0,0005635685 0,014388034 0,014345855 -0,02821250
9 0,0005589287 0,014660838 0,014616361 -0,02876275
Machine Translated by Google

Phân tích chuỗi thời gian với R 103

10 0,0005552438 0,014890624 0,014844230 -0,02922600

upperInterval
1 0,02056960
2 0,02276802
3 0,02448950
4 0,02587073
5 0,02699661
6 0,02792451
7 0,02869537
số 8 0,02933964
9 0,02988060
10 0,03033649

Xem Hình 3.11 là dự đoán của mô hình GARCH.

Dự đoán với khoảng tin cậy

0,02

x 0,00

^
0,02

X t + h
^
X t + h - 2 MSE
^
0,04
X t + h + 2 MSE

0 50 100 150

Mục lục

Hình 3.11: Các giá trị dự đoán dựa trên mô hình GARCH

3.4.4 Đồng liên kết

Chúng tôi sẽ kết thúc phần này với việc giải thích sự đồng liên kết [CS87, EG87]. Cointe gration

bản thân nó không phải là một mô hình, mà là một khái niệm quan trọng liên quan đến tính ổn định.

Điều này cũng yêu cầu nhiều chuỗi thời gian, tương tự như VAR. Vì vậy, chúng tôi lấy nó ở đây.

Nhiều mô hình chuỗi thời gian được xây dựng với giả định là sự cố định.
Do đó, chúng ta cần kiểm tra tính ổn định của chuỗi thời gian trước khi áp dụng các mô hình cho

dữ liệu chuỗi thời gian. Nếu dữ liệu không vượt qua kiểm tra tính ổn định, chúng tôi cần xử lý

dữ liệu để có tính ổn định. Thao tác phổ biến nhất là mất thời gian
sự khác biệt của dữ liệu; tức là, yt = yt - yt 1. Không tính chênh lệch về thời
gian, đồng liên kết yêu cầu chênh lệch giữa hai chuỗi thời gian. Nếu thời gian khác biệt
của một chuỗi thời gian cho thấy tính ổn định, đây được gọi là quá trình tích hợp bậc nhất.
Machine Translated by Google

104 Lập trình R và các ứng dụng của nó trong Toán tài chính

Hơn nữa, nếu sự khác biệt giữa hai quá trình tích hợp cho thấy sự ổn định, thì đây được

gọi là các quá trình đồng liên kết. Hãy xem xét hai chuỗi thời gian, {yt ; t = 1, ···, T}

và {zt ; t = 1, ···, T}. Giả sử rằng cả hai đều là thuế chuyên nghiệp tích hợp bậc nhất.
Đối với một hằng số, α, chúng tôi xác định

xt = yt αzt . (3,7)

Nếu chuỗi thời gian {xt ; t = 1, ···, T} là cố định, nó được gọi là quy trình chuyên
nghiệp đồng liên kết.18 Mẫu của chúng tôi, Google, Apple và Microsoft đều là các quy trình

tích hợp (chúng không cố định, nhưng dữ liệu chênh lệch thời gian là cố định). Vì vậy,

hãy để chúng tôi kiểm tra sự đồng liên kết giữa Google và Apple. Thử nghiệm đồng liên kết

nổi tiếng là thử nghiệm Phillips-Ouliaris [PO90] và thử nghiệm Johansen [Joh88, Joh91]. R

được trang bị cho cả hai. Tuy nhiên, nếu chúng ta thực hiện kiểm tra Johansen, chúng ta
cần giới thiệu gói urca (urca là gói cho kiểm tra gốc đơn vị và kiểm tra đồng liên kết.

Đối với kiểm tra đồng liên kết, chúng ta nên gọi hàm ca.jo ()). Kiểm tra Phillips-Ouliaris

hiện đã có sẵn cho chúng tôi, vì hàm po.test () được bao gồm trong gói tseries mà chúng

tôi đã cài đặt. Vì vậy, chúng tôi sử dụng nó, ở đây. Hãy để chúng tôi kiểm tra sự đồng

liên kết giữa Google và Apple.

> po.test (data.frame (google, apple))

Kiểm tra đồng liên kết Phillips-Ouliaris

data: data.frame (google, apple)

Phillips-Ouliaris demeaned = -7.2257, tham số độ trễ cắt ngắn = 0, p-value =

0.15

Thông báo cảnh báo:

Trong po.test (data.frame (google, apple)): giá trị p lớn

hơn giá trị p được in

Giả thuyết vô hiệu của phép thử Phillips-Ouliaris là “Chuỗi thời gian không có liên kết

đồng liên kết”. Kết quả thử nghiệm trên cho thấy giá trị p là 0,15. Hơn nữa, thông báo

cảnh báo xuất hiện trên giá trị p lớn hơn. Do đó, chúng tôi không bác bỏ giả thuyết vô

hiệu, tức là không tồn tại sự đồng liên kết giữa Google và Apple.

Thật không may, đối với sự kết hợp khác (Google, Microsoft) và (Apple, Mi crosoft),

chúng tôi không thể tìm thấy sự đồng liên kết.

Để đưa ra một ví dụ về sự đồng liên kết, chúng tôi sử dụng kết hợp các cổ phiếu từ sàn

giao dịch chứng khoán Tokyo. Một trong số đó là Kozosushi, là chuỗi nhà hàng Sushi có mã
mã 9973. Người còn lại là Renesas Easton, công ty sản xuất chất bán dẫn có mã mã 9995. Vì

chúng tôi không thể trích xuất

18Khi quá trình xt xác định sao cho xt = yt - αzt - β là đứng yên đối với các hằng số α và β, chúng ta cũng
gọi yt và zt có đồng liên kết.
Machine Translated by Google

Phân tích chuỗi thời gian với R 105

dữ liệu giá cổ phiếu của chúng bằng cách sử dụng hàm get.hist.quote (), chúng ta sử dụng

hàm getSymbols.yahooj () có trong gói quantmod.

> thư viện (quantmod)> thư

viện (XML)

> start.date <- "2015-04-26"

> end.date <- "2015-08-17"


>

> Symbol <-c ('9973.T', '9995.T')> data <-


list (0)> for (i in 1: length (Symbol)) {+

data [[i]] <- getSymbols. yahooj (ký hiệu

[i], src = "yahooj", + auto.assign = FALSE, from = start.date, to = end.date) [,

6] +}> price <-data.frame (data)> colnames (giá) <- ký hiệu

Ở đây, chúng tôi trích xuất dữ liệu giá cổ phiếu từ ngày 26 tháng 4 năm 2015 đến ngày 17 tháng 8 năm 2015.

Sau đó, chúng ta có thể thấy kết quả như sau:

> po.test (giá)

Kiểm tra đồng liên kết Phillips-Ouliaris

dữ liệu: price

Phillips-Ouliaris demeaned = -26,834, tham số độ trễ cắt ngắn = 0, p-value =

0,01494

Giá trị p là 0,01494. Sau đó, chúng ta có thể bác bỏ giả thuyết vô hiệu và cuối cùng chúng

ta tìm thấy sự đồng liên kết giữa 2 cổ phiếu.

Ở đây, chúng tôi hiển thị hai chuỗi thời gian của Kozosushi và Renesas trong Hình 3.12.

Các biến động của giá cổ phiếu này dường như không có liên quan. Người đọc có thể nghi

ngờ rằng chúng là các quá trình đồng liên kết. Tuy nhiên, thống kê nói rằng có những mối

quan hệ đồng liên kết chặt chẽ. Do đó, chúng tôi tiếp tục ủng hộ việc phân tích chuỗi thời

gian kết hợp với các chuỗi này. Chính xác hơn, chúng tôi xây dựng loạt bài sau,

xt = yt 0.028zt , (3,8)

trong đó yt là chuỗi thời gian của Kozosushi và zt là của Renesas. Hằng số 0.028 được

tính bằng hồi quy tuyến tính của y trên z.

Ở đây, chúng ta có thể thấy chuỗi thời gian được mô tả là (3.8) vòng quanh đường thẳng,

91.2 trong Hình 3.13. Điều này ngụ ý rằng chuỗi thời gian có độ ổn định với trung bình là
91,2.
Machine Translated by Google

106 Lập trình R và các ứng dụng của nó trong Toán tài chính

114

640

112

620

110

giá giá
600

108

580

106

560

104

Có thể Tháng sáu Thg 7 Tháng 8 Có thể Tháng sáu Thg 7 Tháng 8

Kozosushi (9973) Renesas (9995)

Hình 3.12: Chuỗi thời gian của Kozosushi (trái) và Renesas (phải)

120

110

100

danh
đầu
mục
trị
giá

90
80
70

60

Tháng chín
Tháng mười một Tháng một Mar Có thể Thg 7

thời gian

Hình 3.13: Chuỗi thời gian kết hợp giữa Kozosushi và Renesas.

Đặc điểm thú vị này cũng ngụ ý rằng chúng ta khó có thể tìm ra mối liên hệ giữa các cổ

phiếu có sự đồng liên kết chỉ bằng trực giác của chúng ta. Thật vậy, làm thế nào để
chúng tôi tìm thấy sự liên quan giữa nhà hàng sushi và sản xuất chất bán dẫn?

Các biểu đồ thể hiện trong Hình 3.12 không cho thấy bất kỳ mối quan hệ trực quan nào giữa

những cổ phiếu này. Tuy nhiên, số liệu thống kê cho thấy các mối quan hệ và thực sự chúng ta

có thể xác nhận nó như trong Hình 3.13. Đây là tính năng thú vị của thống kê.
Machine Translated by Google

Phân tích chuỗi thời gian với R 107

3.5 Ứng dụng của phân tích chuỗi thời gian vào tài chính:
Giao dịch theo cặp

Chúng tôi có nhiều ứng dụng của phân tích chuỗi thời gian cho tài chính. Ở đây, chúng tôi

thảo luận về phương pháp giao dịch theo cặp, một trong những ứng dụng của ysis hậu môn chuỗi

thời gian cho tài chính. Giao dịch theo cặp là một phương pháp được phát triển bởi nhóm giao

dịch do Nunzio Tartaglia quản lý tại Morgan Stanley.

Thông thường, chúng tôi xem xét liệu chuỗi thời gian tài chính (hoặc sự kết hợp của chúng)
19
có xu hướng mạnh hay có nghĩa là quay trở lại. Nếu sự hoàn nguyên trung bình được quan

sát thấy, chính xác hơn, nếu sự khác biệt hoặc tỷ lệ của 2 quá trình giá cổ phiếu hội tụ thành

một giá trị, thì đó là cơ hội để giao dịch theo cặp . tính ổn định mà chúng ta đã thảo luận

kỹ lưỡng trong chương này. Đối với bài kiểm tra khẩn cấp, mô hình AR yt = c + a1yt 1 +

εt có giá trị trung bình đảo ngược thành giá trị, µ = c / (1 a1), trong đó chúng ta giả sử

| a1 | <1 đảm bảo tính ổn định của chuỗi thời gian. Thật vậy, bởi µ, mô hình AR được viết lại

thành

yt - µ = a1 (yt 1 - µ) + εt .

Như phương trình này cho thấy, quá trình tĩnh ngụ ý sự tồn tại của sự đảo ngược giá trị trung

bình. Giao dịch theo cặp là một phương pháp sử dụng tính ổn định của quá trình đồng liên kết.

Xét 2 quá trình không đứng yên yt , zt . Nếu sự kết hợp của các quá trình này có sự

đồng liên kết, thì tồn tại một hằng số α sao cho quá trình xt được xác định bởi

xt = yt αzt

đang đứng yên. Tại thời điểm đó, quá trình xt có nghĩa là hoàn nguyên. Trong thực tế, cơ

quan đầu tư ấn định vị thế bằng cách mua (hoặc bán khống) một đơn vị yt và bán khống (hoặc

mua) α đơn vị zt , khi xt lệch khỏi giá trị trung


xt hộibình.
tụ vềSau
giáđó,
trịbằng
trung
cách
bình,
thanh
nhàlýđầu
vị tư
trícókhi

thể kiếm lời. Quy tắc giao dịch này là bản chất của giao dịch theo cặp.

Giao dịch theo cặp đơn giản như vậy trông đẹp và dễ dàng. Tuy nhiên, để sử dụng thực tế

giao dịch theo cặp, chúng ta có hai vấn đề. Đầu tiên là sự đảo ngược trung bình; tức là, làm

thế nào để chúng ta suy ra nơi giá trị của cặp sẽ hội tụ? Câu trả lời đơn giản là áp dụng

phân tích hồi quy cho chuỗi thời gian của xt . Tuy nhiên, chúng tôi có một số lựa chọn thay

thế: tức là, ứng dụng bộ lọc Kalman cho các quy trình ngẫu nhiên, như các quy trình Ornstein-

Uhlenbeck cũng đang hoàn nguyên (xem

19 Chính sách giao dịch thường phụ thuộc vào niềm tin của nhà đầu tư: Liệu tài sản có xu hướng mạnh hay có nghĩa là

đang quay đầu? Tất nhiên, có những tiêu chí khác về chính sách giao dịch. Ví dụ, chúng ta nên xem xét liệu nền kinh tế

có đang suy thoái hay không, mức độ biến động thấp hay cao, v.v. Đặc biệt, người ta thường cho rằng sự biến động vận

động phản ánh tính khuôn khổ của nền kinh tế. Vì vậy, chúng ta phải chú ý đến nó.

20Chúng tôi có phiên bản mở rộng của giao dịch theo cặp, được gọi là chênh lệch giá thống kê. Phương pháp này đã được

cũng được phát triển hoạt hình, ví dụ, xem [AL10].


Machine Translated by Google

108 Lập trình R và các ứng dụng của nó trong Toán tài chính

[EVDHM05, LLW13]). Vấn đề thứ hai là làm thế nào để tìm điểm vào và điểm ra của các cặp
giao dịch. Ngay cả khi thời gian thoát được đặt khi giá trị của cặp giao dịch này chạm
mức trung bình, chúng tôi không chắc chắn về thời gian để tham gia giao dịch theo cặp.
Nếu chúng ta có thể tìm thấy điểm mà khoảng cách giữa giá trị hiện tại của cặp và giá
trị trung bình của cặp là xa nhất, thì đó có thể là thời điểm tốt để tham gia giao dịch theo cặp.
Tuy nhiên, nó không hề tầm thường. Việc áp dụng phương pháp dừng tối ưu có thể là một
ứng cử viên sáng giá cho vấn đề này (xem [ELT11, Yos17]).
Machine Translated by Google

Mục II

LÝ THUYẾT CƠ BẢN

CỦA TÀI CHÍNH


Machine Translated by Google
Machine Translated by Google

Chương 4

Lý thuyết danh mục đầu tư hiện đại


và CAPM

NỘI DUNG

4.1 Danh mục đầu tư phương sai trung bình ........................................... 113

4.2 Danh mục thị trường ................................................... .... 117

4.3 Nguồn gốc của CAPM .............................................. . 120

4.4 Sự mở rộng của CAPM: Mô hình đa nhân tố ......................... 121

4.4.1 Lý thuyết định giá kinh doanh chênh lệch giá .................................. 121

4.4.2 Mô hình 3 nhân tố của Fama-French ............................. 125

4.5 Hình thức của biên giới hiệu quả .................................... 125

Hãy để chúng tôi xem xét tình huống mà chúng tôi có 1 triệu đô la và dự định mua

cổ phiếu bằng cách sử dụng một số tiền lớn như vậy. Chúng tôi chỉ mua một cổ phiếu?

Có lẽ là không, vì cổ phiếu thường được coi là tài sản rủi ro và giá

của cổ phiếu không được đảm bảo sẽ tăng. Chúng tôi có thể mất tất cả khoản đầu tư của mình nếu

cổ phiếu bị phá sản. Thay vào đó, chúng tôi sẽ mua nhiều loại cổ phiếu khác nhau để tránh

nồng độ rủi ro. Hãy xem xét các cổ phiếu mà chúng tôi sẽ mua, chẳng hạn như

Google, Apple và Microsoft, với số lượng cổ phiếu tương ứng (3,5,1). Các

sự kết hợp của các cổ phiếu, nơi chúng tôi đặt (3,5,1), được gọi là danh mục đầu tư. Vấn đề là

làm thế nào để xác định cổ phiếu mà chúng ta nên mua và tỷ lệ giữ

với ngân sách của chúng tôi. Lý thuyết danh mục đầu tư cung cấp cho chúng ta một số giải pháp cho vấn đề này.

Trong chương này, chúng tôi xem xét Lý thuyết Danh mục Đầu tư Hiện đại đã được phát triển

của Harry M. Markowitz [Mar52]. Để làm rõ vấn đề danh mục đầu tư, lý thuyết port folio hiện

đại giả định rằng biến động giá của các tài sản rủi ro là biến động ngẫu nhiên

111
Machine Translated by Google

112 Lập trình R và các ứng dụng của nó trong Toán tài chính

ables, giá trị kỳ vọng của chúng là "lợi nhuận" và phương sai là "rủi ro". Lý thuyết tán lá

cảng hiện đại mang lại nhiều kết quả tốt đẹp; đại diện một Mô hình Định giá Tài sản Vốn (CAPM)

được phát triển bởi John Lintner [Lin65b, Lin65a], William F.

Sharp [Sha64] và Jan Mossin [Mos66] .1 CAPM hiện là một khái niệm cơ bản được sử dụng rộng rãi

để giao dịch trên thị trường chứng khoán. Hơn nữa, các gies chiến lược giao dịch thường được sử

dụng, như giao dịch theo cặp, có thể liên quan trở lại đến CAPM.

CAPM giả định mối quan hệ giữa lợi nhuận của mỗi cổ phiếu và lợi nhuận
của thị trường chứng khoán như vậy

E [Ri ] = Rf + β (E [RM] Rf),

trong đó Ri , Rf , RM lần lượt là lợi nhuận của từng tài sản i, tài sản an toàn và danh mục đầu

tư thị trường. E là toán tử kỳ vọng và β là hằng số.

Một số độc giả có thể không quen với thuật ngữ 'danh mục đầu tư thị trường'. Đây là một

danh mục đầu tư giả định bao gồm tất cả các tên (cổ phiếu) trên thị trường chứng khoán.

Ví dụ, trên sàn giao dịch chứng khoán Tokyo, nhiều cổ phiếu được giao dịch, chẳng hạn như

Toyota, Nissan, Sony, v.v. Nếu tổng giá trị của tất cả các cổ phiếu này được cộng lại (tức là

giá hiện tại nhân với tổng số cổ phiếu đang lưu hành), điều này sẽ cộng lại cho toàn bộ giá trị

của sàn giao dịch chứng khoán Tokyo (còn được gọi là vốn hóa thị trường). Danh mục đầu tư có

giá trị tỷ lệ với vốn hóa thị trường của sàn giao dịch chứng khoán Tokyo, được gọi là 'danh mục

đầu tư thị trường'. Lợi nhuận của danh mục đầu tư thị trường, RM, được tính bằng lợi nhuận của

vốn hóa thị trường của chính thị trường chứng khoán. Tài sản an toàn là tài sản tạo ra lợi nhuận

đảm bảo trong tương lai; ví dụ, trái phiếu chính phủ hoặc tiền mặt gửi trong tài khoản ngân

hàng.2 Lợi tức của tài sản an toàn, Rf , có thể được coi là lãi suất (lợi tức) của trái phiếu

chính phủ hoặc lãi suất mà người ta có thể kiếm được khi gửi tiền vào tài khoản ngân hàng.

Công thức của CAPM ngụ ý rằng lợi nhuận của mỗi cổ phiếu, như Toyota, Google, v.v., được

tính tuyến tính từ lợi nhuận của từng danh mục thị trường tương ứng, ví dụ: sàn giao dịch chứng

khoán Tokyo hoặc NASDAQ. Lợi tức của mỗi cổ phiếu thường khác nhau. Những khác biệt này được

biểu thị bằng các giá trị khác nhau của β. Ví dụ, nếu β là 0, lợi tức của cổ phiếu giống như

lợi nhuận của tài sản an toàn. Nếu β là 1, lợi tức của cổ phiếu giống như lợi nhuận của danh

mục thị trường. Mua cổ phiếu với β lớn hơn 1 có nghĩa là cố gắng tạo ra lợi nhuận lớn hơn với

rủi ro cao hơn danh mục đầu tư thị trường. Để tạo ra lợi nhuận nhỏ hơn với ít rủi ro hơn danh

mục thị trường, nhà đầu tư nên mua các cổ phiếu có β nhỏ hơn 1. Lợi tức của một cổ phiếu có β

lớn sẽ có độ nhạy lớn đối với các biến động nhỏ của danh mục thị trường. Do đó, vấn đề chính

trong CAPM là xác định các giá trị của β. Tóm lại, nếu chúng ta biết β của từng cổ phiếu, chúng

ta có thể dễ dàng quyết định chọn cổ phiếu nào dựa trên quan điểm giao dịch của chúng ta (tăng

hay giảm dựa trên hoạt động của thị trường).

1Fischer Black [Bla72] cũng đã phát triển CAPM mà không có tài sản an toàn.

2Tuy nhiên, những tài sản đó cũng bao gồm rủi ro vì chính phủ hoặc ngân hàng có khả năng vỡ nợ, Theo nghĩa này,

lợi nhuận không được đảm bảo. Tuy nhiên, để đơn giản, chúng tôi giả định rằng tồn tại các tài sản an toàn với lợi tức

đảm bảo (và không biến động).


Machine Translated by Google

Lý thuyết danh mục đầu tư hiện đại và CAPM 113

Hãy để chúng tôi tính toán một ví dụ. Giả sử β của Google là 1,5, tỷ suất sinh lợi của tài sản

an toàn là 0,1% và tỷ suất lợi nhuận của danh mục đầu tư thị trường là 2%. Sau đó, lợi nhuận của

Google có thể được tính bằng CAPM như sau,

> 0,1 + 1,5 * (2-0,1) [1]

2,95

Kết quả này cho thấy lợi nhuận của Google dự kiến là 2,95%. Cấu trúc đơn giản
này của CAPM là một trong những đặc điểm hấp dẫn của lý thuyết này.

4.1 Danh mục đầu tư có phương sai Lý tưởng

nhất là chúng ta muốn chọn những cổ phiếu tốt trong danh mục đầu tư của mình để mang
lại lợi nhuận cao với rủi ro thấp. Ở đây, 'rủi ro' có nghĩa là lợi tức riêng lẻ của
một cổ phiếu cụ thể lệch bao nhiêu so với lợi tức trung bình của nó. Điều này thường
được xác định bằng sai số tiêu chuẩn, được gọi là sự biến động trong bối cảnh tài chính.

Vấn đề là cổ phiếu có thể mang lại cho chúng ta lợi nhuận cao thường có độ biến
động cao hoặc rủi ro. Mặt khác, cổ phiếu có độ biến động thấp thường chỉ tạo ra lợi
nhuận thấp. Như vậy, để có lợi nhuận cao, chúng ta phải chấp nhận rủi ro cao.
Tuy nhiên, việc xây dựng một danh mục đầu tư thích hợp có thể cho chúng ta cơ hội
để kiếm lợi nhuận lớn hơn với ít rủi ro hơn so với giao dịch một cổ phiếu. Đây là một
ý tưởng cơ bản của lý thuyết danh mục đầu tư hiện đại. Vấn đề quan trọng là làm thế nào
để tính toán trọng lượng của các tài sản trong danh mục tạo ra lợi nhuận cao hơn với ít
biến động hơn so với các cổ phiếu riêng lẻ.
Ở đây, chúng ta xem xét danh mục đầu tư tài sản 1 và tài sản 2: Cho tỷ suất sinh lợi của tài sản

1 là R1, tỷ suất sinh lợi của tài sản 2 là R2, trọng lượng của tài sản 1 trong danh mục đầu tư là t

và tỷ trọng của tài sản 2 là 1 t. Các giá trị kỳ vọng của mỗi nội dung được cho bởi µ1, µ2 và độ

bay hơi của chúng là σ1, σ2. Lợi nhuận của danh mục đầu tư được đưa ra bởi

tR1 + (1 t) R2.

Do đó, giá trị kỳ vọng của danh mục đầu tư µp được đưa ra bởi

µp = tE [R1] + (1 t) E [R2] = tµ1 + (1 t) µ2. (4,1)

2
Phương sai của danh mục đầu tư σ được đưa ra bởi
P

= t 2σ 2 + (1 t) 2σ 2 2 + 2t (1 (4,2)
2 σ
1 t) σ1,2,
p

trong đó chúng tôi đã sử dụng hiệp phương sai σ1,2 : = (E [R1R2] - E [R1] E [R2]). Hiệp phương sai

càng lớn thì R1 E [R1] càng lớn vì R2 E [R2] > 0 đã cho.

Bây giờ, chúng ta sẽ quan sát mối quan hệ giữa µp và σp bằng cách sử dụng ví dụ fol lowing. Cho

µ1 = 0,1, µ2 = 0,05, σ1 = 0,2 và σ2 = 0,1. Trong Hình 4.1, chúng tôi mô tả µp trên trục tung và σp

trên trục hoành cho ba trường hợp hiệp phương sai; tức là, σ1,2 bằng 0,015, 0 và 0,015. Chính xác

hơn, bởi
Machine Translated by Google

114 Lập trình R và các ứng dụng của nó trong Toán tài chính

xây dựng danh mục đầu tư với nhiều tỷ lệ khác nhau của ba cổ phiếu này, danh mục đầu tư thực

hiện nhiều phương tiện và biến động khác nhau. "Khu vực khả thi" mô tả các quốc gia combi
về phương tiện và sự bay bổng.

> # chuỗi từ -0,5 đến 1,5 theo gia số 0,05> t <- seq (-0,5,1,5, x = 0,05)>

mu_1 <- 0,1 # lợi tức trung bình của tài sản 1> mu_2 <- 0,05 # lợi tức trung
bình của tài sản 2> sigma_1 <- 0.2 # biến động của tài sản 1> sigma_2 <- 0.1

# biến động của tài sản 2> cov1 <- -0.015 # hiệp phương sai giữa tài sản 1

và tài sản 2

> cov2 <- 0

> cov3 <- 0,015

> # chuỗi lợi nhuận trung bình của danh mục đầu tư> mu_p <- t *

mu_1 + (1-t) * mu_2> # chuỗi biến động của danh mục đầu tư> sigma1_p

<- sqrt (t ^ 2 * sigma_1 ^ 2 + (1-t) ^ 2 * sigma_2 ^ 2 + 2 * t * +

(1-t) * cov1)> sigma2_p <- sqrt (t ^ 2 * sigma_1 ^ 2 + (1-t) ^ 2 * sigma_2 ^ 2 + 2


* t * + (1-t) * cov2)> sigma3_p <- sqrt (t ^ 2 * sigma_1 ^ 2 + (1-t) ^ 2 * sigma_2

^ 2 + 2 * t * + (1-t) * cov3)> âm mưu (sigma1_p, mu_p, xlim = c (0.03.0.25), ylim


= c (0.04.0.11), + xlab = "sigma_p")> điểm (sigma2_p, mu_p, pch = 2)> điểm

(sigma3_p, mu_p, pch = 3)> # để thêm chú giải> chú thích (0,05,0.11, chú giải = c
("cov <0", "cov = 0", "cov> 0"), + pch = c (1,2,3))

Trong Hình 4.1, chúng ta có thể quan sát rằng danh mục đầu tư có hiệp phương sai -0,15

có thể tạo ra lợi tức lớn nhất cho một mức biến động thấp nhất định (chính xác hơn là trong

khoảng 0 <t <1). Điều này là do hiệp phương sai âm ngụ ý rằng một tài sản hoạt động như một

mạng lưới an toàn (hoặc 'phòng hộ') cho sự sụt giảm giá của một tài sản khác. Đây được gọi

là hiệu ứng danh mục đầu tư, hay hiệu ứng đa dạng hóa.
Xa hơn, chúng ta tiếp tục với trường hợp của 3 tài sản. Gọi trọng số của các tài sản
trong danh mục đầu tư là t, s và 1 t s. Sau đó, lợi nhuận kỳ vọng của danh mục đầu tư
µp và sự biến động của danh mục đầu tư σp có thể được viết như sau,

µp = tµ1 + sµ2 + (1 t s) µ3 (4.3)


2 2 2 2 2 1 + s σ = t σ 2 2 σ
σ p 2 + (1 t s) 3 + 2tsσ1,2 + 2t (1 t s) σ1,3 + 2s (1 t s) σ2,3 (4,4)
Machine Translated by Google

Lý thuyết danh mục đầu tư hiện đại và CAPM 115

mu_p cov <0


cov = 0
cov> 0

0,11
0,10
0,09
0,08
0,07
0,06
0,05
0,04

0,05 0,10 0,15 0,20 0,25

sigma_p

0,14 0,14

Hình 4.1: Khu vực khả thi của danh mục đầu tư

0,12 0,12

0,10 0,10
mu_p mu_p

0,08 0,08

0,06 0,06

0,00 0,05 0,10 0,15 0,20 0,25 0,30 0,00 0,05 0,10 0,15 0,20 0,25 0,30

sigma_p sigma_p

Hình 4.2: Khu vực khả thi của 3 danh mục tài sản (trái) và khu vực khả thi khi bán khống (phải)

Chúng tôi mô tả khu vực khả thi của lợi tức danh mục đầu tư và sự biến động trong bảng điều khiển bên trái

của Hình 4.2 bằng cách sử dụng ví dụ sau; µ1 = 0,1, µ2 = 0,05, µ3 = 0,15,
σ1 = 0,2, σ2 = 0,1, σ3 = 0,3, σ1,2 = 0,015, σ13 = 0,01 và σ2,3 = 0,02. Bằng
xây dựng danh mục đầu tư với tỷ lệ khác nhau của ba cổ phiếu này, danh mục đầu tư
hiệu suất sẽ có lợi nhuận và độ bay trung bình khác nhau tương ứng. Các
"Khu vực khả thi" mô tả sự kết hợp có thể có của lợi nhuận trung bình và độ bay hơi.

> # dãy s, t với 101 điểm


> mu_p <- rep (0,101 * 101)
> var_p <- rep (0,101 * 101)
> mu_1 <- 0,1 # lợi tức trung bình của nội dung 1
> mu_2 <- 0,05 # lợi tức trung bình của nội dung 2
> mu_3 <- 0,15 # lợi tức trung bình của nội dung 3

> sigma_1 <- 0.2 # biến động của tài sản 1


Machine Translated by Google

116 Lập trình R và các ứng dụng của nó trong Toán tài chính

> sigma_2 <- 0.1 # biến động của tài sản 2


> sigma_3 <- 0.3 # biến động của tài sản 3
> cov_12 <- -0.015 # hiệp phương sai giữa nội dung 1 và 2
> cov_13 <- 0,01 # hiệp phương sai giữa nội dung 1 và 3
> cov_23 <- -0.02 # hiệp phương sai giữa nội dung 2 và 3
> tôi <- 1

> # để đặt -0,5 <s, t <1,5


> for (t in -25: 75) {
+ t <- 0,02 * t
+ cho (các trong -25: 75) {
+ s <- 0,02 * s
+ # chuỗi giá trị trung bình và phương sai của danh mục đầu tư
+ mu_p [i] <- t * mu_1 + s * mu_2 + (1-ts) * mu_3
+ var_p [i] <- t ^ 2 * sigma_1 ^ 2 + s ^ 2 * sigma_2 ^ 2 + (1-ts)
+ ^ 2 * sigma_3 ^ 2 +
+ 2 * t * s * cov_12 + 2 * t * (1-ts) * cov_13 + 2 * s * (1-ts) * cov_23
+ i <- i + 1
+ }
+}

> sigma_p <- sqrt (var_p) # sự biến động của danh mục đầu tư
> plot (sigma_p, mu_p, xlim = c (0,0.3), ylim = c (0.05.0.15), pch = ".")
>

Trong bảng điều khiển bên trái của Hình 4.2, vùng bóng mờ cho biết danh mục đầu tư khả thi.
Chúng tôi xem xét lĩnh vực này.

Khu vực phía trên bên trái trên mặt phẳng σp - µp thích hợp hơn do thực tế là
danh mục đầu tư ở khu vực phía trên bên trái có thể tạo ra lợi tức cao hơn với ít biến động hơn.

Điều này dẫn chúng ta đến ý tưởng về biên giới phương sai tối thiểu là đường cong của

(σp, µp) bao gồm độ biến động nhỏ nhất cho cùng một lợi tức. Theo điểm xác định này,
rõ ràng là đường viền của khu vực khả thi trong bảng điều khiển bên trái của Hình 4.2 là
biên giới phương sai tối thiểu. Các nhà đầu tư sẽ cố gắng lựa chọn danh mục đầu tư của họ sao cho

nó tạo ra lợi nhuận lớn hơn cho cùng một biến động. Do đó, một nhà đầu tư sẽ chọn
danh mục đầu tư tương ứng với nửa trên của biên phương sai tối thiểu.
Nửa phía trên của biên phương sai tối thiểu như vậy được gọi là hiệu quả
biên cương.

Ví dụ trên mặc nhiên giả định rằng các nhà đầu tư có thể bán khống tài sản.3
Nếu các nhà đầu tư không thể khống chế tài sản, diện tích khả thi sẽ nhỏ hơn và bị hạn chế

trong khu vực không có ràng buộc bán khống (bảng bên phải của Hình 4.2).

3 Bán ngắn hạn ('bán khống', hoặc 'bán khống') có nghĩa là bán tài sản không thuộc sở hữu của nhà đầu tư. Trong
thực hành, để làm điều này, trước tiên người ta phải vay tài sản để bán. Tuy nhiên, có thể không có đối tác
sẵn sàng cho nhà đầu tư vay tài sản, hoặc nhà đầu tư có thể bị hạn chế hoạt động giao dịch đó.
Machine Translated by Google

Lý thuyết danh mục đầu tư hiện đại và CAPM 117

> mu_p <- rep (0,1326) # 1326 = 1 + 2 + ... +


51> var_p <- rep (0,1326)> mu_1 <- 0,1 # lợi
tức trung bình của nội dung 1> mu_2 <- 0,05 #
trung bình lợi nhuận của tài sản 2> mu_3 <- 0,15
# lợi tức trung bình của tài sản 3> sigma_1 <-
0.2 # sự biến động của tài sản 1> sigma_2 <- 0,1
# sự biến động của tài sản 2> sigma_3 <- 0,3 # sự
biến động của tài sản 3> cov_12 <- - 0,015 # hiệp
phương sai giữa nội dung 1 và 2> cov_13 <- 0,01 # hiệp phương sai
giữa nội dung 1 và 3> cov_23 <- -0.02 # hiệp phương sai giữa nội
dung 2 và 3
> tôi <- 1

> # vòng lặp cho 0 <s, t <1>


for (t trong 0:50) {
+ t <- 0,02 * t
+ cho (s trong 0: (50-50 * t)) {
+ s <- 0,02 * s
+ # chuỗi phương sai và trung bình sao cho 1-ts> 0 mu_p [i] <-
+ t * mu_1 + s * mu_2 + (1-ts) * mu_3 var_p [i] <- t ^ 2 *
+ sigma_1 ^ 2 + s ^ 2 * sigma_2 ^ 2 + (1-ts) ^ 2 * sigma_3 ^ 2
+ + 2 * t * s * cov_12 + 2 * t * (1-ts) * cov_13 + 2 * s * (1-
+ ts) * cov_23 i <- i + 1}
+
+
+}>
sigma_p <- sqrt (var_p) # biến động của danh mục đầu tư> plot
(sigma_p, mu_p, xlim = c (0,0.3), ylim = c (0.05.0.15), pch = ".")

Lưu ý rằng biên phương sai tối thiểu mô tả một đường cong hyperbola, theo (4.1) và

(4.2), hoặc (4.3) và (4.4) (chúng tôi sẽ chứng minh điều đó trong trường hợp tổng quát
hơn trong phần 4.5).

Chúng tôi cũng lưu ý rằng khu vực khả thi của danh mục đầu tư trong bảng điều khiển bên trái

của Hình 4.2 bao gồm đường cong được mô tả trong trường hợp 2 tài sản. Điều này ngụ ý rằng việc

bổ sung tài sản thứ ba vào danh mục đầu tư làm cho khả năng lựa chọn danh mục đầu tư rộng hơn.

Nghĩa là, các nhà đầu tư có thể xây dựng một danh mục đầu tư tốt hơn, tạo ra lợi nhuận lớn hơn

cho cùng một mức độ biến động so với danh mục đầu tư 2 tài sản.

4.2 Danh mục đầu tư thị trường

Người đọc có thể tự hỏi liệu việc bổ sung tài sản vào danh mục đầu tư nói chung có
mở rộng vùng khả thi hay không. Câu trả lời là có, càng có nhiều tài sản trong danh
mục đầu tư thì vùng khả thi của danh mục càng rộng. Tuy nhiên, có một giới hạn về
số lượng tài sản giao dịch trên thị trường, vì tên cổ phiếu được niêm yết không phải là
Machine Translated by Google

118 Lập trình R và các ứng dụng của nó trong Toán tài chính

vô hạn. Ví dụ: hãy xem xét các tài sản có thể giao dịch có sẵn cho chúng tôi chỉ là những

cổ phiếu có trong chỉ số chứng khoán Nikkei 225. Sau đó, danh mục đầu tư bao gồm tất cả 225

cổ phiếu là quy mô lớn nhất có thể có của danh mục đầu tư mà chúng tôi có thể xây dựng. Lợi

tức và sự biến động của danh mục đầu tư này sẽ giới hạn vùng tối đa của danh mục khả thi.

Đặc biệt tồn tại trong lĩnh vực này danh mục đầu tư thuận lợi nhất được gọi là danh mục

đầu tư thị trường. Vì vậy, vấn đề của chúng ta là xác định danh mục thị trường.

Để giải quyết vấn đề này, chúng tôi xem xét tài sản an toàn tạo ra lợi tức đảm bảo mà không

có bất kỳ rủi ro nào; tức là, độ biến động của tài sản an toàn bằng không. Ở đây, chúng tôi

giới thiệu tài sản an toàn với lợi tức Rf và tài sản rủi ro i với lợi tức (kỳ vọng) µi và
độ biến động σi . Chúng tôi coi danh mục đầu tư bao gồm tài sản an toàn và tài sản rủi ro

i. Gọi trọng số của danh mục đầu tư này là (t, 1 - t). Sau đó, lợi nhuận và sự biến động

của danh mục đầu tư được đưa ra bởi

µp = tRf + (1 t) µi

σp = (1 t) σi ,

trong đó chúng tôi sử dụng thực tế là độ biến động của tài sản an toàn bằng không. Bằng cách

giải các phương trình trên đồng thời và lập phương trình t, ta thấy rằng

µi Rf
µp = Rf + σp.
σi

Do đó, lợi nhuận và sự biến động của danh mục đầu tư này được biểu diễn bằng nửa đường đi

qua các điểm (0, Rf) trên mặt phẳng σp - µp .


Logic tương tự cũng có thể áp dụng được ngay cả khi chúng ta thay thế tài sản rủi ro i

trong port folio bao gồm một số tài sản rủi ro. Sau đó, khu vực khả thi được đưa ra bởi

đường nối giữa điểm (0, Rf) và các điểm nằm trong khu vực được xác định bởi biên phương sai
tối thiểu của danh mục tài sản rủi ro.

Điều này ngụ ý rằng việc bổ sung tài sản an toàn làm thay đổi mạnh mẽ khu vực khả thi

của danh mục đầu tư từ khu vực danh mục đầu tư chỉ bao gồm các tài sản rủi ro. Danh mục 3

tài sản mở rộng vùng khả thi của danh mục 2 tài sản. Việc bổ sung các tài sản an toàn càng

mở rộng diện tích sao cho nó được bao phủ bởi các đường tiếp tuyến với biên phương sai nhỏ

nhất đi qua điểm (0, Rf).


Thật vậy, diện tích được cho như Hình 4.3.

Ở đây, chúng tôi hiển thị tập lệnh R để tạo ra Hình 4.3 với Rf = 0,07 với giả thiết
rằng các nhà đầu tư có thể vay tiền mặt (một tài sản an toàn). Giả định này cho phép nhà

đầu tư chọn danh mục đầu tư của bất kỳ điểm nào trên đường tiếp tuyến với biên phương sai
nhỏ nhất. Tuy nhiên, nếu nhà đầu tư không thể vay tiền mặt, đường gent tan sẽ bị cắt tại

các điểm tiếp xúc trên biên giới phương sai tối thiểu.

> R_f <- 0.07 # Lợi tức của tài sản an toàn> # tiếp tuyến

dương của nửa đường> a_max = max ((mu_p-R_f) / sigma_p)> # tiếp

tuyến âm của nửa đường


Machine Translated by Google

Lý thuyết danh mục đầu tư hiện đại và CAPM 119

> a_min = min ((mu_p-R_f) / sigma_p)> x <-


seq (0,3, by = 0,01)> lines (x, a_max * x +
R_f)> lines (x, a_min * x + R_f)

mu_p

0,14
0,12
0,10
0,08
0,06

0,00 0,05 0,10 0,15 0,20 0,25 0,30

sigma_p

Hình 4.3: Khu vực khả thi của danh mục đầu tư có chứa tài sản an toàn

Điểm quan trọng là tài sản an toàn thay đổi biên phương sai tối thiểu từ hyperbol
thành hai nửa đường. Hơn nữa, các đường này tiếp tuyến với biên phương sai tối thiểu
của danh mục tài sản rủi ro. Điều này ngụ ý rằng danh mục tài sản rủi ro tối ưu được
biểu thị bằng điểm tiếp tuyến với biên giới hiệu quả, vì danh mục tài sản an toàn
hiệu quả và danh mục tài sản rủi ro được cho bởi đường tiếp tuyến này. Khi chúng ta
sử dụng tất cả các tài sản rủi ro có thể giao dịch trên thị trường để xây dựng danh
mục tài sản rủi ro, danh mục đầu tư được đưa ra theo điểm tiếp tuyến phải là danh
mục thị trường.4 Đây là cấu trúc của danh mục đầu tư thị trường. Từ thảo luận trên,
danh mục đầu tư thị trường còn được gọi là danh mục đầu tư tiếp tuyến.

Tóm lại, tồn tại một danh mục đầu tư thị trường được coi là quỹ của tất cả các
tài sản rủi ro và việc kết hợp danh mục đầu tư này với một tài sản an toàn tạo ra
biên giới hiệu quả tối đa. Tính chất này được gọi là định lý 1 quỹ.
Ở đây, nửa đường được xây dựng bởi tài sản an toàn và danh mục thị trường được
gọi là đường thị trường vốn (CML). Hơn nữa, giả sử lợi nhuận và độ biến động của
danh mục đầu tư thị trường là µM, σM. Sau đó, độ dốc của đường thị trường vốn được
cho µM-Rf , tức là, tỷ lệ giữa lợi tức kỳ vọng vượt quá (trên tài sản an toàn)
σM với sự biến động, được gọi là giá thị trường của rủi ro.

Kinh tế học cổ điển thường giả định rằng tất cả các tác nhân đều hợp lý để danh mục đầu tư của họ có hiệu quả.
Hơn nữa, vì giá trị của mỗi cổ phiếu được xác định bởi các giao dịch của các tác nhân hợp lý, nên việc in nghiêng
vốn hóa thị trường sẽ phản ánh hiệu quả này. Như vậy, danh mục đầu tư của thị trường phải tỷ lệ thuận với giá trị
vốn hóa của thị trường. Ý tưởng này được áp dụng cho việc xây dựng các quỹ chỉ số tương ứng với hoạt động của các
chỉ số thị trường chứng khoán chính như S & P500, NIKKEI 225, v.v.
Machine Translated by Google

Lập trình 120 R và các ứng dụng của nó trong Toán tài chính

4.3 Nguồn gốc của CAPM

Cuộc thảo luận ở trên cho thấy rằng lợi nhuận và sự biến động của các cổng
hiệu quả được thể hiện bằng CML. Trong phần này, chúng tôi xem xét mối quan
hệ giữa lợi nhuận và sự biến động của từng tài sản rủi ro.
Chúng ta hãy xem xét danh mục đầu tư bao gồm tài sản rủi ro i và cổng thị
trường với tỷ lệ (t, 1 t). Ở đây, chúng tôi viết lợi nhuận và biến động của danh
mục thị trường lần lượt là µM và σM . Lợi tức và sự biến động của danh mục đầu tư
được đưa ra bởi

µp = tµi + (1 t) µM = t

2 σ 2σ 2 + (1 M +t)2t2σ(12 t) σi, M.
p tôi

Lưu ý rằng khi t = 0, các điểm do µp và σp cho trước trùng với đường thị trường
và không thể cắt qua đường thị trường vốn.5 Do đó, đường cong của µp và σp tiếp
tuyến với đường thị trường vốn tại t = 0 thỏa mãn điều kiện sau

dµp = µM Rf
. (4,5)
dσp t = 0 σM

Mặt khác, nó cho rằng

dµp
= µi - µM,
dt
2 2
dσp =
tσ tôi - (1 t) M + (1 2t) σi, M
.
dt σ σp

Do đó, chúng tôi có

dµp = (µi - µM) σM


2 , (4,6)
dσp t = 0 σi, M σM

trong đó chúng tôi đã sử dụng σM = σp | t = 0. Kết hợp (4.5) và (4.6), nó theo sau rằng

σi,
µi = Rf + M (µM Rf) = Rf + βi (µM Rf).
2 Mσ

Đây là CAPM được giới thiệu ở phần đầu của chương này.6 Phần vượt quá của µi so
với Rf được gọi là lợi nhuận vượt quá kỳ vọng của tài sản i. Nghĩa là, công thức
CAPM cho thấy lợi tức vượt quá kỳ vọng µi - Rf tương ứng với dự kiến và hệ số tỷ
lệ được cho bởi β. lợi nhuận vượt quá µM Rf ,

5
Nếu có thể vượt qua đường thị trường vốn, điều này có nghĩa là danh mục đầu tư trên CML không

có hiệu quả; tức là, tồn tại một danh mục đầu tư hiệu quả hơn.

6CAPM thường được thảo luận trong bối cảnh bài toán tối ưu hóa tiện ích của các nhà đầu tư. Trong bài viết này, có các

phiên bản mở rộng của CAPM; ví dụ: CAPM dựa trên mức tiêu thụ (CCPM) [Bre79] và CAPM cấp bậc (ICAPM) [Mer73a].
Machine Translated by Google

Lý thuyết danh mục đầu tư hiện đại và CAPM 121

4.4 Sự mở rộng của CAPM: Mô hình đa nhân tố

4.4.1 Lý thuyết định giá kinh doanh chênh lệch giá

CAPM được coi là một trong những lý thuyết tiêu chuẩn trong tài chính. Tuy nhiên, lý thuyết này vẫn

chưa được thực nghiệm chứng minh. Ngược lại, lý thuyết này bị bác bỏ theo kinh nghiệm mười (xem [CLM97,

DT85, Fam91] và [JT95]). Một trong những lý do có thể là hình thức đơn giản của lý thuyết này; tức là,

CAPM được gọi là mô hình một nhân tố cố gắng giải thích lợi nhuận của mỗi cổ phiếu chỉ bằng lợi nhuận

vượt quá của danh mục đầu tư thị trường uM Rf .

Mô hình đa nhân tố đã được phát triển để khắc phục

nhược điểm này; 7 tức là, mô hình đa nhân tố cố gắng giải thích lợi nhuận của mỗi cổ phiếu bằng một số

yếu tố chứ không chỉ bởi một yếu tố. Đây là một phần mở rộng tự nhiên của CAPM. Ở đây, chúng tôi trình

bày tổng quan về mô hình đa nhân tố không có Lập trình R.

Chúng ta phải lưu ý rằng Lý thuyết định giá qua giao dịch chênh lệch giá (APT) được phát triển bởi

Stephen Ross [Ros76] (xem thêm [GL91] để biết tổng quan về mô hình multi fac tor), không chỉ sử dụng

lợi nhuận của danh mục đầu tư thị trường RM mà còn sử dụng các yếu tố ( F1, F2, ··· , Fn) để giải thích

lợi nhuận của các cổ phiếu riêng lẻ. Điều này có biểu mẫu sau,

E [Ri ] = αi + β1E [F1] + β2E [F2] + ··· + βnE [Fn], với i = 1, ···, m,

trong đó αi và β1, ···, βn là hằng số (chúng tôi sẽ trình bày cách xác định các stants này, sau). Lưu

ý rằng n ≤ m để tránh trang bị quá nhiều. Loại bỏ toán tử kỳ vọng, chúng tôi có dạng tổng quát hơn,

Ri = αi + β1F1 + β2F2 + ··· + βnFn + εi ,

trong đó εi là biến ngẫu nhiên có giá trị trung bình bằng 0 và không phụ thuộc vào F1, F2, ··· , Fn và

εj (j 6 = i).

Để mô hình hóa lợi nhuận của mỗi cổ phiếu i, ngoài lợi nhuận vượt quá của
danh mục thị trường, có thể tốt nếu sử dụng các yếu tố vĩ mô, như GDP, tỷ lệ lạm
phát P, hoặc tỷ giá hối đoái USDJPY như các yếu tố F1, F2, ·· , Fn.
số 8

Sau đó, mô

hình có thể được mô tả là

Ri = αi + β1 (RM Rf) + β2GDP + β3P + β4USDJPY + εi .

Ở đây, chúng ta phải biết rằng APT không phải là một lý thuyết để nhấn mạnh sự phù hợp tốt giữa mô hình

và dữ liệu được đánh dấu. APT yêu cầu chúng ta tìm ra các yếu tố có sức giải thích mạnh mẽ. Đồng thời,

APT giả định rằng mọi cổ phiếu trong mar ket có thể được mô tả bằng các yếu tố chung giống nhau. Ví

dụ, nếu sự trở lại của một

7Mặc dù CAPM có thể không được chứng minh nghiêm ngặt theo kinh nghiệm, nhưng nó có sức hấp dẫn về mặt lý thuyết do

tính đơn giản của nó. Các lý thuyết định giá tài sản bao gồm các mô hình đa yếu tố được thảo luận trong phần này giữ một

hình thức tương tự như CAPM. Theo nghĩa này, CAPM vẫn giữ được ý nghĩa của nó.

8N. Chen, R. Roll và S. Ross [CRR86] cho rằng sản xuất công nghiệp và tỷ lệ lạm phát là các yếu tố vĩ mô chính.
Machine Translated by Google

122 Lập trình R và các ứng dụng của nó trong Toán tài chính

cổ phiếu có thể được mô tả bằng GDP, tỷ lệ lạm phát và tỷ giá hối đoái tiền tệ tùy theo

tỷ suất sinh lợi vượt mức của danh mục thị trường, APT yêu cầu tất cả các khoản lợi nhuận

cổ phiếu khác cũng được mô tả bằng GDP, tỷ lệ lạm phát, tỷ giá hối đoái và tỷ suất lợi

nhuận xuất xưởng của danh mục thị trường . Hơn nữa, lợi nhuận của cổ phiếu được xác định

sao cho chúng thỏa mãn điều kiện không có chênh lệch giá, đây là nguồn gốc của tên gọi lý

thuyết định giá chênh lệch giá. Không có kinh doanh chênh lệch giá có nghĩa là “không tồn

tại cơ hội kiếm lợi nhuận được đảm bảo trong tương lai mà không có chi phí hiện tại”. APT

cho phép chúng tôi xác định các hệ số thỏa mãn điều kiện không có chênh lệch giá.

Chúng tôi đưa ra một ví dụ về cách xác định các hệ số αi và β1, ···, βn đảm bảo rằng

điều kiện không có chênh lệch giá được giữ nguyên. Để đơn giản, chúng tôi đặt số lượng hệ

số là 1. Ngoài ra, hãy để thị trường chứng khoán chỉ có 2 tên trong đó lợi nhuận được mô

tả bằng R1 và R2. APT ngụ ý rằng mỗi lợi nhuận của những cổ phiếu này được viết là

R1 = α1 + β1F1 + σ1ε1 (4,7)

R2 = α2 + β2F1 + σ2ε2, (4,8)

trong đó ε1, ε2 là các biến ngẫu nhiên có giá trị trung bình bằng 0, phương sai 1, độc lập với

nhau và với các yếu tố khác. Hãy xem xét một chiến lược giao dịch với số tài sản ban đầu bằng không.

Vay tiền mặt với lãi suất Rf , ta dùng số tiền mặt này để đầu tư vào tài sản 1 và tài sản
2 với tỷ trọng trong danh mục lần lượt là 70% và 30%. Sau đó, người mặc định sẽ mong đợi

lợi nhuận 0,7R1 + 0,3R2 Rf mà không phải trả bất kỳ chi phí nào. Nói chung, tỷ lệ đầu tư
so với tài sản 1 và 2 tương ứng là w1 và w2 (= 1 w1) . Lợi tức của khoản đầu tư này Rp
Nó được viết lại
là Rp = w1R1 + w2R2 Rf .
như

Rp = w1R1 w1Rf + w2R2 w2Rf

R1 Rf
= (w1, w2) .
R2 Rf

Nhớ lại khoản đầu tư này được thực hiện với số tài sản ban đầu bằng không. Do đó, nếu có

thể xây dựng chiến lược (w1, w2) chắc chắn tạo ra lợi nhuận; tức là, Rp > 0, thì tồn tại
cơ hội kinh doanh chênh lệch giá. Lưu ý rằng cũng có thể có cơ hội trage arbi nếu danh mục

đầu tư có lợi nhuận Rp <0; bán tài sản 1 và tài sản 2 và cho vay số tiền mặt thu được với

lãi suất Rf , nhà đầu tư có thể thu lợi nhuận mà không phải
điềutrả
kiện
bấtkhông
kỳ chi
có phí
chênh
nào.
lệch
Do giá
đó,
dẫn đến yêu cầu Rp = 0.

Phương trình trên và (4.7) - (4.8) ngụ ý rằng

α1 + β1F1 + σ1ε1 Rf α2
Rp = (w1, w2)
+ β2F1 + σ2ε2 Rf α1 Rf

α2 Rf β1 σ1ε1
= (w1, w2) + (w1, w2) F1 + (w1, w2) .
β2 σ2ε2

Yếu tố thứ hai F1 không chắc chắn trong tương lai và yếu tố thứ ba là ngẫu nhiên. Do đó, nếu
Machine Translated by Google

Lý thuyết danh mục đầu tư hiện đại và CAPM 123

nhà đầu tư có thể đặt yếu tố đầu tiên là tích cực hoặc tiêu cực và giữ cho yếu tố thứ
hai và thứ ba bằng 0, sau đó họ có thể thực hiện giao dịch chênh lệch giá. Nhà đầu tư có
thể làm cho hệ số thứ hai bằng 0, bằng cách chọn chiến lược giao dịch với trọng lượng
9
tài sản w2 = Rủi rohệdosốyếu
β1 / β2w1. F1 tố thứ cho
chung hai tất
này cả
tạocác
ra cổ
được đặc trưng
phiếu. bởi này, nó được
Theo nghĩa
gọi là rủi ro hệ thống.

Trong trường hợp CAPM, rủi ro hệ thống là RM Rf .


Hơn nữa, ai cũng biết rằng số hạng thứ ba xấp xỉ bằng 0 khi số lượng cổ phiếu trong
danh mục đầu tư tăng lên đến vô cùng, do hiệu ứng đa dạng hóa.10 Tóm lại, nếu chúng ta
có thể xây dựng danh mục đầu tư với số khác không, thì số hạng đầu tiên không phải là số

không, hãy chọn trọng lượng tài sản trong danh mục sao cho kỳ hạn thứ hai bằng 0 và
bỏ qua kỳ hạn thứ ba, khi đó chúng ta có thể có được cơ hội kinh doanh chênh lệch giá.
Nói cách khác, khi chúng ta chọn chiến lược w2 = β1 / β2w1 để rủi ro tiềm ẩn của hệ

thống bằng 0 và lợi nhuận của danh mục đầu tư này bằng 0, thì nó không có chênh lệch giá.

Thay w2 = β1 / β2w1 vào phương trình trên ta có

α1 Rf
Rp = (w1, β1 / β2w1) w1 α1 Rf - β2 β1 (α2 Rf) . =
α2 Rf

β1
Do đó, nếu w1 α1 Rf - β2 (α2 Rf) không bằng 0, có thể tạo ra lợi nhuận
α2 Rf
=
không có rủi ro. Để số hạng này bằng 0, yêu cầu α1 Rf một biến
β1 β2 . Xác định
λ1 là

α1 Rf α2 Rf λ1 : = F1
+ = F1 + ,
β1 β2

(4.7) - (4.8) được viết lại như sau,

R1 = Rf + β1λ1 + σ1ε1

R2 = Rf + β2λ1 + σ2ε2,

trong đó λ1 là hệ số tạo ra lợi nhuận trên Rf . Theo trực quan, nó có nghĩa là giá của
rủi ro tương ứng với F1. Do đó, λ1 được gọi là giá nhân tố. Tỷ suất lợi nhuận của mỗi
tài sản được xác định bởi độ nhạy đối với giá nhân tố. Hơn nữa, chọn lợi nhuận vượt quá
của danh mục thị trường đối với tài sản an toàn làm giá nhân tố; tức là, đặt λ1 = RM

Rf , chúng ta có thể thấy rằng phương trình trên phù hợp với CAPM.

APT yêu cầu các ràng buộc đối với α1, α2, β1 và β2 sao cho chúng thỏa mãn hàm lượng
được suy ra ở trên, tuân theo tính nhất quán của điều kiện không có chênh lệch giá.
Nó cũng đúng trong các trường hợp có nhiều yếu tố hơn. Thật vậy, trường hợp chung được đưa ra dưới dạng mức thấp

của fol:

9 Xét đến w1 + w2 = 1, rõ ràng là w1 = β2 / (β2 - β1) và w2 = β1 / (β1 - β2).

10 Nền tảng lý thuyết của vấn đề này nằm ngoài phạm vi của cuốn sách này. Chúng tôi chỉ lưu ý rằng tên của thuật ngữ này

là rủi ro cá nhân. Đó là lý do tại sao rủi ro này phụ thuộc vào biến ngẫu nhiên εi phù hợp với từng tài sản i.
Machine Translated by Google

124 Lập trình R và các ứng dụng của nó trong Toán tài chính

ĐÚNG CÁCH

Đối với m tài sản, giả sử tồn tại n ≤ m yếu tố. Hãy để lợi nhuận của mỗi tài sản là

Ri = αi + Xn βi, jFj + σiεi .

j = 1

Chúng tôi giả định rằng danh mục đầu tư được đa dạng hóa tốt nên có thể bị bỏ qua.
Sau đó, tồn tại các hằng số λ0, λ1, ··· , λn và nó cho rằng

E [Ri ] = λ0 + Xn βi, jλj .

j = 1

Chúng tôi tóm tắt ở trên, sử dụng trường hợp có 2 yếu tố. Coi như nhà đầu tư có
m tài sản có trọng lượng wi trong danh mục đầu tư của cô ấy sao cho

Xm wi = 0, Xm wiβi, 1 = 0, Xm wiβi, 2 = 0.
i = 1 i = 1 i = 1

Chi phí để xây dựng chiến lược này bằng 0 và độ nhạy đối với từng yếu tố cũng
bằng không. Do đó, lợi nhuận kỳ vọng phải bằng 0 để thỏa mãn điều kiện không có
chênh lệch giá; I E,

wiRi = 0.
Xm
i = 1

Xét vectơ m chiều

1 = (1,1, ···, 1), β w = (w1, 1 = (β1,1, β2,1, ··· , βm, 1), β 2 = (β1,2, β2,2, ··· , βm, 2),

w2, ··· , wm), R = (R1, R2, ··· , Rm),

với w trực giao với 1, β 1 , β 2 và R. Điều này có nghĩa là R phụ thuộc tuyến tính vào, β 2 .

1, 1 Do đó, tồn tại các hằng số λ0, λ1, λ2 thỏa mãn R = λ01 + λ1β 1 + λ2β 2 .

β Nếu một tài sản an toàn có trong danh mục đầu tư, thì nó cho rằng λ0 = Rf .

Điều quan trọng là chúng ta chọn cách xác định các yếu tố như thế nào, vì bản thân
APT không chỉ cho chúng ta cách làm như vậy. Để chọn các yếu tố, chúng tôi thường (1) sử
dụng các biến quan sát được như các yếu tố kinh tế vĩ mô, hoặc (2) sử dụng phương pháp

thống kê, như phân tích thành phần chính, về biến động giá. Phương pháp đầu tiên (1) có
thể xác định được giữa các yếu tố vì các yếu tố có cơ sở kinh tế, nhưng sự lựa chọn là
chủ quan trong cách chúng tôi cân nhắc mức độ quan trọng. Phương pháp thứ hai (2) cho
phép chúng tôi xác định các yếu tố mà không có bất kỳ chủ quan nào, ngay cả khi có thể
khó đưa ra giải thích kinh tế cho mô hình.
Machine Translated by Google

Lý thuyết danh mục đầu tư hiện đại và CAPM 125

4.4.2 Mô hình 3 nhân tố của Fama-French

Eugene Fama và Kenneth French [FF93] đã đề xuất một mô hình với phần nhỏ nhất
là APT. Như tên gọi của mô hình 3 nhân tố, mô hình do Fama và French đề xuất
chỉ bao gồm 3 nhân tố để giải thích lợi nhuận của cổ phiếu.11 3 nhân tố này
được chọn làm lợi nhuận của danh mục thị trường, 'nhỏ trừ lớn' (SMB) và ' cao
trừ thấp '(HML). SMB được gọi là hiệu ứng vốn hóa nhỏ và được xác định bằng
lợi tức của một cổ phiếu có vốn hóa thị trường lớn trừ đi lợi nhuận của một cổ
phiếu có vốn hóa thị trường nhỏ. HML là lợi nhuận của cổ phiếu chiết khấu trừ
đi lợi nhuận của cổ phiếu có tốc độ tăng trưởng cao, trong đó giá cổ phiếu
chiết khấu là tương đối rẻ so với giá trị thực của cổ phiếu này. Nhìn chung
rất khó để đánh giá cổ phiếu nào là cổ phiếu tăng trưởng và cổ phiếu nào là cổ
phiếu giảm giá. Tuy nhiên, người ta thường sử dụng Thu nhập trên mỗi cổ phiếu
(EPS) hoặc tỷ lệ giữa giá cổ phiếu trên giá trị sổ sách (Price Book-value
Ratio, viết tắt là PBR) làm tiêu chí đánh giá tăng trưởng và giảm giá cổ
phiếu.12 Mô hình 3 nhân tố mô tả sự trở lại của một cổ phiếu như sau,

E [Ri ] = Rf + β1 (E [RM] Rf) + β2SMB + β3HML.

Mô hình 3 yếu tố là một đặc điểm kỹ thuật của APT, và do đó dựa trên nguyên tắc không có

chênh lệch giá. Tuy nhiên, nói một cách chính xác thì không có cơ sở lý thuyết chặt chẽ về

lý do tại sao SMB và HML nói riêng được chọn làm yếu tố. Theo nghĩa này, việc lựa chọn các

yếu tố có thể là một nghệ thuật hơn là một lý thuyết. Chúng ta phải lưu ý rằng trong lĩnh

vực tài chính, chúng ta thường sử dụng các phương pháp gần với nghệ thuật hơn là lý thuyết,

miễn là kết quả có một số khả năng ứng dụng thực tế vào thị trường thực tế.

4.5 Hình thức của biên giới hiệu quả

Trong phần này, chúng tôi chỉ ra rằng dạng của biên giới hiệu quả được cho bởi một
đường cong hyper bola. Đầu tiên, chúng tôi chính thức hóa biên giới phương sai tối
thiểu của danh mục phương sai trung bình Markowits. Gọi w là vectơ tỷ lệ của từng
tài sản trong port folio, µ là vectơ của lợi nhuận kỳ vọng của từng tài sản và V là
ma trận hiệp phương sai. Biên giới phương sai tối thiểu được đưa ra bởi bài toán
giảm thiểu của

2 σ
p
= w 0Vw, (4,9)

với những ràng buộc sau

0
w 0µ = µp , w 1 = 1.

11 Tương tự như sự mở rộng của mô hình 3 nhân tố, có nhiều mô hình hơn với số lượng nhân tố cao hơn, chẳng
hạn như mô hình 4 nhân tố (xem [Car97]) và mô hình 5 nhân tố (xem [FF14]).

12 Liên kết sau có dữ liệu về EPS và PBR của cổ phiếu trên thị
trường Hoa Kỳ http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data library.html
Machine Translated by Google

126 Lập trình R và các ứng dụng của nó trong Toán tài chính

Vấn đề này có thể được giải quyết bằng cách sử dụng số nhân Lagrange. Chúng tôi định
nghĩa hàm La grange như sau, 13

1 0
L (w, λ, γ) w 0Vw λ (w 0µ - µp ) γ (w 1 1).
= 2

Điều kiện đặt hàng đầu tiên của điều kiện trên là

L = Vw λ µ γ1 = 0.
w

Sắp xếp lại các điều khoản, nó theo sau đó

1
w = λV 1µ + γV 1.

Ở đây, xác định A = 1 0V 1µ = µ 0V 11, B = µ 0V 1µ và C = 1 0V 11, chúng ta


có thể viết lại các ràng buộc như sau,

µp = λB + γA, 1 = λA + γC.
2
Hơn nữa, xác định D = BC A ,nó theo sau đó

Cµp A B
λ = Aµp , γ = ,
D D
C A 1 B 1 A
w = V 1µ - V 1 µp + V 1 - V 1µ .
D D D D

2
Thay phần trên vào (4.9), chúng ta có thể thấy rằng σP được đưa ra bởi

C2 AC Một
2
2 BC AC AB Một
2
= B 2 A + C µ P +2 A B C +
2 σ
p A µp
D2 D2 D2 D2 D2 D2 D2
2 2
B AB Một

+ C 2 A + B
D2 D2 D2
2
C
= 1 + .
A µp -
D C C

Sắp xếp lại điều này, chúng tôi đạt được mối quan hệ sau

Một
2
2 σ
p µp - C
- = 1.
1 / C D / C2

13 Sử dụng 1/2 trong số hạng đầu tiên của vế phải cho một dạng giải pháp rõ ràng hơn.
Machine Translated by Google

Lý thuyết danh mục đầu tư hiện đại và CAPM 127

μp

AC

(1 / C) ^ 0,5 σp

Hình 4.4: Biên giới hiệu quả

Điều này cho thấy rằng biên phương sai tối thiểu được cho bởi một đường cong hyperbola.

Vì biên giới hiệu quả bao gồm danh mục phương sai tối thiểu, nên nó được coi là nửa trên

của đường cong hyperbol này. Điều này được hiển thị dưới dạng dòng in đậm trong

Hình 4.4.

Lưu ý rằng chúng tôi cho phép trọng số wi có giá trị âm. Tuy nhiên, trên thực tế, hạn

chế bán khống thường hạn chế trọng số ở các giá trị dương.14 Trong

trường hợp này, các ràng buộc bổ sung được thêm vào bài toán tối ưu hóa. Đây là

bài toán tối ưu hóa trong đó hàm mục tiêu được cho bởi một bậc hai

phương trình và ràng buộc được cho bởi đẳng thức tuyến tính và bất đẳng thức tuyến tính.

Loại bài toán tối ưu hóa này được gọi là bài toán lập trình bậc hai. Có các thuật toán số

để giải quyết loại vấn đề này và R

được trang bị các chức năng để giải các bài toán lập trình bậc hai (xem Ap mặt dây chuyền

A).

14 Ngay cả khi cho phép bán khống, phí vay cổ phiếu (chi phí đi vay) thường bị tính. Tỷ lệ

chi phí đi vay thậm chí có thể cao hơn lãi suất phi rủi ro. Điều này phá vỡ sự đối xứng giữa dài và

các vị thế tài sản ngắn hạn trong danh mục đầu tư và thay đổi khu vực khả thi. Tuy nhiên, để đơn giản ở đây chúng tôi không

xem xét chi phí đi vay và giả định rằng không có sự khác biệt về chi phí giữa vị thế mua và bán trong
tài sản.
Machine Translated by Google
Machine Translated by Google

Chương 5

Hoán đổi lãi suất và


Yếu tố giảm giá

NỘI DUNG

5,1 Hoán đổi lãi suất ... ... 129 Định giá hoán đổi lãi suất và sự hình thành
5,2 các yếu tố chiết khấu .. 131 Định giá hoán đổi lãi suất và rủi ro của
5,3 chúng ....................... 135

5.1 Hoán đổi lãi suất Hoán đổi

lãi suất là công cụ đại diện trong các phái sinh lãi suất.1 Hoán đổi lãi suất đơn
giản là sự trao đổi của hai dòng tiền, một dòng lãi dựa trên tỷ lệ cố định và một
dòng lãi dựa trên việc định lại định kỳ lãi suất thả nổi gắn với một điểm chuẩn.
Giao dịch hoán đổi lãi suất được sử dụng để quản lý rủi ro (tự bảo hiểm) mà các
nhà đầu tư phải đối mặt với sự biến động của lãi suất hoặc chi phí đi vay.2 Hệ số
này được sử dụng để tính hệ số chiết khấu, đại diện cho giá trị hiện tại của các
dòng tiền trong tương lai và được sử dụng để định giá các sản phẩm phái sinh khác
nhau . Vì vậy, chúng ta cần hiểu các thuộc tính của hoán đổi lãi suất và phương
pháp để tính hệ số chiết khấu.

Chúng ta hãy xem xét việc vay tiền mặt với lãi suất ngắn hạn và mua trái phiếu
chính phủ dài hạn hoặc cho vay tiền mặt dài hạn. Trước khi kết thúc hợp đồng dài
hạn trái phiếu chính phủ hoặc quỹ dài hạn, ngắn hạn

1 Đạo hàm này xuất hiện lần đầu tiên vào năm 1981 [KS98]. Xem [DH96, Hul12, LX08] và [Lit92], để biết
thêm chi tiết về cấu trúc của thị trường hoán đổi lãi suất.
2 Mức lãi suất có thể đến từ các dòng tiền hoặc nghĩa vụ trong tương lai.

129
Machine Translated by Google

Lập trình 130 R và các ứng dụng của nó trong Toán tài chính

quỹ kết thúc. Chúng tôi gia hạn hợp đồng ngắn hạn (được gọi là cuốn chiếu), giữ hợp đồng trái

phiếu chính phủ hoặc quỹ dài hạn. Chúng tôi tiếp tục thực hiện hợp đồng ngắn hạn cho đến khi

hết hạn (đáo hạn) của hợp đồng dài hạn. Giao dịch hoán đổi lãi suất tạo ra dòng tiền giống như

giao dịch trong đó chúng ta chuyển hợp đồng ngắn hạn với hợp đồng dài hạn hơn.

Hãy xem xét trường hợp chúng ta vay 1 tỷ đô la với lãi suất 6 tháng

đồng thời mua trái phiếu Chính phủ 10 năm hoặc cho vay một quỹ trong 10 năm. Tại mỗi kỳ đáo hạn

6 tháng, chúng tôi cuộn các khoản tiền ngắn hạn đã vay với lãi suất ngắn hạn và nhận được một

phiếu mua hàng cố định của trái phiếu, hoặc tiền gửi quỹ dài hạn. Tức là đến 6 tháng, chúng ta

trả lãi suất ngắn hạn khác nhau của từng kỳ hạn và nhận lãi suất cố định. Như vậy, lãi suất ngắn

hạn được gọi là lãi suất thả nổi. Giao dịch hoán đổi lãi suất dựa trên sự trao đổi giữa tỷ giá

thả nổi và tỷ giá cố định. Ví dụ, một tỷ giá được gọi là tỷ giá hoán đổi 10 năm khi nó là tỷ giá

cố định thích hợp để trao đổi lãi suất thả nổi 6 tháng3 trong 10 năm. Tỷ lệ cố định này còn được

gọi là tỷ giá hối đoái và được hiểu là lãi suất kỳ vọng trung bình trong 10 năm. Sự khác biệt

giữa hoán đổi lãi suất và mua trái phiếu chính phủ hoặc các quỹ cho vay là giao dịch của số tiền

gốc; nghĩa là, giao dịch trái phiếu chính phủ yêu cầu thanh toán thực tế là 1 tỷ đô la. Mặt

khác, giao dịch hoán đổi lãi suất không thực hiện mà chỉ yêu cầu hoán đổi tỷ giá thả nổi và tỷ

giá cố định. Sau đó, thay vì số tiền gốc, số tiền gốc danh nghĩa là 1 tỷ đô la được đặt cho hoán

đổi lãi suất như một số tiền gốc giả định. Chúng tôi cũng gọi việc nhận tỷ giá cố định là "nhận

phí qua đêm" và trả tỷ giá cố định là "trả phí qua đêm".

Vì hợp đồng hoán đổi lãi suất không yêu cầu trao đổi số tiền mã hóa (không bắt buộc), nên

có thể áp dụng mức độ đòn bẩy cao. Sử dụng đòn bẩy, nhà đầu tư có thể thực hiện các giao dịch

đầu cơ về lãi suất mà không cần phải giao dịch với trái phiếu chính phủ (đòi hỏi nhà đầu tư phải

chi tiền mặt để mua trái phiếu). Tác dụng khác của hoán đổi lãi suất là phòng ngừa rủi ro đối

với sự thay đổi của lãi suất (lãi suất thả nổi). Do nền kinh tế có liên quan nhiều đến lãi suất,

các nhà đầu tư có thể phòng ngừa rủi ro liên quan đến nền kinh tế.

Tương tự như lợi tức của trái phiếu chính phủ có kỳ hạn khác nhau, tỷ lệ hoán đổi cũng khác

nhau tùy thuộc vào thời gian đáo hạn. Thông thường trong đường cong lợi suất, kỳ hạn càng dài,

tỷ lệ hoán đổi càng cao. Nghĩa là, đường cong lợi suất của các giao dịch hoán đổi lãi suất

thường cho thấy lợi suất kỳ hạn. Điều này ngụ ý rằng tỷ giá cố định cao hơn tỷ giá thả nổi và

được hiểu là chi phí để phòng ngừa rủi ro thay đổi của tỷ giá thả nổi.

3 Trong cuốn sách này, chúng tôi sử dụng lãi suất thả nổi 6 tháng, là tỷ giá thả nổi chuẩn tiêu chuẩn được sử
dụng cho các giao dịch hoán đổi lãi suất bằng đồng yên. Các tỷ lệ chuẩn khác, chẳng hạn như lãi suất thả nổi 3
tháng, được sử dụng cho các giao dịch hoán đổi lãi suất khác bằng các loại tiền tệ khác. LIBOR (Tỷ giá ưu đãi liên
ngân hàng Luân Đôn) thường được sử dụng làm chuẩn để đặt lại tỷ giá thả nổi.
Chúng tôi cũng lưu ý rằng tỷ giá thả nổi được coi là không có rủi ro trước cuộc khủng hoảng Lehman. Tuy nhiên,

cuộc khủng hoảng Lehman cho thấy rằng ngay cả LIBOR cũng bao gồm rủi ro, đặc biệt là rủi ro tín dụng của các ngân hàng.
Machine Translated by Google

Hệ số hoán đổi lãi suất và chiết khấu 131

Định giá của hoán đổi lãi suất được thảo luận trong phần sau. Lưu ý rằng, định
giá hoán đổi lãi suất mới có nghĩa là xác định tỷ lệ cố định thích hợp trong hợp
đồng hoán đổi. Chúng tôi thường sử dụng giá thị trường của tỷ giá hoán đổi và công
thức định giá của hoán đổi lãi suất để tính các hệ số chiết khấu và tỷ giá kỳ hạn.
Khi chúng ta biết các yếu tố chiết khấu, chúng ta có thể tính toán giá trị của bất kỳ hoán

đổi lãi suất nào cũng như định giá các loại phái sinh khác nhau.

5.2 Định giá hoán đổi lãi suất và sự hình thành các yếu tố
chiết khấu

Lãi suất hoán đổi lãi suất, hay “lãi suất hoán đổi”, được đặt để tương đương với “giá trị hiện

tại của việc nhận (trả) lãi suất cố định” và “giá trị hiện tại của việc trả (nhận) lãi suất thả

nổi” trong suốt thời gian của hợp đồng.4 Do đó, tại thời điểm bắt đầu của hợp đồng hoán đổi,

giá trị của hoán đổi lãi suất được cho bởi sự khác biệt giữa giá trị kỳ vọng hiện tại của dòng

tiền nhận và thanh toán bằng không. Tuy nhiên, khi thời gian trôi qua, sự khác biệt có thể ngày

càng lớn.

Việc trao đổi lãi suất được thực hiện tại thời điểm1, t2, ··· , ti , ···, tN (trong
khoảng thời gian τi = ti ti 1). Gọi tỷ giá cố định (tỷ giá hoán đổi) là S, tỷ giá
hối đoái thả nổi
Di tại
, vàthời điểm gốc
số tiền là Fi , hệnghĩa)
(danh số chiết
là 1khấu từ 5.1).
(Hình Giá 5
thời điểm hiện
trị
dòngtại
hiện đếntheo
tiền
tại nay tỷ
của là

giá cố định được mô tả bằng tổng các dòng tiền τiS tại thời điểm được chiết khấu bởi Di ;
I E,

N
τiSDi . (5,1)
Sửa chữa = X
i = 1

Tương tự như vậy, phần thả nổi cũng được đánh giá bằng tổng của dòng tiền τiFi tại thời

điểm được chiết khấu bởi Di ; I E,

N
τiFiDi .
Phao = X
i = 1

Lưu ý rằng Fis được xác định vào các thời điểm trong tương lai. Như thường lệ, tỷ giá thả

nổi Fi được tính bằng tỷ giá kỳ hạn của nó và có liên quan đến hệ số chiết khấu như sau,

1
Di
Di = Di 1 / (1 + τiFi) Fi = 1 1.
τi Di

4
Nếu một trong số chúng có giá trị cao hơn số còn lại, thì các nhà đầu tư sẽ mua cái có giá trị hơn với giá rẻ

hơn cho đến khi cả hai đạt được trạng thái cân bằng về giá trị. Do đó, các dòng cố định và thả nổi trên thị trường

hoán đổi lãi suất về lý tưởng sẽ có giá trị bằng nhau.

5 Theo quy ước, tỷ giá thả nổi thanh toán theo ti được xác định vào đầu kỳ, ti 1.
Machine Translated by Google

132 Lập trình R và các ứng dụng của nó trong Toán tài chính

Hình 5.1: Dòng tiền hoán đổi lãi suất. Thời gian tiến về bên phải. Các dòng tiền lãi suất cố định
nhận được là các mũi tên thẳng hướng lên, trong khi các mũi tên nguệch ngoạc chỉ xuống thể hiện các
dòng tiền lãi suất thả nổi thay đổi được trả.

Điều này có nghĩa là hệ số chiết khấu từ ti đến nay tương đương với giá trị được chiết khấu (1 +
1
τiFi) từ ti xuống ti 1 và chiết khấu
khấu từ
Di nay1 đến
từ ti
nay, tất
1 đến
nhiên
nay.làỞ không
đây, D0
chiết
là một
khấu,
hệ và
số do
chiết
đó D0

= 1. Tóm lại, giá trị hiện tại của phần thả nổi được cho bởi

N
(5.2)
Float = X (Di 1 Di) = 1 DN.
i = 1

Phương trình (5.1) và (5.2) phải tương đương với nhau để tỷ lệ hoán đổi S
tương đương với giá trị của mặt thả nổi và mặt cố định. Như vậy, S thỏa mãn

N
τiDi . (5,3)
S = (1 DN) .X
i = 1

Giá thị trường của tỷ giá hoán đổi và (5.3) được sử dụng để tính các hệ số chiết khấu và

tỷ giá kỳ hạn cho các hợp đồng có thời hạn khác nhau. Sử dụng các hệ số chiết khấu, chúng ta

có thể tính toán các giá trị hiện tại của hoán đổi lãi suất mà các điều khoản đã được thiết

lập trong quá khứ và giá của các công cụ phái sinh khác nhau.

Chúng tôi tính toán các yếu tố chiết khấu bằng cách sử dụng tỷ giá hoán đổi thị trường

như sau. Coi lãi suất thả nổi 6 tháng là tỷ giá tham chiếu; và cho phép việc trao đổi

nhận và trả lãi suất được thực hiện vào mỗi khoảng thời gian 6 tháng (nửa năm một lần).

Chúng tôi xem xét một ví dụ về tỷ giá hoán đổi tại mỗi thời kỳ (T) trong Bảng 5.1.

Đầu tiên, chúng tôi tính toán tỷ giá hoán đổi (tỷ giá hối đoái) tại mỗi 6 tháng
(0,5 năm) bằng cách nội suy dữ liệu trên. Lãi suất hoán đổi lãi suất giao dịch
trên thị trường thay đổi nhịp nhàng giữa các hợp đồng gần đến ngày đáo hạn và do
đó, một hàm trơn để nội suy, chẳng hạn như spline, là phù hợp. Trong R, chúng ta
có thể thực hiện nội suy spline bằng cách đầu tiên tạo một đối tượng Smooth.spline
() và sau đó tính toán các giá trị nội suy với hàm dự đoán ().
Machine Translated by Google

Hệ số hoán đổi lãi suất và chiết khấu 133

Bảng 5.1: Ví dụ về giá thị trường của tỷ giá hoán đổi

T (Năm) 0,5 1 1,5 2 3 4 5 6 7

Hoán đổi% 0,345 0,349 0,353 0,359 0,378 0,416 0,479 0,567 0,674
số 8 9
T (Năm) 25 Hoán đổi% 0,795 10 1,031121,238 1,479
0,916 15 20 1,811
1,716 30

1,853

> # kỳ hạn trong năm


> T <- c (0,5,1,1.5,2,3,4,5,6,7,8,9,10,12,15,20,25,30)
> Hoán đổi <- c (0,345,0.349,0.353,0.359,0.378,0.416,0.479,0.567,0.674,
+ 0,795,0.916,1.031,1.238,1.479,1.716,1.811,1.853) # đơn vị là%
> sp <- Smooth.spline (T, Hoán đổi)
> T1 <- seq (0,5,30, length = 60) # kỳ x 0,5 năm trong 30 năm
> Lợi nhuận <- dự đoán (sp, T1) # giá trị của tỷ giá hoán đổi nội suy

Chúng tôi vẽ biểu đồ tỷ giá hoán đổi thị trường và nội suy spline trong Hình 5.2.

> biểu đồ (T, Hoán đổi) # biểu đồ tỷ giá hoán đổi thị trường

> lines (Yield) # vẽ biểu đồ tỷ giá hoán đổi nội suy spline

Tỷ lệ hoán đổi cho các năm cụ thể có thể được tính toán. Ví dụ, tỷ giá hoán đổi

trong 17 năm được tính như sau,

> Y <- dự đoán (sp, x = 17)

> cat ("T =", Y $ x, ", Rate =", Y $ y, "\ n")


T = 17, Tỷ lệ = 1.595982

1,5

Tráo
đổi

1,0

0,5

0 5 10 15 20 25 30

Hình 5.2: Tỷ giá hoán đổi và nội suy của chúng


Machine Translated by Google

134 Lập trình R và các ứng dụng của nó trong Toán tài chính

Chúng tôi giới thiệu phương pháp tính hệ số chiết khấu bằng phương pháp bootstrap. Nếu

hệ số chiết khấu lên đến tN-1, tức là đã biết DN-1 , thì DN có thể được tính theo (5.3),

sao cho

DN = 1 SN X
i = 1 1 τiDi !. (1 + τNS),
(5,4)

trong đó S là tỷ giá hoán đổi cho năm tN. Do đó, chúng ta có một quan hệ lặp từ D1 tại
t1 đến DN tại tN.

> DF <- rep (0,60) # chuỗi cho các yếu tố chiết khấu> Par <- Lợi tức $

y / 100 # chuyển đổi từ 1% đến 0,01> # hệ số chiết khấu D_1 theo tỷ giá

mệnh giá 0,5 năm> DF [1] <- 1 / (1 + 0,5 * Par [1])

Theo (5.4), hệ số chiết khấu lên đến 30 năm được tính như sau,

> for (i in 2:60) {+ DF

[i] <- (1-Par [i] * sum (0.5 * DF [1: i-1])) / (1 + 0.5 * Par [i]) +}

và chúng tôi vẽ các hệ số chiết khấu trong Hình 5.3.

> cốt truyện (T1, DF)

0 5 10 15 20 25 30

T1

Hình 5.3: Yếu tố chiết khấu so với thời gian đáo hạn
Machine Translated by Google

Hệ số hoán đổi lãi suất và chiết khấu 135

Khi hệ số chiết khấu Di được đưa ra, tỷ giá giao ngay (tính đến ngày hôm nay) và tỷ giá kỳ hạn (ngụ ý

tỷ giá tại các thời điểm trong tương lai) được xác định như dưới đây cũng được suy ra.

1 / ti
1
ti

Di = 1 / (1 + Spoti ) Spoti = 1,
Di

1 Di 1
Di = Di 1 / (1 + τiFi) Fi = 1.
τi Di

Sử dụng R, chúng ta có thể tính toán chúng như sau,

> Điểm <- (1 / DF) ^ (1 / T1) -1


> DF1 <- c (1, DF [1:59])

> FWD <- (DF1 / DF-1) /0,5

Chúng tôi vẽ biểu đồ của chúng trong Hình 5.4.

> plot (T1,100 * Par, xlab = "T", ylab = "Rate (%)", ylim = c (0,3),

+ type = "l")

> dòng (T1,100 * Spot, lty = 2)

> dòng (T1,100 * FWD, lty = 3)

> legend (1,3, legend = c ("Par", "Spot", "Forward"), lty = c (1,2,3))

3.0

Par
2,5 Nơi
Phía trước

2.0

1,5

lệ(%)
Tỷ

1,0

0,5

0,0

0 5 10 15 20 25 30

Hình 5.4: Tỷ giá hối đoái (đường liền nét), tỷ giá giao ngay (đường đứt nét), tỷ giá kỳ hạn (đường chấm)

5.3 Định giá các khoản hoán đổi lãi suất và rủi ro của chúng

Khi đã biết các hệ số chiết khấu, chúng ta có thể đánh giá giá trị hiện tại của lãi suất

tỷ giá hoán đổi và tính toán rủi ro của chúng. Như đã thảo luận ở trên, khi các điều khoản của một

hoán đổi lãi suất được thiết lập, tỷ lệ hoán đổi sao cho giá trị hiện tại của lãi suất

hoán đổi tỷ giá bằng không. Tuy nhiên, giá trị của hoán đổi lãi suất nói chung sẽ

di chuyển theo thời gian khi thị trường tỷ giá hoán đổi di chuyển.
Machine Translated by Google

136 Lập trình R và các ứng dụng của nó trong Toán tài chính

Hãy xem xét một giao dịch hoán đổi người nhận (nhận lãi suất cố định và trả lãi suất

thả nổi) với danh nghĩa là 10.000, thời gian đến hạn là 4,5 năm và lãi suất cố định là

0,45%. Giá trị thị trường của tỷ giá hoán đổi được đưa ra trong Bảng 5.1. Chúng tôi tính

toán tỷ lệ hoán đổi nội suy của kỳ hạn 4,5 năm như sau

> dự đoán (sp, x = 4,5) $ y


[1] 0,4442288

Tỷ lệ hoán đổi xấp xỉ 0,44%, có nghĩa là hoán đổi người nhận này có giá trị dương vì tỷ

lệ cố định của hợp đồng 0,45% lớn hơn tỷ lệ hoán đổi hiện tại trên thị trường.

Theo (5.1) và (5.2), RPV , giá trị hiện tại của việc nhận lãi suất hoán đổi cố định
và PPV , giá trị hiện tại của việc trả lãi suất thả nổi, được tính như sau,

RPV = 10000X τiSDi


i = 1

PPV = 10000 (1 D9).

Giá trị hiện tại (PV) của hoán đổi người nhận được tính bằng chênh lệch; I E,

PV = RPV PPV .

Sử dụng R, chúng tôi tính toán ở trên. Hệ số chiết khấu từ 0,5 năm đến 4,5 năm

> DF [1: 9]

[1] 0,9982780 0,9965191 0,9947235 0,9928516 ......

Do đó, RPV và PPV được tính như sau,

> # giá trị hiện tại của số tiền nhận> R_PV <- 10000 * 0,5
* 0,0045 * tổng (DF [1: 9])

> R_PV
[1] 200,5199> #

giá trị hiện tại của dòng tiền trả lãi suất thả nổi> P_PV <- 10000 * (1-DF [9])

> P_PV
[1] 197.9483> PV

<- R_PV - P_PV # giá trị hiện tại của lãi suất + # hoán đổi tỷ giá> PV [1]

2.571666

Đối với hoán đổi người trả tiền (trả theo tỷ lệ cố định), dấu hiệu ngược lại (tiêu cực
trong trường hợp này). Tiếp theo, chúng ta xem xét việc tính toán rủi ro lãi suất của lãi suất
Machine Translated by Google

Hệ số hoán đổi lãi suất và chiết khấu 137

tráo đổi. Rủi ro cho thấy giá trị hiện tại của hoán đổi lãi suất thay đổi lớn như
thế nào khi tỷ giá hoán đổi lệch so với tỷ giá hiện tại. Chúng tôi tính PV ±, là
các giá trị hiện tại được tính theo cùng một phương pháp đã giới thiệu ở trên cho
các tỷ giá hoán đổi thay đổi từ tỷ giá hiện tại thành ± 1bp (= ± 0,01%). Độ nhạy
rủi ro delta ( ) và gamma (Γ) được định nghĩa như sau,

PV + PV
= 2 × 1bp ,

PV + 2PV + PV Γ
= (1bp) .
2

Các phương trình này cho thấy delta là vi phân bậc nhất của tỷ lệ hoán đổi và gamma
là vi phân bậc hai của nó. Nếu chúng ta muốn biết giá trị của hoán đổi lãi suất
cho dx, thì sự thay đổi nhỏ của tỷ lệ hoán đổi, nó được đưa ra gần đúng bằng khai
triển Taylor,

1
2
PVdx = PV + (dx) + Γ (dx) .
2

Mặc dù chúng ta có thể tính toán giá trị chính xác của PVdx bằng cách áp dụng sự thay đổi

của dx cho đường cong lợi suất, nhưng nó thường rất tẻ nhạt, đặc biệt là khi chúng ta có

một danh mục đầu tư bao gồm các vị trí hoán đổi lãi suất khác nhau. Trong trường hợp này,

chúng tôi tính toán delta và gamma của danh mục đầu tư, thay vì từng vị trí và quản lý rủi

ro ở cấp độ danh mục đầu tư. Hơn nữa, công thức này giúp bạn có thể tính toán lượng rủi ro

bằng sự thay đổi của mỗi tỷ lệ hoán đổi, chứ không phải sự thay đổi của đường cong lợi suất.

Phân tích này được thực hiện để kiểm tra xem lượng rủi ro có bị sai lệch vào năm cụ thể
trên đường cong lợi suất hay không.
Đoạn mã sau đây là một ví dụ về tính toán số tiền rủi ro.

> # đường cong lợi nhuận dịch chuyển + 1bp (đơn vị là%)
> Swap_p <- Swap + 0,01> #
đường cong lợi nhuận dịch chuyển -1bp (đơn vị là%)
> Swap_m <- Swap-0,01
>

> # Nội suy đường cong của từng đường cong> sp_p <-
Smooth.spline (T, Swap_p)> sp_m <- Smooth.spline
(T, Swap_m)
> Par_p <- dự đoán (sp_p, T1) $ y / 100>
Par_m <- dự đoán (sp_m, T1) $ y / 100
>
> # hệ số chiết khấu cho mỗi đường cong

> DF_p <- rep (0,60)


> DF_m <- rep (0,60)
> DF_p [1] <- 1 / (1 + 0,5 * Par_p [1])
> DF_m [1] <- 1 / (1 + 0,5 * Par_m [1])
Machine Translated by Google

Chương trình 138 R và các ứng dụng của nó trong toán học tài chính

> for (i in 2:60) {+

DF_p [i] <- (1-0.5 * Par_p [i] * sum (DF_p [1: i-1])) / + (1 +
0.5 * Par_p [i] ) +}> cho (tôi trong 2:60) {+ DF_m [i] <- (1-0,5
* Par_m [i] * sum (DF_m [1: i-1])) / + (1 + 0,5 * Par_m [i]) +}

>

> # giá trị hiện tại cho các thay đổi + 1bp và -1bp trong tỷ lệ hoán đổi> PV_p
<- 10000 * (0,5 * 0,0045 * sum (DF_p [1: 9]) - (1-DF_p [9]))
> PV_m <- 10000 * (0,5 * 0,0045 * tổng (DF_m [1: 9]) - (1-DF_m [9]))

> PV_p
[1] -1.883863>
PV_m [1] 7.029414

Delta và gamma được tính như sau,

> Del <- (PV_p-PV_m) / (2 * 0,0001) # 1bp = 0,01% = 0,0001> Del [1]
-44566,39> Gam <- (PV_p-2 * PV + PV_m) /0,0001^2> Gam

[1] 221844,9

Tỷ giá hoán đổi tăng 10bp làm cho giá trị hiện tại của hoán đổi lãi suất thay đổi xấp
xỉ như sau,

> PV + Del * 0,001 + 0,5 * Gam * 0,001 ^ 2

[1] -41,8838

Kết quả này cho thấy sự thay đổi của 10bp làm cho PV giảm 41,884bp.

Trong chương này, chúng ta đã thảo luận các vấn đề về hoán đổi lãi suất, bao gồm
cấu trúc của hoán đổi lãi suất, hệ số chiết khấu, việc khấu trừ tỷ giá giao ngay,
mệnh giá và kỳ hạn. Ngoài ra, chúng tôi đã xem xét tính toán độ nhạy rủi ro của hoán
đổi lãi suất.
Mặc dù cuốn sách này không đi sâu vào tính toán phức tạp hơn trong phái sinh lãi
suất, nhưng hoán đổi lãi suất là sản phẩm cơ bản nhất trong phái sinh lãi suất. Hơn
nữa, vì hệ số chiết khấu được sử dụng để định giá các phái sinh khác nhau, nên các ý
tưởng được thảo luận ở đây là rất quan trọng. Độc giả quan tâm đến các lĩnh vực này,
có thể tham khảo các cuốn sách bao gồm thảo luận toàn diện hơn về các mô hình lãi
suất (ví dụ: [BF06], [JW00] và [MR05]).
Machine Translated by Google

Chương 6

Mô hình thời gian rời rạc:


Mô hình cây

NỘI DUNG

6.1 Mô hình nhị thức một chu kỳ ...................................... 140


6.1.1 Định giá phái sinh ......................................... 141

6.1.2 Định giá theo biện pháp trung lập rủi ro ............................ 146
6.2 Mô hình nhị thức nhiều chu kỳ ....................................... 149
6.2.1 Tổng quát hóa cho mô hình đa thời kỳ ................... 149

6.2.2 Tùy chọn cuộc gọi định giá ......................................... 152


6,3 Mô hình tam thức .............................................. ... 156

Cùng với định giá tài sản, định giá phái sinh là một trong những quan điểm phụ quan trọng

nhất trong lý thuyết tài chính. Các công cụ phái sinh là các công cụ tài chính hoặc các hợp đồng mà

giá trị, hay khoản hoàn trả, bắt nguồn từ giá trị của các tài sản cơ bản khác được gọi là tài

sản không có cơ sở. Định giá phái sinh thường bắt đầu bằng việc lập mô hình động lực của

tài sản an toàn và rủi ro tiềm ẩn. Một trong những phương pháp trực quan nhất để định giá phái

sinh đứng là mô hình nhị thức được phát triển bởi John C.

Cox, Stephen Ross, Mark Rubinstein [CRR79] và Richard J. Rendleman và

Brit J. Bartter [RB79]. Do đó, chúng tôi tập trung vào mô hình nhị thức trong phần này như một

giới thiệu về định giá các sản phẩm phái sinh.

139
Machine Translated by Google

Lập trình 140 R và các ứng dụng của nó trong Toán tài chính

6.1 Mô hình nhị thức một chu kỳ


Mô hình thời kỳ đơn mô tả một chuyển động giá chỉ được ghi lại trong một khoảng thời gian từ thời điểm

ban đầu 0 đến thời điểm cuối cùng 1. Mô hình nhị thức giả định rằng chuyển động giá chỉ có hai kết quả

có thể xảy ra. Ở đây, chúng tôi đặt chúng là 'lên' và 'xuống', để đơn giản, được biểu thị bằng các sự

kiện ωu và ωd, xảy ra với xác suất ity P (ωu) và P (ωd), tương ứng. Nếu sự kiện ωu xảy ra, thì giá tài

sản rủi ro S thay đổi thành (1 + u) S. Nếu sự kiện ωd xảy ra, thì giá S thay đổi thành (1 + d) S, trong

đó d <u. Độ lớn của các chuyển động "lên" và "xuống", u và d, do đó tương ứng với tỷ lệ hoàn vốn của tài

sản rủi ro trong kỳ. Chúng tôi cũng giả định sự tồn tại của một tài sản an toàn, di chuyển một cách xác

định. Lợi tức từ tài sản an toàn là không đổi đối với sự kiện ωu và ωd. Chính xác hơn, giá trị của tài

sản an toàn được cho bằng 1 tại thời điểm ban đầu 0, và giá trị sẽ là 1 + r tại thời điểm 1.

Chúng tôi đưa ra các giả định quan trọng hơn nữa đối với định giá phái sinh.

Giả định về mô hình

Thị trường không có ma sát: ví dụ: không có chi phí giao dịch, không có thuế, không có

ràng buộc bán khống và thanh khoản vô hạn.

Thị trường tài sản thỏa mãn điều kiện không có chênh lệch giá.

Chúng ta đã thảo luận về điều kiện không có chênh lệch giá trong Chương 4. Trong mô hình nhị thức

một chu kỳ, điều kiện không có chênh lệch giá yêu cầu d <r <u. Lý do như sau: Để tài sản ban đầu của

một nhà đầu tư bằng 0 tại thời điểm 0; tức là, cô ấy không nắm giữ bất kỳ tài sản an toàn và rủi ro nào.

Vay S đơn vị tài sản an toàn, nhà đầu tư mua 1 đơn vị tài sản rủi ro với giá S. Giá trị ròng của danh

mục đầu tư của nhà đầu tư là S S = 0 tại thời điểm 0. Tuy nhiên, giá trị tại thời điểm 1 có hai khả

năng. Nếu sự kiện ωu xảy ra, giá tài sản rủi ro S tăng và giá trị danh mục đầu tư mới được cho bởi - (1

+ r) S + (1 + u) S = (u - r) S. Nếu ωd xảy ra, giá tài sản rủi ro S giảm và giá trị danh mục đầu tư trở

thành - (1 + r) S + (1+ d) S = (d - r) S. Nếu u - r> 0 và d - r> 0, nhà đầu tư có thể tạo ra lợi nhuận

với chi phí bằng không và rủi ro bằng không. Điều này có nghĩa là có một cơ hội kinh doanh chênh lệch

giá.

Do đó, các nhà đầu tư sẽ vay tiền và mua S để kiếm lời. Họ sẽ có thể tiếp tục làm điều này cho đến khi

giá của S trở nên quá cao hoặc chi phí đi vay quá cao để có thể đảm bảo lợi nhuận. Do đó, để không tồn

tại cơ hội kinh doanh chênh lệch giá, thì điều nhất thiết là u r> 0 và d r <0, tức là, d <r <u.
Machine Translated by Google

Mô hình thời gian rời rạc: Mô hình cây 141

6.1.1 Định giá phái sinh

Bây giờ, chúng ta chuyển sang thảo luận về định giá phái sinh. Đạo hàm đơn giản nhất là

được gọi là chứng khoán Arrow-Debreu [Arr64, Deb59] .1 Đây là một loại bảo mật tạo ra khoản thanh

toán bằng 1 cho một sự kiện và bằng 0 cho một sự kiện khác. Ví dụ, điều này tạo ra

phần thưởng 1 khi sự kiện ωu xảy ra, phần khác phần trả lại bằng 0. Sự an toàn mà

tạo ra khoản hoàn trả 1 khi sự kiện ωd xảy ra và khoản hoàn trả 0 nếu không,

cũng là bảo mật Arrow-Debreu. Hãy để kiểu bảo mật Arrow-Debreu trước đây là
2 Chứng khoán Arrow-Debreu được gọi là chứng khoán phái sinh vì
φu và cái sau là φd.
giá trị hiện tại của chứng khoán Arrow-Debreu hoàn toàn được xác định (tức là 'de rived') bằng

các tài sản an toàn và rủi ro cơ bản. Như chúng tôi đã mô tả, Arrow-Debreu

chứng khoán là chứng khoán phái sinh đơn giản nhất và chứng khoán phái sinh cơ bản nhất

chứng khoán. Lý do là tất cả các dẫn xuất khác có thể được định giá bằng Arrow-Debreu

chứng khoán, sẽ được thảo luận sau. Theo nghĩa này, điều quan trọng là phải hiểu

dẫn xuất giá của chứng khoán Arrow-Debreu.

Hãy để chúng tôi định giá với chứng khoán Arrow-Debreu. Cơ sở của việc định giá trong lý

thuyết fi nance là áp dụng điều kiện không có chênh lệch giá. Đối với điều này, chúng tôi sử dụng

phép đồng đẳng so sánh giữa khoản hoàn trả của tài sản cơ bản và khoản hoàn trả của tài sản phái sinh

và xác định giá trị của phái sinh thỏa mãn không có chênh lệch giá.

Đầu tiên, chúng tôi xem xét danh mục tài sản an toàn và chứng khoán Arrow-Debreu.

Danh mục đầu tư 1: 1 / (1 + r) đơn vị tài sản an toàn tại thời điểm 0

Danh mục đầu tư 2: 1 đơn vị mỗi chứng khoán Arrow-Debreu φu, φd, tương ứng

Giá trị của các danh mục đầu tư này tại thời điểm 1 sẽ là 1 đối với các sự kiện ωu và ωd.

Sự dịch chuyển giá trị của danh mục đầu tư 1 được mô tả trong Hình 6.1. Sự dịch chuyển giá

trị của danh mục đầu tư 2 cũng được mô tả trong Hình 6.2.

Tại thời điểm 1, cả hai danh mục đầu tư đều giống nhau. Để loại trừ các cơ hội kinh doanh chênh lệch giá,

giá trị của cả hai danh mục đầu tư tại 0 cũng phải giống nhau; tức là, nó giữ

φu + φd = 1 / (1 + r). (6.1)

Tiếp theo, chúng tôi xem xét các danh mục đầu tư sau, so sánh tài sản rủi ro với
Chứng khoán Arrow-Debreu.

Danh mục đầu tư 3: 1 đơn vị tài sản rủi ro S tại thời điểm 0

Danh mục đầu tư 4: (1 + u) S đơn vị bảo mật Arrow-Debreu φu và (1 + d) S đơn vị

của bảo mật Arrow-Debreu φd

Chính xác hơn, chứng khoán Arrow-Debreu không nhất thiết phải là chứng khoán phái sinh, mà là chứng khoán nguyên thủy và

giả định không được giao dịch trên bất kỳ thị trường thực nào. Tuy nhiên, chúng hoạt động như một chứng khoán trung gian

giữa tài sản cơ bản và bất kỳ công cụ phái sinh nào khác. Vì vậy, nó là hợp lý để giải thích Arrow-Debreu
chứng khoán phái sinh trong bối cảnh này.
2
Trong phần này, chúng ta giải quyết mô hình nhị thức chỉ giả định hai loại sự kiện trong tương lai. Vì vậy,

chỉ cần thiết lập hai loại chứng khoán Arrow-Debreu, φu, φd là đủ . Nếu chúng ta mở rộng mô hình nhị thức đến nhiều hơn

phức tạp, thì chúng ta cần xem xét thêm các loại chứng khoán Arrow-Debreu.
Machine Translated by Google

142 Lập trình R và các ứng dụng của nó trong Toán tài chính

Hình 6.1: Sự dịch chuyển giá trị của danh mục đầu tư 1

Giá trị của các danh mục đầu tư này được đưa ra tại thời điểm 1 như sau:

Giá trị của danh mục đầu tư 3 được cho bởi (1 + u) S đối với biến cố ωu và (1 + d) S đối

với biến cố ωd.

Giá trị của danh mục đầu tư 4 được cho bởi (1 + u) S đối với biến cố ωu và (1 + d) S đối

với biến cố ωd.

Chuyển động của danh mục đầu tư 3 được mô tả trong Hình 6.3. Chuyển động của portfo lio 4 được mô tả

trong Hình 6.4.

tính tổng chứng khoán Arrow-Debreu

Hình 6.2: Sự dịch chuyển giá trị của danh mục đầu tư 2
Machine Translated by Google

Mô hình thời gian rời rạc: Mô hình cây 143

Hình 6.3: Sự dịch chuyển giá trị của danh mục đầu tư 3

tính tổng chứng khoán Arrow-Debreu

Hình 6.4: Sự dịch chuyển giá trị của danh mục đầu tư 4

Tương tự như trường hợp trước, giá trị của danh mục đầu tư 3 và danh mục đầu tư 4 là

tương tự như nhau. Do đó, điều kiện không có kinh doanh chênh lệch giá yêu cầu rằng

(1 + u) Sφu + (1 + d) Sφd = S. (6.2)


Machine Translated by Google

144 Lập trình R và các ứng dụng của nó trong Toán tài chính

Giải quyết (6.1) và (6.2), nó giữ

1 r d
φu = (6,3)
1 + ru d 1
u r
φd = . (6,4)
1 + ru d

Chúng là giá của chứng khoán Arrow-Debreu.

Chúng tôi đưa ra một ví dụ số để thu được chứng khoán Arrow-Debreu. Ở đây,
cho u = 0,2, d = 0,1, r = 0,1 và tính chứng khoán Arrow-Debreu. Đầu tiên,
chúng tôi xác định một hàm để tính giá của bảo mật Arrow-Debreu.

> arrow_debreu <- function (r, u, d) + {+ phi_u

<- (rd) / ((1 + r) * (ud)) + phi_d <- (ur) / ((1

+ r) * (ud )) + return (c (phi_u, phi_d)) +}

Chạy tập lệnh này như sau:

> arrow_debreu (0,1,0.2, -0,1) [1]

0,6060606 0,3030303

Điều tiếp theo chúng tôi muốn làm là tái tạo chứng khoán Arrow-Debreu bằng cách sử dụng

các tài sản an toàn và rủi ro. Việc nhân rộng có nghĩa là xây dựng một danh mục tài sản an

toàn và rủi ro tạo ra dòng tiền giống như chứng khoán Arrow-Debreu.

Khi giá của chứng khoán Arrow-Debreu được đưa ra, việc nhân rộng rất dễ dàng. Ví dụ: chứng

khoán Arrow-Debreu φu có thể được sao chép bởi danh mục gồm 1 1 + d đơn vị tài sản rủi ro và
- đơn vị tài sản an toàn (lưu ý rằng dấu (u vậy,
Thật d) giá
S (1trị
+ r)
của(udanh dmục
) của
đầu chúng
tư nàyđối
tạinhau).
thời
điểm 0 trùng với (6.3) và (6.4). Hơn nữa, khi
tư là
sự kiện ωu xảy ra, giá trị danh mục đầu

1 1 + d
(1 + u) S (1 + r) = 1. (u d) S (1 + r)
(u d)

Khi biến cố ωd xảy ra, giá trị là

1 1 + d
(1 + d) S (1 + r) = 0. (u d) S (1 + r)
(u d)

1 1 +
d Điều này cho thấy rằng danh mục đầu tư sao chép các chứng khoán Mũi tên-Debreu (u d) S , - (1 +
r) (u d) có
φu thể
. Tương
tái tạo
tự, được
chứngbởi
khoán
1 danh
Mũi mục
tên-Debreu
đầu tư φd
củacũng
-

(u-d) S
đơn vị của tài sản an toàn.
đơn vị tài sản rủi ro và 1 + u
(1 + r) (u d)
Machine Translated by Google

Mô hình thời gian rời rạc: Mô hình cây 145

Chúng ta hãy thử ví dụ số sau đây như một bài tập.

> repli <- function (r, u, d, S) + {+


# bản sao của Arrow-Debreu chứng khoán

phi_u + phi_u_S <- 1 / ((ud) * S) # đơn vị tài sản rủi ro + phi_u_B <-
- (1 + d) / ((1 + r) * (ud)) # đơn vị tài sản an toàn

+ # bản sao của chứng khoán Arrow-Debreu phi_d + phi_d_S <- -1 / ((ud)
* S) # đơn vị tài sản rủi ro + phi_d_B <- (1 + u) / ((1 + r) * (ud) ) #
đơn vị tài sản an toàn
+

+ return (rbind (

+ "Danh mục sao chép của phi_u" = c (phi_u_S, phi_u_B),


+ "Danh mục sao chép của phi_d" = c (phi_d_S, phi_d_B))) +}

Cho r = 0,1, u = 0,2, d = 0,1, S = 100 và chạy tập lệnh này, sau đó chúng ta nhận được mức thấp

nhất của fol.

> repli (0,1,0.2, -0,1,100)


[, 1] [, 2]

Danh mục sao chép của phi_u 0.03333333 -2.727273 Danh mục tái tạo của phi_d
-0.03333333 3.636364

Chứng khoán Arrow-Debreu giúp chúng tôi có thể định giá bất kỳ sản phẩm phái sinh nào. Đó là lý do tại

sao các công cụ phái sinh với bất kỳ khoản hoàn trả nào đều có thể được nhân rộng bởi chứng khoán Arrow-Debreu.

Chúng tôi thấy nó, ở đây.

Gọi C0 là giá của một đạo hàm tại thời điểm 0 và phần hoàn vốn của đạo hàm này
được cho bởi (Cu, Cd) tại thời điểm 1; tức là, khi sự kiện ωu xảy ra, Cu hoàn trả
được tạo ra và khi sự kiện ωd xảy ra, Cd hoàn trả được tạo ra. Phái sinh này có
thể được sao chép bởi danh mục đầu tư của đơn vịCu của chứng khoán Arrow-Debreu φu
và đơn vị Cd của chứng khoán Arrow Debreu φd. Vì φu và φd là giá của các chứng
khoán Arrow-Debreu này tại thời điểm 0, giá trị của danh mục đầu tư này được biểu thị bằng

φuCu + φdCd. (6,5)

Danh mục đầu tư này sao chép đạo hàm C0. Thật vậy, khi sự kiện ωu xảy ra, đạo hàm
C0 tạo ra Cu hoàn trả và danh mục chứng khoán Arrow-Debreu của (6.5) tạo ra khoản
hoàn trả 1 × Cu + 0 × Cd. Khi sự kiện ωd xảy ra, đạo hàm C0 tạo ra Cd hoàn vốn và
danh mục đầu tư chứng khoán Arrow Debreu của (6.5) tạo ra khoản hoàn trả 0 × Cu +
1 × Cd. Điều này cho thấy rằng danh mục đầu tư của (6.5) sao chép đạo hàm C0. Vì
phần thưởng của chứng khoán phái sinh này, (Cu, Cd), được đưa ra tùy ý, nên bất kỳ
phái sinh nào cũng có thể được sao chép bởi chứng khoán Arrow Debreu. Ở đây, chúng
tôi coi không gian xác suất đơn giản chỉ bao gồm
Machine Translated by Google

Chương 146 lập trình R và các ứng dụng của nó trong toán học tài chính

2 sự kiện (ωu, ωd). Tuy nhiên, điều này có thể được mở rộng cho nhiều không gian chung hơn. Trên

không gian mở rộng, chúng tôi có thể mở rộng việc thanh toán chứng khoán Arrow-Debreu. Vì vậy,

một cuộc thảo luận tương tự là có thể.

Tóm lại, chúng tôi thấy bất kỳ phái sinh nào cũng có thể được sao chép bởi chứng khoán Arrow-Debreu.

Hơn nữa, chứng khoán Arrow-Debreu có thể được nhân rộng bằng các tài sản cơ bản. Có nghĩa là, bất kỳ

công cụ phái sinh nào cũng có thể được nhân rộng bằng các tài sản cơ bản.

6.1.2 Định giá theo biện pháp trung lập rủi ro

Phần trước cho thấy rằng bất kỳ phái sinh nào cũng có thể được sao chép bởi chứng
khoán Arrow Debreu. Tuy nhiên, nếu giá của một chứng khoán phái sinh C0 khác với
giá trị của danh mục đầu tư của chứng khoán Arrow-Debreu φuCu + φdCd tại thời điểm
0 thì nó tạo ra cơ hội kinh doanh chênh lệch giá. Do đó, nó yêu cầu C0 = φuCu + φdCd.
Nghĩa là, giá phái sinh được xác định bằng cách nhân rộng của phái sinh. Tuy nhiên, thủ
tục này đôi khi rất tẻ nhạt. Để tránh nó, chúng tôi thường sử dụng phương pháp định giá
sử dụng biện pháp trung lập rủi ro [HK79, HP81].
Theo (6.3) và (6.4), nó giữ

C0 = φuCu + φdCd r d Cu
1 + Cd. 1 1 u r
=
+ ru d 1 + ru d (6,6)

Chúng tôi xác định

r d
Q (wu) = (6,7)
u d
u r
Q (tuần) = , (6,8)
u d

và thay thế chúng thành (6.6), sau đó nó theo sau

Cu Cd Q (wu) + Q
C0 = (wd). (6,9)
1 + r 1 + r

Chúng ta có thể hiểu Q là một phép đo xác suất thỏa mãn định nghĩa của xác suất
ity; I E,

Q (wu) + Q (wd) = 1, (6.10)

0 < Q (wu), Q (wd) <1 (6.11)


Machine Translated by Google

Mô hình thời gian rời rạc: Mô hình cây 147

3
và tương đương với thước đo xác suất ban đầu P. Đạo hàm Điều này ngụ ý rằng bất kỳ

có thể được đánh giá bằng giá trị kỳ vọng dưới thước đo xác suất Q; tức là,
(6.9) ngụ ý
C1
C0 = E Q ,
1 + r

trong đó C1 là phần hoàn vốn của phái sinh tại thời điểm 1 sao cho

Cu nếu ωu xảy ra
C1 = .
Cd nếu ωd xảy ra

Nói cách khác, nó có thể được mô tả là

C0 C1
= E Q , (6.12)
B0 B1

trong đó, để làm rõ ràng thời gian, chúng ta viết B0, B1 và B0 = 1 và B1 = 1 + r là động

thái giá của tài sản an toàn. Phép đo xác suất Q được gọi là thước đo trung lập rủi ro và

(6.12) ngụ ý quá trình chiết khấu của giá trị phái sinh C / B là martingale sẽ được thảo
luận ở phần sau.

Mối quan hệ giữa tài sản rủi ro S và thước đo trung lập rủi ro Q

Theo một nghĩa nào đó, thước đo xác suất Q được thảo luận ở trên là thước đo nhân tạo.

Ở đây, chúng tôi làm rõ cách giải thích kinh tế của thước đo Q. (6.2) có thể được

viết lại bằng Q như sau,

S1 (ωu) S1 (ωd)
Q (ωu) + Q (ωd) = S0. 1 + r 1 + r (6.13)

Để làm cho thời gian rõ ràng, chúng tôi mô tả S0, S1. Hơn nữa, điều này có thể được viết lại thành

S0 S1
= E Q . (6.14)
B0 B1

3 Sự tương đương của các thước đo xác suất có nghĩa là tập hợp rỗng của cả hai thước đo xác suất
là bằng nhau. Nghĩa là, sự kiện mà xác suất bằng 0 dưới thước đo xác suất P cũng suy ra xác suất bằng
0 dưới thước đo xác suất Q và ngược lại. Trong mô hình nhị thức, sự kiện có xác suất 0 dưới thước đo
xác suất P là “cả sự kiện ωu và ωd đều không xảy ra”. Bây giờ, các sự kiện có thể hình dung là {ωu},
{ωd}, , Ω và các sự kiện này không liên quan đến nhau. Ngay cả dưới thước đo xác suất Q, xác suất
sẽ là 0 đối với chỉ Q ( ). Do đó, các độ đo xác suất P và Q là tương đương nhau.

Để thảo luận toàn diện hơn về lý thuyết xác suất, [Bil86, CK05, JP04 ] và [Wil91] sẽ là những hướng
dẫn tốt.
Machine Translated by Google

148 Lập trình R và các ứng dụng của nó trong Toán tài chính

Phương trình này cho thấy giá trị kỳ vọng của giá chiết khấu của tài sản rủi ro tại

thời điểm 1, S1 / B1, tương đương với giá chiết khấu của tài sản rủi ro tại thời điểm 0,

S0 / B0. Một biến ngẫu nhiên như vậy, S / B, được gọi là martingale và số đo xác suất

thỏa mãn mối quan hệ của (6.14) được gọi là số đo martingale. Chính xác hơn, vì Q và P là

tương đương, Q được gọi là thước đo martingale tương đương. A

Lưu ý rằng thước đo xác suất Q còn được gọi là thước đo trung lập rủi ro trong bối

cảnh tài chính. Theo phép đo xác suất Q, lợi nhuận kỳ vọng của tài sản rủi ro dường như

bằng với tỷ suất sinh lợi của tài sản an toàn.

Đây là nguồn gốc của tên gọi của biện pháp trung lập rủi ro. Tuy nhiên, lợi nhuận của tài

sản rủi ro và tài sản an toàn không nhất thiết phải bằng nhau trên thị trường tài chính

thực (nếu bằng nhau, mọi người đều không muốn đầu tư vốn của mình vào tài sản an toàn).

Điều này ngụ ý rằng thước đo xác suất Q là giả tạo và khác với thước đo xác suất thực P.

Điều thú vị là, ngay cả trong các mô hình mở rộng hơn so với mô hình nhị thức, bất

kỳ giá phái sinh nào cũng được tính bằng giá trị kỳ vọng của khoản chiết khấu thanh toán

khi đáo hạn theo biện pháp trung lập rủi ro. Yêu cầu đối với chúng tôi chỉ là điều kiện

không có chênh lệch giá. Do đó, điều quan trọng là phải xác định rõ động lực của tài sản

cơ sở theo thước đo trung tính rủi ro Q để định giá phái sinh.

Hơn nữa, phương pháp định giá sử dụng biện pháp trung lập rủi ro khiến chúng ta có

thể định giá các công cụ phái sinh mà không chỉ định chứng khoán Arrow-Debreu. Phương

pháp này chỉ yêu cầu chúng ta lấy ra thước đo xác suất sao cho quá trình tính giá không

được tính của tài sản cơ bản là martingale theo thước đo này.

Sau đó, chúng ta có thể tính giá phái sinh bằng cách tính toán giá trị kỳ vọng của khoản

hoàn trả khi đáo hạn theo biện pháp trung lập rủi ro này.

Ví dụ: khi chúng tôi viết xác suất tăng theo thước đo rủi ro trung tính là q, nó giữ

(1 + u) S (1 + d) S (1
+ r 1 + r q) = S. q + 1

r d
Điều này cho thấy q = u d . Tiếp theo, chúng ta có thể dễ dàng tính được giá phái sinh
bằng cách tính giá trị kỳ vọng của khoản hoàn vốn khi đáo hạn theo khả năng q, 1 - q.

Điều này dễ dàng hơn nhiều so với việc tính đến điều kiện không có chênh lệch giá, điều

kiện nhân rộng hoặc chứng khoán Arrow-Debreu.

a Ý tưởng về martingale được tạo ra bởi [Doo42].

Tiếp theo, chúng tôi hiển thị ví dụ số để tính giá phái sinh bằng cách sử dụng biện pháp

trung lập rủi ro. Cho r = 0,02, u = 0,1, d = 0,09 và công suất của đạo hàm khi đáo hạn là

(Cu, Cd) = (50,0). Sau đó, chúng tôi tính toán thước đo trung lập rủi ro q và giá phái sinh tại

thời điểm 0.
Machine Translated by Google

Mô hình thời gian rời rạc: Mô hình cây 149

> mart_call_1 <- hàm (r, u, d, Cu, Cd) + {+


# thước đo trung tính rủi ro + q <- (rd) /
(ud) + # giá trị kỳ vọng theo thước đo trung
lập rủi ro

+ C0 <- (q * Cu + (1-q) * Cd) / (1 +


r) + return (c ("thước đo trung tính rủi ro q_u"
= q, + "giá phái sinh" = C0)) +}

Chạy tập lệnh này.

> mart_call_1 (0,02,0.1, -0,09,50,0)


thước đo rủi ro trung lập q_u giá phái sinh 0,5789474
28.3797730

6.2 Mô hình nhị thức nhiều thời kỳ Chúng tôi mở

rộng mô hình một thời kỳ chỉ bao gồm thời điểm hiện tại 0 và thời gian đáo hạn 1,
sang mô hình đa thời kỳ bao gồm nhiều bước thời gian giữa thời điểm hiện tại và
thời điểm đáo hạn. Hơn nữa, chúng tôi coi quyền chọn mua định giá là một trong
những công cụ phái sinh tiêu biểu nhất trong lĩnh vực tài chính.

6.2.1 Tổng quát hóa cho mô hình đa thời kỳ

Xét một đạo hàm với thời gian đến hạn T = N t. Chúng tôi chia thời gian giữa các giá
trị từ thời điểm hiện tại 0 đến khi đáo hạn T cho t thành N đơn vị. Chúng tôi giả
định rằng giá của tài sản rủi ro {Si t} i N di chuyển từ Si t đến (1 + u) Si t với
xác suất pu và di chuyển từ Si t đến (1 + d) Si t với xác suất pd trên khoảng thời
gian giữa i t và (i + 1) t. Do đó, giá của tài sản rủi ro tại thời điểm đáo hạn T
được điều chỉnh bởi phân phối nhị thức; tức là, nếu giá của tài sản rủi ro tại thời
điểm 0, được cho bởi S0, tăng lên j lần khi đáo hạn T, thì giá ST tại thời điểm T
được cho bởi ST = (1 + u) Nj (1 + d)
jS0. Xác suất cho nước đi này là 4

N N d
j N j jj pp .
P [ST = (1 + u) (1 + d) S0] = u (6.15)
j

Chúng tôi cũng giả định rằng một tài sản an toàn di chuyển từ Bi t đến (1 + r t) Bi t
với xác suất 1 trong khoảng thời gian giữa i t và (i + 1) t. Trong thời gian N bước
từ thời điểm 0 đến khi đáo hạn T, giá của tài sản an toàn phát triển từ B0 đến BT = (1
+ rT) B0.

N
4
Trong phần này, chúng tôi biểu thị kết hợp NCj là để tránh nhầm lẫn với tùy chọn
j
trả hết C.
Machine Translated by Google

Lập trình 150 R và các ứng dụng của nó trong Toán tài chính

Thảo luận ở trên cho khoảng thời gian giữa i t và (i + 1) t trên mô hình đa chu kỳ
tương đương với khoảng thời gian duy nhất giữa 0 và 1 trong mô hình một chu kỳ. Do đó,

tương tự như đối với mô hình một thời kỳ, thước đo rủi ro trung tính trong một đơn vị

khoảng thời gian trong mô hình nhiều thời kỳ được đưa ra bởi

r t d
qu =
u
du
r t qd = .
u d

Hơn nữa, thước đo trung hòa rủi ro của chuyển động từ thời điểm 0 đến T chỉ được đặt lại

bằng pu, pd trong (6.15) thành qu, qd. Do đó, nó cho rằng

N
j N j jj N
q uq
Q [ST = (1 + u) (1 + d) S0] = d .
j

Xét một đạo hàm C0. Giả sử phần hoàn trả của đạo hàm này được xác định bởi số sự kiện

ωu (hoặc sự kiện ωd) xảy ra theo kỳ hạn T. Nếu sự kiện ωu xảy ra j lần, phần hoàn trả của

đạo hàm này được ký hiệu là C (j). Lưu ý rằng giá của tài sản rủi ro được cho bởi ST = (1

+ u) j (1 + d) N jS0 trong trường hợp

này. Hình 6.5 cho thấy một ví dụ về động lực của mô hình nhị thức nhiều chu kỳ, trong đó
N = 3.

Hình 6.5: Biến động giá trong mô hình nhị thức nhiều chu kỳ
Machine Translated by Google

Mô hình thời gian rời rạc: Mô hình cây 151

Giá phái sinh có thể được tính nếu khoản thanh toán khi đáo hạn và rủi ro
biện pháp trung lập đã được biết đến, và được đưa ra như sau,

Q CT
C0 = B0E (6.16)
BT
N
CT (j) N jj Nq
= X 1 + rT uq d , (6.17)
j
j = 0

trong đó chỉ số phụ 0 và T của C là thời gian trả cho nó.


Bây giờ chúng ta hãy thử một ví dụ số với R. Chúng ta xác định hàm dưới đây,
với phần trăm của đạo hàm CT (j) = 10 × j. Chúng tôi tính toán biện pháp trung
lập rủi ro và giá phái sinh tại thời điểm 0.

> giá gốc <- function (r, u, d, N, dt) + {+ #


thước đo rủi ro trung tính trong khoảng thời

gian duy nhất + q <- (r * dt-d) / (ud)

+ C0 <- 0 # khởi tạo giá phái sinh dưới dạng 0 + for (j in 0: N) # để


thiết lập vòng lặp từ 0 đến N + {

+ C0 <- C0 + 10 * j * chọn (N, j) * q ^ j * (1-q) ^ (Nj) / (1 + r * dt) ^ N


+} +

return (c ("thước đo trung lập rủi ro q_u" = q, +


"giá phái sinh" = C0)) +}

Chúng ta chạy hàm trên với r = 0,02, u = 0,1, d = 0,09 và N = 5, t = 0,2, và


chúng ta nhận được kết quả sau

> giá_trả_phí (0,02,0.1, -0,09,5,0,2) đo


lường rủi ro trung tính q_u 0,4947368 giá phái sinh 24.2479871

Nếu bạn không sử dụng vòng lặp for nhưng sử dụng phiên bản vectơ hóa, thì cũng có
thể sử dụng mã sau:

> originv_price_vec <- function (r, u, d, N, dt) + {+


# thước đo rủi ro trung tính trong khoảng thời gian

duy nhất + q <- (r * dt-d) / (ud)

+ C0 <- 0 # khởi tạo giá phái sinh là 0 + tmp_seq <- 0: N

+ C0 <- sum (10 * tmp_seq * select (N, 0: N) * q ^ tmp_seq +


* (1-q) ^ (N-tmp_seq))
Machine Translated by Google

Chương trình 152 R và các ứng dụng của nó trong toán học tài chính

+ C0 <- C0 / (1 + r * dt) ^ N +

return (c ("thước đo trung lập rủi ro q_u" = q, + "giá phái

sinh" = C0)) +}

Chúng ta có thể có được kết quả trên bằng cách sử dụng điều kiện không có chênh lệch giá. Thật vậy, sim

trước khi đến (6.6), điều kiện không có chênh lệch giá trong mô hình một giai đoạn yêu cầu

1 r d 1 u r
C0 = Cu + Cd. 1 + ru d 1 + ru d

Trong mô hình đa kỳ, chúng ta có i + 1 kết quả có thể có của giá phái sinh tại thời điểm

i t. Chúng tôi cho các số j = 0, ···, i bằng cách sắp xếp chúng từ thấp hơn đến cao hơn đến
Sau đó, điều kiện không
giá trị của đạo hàm tại thời điểm i t và ký hiệu là Ci, j .
có kinh doanh chênh lệch giá ở trên có thể được viết lại thành

1 r t d 1 u r t
=
Ci, j Ci + 1, j + 1 Ci + 1,
1 + r tu d + 1 + r t j u d

Ci + 1, j + 1 Ci +
qu 1 + r t 1 + r t1, j + qd = .

Vì C0 = C0,0 trong ký hiệu này, chúng ta có những điều sau đây

C1,1 C1,0
C0,0 = qu + qd 1 + r t 1 + ,
r t

và đệ quy đạt được kết quả sau

N
CT (j) N
j N j
C0,0 = X q uq d .
1 + rT j
j = 0

6.2.2 Quyền chọn mua định giá Quyền

chọn mua kiểu châu Âu là một trong những hợp đồng phái sinh phổ biến nhất.5 Quyền chọn mua

là hợp đồng trong đó người nắm giữ có quyền mua tài sản cơ bản với mức giá xác định trước

hoặc giá thực tế. Nếu giá trị tài sản cao hơn giá thực hiện, quyền chọn được cho là “thành

tiền”. Nếu giá trị tài sản thấp hơn giá thực hiện, thì quyền chọn được cho là “hết tiền”.

Nếu người nắm giữ thực hiện quyền mua thì hợp đồng được coi là đã được thực hiện.

Thông thường, người nắm giữ sẽ chỉ thực hiện một quyền chọn nếu giá trị tài sản cao
hơn giá thực hiện, tức là nếu quyền chọn bằng tiền. Thật vậy, hầu hết các hợp đồng
quyền chọn được giao dịch phổ biến được thực hiện tự động nếu chúng có tiền khi đáo hạn.

5 Các quyền có thể được phân loại theo thời gian mà chúng được phép thực hiện. Những quyền chỉ có thể được thực
hiện khi đáo hạn được gọi là quyền chọn kiểu 'Châu Âu'. Quyền chọn kiểu 'Mỹ' cho phép người nắm giữ thực hiện bất kỳ
lúc nào cho đến khi đáo hạn. Chúng tôi giả định các tùy chọn phong cách tập thể dục của Châu Âu, tại đây.
Machine Translated by Google

Mô hình thời gian rời rạc: Mô hình cây 153

Hoàn trả

Giá

Hình 6.6: Hoàn vốn của quyền chọn mua

Khoản hoàn trả khi đáo hạn T của một quyền chọn mua với giá thực hiện K có thể được viết như sau6

cực đại (ST K, 0). (6.18)

Hình 6.6 mô tả khoản hoàn trả của một quyền chọn mua khi đáo hạn. Trong Hình 6.6, chúng ta có

thể thấy rằng tỷ lệ hoàn vốn của quyền chọn mua bằng 0 khi giá tài sản cơ sở ST nhỏ hơn giá thực

hiện K khi đáo hạn T. Tuy nhiên, khoản hoàn trả là dương khi ST vượt quá K khi đáo hạn T.

Nếu nhà đầu tư có thể mua quyền chọn mua miễn phí, sẽ có cơ hội kinh doanh chênh lệch giá

để nhà đầu tư có thể sở hữu lợi nhuận dư thừa dương mà không gặp bất kỳ rủi ro nào. Thật vậy,

một hợp đồng thuận lợi một phía như vậy là không thể có bởi vì trên thực tế, chúng tôi sẽ không

tìm thấy một bên đối tác nào bán quyền chọn mua hoặc bất kỳ hợp đồng quyền chọn nào miễn phí.

Như vậy, nếu nhà đầu tư muốn mua một quyền chọn mua, họ phải trả phí cho nó. Một khoản phí như

vậy được gọi là phí bảo hiểm quyền chọn và là giá của quyền chọn tại thời điểm bắt đầu hợp đồng

tại thời điểm 0. Để tính phí bảo hiểm là bao nhiêu, chúng tôi sử dụng phương pháp định giá của

các công cụ phái sinh đã thảo luận trong các phần trước. Chúng tôi có thể định giá quyền chọn

mua bằng cách sử dụng (6.17) như sau,

N
max ((1 + u) j (1 + d) N jS0 K, 0) N
jj N
q uq
C0 = X 1 + rT d . (6.19)
j
j = 0

Chúng ta có thể tính giá quyền chọn này bằng cách sử dụng hàm sau trong R. Như trước, chúng

ta tính toán độ đo trung tính rủi ro q trong hàm và tính giá của quyền chọn mua tại thời điểm 0.

6Hợp đồng quyền chọn mua có thể được thanh toán bằng vật chất hoặc thanh toán bằng tiền mặt. Thanh toán vật chất có

nghĩa là người nắm giữ quyền chọn nhận được tài sản vật chất để đổi lấy khoản thanh toán bằng tiền mặt theo giá thực tế

(quy đổi K đơn vị tiền mặt trên một đơn vị tài sản). Nếu quyền chọn được thanh toán bằng tiền mặt, thì chỉ khi đó một

khoản thanh toán bằng tiền mặt mới được trao đổi tương ứng với sự chênh lệch về giá của tài sản và giá thực hiện.
Machine Translated by Google

154 Lập trình R và các ứng dụng của nó trong Toán tài chính

> mart_call <- function (r, u, d, S0, K, T, dt) + {+


q <- (r * dt-d) / (ud) # the risk trung dung

+ N <- T / dt
+ N <- trunc (N) + #

trunc () là hàm lấy phần nguyên của đối số + #

+ C0 <- 0 # khởi tạo giá quyền chọn mua + for (j in 0: N) # vòng lặp
từ 0 đến N + {+ # tất cả thanh toán khi đáo hạn

+ CT <- max ((1 + u) ^ j * (1 + d) ^ (Nj) * S0-K, 0)


+ # thay thế các giá trị trên thành các giá trị dự kiến + # theo thước đo
trung tính rủi ro

+ C0 <- C0 + CT * chọn (N, j) * q ^ j * (1-q) ^ (Nj) / (1 + r * dt) ^ N


+} + return (c ("thước đo trung tính rủi ro q_u "= q, +" giá quyền chọn

mua "= C0)) +}

Trong hàm trên, chúng ta có N biến động giá đến ngày đáo hạn, cho N <-T / dt.
Tuy nhiên, T / dt không nhất thiết phải là số nguyên. Để tránh có số bước thời
gian không phải là số nguyên, chúng ta sử dụng hàm R tích hợp sẵn trunc () và
lấy phần nguyên của T / dt.
Chạy hàm trên với các đầu vào r = 0,02, u = 0,1, d = 0,09, S0 =
100, T = 1, t = 0,02 và giá đình công K = 80, ta được kết quả sau.

> mart_call (0,02,0.1, -0,09,100,80,1,0,02) biện pháp


trung lập rủi ro q_u giá quyền chọn mua 0,4757895
35,7330892

Đối với người đọc không sử dụng câu lệnh for, chúng tôi trình bày đoạn mã R sau đây.

> mart_call_vec <- function (r, u, d, S0, K, T, dt) + {+


q <- (r * dt-d) / (ud) # the risk trung dung

+ N <- T / dt
+ N <- trunc (N) + #

trunc () là hàm cắt bớt phần nguyên của + # đối số

+ C0 <- 0 # khởi tạo giá quyền chọn mua + tmp_seq <- 0: N + # tất cả
các khoản thanh toán khi đáo hạn
Machine Translated by Google

Mô hình thời gian rời rạc: Mô hình cây 155

+ CT <- ((1 + u) ^ tmp_seq * (1 + d) ^ (N-tmp_seq) * S0-


K) * + chọn (N, tmp_seq) * q ^ tmp_seq * (1-q) ^ (N
-tmp_seq) + pos_CT <- CT [CT> 0]
+ C0 <- sum (pos_CT) / (1 + r * dt)
^ N + return (c ("thước đo trung tính rủi ro q_u"
= q, + "giá quyền chọn mua" = C0)) +}

Sử dụng phần trên, chúng tôi có cùng kết quả là mart_call_2. Thật vậy, nó theo
sau đó

> mart_call_vec (0,02,0.1, -0,09,100,80,1,0,02) biện pháp


trung lập rủi ro q_u giá quyền chọn mua 0,4757895 35,7330892

Tiếp theo, chúng ta hãy thử một ví dụ số về tính toán đệ quy trong khu vực
mà khoản hoàn trả nhận các giá trị dương, tức là nơi tùy chọn bằng tiền. Tất
nhiên, nó sẽ xuất ra kết quả tương tự như trên. Để triển khai thuật toán này,
chúng tôi viết lại công thức cho giá của một quyền chọn mua như sau,
N
((1 + u) j (1 + d)N jS0 K) N jj qN uq
d
C0 = X 1
+ rT j
j = a

N N
N N j N j K N j N
= X j j (1 + u) (1 + d) q uq d -

1 + rT X
j dq ,uq
S0 1 + rT j j
j = a j = a

trong đó a = min {0 ≤ j ≤ N | (1 + u) j (1 + d)N jS0 > K}. Nghĩa là, chúng tôi xác
định a là giá trị tối thiểu của j mà tại đó giá của tài sản rủi ro vượt quá giá thực
tế K.

> mart_call_2 <- function (r, u, d, S0, K, T, dt)


+ {
+ N <- trunc (T /
dt) + pay_off <- 0
+ q <- (r * dt -d) / (ud)
+ # Giá trị tối thiểu của j mà giá của tài sản rủi ro + # vượt quá giá thực tế
+ a <- 0

+ while ((1 + u) ^ a * (1 + d) ^ (Na) * S0


<= K) + {+ a <- a + 1 +}
Machine Translated by Google

156 Lập trình R và các ứng dụng của nó trong Toán tài chính

+ for (j in a: N) # vòng lặp từ a đến N + {+ # bổ


sung tùy chọn trả tiền của cuộc gọi + pay_off <-

pay_off +

+
S0 * (1 + u) ^ j * (1 + d) ^ (Nj) * chọn (N, j) * q ^ j * (1-q) ^ (Nj) -
+
K * chọn (N, j) * q ^ j * (1-q) ^ (Nj) +}
+ # để tránh vòng lặp for, hãy sử dụng mã sau +

# tmp_seq <- a: N + # pay_off <- sum (((1 + u) ^ tmp_seq * (1 + d) ^ (N-tmp_seq)


* S0-K) * + # select (N, tmp_seq) * q ^ tmp_seq * (1-q) ^ (N- tmp_seq))

+ # chiết khấu theo phần hoàn trả của tài sản an toàn + pay_off <-

pay_off / (1 + r * dt) ^ N + return (c ("thước đo trung lập rủi ro


q_u" = q, + "giá quyền chọn mua" = pay_off) ) +}

Chạy hàm này với các đầu vào tương tự như trên, chúng ta nhận được kết quả sau.

> mart_call_2 (0,02,0.1, -0,09,100,80,1,0.02) biện pháp trung

lập rủi ro q_u giá quyền chọn mua 35,7330892


0,4757895

6.3 Mô hình tam thức


Chúng ta đã xem xét mô hình nhị thức trong các phần trước; tức là, chuyển động giá của

giá tài sản rủi ro có hai kết quả có thể xảy ra trong khoảng thời gian.

Ở đây, chúng tôi thêm loại biến động giá bổ sung, đó là 'không thay đổi'. Đây được gọi là
mô hình tam thức.

Tương tự với mô hình nhị thức, chúng ta biểu thị sự thay đổi đi lên của giá tài sản

rủi ro S thành (1 + u) S và sự thay đổi giảm xuống thành (1 + d) S. Hơn nữa, chúng tôi
biểu thị xác suất trung lập rủi ro của thay đổi tăng là qu, thay đổi xuống là qd và không

thay đổi là qn. Lưu ý rằng (qu, qn, qd) thỏa mãn điều kiện 0 ≤ qu, qn, qd ≤ 1 và

qu + qn + qd = 1. (6,20)

Lưu ý rằng, đối với thước đo trung lập rủi ro qu, qd, qn và lãi suất phi rủi ro r, nó cho
rằng

Si t = (qu (1 + u) Si t + qnSi t + qd (1 + d) Si t) / (1 + r t). (6.21)

Sau đây, chúng tôi biểu thị giá tài sản rủi ro là Si t tại thời điểm i t là Si , để đơn giản hóa.

Hình 6.7 cho thấy sự chuyển động của giá từ i t đến (i + 1) t trong mô hình tam thức.
Machine Translated by Google

Mô hình thời gian rời rạc: Mô hình cây 157

Hình 6.7: Biến động giá trong mô hình tam thức

Hình 6.8: Biến động giá hai bước trong mô hình tam thức

Hơn nữa, chúng tôi thêm một điều kiện là hai bước chuyển động của giá 'lên và
xuống', 'xuống và lên' và 'không thay đổi và không thay đổi' trùng khớp với nhau
trong mô hình tam thức. Hình 6.8 cho thấy các đường có thể có cho hai bước thời gian
tuần tự. Điều kiện tái tổ hợp này đòi hỏi

1
1 + u = . (6.22)
1 + d

Bây giờ, chúng ta có 5 biến chưa biết cần xác định là qu, qn, qd, u, d. Đã bao
giờ, chúng ta chỉ được đưa ra 3 phương trình là (6.20) - (6.22). Do đó, chúng ta
không thể suy ra 5 tham số mô hình chưa biết này một cách hoàn toàn.7 Để khắc phục
vấn đề này, người ta thường sử dụng phương pháp xác định ngoại sinh biến động σ và
thêm một điều kiện sao cho sai số chuẩn của lợi tức theo thước đo trung tính rủi ro trùng với

7
Trong mô hình nhị thức, chúng ta cho u, d ngoại sinh. Như vậy, chúng ta có thể dễ dàng tìm ra lời giải.
Machine Translated by Google

Chương trình 158 R và các ứng dụng của nó trong toán học tài chính

với sự biến động. Hull [Hul12] giới thiệu một phương pháp để thêm điều kiện xa hơn σ
√ 3 t tion, 1 + u = e
, để tìm ra giải pháp sau

2 σ

qu = - r 12σ2
t r -
2
1 + 6 (6.23)

2
qn =
(6.24)
3
2 σ

qd = r t
12σ2
r -
2
1 + 6 . (6,25)

Có một phương pháp khác để hoàn thành mô hình tri thức (cây tri thức); tức là,
Frittelli [Fri00] giới thiệu phép đo martingale entropy tối thiểu mà chúng ta có
thể hoàn thành mô hình tam thức. Mặc dù cả hai phương pháp đều chuyên dụng hơn so
với mô hình nhị thức, nhưng chúng cho chúng ta những kết quả thú vị. Đối với những
độc giả quan tâm đến điều này, rất tốt để theo dõi các tài liệu này.
Khi đã xác định được biện pháp trung lập rủi ro, có thể thực hiện quy trình
tương tự như trước đây để tính giá quyền chọn. Tương tự như (6.19), giá của một
quyền chọn mua được đưa ra bởi
tôi

max ((1 + u) (1 + d) kS0 K, 0) N N i


C0 = X ijk q uq
nq d .
i + j + k = N 1 + rT tôi
j

(6.26)

Công thức (6.26) ngụ ý rằng i chuyển động đi lên và k xu hướng đi xuống của
giá cổ phiếu bao gồm sự kết hợp của i được chọn từ N lưới N
N i
và j được chọn từ N -i lưới; I E, .
tôi
j
N N i
Một phần của có thể được đơn giản hóa thành:
tôi
j

N N i N! (N i)! N!
= = .
tôi
j i! (n i)! j)!
j! (n - i! j! (n - j)!

Tuy nhiên, R được trang bị hàm select (). Do đó, có thể không cần đơn giản
hóa như trên. Nó phụ thuộc vào sở thích của độc giả.

số 8

Trong chương sau, chúng ta sẽ thảo luận về sự biến động ngụ ý. Liên quan đến vấn đề này, [DKC96] và [DK98]
chỉ cho chúng ta một điều hướng tốt để sử dụng cây tri thức.
Machine Translated by Google

Mô hình thời gian rời rạc: Mô hình cây 159

Thuật toán này được thực hiện dễ dàng như sau:

> call_trino <- function (r, S0, K, T, dt, sigma)


+ {
+ N <- trunc (T / dt)
+ tmp <- 0 + # chiều
rộng lên và xuống + u <- exp (sigma
* sqrt (3 * dt)) - 1 + d <- 1 / (1 +
u) - 1
+ # biện pháp trung lập rủi ro

+ q_u <- -sqrt (dt / 12) * (r-0,5 * sigma * sigma) / sigma +


1/6 + q_n <- 2/3 + q_d = 1-q_u-q_n

+ for (i in 0: N) # vòng lặp từ 0 đến N +


{+ for (j in 0: Ni) {# thêm phần thưởng
của quyền chọn mua tmp <-tmp + max (S0 *
+ (1 + u) ^ i * (1 + d) ^ (Nij) -K, 0)
+ * select (N, i) * select (Ni, j) * q_u ^ i * q_n ^ j * q_d ^
+ (Nij) +} + # for tránh vòng lặp kép, hãy sử dụng mã sau + #
tmp_seq <- 0: Ni + # tmp_tmp <- (S0 * (1 + u) ^ i * (1 + d) ^ (Ni-
tmp_seq) -K) * chọn (N , i) * + # select (Ni, tmp_seq) * q_u ^ i * q_n
^ tmp_seq * q_d ^ (Ni-tmp_seq) + # tmp <- tmp + sum (tmp_tmp [tmp_tmp>
0]) +} + # giảm giá bởi khoản hoàn vốn của tài sản an toàn + tmp <- tmp / (1
+ r * dt) ^ N + return (c ("thước đo trung tính rủi ro q_u" = q_u, "giá
quyền chọn mua" = tmp)) +}

Ở đây, chúng tôi đã sử dụng biện pháp trung lập rủi ro được đưa ra bởi (6.23) -
(6.25). Chạy hàm trên với các tham số r = 0.02, S0 = 100, K = 80, T = 1, t =
0.02 và σ = 0.4, ta được kết quả như sau.

> call_trino (0,02,100,80,1,0.02,0.4) đo lường


rủi ro trung lập q_u giá quyền chọn mua 0,1727904 38.0138895

Ngoại trừ tham số σ, các tham số trên giống như ví dụ số được sử dụng trong mô
hình nhị thức. Mặc dù giá quyền chọn mua 38.01 tương tự với kết quả của mô hình
nhị thức, nhưng thước đo trung lập rủi ro qu = 0.17 nhỏ hơn giá này trong mô
hình nhị thức do qn = 2/3 lớn.
Machine Translated by Google
Machine Translated by Google

Chương 7

Mô hình thời gian liên tục


và Black-Scholes
Công thức

NỘI DUNG

7.1 Tỷ suất sinh lợi liên tục ........................................... 162

7.2 Bổ đề Ito ˆ .............................................. .......... 165

7.3 Công thức Black-Scholes ......................................... 167

7.4 Biến động ngụ ý ................................................... ... 170

Trong chương này, chúng tôi mở rộng mô hình thời gian rời rạc thành mô hình thời gian liên tục

và suy ra công thức Black-Scholes được phát triển bởi Fischer Black, Myron Sc lỗ [BS73] và
Robert C. Merton [Mer73b, Mer77], là một trong những công thức

các công thức quan trọng trong lý thuyết tài chính. Chúng tôi đã chỉ ra rằng giá của một

phái sinh cial tài chính có thể được tính bằng cách đưa ra một biện pháp trung lập rủi ro Q trong
mô hình nhị thức, được xác định cho các khoảng thời gian rời rạc, hữu hạn. Chúng tôi mở rộng

mô hình dis crete này sang mô hình liên tục bằng cách tăng khoảng thời gian rời rạc N lên

vô cực.

161
Machine Translated by Google

162 Lập trình R và các ứng dụng của nó trong Toán tài chính

7.1 Tỷ suất sinh lợi liên tục

Đầu tiên, chúng tôi xem xét tỷ suất sinh lợi của tài sản an toàn và rủi ro trong mô hình nhị
thức và sau đó mở rộng chúng sang phiên bản liên tục. Mô hình nhị thức mô tả giá của tài sản

an toàn di chuyển từ Bi t đến (1 + r t) Bi t trong khoảng thời gian từ i t đến (i + 1) t.

Cho t = i t. Khi đó, chúng ta có thể viết lại Bt + t = (1 + r t) Bt . Do đó, tỷ suất sinh

lợi của một tài sản an toàn được đưa ra bởi

Bt + t Bt (1 + r t) Bt Bt
= = r t .
Bt Bt

Chúng ta hãy xem xét các thao tác sau đây về khoảng thời gian, tức là, t 0. Điều này

cho thấy khoảng thời gian được tạo ra rất nhỏ. Sau đó, ở trên trở thành,

dBt
= rdt. (7,1)
Bt

Điều này được giải quyết dễ dàng như sau,

rt
Bt = B0e , (7.2)

trong đó chúng tôi giả sử B0 ≡ 1, để đơn giản. Tiếp theo, chúng ta xem xét tỷ suất sinh lợi

của một tài sản rủi ro. Biến động giá của tài sản rủi ro được đưa ra bởi

(1 + u) Si t nếu sự kiện ωu xảy ra


S (i + 1) t =
(1 + d) Si t nếu sự kiện ωd xảy ra.

Điều này ngụ ý rằng tỷ suất sinh lợi của tài sản rủi ro được mô tả bằng

St + t St St u nếu sự kiện ωu xảy ra


= =
St St d nếu sự kiện ωd xảy ra.

Giá trị kỳ vọng của giá trị này được đưa ra theo một biện pháp trung lập rủi ro sao cho

St
E Q = quu + qdd,
St

trong đó qu và qd là các biện pháp trung lập rủi ro đã thảo luận trong chương trước; I E,

r t
d qu =
u
du
r t qd = .
u d

Lưu ý rằng qu và qd hoạt động như xác suất của ωu và ωd xảy ra. Ance biến thể
được đưa ra bởi

St 2 2
VarQ 2 = quu + qdd - (quu + qdd)
St
2
= quqd (u d) .
Machine Translated by Google

Mô hình thời gian liên tục và công thức Black-Scholes 163

u = r t + σ qqd t qu

d = r t σ qqu t qd

r t + σ qqd t

St qu r t σ qqu t qd

1u : =

1ngày : =

1d σ √ t
St = r t + rqd qu 1u - rqu qd

qd1u qu1d

√quqd

1u qu1d
Trong phương trình trên, chúng ta có một biến ngẫu nhiên qd√
quqd

2 2 2
u ] = qu1

1Xem thảo luận về mối quan hệ giữa tài sản rủi ro S và biện pháp trung lập rủi ro Q trên trang.147.
Machine Translated by Google

164 Lập trình R và các ứng dụng của nó trong Toán tài chính

và phương sai, tức là thời điểm thứ nhất và thứ hai của phân phối biến ngẫu nhiên.2

E Q
qd1u qu1d
= qdE Q [1u] quE Q [1d] = qdqu quqd
= 0,
√quqd √quqd √quqd

qd1u qu1d
VarQ
√quqd = E Q " qd1u √quqd
qu1d 2 #

2 2 1 2 2
d u 2qdqu1u1d + q u1 d
= E Q q
quqd
2 2 1 2 2
d u + q u1 d
= E Q q
quqd
2
= 2 d
q qu + q
uqd = 1.
quqd

Với ti = i t trong đó i = 1 ···, N (chú ý rằng tN = N t = T), ta định nghĩa wti : = √ t. Sau
1u qu1d
đó, chúng ta có thể viết lại St / St bằng cách sử dụng wti , qd√ như sau,
quqd

Sti
= r t + σ wti .
Sti

Theo định nghĩa, wti thỏa mãn các tính chất sau,

E Q [ wti ] =

0, VarQ ( wti ) = t.

Hơn nữa, nó cho rằng wtn1 : = Pn1 i = 1 wti và wtn2 : = Pn2 i = 1 wti ,

2
E Q ] = n1 t.
Cov (wtn1 , wtn2 ) = Xn1 [( wti )
i = 1

trong đó chúng tôi đặt n1 < n2 và sử dụng tính độc lập của wi và wj cho i 6 = j.

3 3 q d 2 2 q -
3 1 3 3 - q ququqd
- q √quqd
uqd
qd 1u - qu1d d u d
3 u1 q d u

√quqd ! 3 = E Q "q √quqd

4 4 4 3
4 1
qd 1u - qu1d d u4 + q d qq4 uqd
d qu2 + q ngày 3 + q
u

√quqd ! 4 = E Q "q (quqd ) 2 # = (quqd )


Machine Translated by Google

Mô hình thời gian liên tục và công thức Black-Scholes 165

Xét sự hội tụ của N ∞, nghĩa là, t 0, người ta biết rõ rằng một biến ngẫu

nhiên, dWt : = lim t 0 wti tiến tới chuyển động Brown (trong một số ngữ cảnh, đây
được gọi là quá trình Wiener3 ). Một quá trình ngẫu nhiên B (t) được gọi là chuyển động
Brown chuẩn nếu quá trình thỏa mãn

E [B (t)] = 0, Var [B (t)] = t,

Cov (B (t), B (s)) = min {t, s}.

Từ động lực học của wt ở trên, chúng ta có thể phỏng đoán rằng wt tiến tới
chuyển động Brow nian.4 Từ trên, với N ∞, sử dụng động lực học của chuyển

động Brown (hoặc, quá trình Wiener) Wt theo thước đo trung tính rủi ro Q,
động lực của tài sản cơ bản có thể được thể hiện như sau,

dSt
St = rdt + σdWt . (7,3)

Tham số σ, trùng với độ lệch chuẩn (tức là căn bậc hai của phương sai) của tỷ suất sinh
lợi của tài sản rủi ro, được gọi là độ biến động. Vì tham số này có nghĩa là mức độ dao
động của tài sản rủi ro, nên nó ngụ ý mức độ rủi ro của tài sản rủi ro. Sự biến động
đóng vai trò quan trọng trong việc định giá các sản phẩm phái sinh.5

ˆ
7.2 Bổ đề của Ito

Phiên bản liên tục của động lực của tài sản an toàn và rủi ro được đưa ra bởi các phương
trình vi phân (7.1) và (7.3), tương ứng. Trong các phương trình này, chúng ta có dt,
hiệu số vô tỉ của thời gian và dWt , hiệu số thập phân Hiểu
của một
được
quá
thứ
trình
tự độ
ngẫu
lớnnhiên.
của hai

hàm ngẫu nhiên này là rất quan trọng để giải quyết một phương trình vi phân ngẫu nhiên.
Chúng ta có thể phỏng đoán rằng có một mối quan hệ giữa dt và dW, lưu ý rằng Var (dWt)
= dt. Mối quan hệ này được tóm tắt bởi bổ đề Ito [ Ito44 , một trong những lý thuyết
ˆ ˆ
quan trọng nhất trong phép tính ngẫu nhiên. , Ito51 ˆ]

3Wiener đã xây dựng một cấu trúc chặt chẽ của chuyển động Brown trong [Wie23]. Nguồn gốc của chuyển động
Brown ian bắt nguồn từ quan sát chuyển động ngẫu nhiên biểu kiến của các hạt vi mô của nhà thực vật học Robert
Brown vào năm 1828. Ý tưởng về Brown được xây dựng bằng toán học bởi Einstein [Ein05].
Ứng dụng của chuyển động Brown vào tài chính lần đầu tiên được phát triển bởi [Bac00].

4 Chính xác hơn, chúng ta cần một giả thiết bổ sung, qu = qd = 1/2 để suy ra nó. Lý do là dễ dàng
được phỏng đoán bằng cách tính mômen thứ 3 và thứ 4 của wt .
Một số độc giả có thể quan tâm đến lợi nhuận của tài sản rủi ro, chứ không phải độ lệch chuẩn của nó. Nếu
chúng ta coi thước đo vật lý P, không phải thước đo trung tính rủi ro Q, thì động lực của dS / S được viết bằng
cách thay r trong (7.3) bởi µ, là lợi tức của tài sản rủi ro. Tuy nhiên, rất khó để ước tính µ từ dữ liệu thị
trường thực theo kinh nghiệm. Do đó, như đã thảo luận ở phần sau, việc giá của các phái sinh tài chính có thể được
tính toán mà không cần sử dụng µ là một trong những điểm đáng giá của công thức Black-Scholes.
Machine Translated by Google

166 Lập trình R và các ứng dụng của nó trong Toán tài chính

ˆ
Bổ đề Ito

Gọi F (t, Xt) là một hàm liên tục, có thể phân biệt được trong thời gian t và có thể phân

biệt được hai lần trong một quá trình ngẫu nhiên Xt , trong đó Xt được cho bởi

dXt = atdt + σtdWt .

Sau đó chúng tôi có

F F 1 dX2 tdFtXt 2 +2F


= dtX +2 dXt
t
t

F F 1 2 dt t+ dXt
Xt +
2 σ X 2 t 2F
= dt
t

F F + tại 1 2F F
= + t Xt X
2 σ
t dt + σtdWt Xt ,
2 2 t

trong đó đẳng thức trên có nghĩa là sự hội tụ trong bình phương trung
bình.

Trong thế giới ngẫu nhiên, chúng ta không thể bỏ qua bậc hai của sai số thập
phân vô cực của biến ngẫu nhiên. Đây là điểm đáng chú ý của bổ đề Ito; ˆ
nghĩa là bậc thứ hai của dWt không thể bị bỏ qua trong số hạng thứ ba của
dòng thứ nhất và thứ hai của phương trình trên. Đó là vì bậc thứ hai của dW
6
có cùng bậc với bậc đầu tiên của dt.

Chúng tôi đưa ra một trong những ví dụ nổi tiếng nhất trong lĩnh vực tài chính; tức là, chúng ta tính d lnSt

bằng cách sử dụng (7.3). Bằng cách mở rộng Taylor, nó cho rằng

dSt 1 dS2
+ ···
-
d lnSt = t 2
St 2 St
2 σ
= r - dt + σdWt .
2

Gọi giá trị ban đầu của St là S0. Sau đó, tại t = T, chúng ta có

2 σ
ST = S0 exp r - T + σWT ,
2

ST 2 σ ST
E Q ln = r - T, VarQ ln = σ 2T.
S0 2 S0

6Lưu ý rằng phương sai của biến ngẫu nhiên là bậc nhất trong vi phân thời gian, tức là, Var (dWt) =
E [dW2t ] = dt.
Machine Translated by Google

Mô hình thời gian liên tục và công thức Black-Scholes 167

1 2 σ 2

Chúng ngụ ý rằng ln (ST / S0) N ((r - ) T, σ 2T) theo biện pháp trung lập rủi ro.
Vì WT được phân phối bình thường với 0 trung bình và phương sai T, nó cũng cho
rằng

1

TZ
2 σ σx 2 x
E Q
[ST ] = S0 exp r - 2 e e / 2T dx
∞ √ 2πT

2 σ 1 2

T e
2 σ - (x σT)
= S0 exp r - e / 2T dx
2 T / 2 Z ∞ √ 2πT
rT
= S0e .

Lưu ý rằng giá trị kỳ vọng của tài sản rủi ro phụ thuộc vào lãi suất phi rủi ro xác
định và không phụ thuộc vào phương sai của lợi nhuận của nó. Như tên gọi của nó là
“biện pháp trung lập rủi ro”, độ biến động σ không xuất hiện trong giá trị kỳ vọng ở trên.
Lưu ý rằng rủi ro thường được đo lường bằng mức độ biến động σ. Đây là một tính
năng thú vị khi sử dụng bổ đề của Ito. ˆ

7.3 Công thức Black-Scholes

Bây giờ chúng ta chuyển sang dẫn xuất của một trong những công thức được sử dụng rộng rãi
1 2 σ 2

nhất trong các dẫn xuất pric ing. Vì ln (ST / S0) N cho
((r bởi
-) T, σ 2T), hàm mật độ được

1 1
x r -
2

σ 2
T
f (x) = exp √ 2πσ2T
2 σ √ T
.

Từ đó, giá của quyền chọn mua Châu Âu7 được viết như sau,
1
C0 = E Q BT tối đa (ST -K, 0)

= e rTE Q h max S0e ln ST / S0 K, 0 i



= e max (S0e x K, 0) f (x) dx
rT Z ∞

= e [S0e x f (x) K f (x)] dx, (7.4)
rT ln
Z (K / S0)

trong đó BT là giá trị của tài sản an toàn tại t = T (Xem (7.2)). Chúng tôi xác định việc theo

dõi

x r -
2

σ 2
T
X: = , Y: = X σ √ T,
σ √ T

ln KS0 + r +
2 σ
2 T
d1 : = , d2 : = d1 σ √ T.
σ √ T

7 Thông báo rằng lợi nhuận của một quyền chọn mua khi hết hạn là tối đa (ST - K, 0).
Machine Translated by Google

168 Lập trình R và các ứng dụng của nó trong Toán tài chính

Sau đó, (7.4) được viết lại như sau,

∞ 1 2 K X 2
X σ √ T rT e exp - √ dX
C0 = Z S0 exp - √ 2π 2
d2 2π 2
∞ Y 2
∞ K X 2
e / 2 dY e e / 2 dX
= Z rT Z √ 2π
d1 S0 √ 2π d2

= S0Φ (d1) e rTKΦ (d2), (7,5)

trong đó Φ (x) là hàm phân phối tích lũy chuẩn chuẩn; 8 tức là,

x 1 2
x e
/ 2 dx.
Φ (x) = Z √ 2π

Công thức (7.5) là công thức Black-Scholes cho giá của quyền chọn mua kiểu Châu Âu.
Chúng tôi xác định một hàm để tính toán giá của một quyền chọn mua Châu Âu bằng cách sử dụng
công thức Black-Scholes.

> black_scholes_1 <- function (S, K, r, sigma, T) + {+


d1 <- (log (S / K) + (r + sigma ^ 2/2) * T) / (sigma *

sqrt (T) ) + d2 <- d1 - sigma * sqrt (T)

+ C0 <- S * pnorm (d1) - exp (-r * T) * K * pnorm


(d2) + return (c ("Giá quyền chọn mua" = C0)) +}

Hãy tính giá của một quyền chọn mua mà S0 = 100, K = 100, r = 0,01, σ =
0,2, T = 1.

> black_scholes_1 (100,100,0.01,0.2,1)


Giá quyền chọn mua
8.433319

Tương tự, chúng ta cũng có thể tính được giá của một quyền chọn bán kiểu Châu Âu.
Quyền chọn bán là hợp đồng cho phép bán tài sản với giá thực hiện đã thỏa thuận, K khi
hết hạn. Giá trị kết quả (hoàn vốn) của một quyền chọn bán khi đáo hạn là tối đa (K -
ST , 0), được thể hiện trong Hình 7.1. Nếu giá cơ bản cao hơn giá thực hiện K khi đáo
hạn, thì giao dịch bán sẽ không được thực hiện và lợi nhuận của quyền chọn bán bằng
không. Tuy nhiên, nếu giá tài sản cơ bản thấp hơn giá thực hiện khi đáo hạn, quyền
chọn bán sẽ được thực hiện và khoản hoàn vốn của quyền chọn bán sẽ bằng không. Do đó,
quyền chọn bán được sử dụng để bảo vệ chống lại sự sụt giảm của giá tài sản. Chúng ta có thể

8 Lấy một biến ngẫu nhiên X N (0,1). Khi đó xác suất P (X ≤ x) được cho bởi chuẩn tắc
hàm phân phối tích lũy Φ (·); I E,

P (X ≤ x) = Φ (x).
Machine Translated by Google

Mô hình thời gian liên tục và công thức Black-Scholes 169

Hoàn trả

Giá

Hình 7.1: Khoản hoàn trả của quyền chọn bán như một hàm của giá tài sản tại thời điểm hết hạn ST đối với một cú đánh

cố định K, max (K -ST , 0).

suy ra giải pháp phân tích cho công thức Black-Scholes cho một quyền chọn bán tương tự
như cho một quyền chọn mua. Giá của quyền chọn bán P0 được đưa ra bởi

P0 = e rTKΦ ( d2) S0Φ ( d1).

Chúng ta có thể xác định được mối quan hệ nổi tiếng giữa quyền chọn mua và quyền chọn bán bằng

cách kiểm tra sự khác biệt trong khoản thanh toán của chúng.

max (ST K, 0) max (K ST , 0) = ST K

rT e (max (ST rT
K, 0) max (K ST , 0)) = e (ST K)

C0 P0 = S0 e rTK,

trong đó chúng tôi lấy giá trị kỳ vọng theo thước đo trung lập rủi ro trên dòng thứ ba.
Điều này ngụ ý rằng
P0 = C0 S0 + e rTK.

Phương trình trên là Put-Call Parity, cho phép chúng ta đồng thời tính được giá của
quyền chọn mua và quyền chọn bán. Tính chẵn lẻ của cuộc gọi hàm ý các tính năng quan
trọng; ví dụ: lệnh đặt và lệnh gọi có cùng thời hạn và lệnh thực hiện có cùng hàm ý
ý kiến 9 (giả sử có sự đối xứng của giao dịch, chi phí thực hiện). Các lệnh mua và
lệnh gọi cũng có thể hoán đổi cho nhau trong danh mục đầu tư trung lập. Ở đây, danh
mục đầu tư trung lập đồng bằng là danh mục không nhạy cảm đối với những thay đổi của
giá tài sản cơ sở. Chính xác hơn, giá trị của danh mục đầu tư trung lập không thay
đổi, ngay cả khi giá của tài sản cơ sở thay đổi.
Cho S0 = 100, K = 100, r = 0,01, σ = 0,2, T = 1 và tính giá của quyền
chọn mua và bán.

9 Về sự biến động ngụ ý, chúng tôi mô tả nó trong phần sau.


Machine Translated by Google

170 Lập trình R và các ứng dụng của nó trong Toán tài chính

> black_scholes_2 <- function (S, K, r, sigma, T) + {+ d1 <-


(log (S / K) + (r + sigma ^ 2/2) * T) / (sigma * sqrt (T) ) +

d2 <- d1 - sigma * sqrt (T)

+ C0 <- S * pnorm (d1) - exp (-r * T) * K * pnorm (d2)


+ P0 <- C0 - S + exp (-r * T) * K
+

+ return (c ("giá quyền chọn mua" = C0, "giá quyền chọn bán" = P0)) +}

Chạy đoạn mã trên, chúng tôi nhận được kết quả sau.

> black_scholes_2 (100,100,0.01,0.2,1) giá quyền

chọn mua giá quyền chọn bán


8.433319 7.438302

7.4 Biến động ngụ ý Khi các thông

số về giá hiện tại của tài sản cơ bản, giá thực hiện, lãi suất, kỳ hạn và biến động
được đưa ra, chúng ta có thể tính giá của một quyền chọn bằng cách sử dụng công thức
Black-Scholes có liên quan. Tuy nhiên, trong các ngành dịch vụ tài chính, điều quan

trọng là phải tính toán độ biến động lùi từ công thức Black-Scholes và giá thị trường
của quyền chọn. Những độ bay hơi này được coi là độ bay hơi trong tương lai dựa trên
sự thỏa thuận của các nhà đầu tư. Đây được gọi là sự biến động ngụ ý.
Đối với một mô hình nhất định, chúng ta thường cần ước tính các tham số của mô hình
sao cho mô hình với các tham số này phù hợp tốt với các giá trị thị trường. Proce dure
này được gọi là hiệu chuẩn. Đối với hiệu chuẩn, chúng tôi thường sử dụng tối ưu hóa. R
được trang bị một hàm để tối ưu hóa, tối ưu hóa (). Ở đây, chúng tôi giới thiệu hàm
này để tính biến động ngụ ý trong ví dụ số sau (chúng tôi cũng giới thiệu các phương
pháp khác để tối ưu hóa trong R, sau này. Xem Phụ lục A).
Đặt giá của tài sản cơ sở S0 = 100, giá thực hiện K = 100, lãi suất phi rủi ro r =
0,01, thời gian đến hạn thanh toán T = 1 và giá thị trường của quyền chọn mua là 8,43,
như chúng ta đã tính ở phần trước . Chúng tôi tính toán sự biến động ngụ ý của tùy chọn
này. Chúng tôi viết giá quyền chọn theo công thức Black-Scholes, C0,
như

C0 = C0 (S0, K, r, σ, T).

Trong ví dụ này, chúng ta cần tính σ thỏa mãn 8,43 = C0 (100,100,0.01, σ, 1).
Chúng tôi định nghĩa một hàm f (σ) = | 8,43 C0 (100,100,0.01, σ, 1) |, là sự khác
biệt giữa giá thị trường và giá quyền chọn được tính toán số bằng công thức Black-

Scholes. Sau đó, chúng tôi tính σ bằng cách tối thiểu hóa f (σ) trong R bằng cách sử
dụng hàm tối ưu hóa.
Machine Translated by Google

Mô hình thời gian liên tục và công thức Black-Scholes 171

> # Hàm tính toán sai số, tức là> # chênh lệch giữa giá thị
trường đã cho> # và giá của công thức Black-Scholes> err <-
function (S, K, r, sigma, T, MktPrice) + {+ tmp <- abs
(MktPrice - black_scholes_1 (S, K, r, sigma, T)) + return (tmp)
+}

>

> # tối thiểu hóa lỗi () bằng cách sử dụng tối ưu hóa ()>
tối ưu hóa (lỗi, khoảng thời gian = c (0,5), tối đa = FALSE, MktPrice = 8,43, +
S = 100, K = 100, r = 0,01, T = 1 )

Lưu ý rằng khoảng đối số trong tối ưu hóa () hạn chế phạm vi của sigma, trong
trường hợp này là từ 0 đến 5. Để tối thiểu hóa, chúng ta phải đặt giá trị tối đa = FALSE.
Bằng cách chỉ xác định các giá trị của MktPrice, S, K, r và T, chúng tôi ngầm chỉ
thị hàm tối ưu hóa mà chúng tôi muốn tính toán tối ưu hóa trên biến còn lại, tức
là sigma. Kết quả sau đây được hiển thị bằng cách chạy tập lệnh trên.

$ tối thiểu
[1] 0,1999261

$ mục tiêu
[1] 0,0004032324

Biến được tối ưu hóa là đầu ra ở mức tối thiểu và giá trị của hàm mục tiêu (tức là,
err ()) được đánh giá với biến được tối ưu hóa là mục tiêu. Kết quả trên cho thấy
độ biến động ngụ ý được tìm thấy là 0,1999261 (xấp xỉ 20%); tức là, kết quả trên
cho thấy giá trị của hàm mục tiêu được cho bởi 0,0004032324. Chúng ta có thể kiểm
tra kết quả và xác nhận rằng f (0,1999261) = 0,0004032324, rất gần với 0.

Ví dụ số trên sử dụng một mức giá thực tế K để ước tính mức biến động bất
thường. Tuy nhiên, thị trường thực có các lựa chọn với nhiều mức giá thực tế khác
nhau và thời gian đáo hạn khác nhau. Gọi giá thực hiện là K, thời gian đáo hạn là
T và giá thị trường của quyền chọn mua là C˜ (K, T). Hãy xem xét giá thị trường như sau,

C˜ (80,1) = 22,75, C˜ (90,1) = 15,1, C˜ (100,1) = 8,43, C˜

(110,1) = 4,72, C˜ (120,1) = 3,28


Machine Translated by Google

172 Lập trình R và các ứng dụng của nó trong Toán tài chính

Giá khởi điểm 70 90 100 80


110 120 130 IV (%) 27,18 24,38 22,8
20 20,28 23,0 24,2

Ví dụ, chúng ta có thể thấy trong thị trường thực các dạng sau của độ bay hơi
ngụ ý (IV) cho một thời gian đáo hạn với các mức giá thực tế khác nhau.10 Độ
bay hơi ngụ ý cho các mức giá thực hiện khác nhau không nhất thiết phải nằm
trên một đường ngang, nhưng có dạng phải giảm hoặc đường cong nụ cười (giảm và
tăng). Hiện tượng này được gọi là độ lệch biến động hay nụ cười biến động. Đặc
điểm này mâu thuẫn với giả định của công thức Black-Scholes cho rằng độ bay hơi
là một tham số không đổi trên các mức giá thực tế khác nhau. Để đưa ra các diễn
giải, một số mô hình mở rộng được đề xuất. Các mô hình tiêu biểu nhất là mô
hình biến động cục bộ [Dup94, DK94] và mô hình biến động ngẫu nhiên [Hes93, HKLW02] .11

10 Tỷ lệ giữa giá thực tế và giá tài sản cơ bản, tức là tiền, thường được sử dụng thay vì đình công

giá riêng trong các quy ước thị trường tiêu chuẩn.

11Xem [Gat06] để thảo luận toàn diện hơn.


Machine Translated by Google

Mục III

SỐ

CÁC PHƯƠNG PHÁP TRONG

TÀI CHÍNH
Machine Translated by Google
Machine Translated by Google

Chương 8

Mô phỏng Monte Carlo

NỘI DUNG

8.1 Khái niệm cơ bản về mô phỏng Monte Carlo ....................... 176 8.2 Phương pháp giảm phương
sai .............. ...........................
kháng ................ 179 180
................. 8.2.1 Phương
8.2.2 pháppháp
Phương biếnkhớp
thể thời
đối

điểm ..........................
lạ ........................................
....... 182 Tùy chọn kỳ ............. 184 Quyền chọn đa tài

sản ................................. ................ 188 Phương pháp biến đổi đối


8,3 chứng .............................. .............. 191
8,4

8,5

Chúng tôi thảo luận về các phương pháp định giá các công cụ phái sinh bằng cách sử dụng
mô phỏng Monte Carlo trong chương này. Ý tưởng của mô phỏng Monte Carlo dựa trên quy
luật số lớn và thực tế là việc định giá các công cụ phái sinh được giảm xuống để tính
toán các giá trị kỳ vọng. Như chúng ta đã thảo luận trong các chương trước, giá của
một công cụ phái sinh được tính bằng giá trị kỳ vọng của khoản hoàn vốn theo một biện
pháp trung lập rủi ro. Vì vậy, chúng ta phải biết các tài sản cơ bản di chuyển như thế
nào theo thước đo trung lập rủi ro. Khi chúng ta có động lực của tài sản cơ bản, chúng
ta có thể định giá tài sản phái sinh. Theo quy luật số lớn, mô phỏng Monte Carlo dẫn
chúng ta đến giá gần đúng của đạo hàm bằng cách tạo ra các biến ngẫu nhiên phù hợp với
thước đo trung lập rủi ro.1

Mô phỏng 1Monte Carlo với ứng dụng định giá quyền chọn được nhiều bài báo đưa ra; ví dụ: [Boy77,
BBG97, DG95, Fri07, Gla04] và [PT95].

175
Machine Translated by Google

176 Lập trình R và các ứng dụng của nó trong Toán tài chính

8.1 Khái niệm cơ bản của mô phỏng Monte Carlo Xét một biến ngẫu nhiên Y

và giá trị kỳ vọng E [Y] của nó. Theo quy luật số lớn, đối với một dãy các biến
ngẫu nhiên Yn độc lập nhưng được lấy từ cùng một phân phối trong Y thì biến

N
1
Yn
N
X
n = 1

2
hội tụ về E [Y] với xác suất 1 là N ∞. Gọi giá của tài sản cơ
bản là S và hàm hoàn vốn của đạo hàm là f. Sau đó, giá của phái sinh được
tính bằng giá trị kỳ vọng được chiết khấu của khoản thanh toán của hợp
đồng như sau,
e rTE Q [f (ST )],

trong đó r là lãi suất phi rủi ro và T là kỳ hạn thanh toán của phái sinh.
Mô phỏng Monte Carlo sử dụng thực tế này; tức là, tạo ra một chuỗi các
biến ngẫu nhiên
tính {S
rủin ro
T ,Q,n mô
= 1, ···,Monte
phỏng N} được phân
Carlo chophối bởitađộgiá
chúng đo trị
trung
gần
đúng sau,

N
1
E Q [f (ST )] ≈
N Xn =f 1 (S n T ).

Tên của 'mô phỏng' có nguồn gốc từ quá trình tạo ra chuỗi các số ngẫu nhiên.
Giá trị trên được coi là giá gần đúng của phái sinh. Do đó, chúng tôi có thể
giảm vấn đề định giá một công cụ phái sinh thành vấn đề mô phỏng giá của tài
sản cơ sở.
Giá khi đáo hạn ST được viết theo thước đo rủi ro trung tính Q là

2 σ 2 ) T + σWT
ST = S0e (r 1 ,

trong đó WT là chuyển động Brown theo thước đo trung tính rủi ro Q. Trong mô phỏng
số, thuận tiện để chuẩn hóa các biến ngẫu nhiên thành phương sai 1. Vì vậy, xác

định ε = WT / √ T N (0,1), chúng tôi viết lại như trên phương trình như sau,

2 σ 2 ) T + σ √ Tε
ST = S0e (r 1 . (8.1)

Do đó, giá của phái sinh được đưa ra bởi

σ 2 ) T + σ √ Tε
2
. (8,2)
e rTE hf (S0e (r 1 ) tôi

Để tránh nhầm lẫn, chúng tôi chỉ cần mô tả toán tử kỳ vọng theo thước đo trung
tính rủi ro Q là E, sau đây, không phải E Q.

2 Quy luật số lớn ngụ ý sự tồn tại của sự hội tụ.


Machine Translated by Google

Mô phỏng Monte Carlo 177

Tạo các số ngẫu nhiên độc lập và được phân phối giống hệt nhau,
3 chúng tôi tính toán
ε1, ε2, ···, εN của N (0,1),

N
1 σ 2 ) T + σ √ Tεn
f S0e (r
2
1 .
N X
n = 1

Theo quy luật số lớn, với N ∞, giá trị trên tiếp cận

E hf S0e (r 1 2 ) T + σ √ Tε i. Vì chúng ta không thể coi số ngẫu nhiên là vô hạn

số, chúng ta cần tạo ra một số N đủ lớn trong số các số ngẫu nhiên và tính
giá trị gần đúng của giá trị kỳ vọng.
Bây giờ chúng ta hãy thử một ví dụ về mô phỏng Monte Carlo trong R để định giá
một hợp đồng phái sinh đơn giản. Sử dụng lợi nhuận của quyền chọn mua f (x) = max
(x - K, 0), chúng tôi tạo ra một hàm để định giá giá phái sinh được mô tả ở trên.
Chúng tôi sử dụng hàm rnorm (N, 0,1) để tạo các số ngẫu nhiên từ một phân phối
chuẩn.

> # hàm định giá một quyền chọn mua bằng cách sử dụng
Monte> # Carlo mô phỏng> call.monte1 <- function (S, K,
r, sigma, T, N) + {+ C0 <- 0

+ # N lần lặp cho mô phỏng Monte Carlo + for (n trong


1: N) + {+ C0 <- C0 + max (S * exp ((r-0,5 * sigma ^
2) * T + sigma * sqrt (T) * + rnorm (1,0,1)) - K, 0)
+}

+ C0 <- exp (-r * T) * C0 /


N + return (c ("Giá tính theo mô phỏng Monte Carlo" = C0)) +}

Ví dụ, cho S0 = 100, K = 100, r = 0,01, σ = 0,2, T = 1,4 , chúng tôi tính giá
của quyền chọn mua bằng cách sử dụng hàm được định nghĩa ở trên. Mặc dù việc xác
định số lần lặp lại của mô phỏng Monte Carlo là một vấn đề phức tạp, chúng tôi
cho rằng số lần lặp là 10.000. Sau đó, chạy script và chúng tôi nhận được kết
quả bên dưới,

Mô phỏng 3Monte Carlo không giả định kiểu phân phối. Vì vậy, chúng tôi có thể tạo ra các dãy số ngẫu nhiên có phân
phối đồng đều hoặc một số phân phối khác. Tuy nhiên, chúng tôi xem xét chuyển động Brown ở đây.

Vì vậy, chúng tôi sử dụng các số ngẫu nhiên của phân phối chuẩn.

4 Điều này tương ứng với quyền chọn mua có kỳ hạn 100, kỳ hạn 1 năm, với giả định lãi suất phi rủi ro là

1% mỗi năm, hàm ý biến động của tài sản cơ sở là 20% và giá tài sản ban đầu là 100.
Machine Translated by Google

Chương trình 178 R và các ứng dụng của nó trong toán học tài chính

> call.monte1 (100,100,0.01,0.2,1,10000)


Giá tính theo mô phỏng Monte Carlo
8.353214
> call.monte1 (100,100,0.01,0.2,1,10000)
Giá tính theo mô phỏng Monte Carlo
8.23827
> call.monte1 (100,100,0.01,0.2,1,10000)
Giá tính theo mô phỏng Monte Carlo
8.692412
> call.monte1 (100,100,0.01,0.2,1,10000)
Giá tính theo mô phỏng Monte Carlo
8.401362

Ở đây, chúng tôi đã lặp lại cùng một phép tính bốn lần. Lưu ý rằng các kết
quả hơi khác nhau. Hàm call.monte1 () tạo ra các số ngẫu nhiên khác nhau và
do đó kết quả cũng phụ thuộc vào các số ngẫu nhiên được tạo tại mỗi thời
điểm. Chúng ta có thể tính toán giải pháp phân tích của giá quyền chọn mua,
là 8,433319. Các kết quả ở trên bởi call.monte1 () khác nhau tùy theo dung
dịch phân tích. Chúng ta cũng có thể khẳng định rằng lời giải bằng mô phỏng
Monte Carlo hội tụ với lời giải phân tích bằng cách tăng số lần lặp N. Tuy
nhiên, việc tăng số lần mô phỏng cũng làm tăng thời gian tính toán. Tóm lại,
độ chính xác của phép tính được đánh đổi với thời điểm tính toán. Tập lệnh
trên sử dụng vòng lặp for cho phép tính lặp lại, rất dễ đọc nhưng có thể
chậm đối với một số lượng lớn các lần lặp. Thay vào đó, chúng ta có thể sử
dụng một phiên bản vector hóa tạo ra tất cả các số ngẫu nhiên mà chúng ta
cần cho N mô phỏng trong một dòng duy nhất như sau.

> call.monte1.vec <- function (S, K, r, sigma, T, N) + {

+ # N số ngẫu nhiên bình thường của giá trị trung bình 0 và lỗi chuẩn 1

+ x <- rnorm (N, 0,1) +


y <- S * exp ((r-0,5 * sigma ^ 2) * T + sigma * sqrt (T) * x)
-K + # tính giá của quyền chọn mua lấy tổng + # phần dương của y + C0
<- sum (y [y> 0]) * exp (-r * T) / N + return (c ("Giá tính theo mô
phỏng Monte Carlo" = C0) ) +}

Chạy tập lệnh này với các tham số tương tự của ví dụ trên.

> call.monte1.vec (100,100,0.01,0.2,1,10000)


Giá tính theo mô phỏng Monte Carlo 8.54221
Machine Translated by Google

Mô phỏng Monte Carlo 179

Có những kỹ thuật khác để có được giá trị gần đúng chính xác hơn bằng cách sử
dụng các chuỗi số ngẫu nhiên tốt hơn. Người ta thường khuyến nghị sử dụng một
dãy số ngẫu nhiên được gọi là Mersenne Twister [MN98] được coi là một dãy số
ngẫu nhiên tốt hơn. Chúng tôi đưa ra một ví dụ bằng cách sử dụng Mersenne Twister.

> call.monte1.2 <- function (S, K, r, sigma, T, N) + {+


# Sử dụng Mersenne-Twister để tạo số ngẫu nhiên + RNGkind
("Mersenne-Twister") + # khởi tạo hạt giống của Số ngẫu nhiên

+ ini <- 1
+ set.seed (ini)
+

+ x <- rnorm (N, 0,1) +


y <- S * exp ((r-0,5 * sigma ^ 2) * T + sigma * sqrt (T) * x) -K
+ C0 <- sum (y [y> 0]) * exp (-r * T) / N + return (c ("Giá tính
theo mô phỏng Monte Carlo" = C0)) +}

Chạy cuộc gọi.monte1.2 ().

> call.monte1.2 (100,100,0.01,0.2,1,10000)


Giá tính theo mô phỏng Monte Carlo
8,468332

Trong trường hợp này, ngay cả khi chúng ta chạy đoạn mã trên nhiều lần, kết quả sẽ
giống nhau, bởi vì chúng ta sửa hạt giống của các số ngẫu nhiên trong đoạn mã ini <- 1.
Nếu chúng ta thay đổi giá trị của ini, kết quả của phép tính cũng được thay đổi.
Hình 8.1 cho thấy sự hội tụ của giá quyền chọn được tính bằng mô phỏng nor
mal Monte Carlo và mô phỏng Monte Carlo sử dụng Mersenne Twister. Sự hội tụ của
mô phỏng Monte Carlo sử dụng Mersenne Twister đến giá quyền chọn mua phân tích
8.433319 cao hơn giá của mô phỏng Monte Carlo thông thường. Đây có thể là một
lý do chính đáng để sử dụng Mersenne Twister.

8.2 Phương pháp giảm phương sai

Ý tưởng cơ bản của mô phỏng Monte Calro đã được mô tả trong phần trước.
Tiếp theo, chúng ta thảo luận về các phương pháp cải thiện độ chính xác của mô phỏng Monte Carlo.
Machine Translated by Google

Lập trình 180 R và các ứng dụng của nó trong Toán tài chính

9.0

8.5

8.0

MC bình
chọn
tùy
giá thường MCMT
7,5

7.0

6,5

0 2000 4000 6000 8000 10000

sự lặp lại

Hình 8.1: Sự hội tụ của giá quyền chọn theo mô phỏng Monte Carlo sử dụng Mersenne
Twister (MCMT) và mô phỏng Monte Carlo thông thường (MC bình thường)

8.2.1 Phương pháp biến thể chống thẩm mỹ

Chúng ta phải sử dụng số ngẫu nhiên trong mô phỏng Monte Carlo. Số ngẫu nhiên được

giả định là ε N (0,1). Vì vậy, về mặt lý thuyết, nó giữ

E [ε] = (8,3)

0, Var [ε] = 1. (8,4)

Tuy nhiên, trong thực tế, giá trị gần đúng của các thời điểm của một dãy
số ngẫu nhiên được tạo kiểu số {εn} không nhất thiết phải thỏa mãn các
phương trình trên. Thật vậy, mặc dù các giá trị sau
N
1
εn,
N X
n = 1

N N
1 1
2 ε -
N X N X
N

n = 1 n = 1 εn ! 2

nên tiếp cận 0 và 1 tương ứng, khi N ∞, nó không nhất thiết phải như vậy
hoặc sự hội tụ có thể chậm (tức là, chúng ta sẽ cần một N rất lớn).
Trong thực tế, do hạn chế về thời gian tính toán, chúng tôi không thể tạo
ra vô số số ngẫu nhiên và do đó chúng tôi có thể không thấy sự hội tụ tốt.
Do đó, chúng tôi xem xét phương pháp tạo ra các số ngẫu nhiên thỏa mãn (8.3)
(8.4). Sau đó, chúng ta có thể đảm bảo bằng cách xây dựng rằng mô men của
các số ngẫu nhiên với một số hữu hạn N trùng với mô men lý thuyết. Điều này
sẽ cho chúng ta một kết quả chính xác hơn với ít lần lặp lại mô phỏng Monte
Carlo hơn. Chính xác hơn, trước tiên chúng ta tính dãy số ngẫu nhiên {εn}
sau đây. Đồng thời, ta tính được một dãy số ngẫu nhiên khác cùng dấu với { εn}.
Machine Translated by Google

Mô phỏng Monte Carlo 181

Xét một dãy ε˜n là hợp của hai dãy {εn} và { εn}. Rõ ràng là
dãy này ε˜n thỏa mãn
2N
1
ε˜n = 0.
2N X
n = 1

Do đó, dãy ε˜n thỏa mãn (8.3) bằng cách xây dựng. Do đó, giá của một quyền chọn
với tập hợp các số ngẫu nhiên này được đưa ra như sau,

2N
1 σ
2 2 ) T + σ √

2N X
f (S0e (r 1 Tε˜n ).

n = 1

Đây được gọi là phương pháp antithetic variates. Hãy để chúng tôi tính giá của
quyền chọn mua theo phương pháp này. Đặt S0 = 100, K = 100, r = 0,01, σ = 0,2, T
= 1, ta tính được giá của quyền chọn mua với số lặp N = 10.000.

> call.monte2 <- function (S, K, r, sigma, T, N) + {+


epsi <- rnorm (N, 0,1) + for (n in 1: N) + {

+ C0 <- C0 + (max
+ (S * exp ((r-0,5 * sigma ^ 2) * T + sigma * sqrt (T) * epsi [n]) - K, 0) +
+ max (S * exp ((r-0,5 * sigma ^ 2) * T-sigma * sqrt (T) * epsi [n]) - K, 0))
+ # Dấu của sigma * sqrt (T) * eps trong số hạng đầu tiên ngược lại với + # dấu
của sigma * sqrt (T) * epsi ở số hạng thứ hai. +}

+ C0 <- exp (-r * T) * C0 / (2 *


N) + return (c ("Giá tính theo mô phỏng Monte Carlo" = C0)) +}

Chúng tôi chạy tập lệnh này và nhận được kết quả sau.

> call.monte2.1 (100,100,0.01,0.2,1,10000)


Giá tính theo mô phỏng Monte Carlo
8.543737

Nếu bạn không sử dụng vòng lặp for mà sử dụng phiên bản vector hóa, thì tập lệnh sau là một
ứng cử viên.

> call.monte2.vec <- function (S, K, r, sigma, T, N) +


{+ C0 <- 0 + epsi <- rnorm (N, 0,1) + pos <- S * exp
(( r-0.5 * sigma ^ 2) * T + sigma * sqrt (T) * epsi) -K
+ neg <- S * exp ((r-0.5 * sigma ^ 2) * T-sigma * sqrt
(T) * epsi ) -K
Machine Translated by Google

Lập trình 182 R và các ứng dụng của nó trong Toán tài chính

+ C0 <- sum (pos [pos> 0]) + sum (neg [neg> 0])


+ C0 <- 0,5 * C0 * exp (-r * T) / N
+
+ return (c ("Giá tính theo mô phỏng Monte Carlo" = C0)) +}

Thật không may, phương pháp antithetic variates không nhất thiết cho thấy
sự cải thiện đáng kể. Thật vậy, Hình 8.2 mô tả tốc độ của dòng hội tụ của mô
phỏng Monte Carlo bằng cách sử dụng phương pháp biến sai đối nghịch với giá
quyền chọn phân tích tương tự như mô phỏng Monte Carlo bình thường.
Do đó, chúng ta tiến tới phương pháp giảm phương sai phức tạp hơn, được gọi là
phương pháp so khớp thời điểm.

9.0

8.5

8.0

MCAV

chọn
tùy
giá
bình thường MC

7,5

7.0

6,5

0 2000 4000 6000 8000 10000

sự lặp lại

Hình 8.2: Sự hội tụ của giá quyền chọn theo mô phỏng Monte Carlo sử dụng phương pháp biến
thể phản cảm (MCAV) và mô phỏng Monte Carlo bình thường (MC bình thường)

8.2.2 Phương pháp khớp thời điểm

Phương pháp biến thể đối nghịch được sử dụng để tạo một chuỗi các số ngẫu nhiên phù hợp
với thời điểm đầu tiên. Chúng ta có thể thúc đẩy cuộc thảo luận này; tức là, chúng tôi

xem xét phương pháp tạo ra một chuỗi nhất quán với thời điểm thứ nhất và thứ hai.
Giá trị trung bình mẫu và phương sai của một tập hợp các số ngẫu nhiên như sau,

N
1
ε¯ = εn
N X
n = 1

N N
1 1
2 σ¯
= 2 ε -
N
N X
n = 1
N X
n = 1 εn ! 2 .
Machine Translated by Google

Mô phỏng Monte Carlo 183

Chúng tôi xác định một chuỗi các số ngẫu nhiên {εˆn} là

εn ε¯
εˆn = .
σ¯

Dãy số ngẫu nhiên này thỏa mãn các thuộc tính sau bằng cách cấu tạo,

N
1

N
X εˆn = 0,
n = 1

N N
1 1
2
εˆ
-
N X N
N X
n = 1 n = 1 εˆn ! 2 = 1.

Điều này cho thấy chuỗi εˆ có thời điểm thứ nhất và thứ hai nhất quán với ε.
Chúng tôi tính toán giá của quyền chọn mua bằng cách sử dụng dãy số ngẫu
nhiên này. Cho S0 = 100, K = 100, r = 0,01, σ = 0,2, T = 1 và số lần lặp N
là 10.000.

> call.monte3 <- hàm (S, K, r, sigma, T, N) + {+ x


<- rnorm (N, 0,1) # số ngẫu nhiên + # biến đổi x
thành số ngẫu nhiên có giá trị trung bình 0

+ # và lỗi tiêu chuẩn 1

+ y <- (x - mean (x)) / sd (x)


+ # the pay-off of call option + z
<- S * exp ((r-0.5 * sigma ^ 2) * T + sigma * sqrt ( T) *
y) -K + # giá của quyền chọn theo mô phỏng Monte Carlo + C0
<- sum (z [z> 0]) * exp (-r * T) / N + return (c ("Giá tính
theo Monte Mô phỏng Carlo "= C0)) +}

Chạy script này, chúng tôi có kết quả sau.

> call.monte3 (100,100,0.01,0.2,1,10000)


Giá tính theo mô phỏng Monte Carlo 8.415985

Hình 8.3 mô tả sự cải thiện tốc độ hội tụ bằng cách đưa vào phương pháp so
khớp thời điểm. Thật vậy, khoảng 3000 lần lặp của phương pháp khớp mô men cho
thấy sự hội tụ tốt trong Hình 8.3. Kết quả này cho thấy rằng phương pháp so
khớp thời điểm làm giảm sai số giữa các kết quả bằng mô phỏng Monte Carlo và
giải pháp phân tích.
Machine Translated by Google

184 R Lập trình và các ứng dụng của nó trong toán học tài chính

9.0

8.5

8.0

MCMM
MC bình thường
chọn
tùy
giá

7,5

7.0

6,5

0 2000 4000 6000 8000 10000

sự lặp lại

Hình 8.3: Sự hội tụ của giá quyền chọn theo mô phỏng Monte Carlo sử dụng thời điểm
phương pháp đối sánh (MCMM) và mô phỏng Monte Carlo bình thường (MC bình thường)

8.3 Tùy chọn kỳ lạ


Trong phần trước, chúng tôi đã sử dụng mô phỏng Monte Carlo để tính giá

của một quyền chọn mua. Tuy nhiên, nó không hiệu quả về mặt tính toán, bởi vì có một

giải pháp phân tích giá của một quyền chọn mua. Giá trị của việc sử dụng Monte Carlo

mô phỏng là định giá các tùy chọn mà không có giải pháp phân tích nào tồn tại. Nói chung,

các tùy chọn kỳ lạ có phần thưởng phụ thuộc vào đường dẫn hoặc phụ thuộc vào nhiều,

Các tài sản có khả năng tương quan.5 Để làm rõ sự khác biệt so với các lựa chọn kỳ lạ,

gọi và đặt tùy chọn được thảo luận trong các phần trước, đặc biệt, được gọi là

tùy chọn, tùy chọn vani hoặc tùy chọn vani đơn giản. Sau đây, chúng tôi xem xét phương pháp

để định giá các tùy chọn kỳ lạ bằng cách mô phỏng Monte Carlo.

Đầu tiên, chúng tôi xem xét một tùy chọn kỹ thuật số. Quyền chọn kỹ thuật số là một quyền

chọn trong đó mức trả là 1 (hoặc bội số của 1) nếu quyền chọn được thực hiện bằng tiền và bằng 0,

nếu không thì. Khoản hoàn trả có thể được viết là

Khoản hoàn trả = 1ST > K,

5Lưu ý rằng một số phương án kỳ lạ có các giải pháp phân tích. Một trong những ví dụ điển hình là châu Âu
tùy chọn rào cản được phân loại theo loại knock-out và knock-in. Phần thưởng của tùy chọn rào cản
được xác định xem tài sản cơ bản có chạm vào một ranh giới nhất định hay không khi đến hạn; ví dụ: up-and-in
tùy chọn là một trong những tùy chọn rào cản của kiểu gõ cửa mà chức năng thanh toán được đưa ra bởi

Khoản hoàn trả = (ST - K) + 1sup {St ; 0 <t <T} ≥H ,

trong đó St là tài sản cơ bản, K là đình công, T là thời gian đáo hạn và H là rào cản. Các loại được
được bao gồm trong tùy chọn rào cản, như tùy chọn lên và ra, xuống và vào và xuống và ra.
Tùy chọn kỹ thuật số cũng là một lựa chọn kỳ lạ với giải pháp phân tích sẽ được thảo luận ngay sau đây
trong phần này với ví dụ số.
Machine Translated by Google

Mô phỏng Monte Carlo 185

trong đó ST là giá tài sản cơ bản khi đáo hạn và K là giá khởi điểm của quyền chọn.
6 Chúng tôi xác định một hàm để tính quyền chọn kỹ thuật số theo R.

> digital.monte1 <- function (S, K, r, sigma, T, N) + {+ x


<- rnorm (N, 0,1) # random number + # biến đổi x thành y phù
hợp với 1 và 2 + # khoảnh khắc + y <- (x - mean (x)) / sd (x)

+ P <- 0 # khởi tạo giá P của tùy chọn kỹ thuật số + # thành 0 + cho
(n trong 1: N) + {+ # khoản hoàn trả của tùy chọn kỹ thuật số nếu nó
được thực hiện + nếu (S * exp ((r-0,5 * sigma ^ 2) * T + sigma * sqrt
(T) * y [n])> K) + {P <- P + 1 +} +}

+ P <- exp (-r * T) * P / N


+ return (c ("giá của quyền chọn kỹ thuật số" = P)) +}

Chúng tôi tính toán giá của quyền chọn kỹ thuật số với giá của tài sản cơ bản
S0 = 100, giá thực hiện K = 100, lãi suất phi rủi ro r = 0,01, độ bay hơi σ = 0,2,
thời gian đáo hạn T = 1 và số số lần lặp lại của mô phỏng Monte Carlo N = 10.000.

> digital.monte1 (100,100,0,01,0.2,1,10000) giá của tùy


chọn kỹ thuật số 0,4716597

Nếu bạn không muốn sử dụng câu lệnh for và if-statement, bạn có thể sửa đổi tập
lệnh trên như sau:

> digital.monte.vec <- function (S, K, r, sigma, T, N) + {+ x <-


rnorm (N, 0,1) + y <- (x - mean (x)) / sd (x) + z <- S * exp
((r-0.5 * sigma ^ 2) * T + sigma * sqrt (T) * y) -K

6 Việc hoàn vốn của một quyền chọn kỹ thuật số trông tương tự như chứng khoán Arrow-Debreu được thảo luận trong Phần

6.1.1. Tuy nhiên, chúng khác nhau ở nghĩa là khoản hoàn trả của một quyền chọn kỹ thuật số tương ứng với một sự kiện cụ

thể (khi đáo hạn), trong khi chứng khoán Arrow-Debreu tương ứng với tất cả các sự kiện có thể xảy ra.
Machine Translated by Google

186 Lập trình R và các ứng dụng của nó trong Toán tài chính

+ # Chỉ khi z là số dương, chúng tôi thêm phần hoàn trả được + # chuẩn hóa
bằng cách chia z cho z
+ P <- sum (z [0 <z] / z [0 <z]) * exp (-r *
T) / N + return (c ("giá của tùy chọn kỹ thuật số"
= P)) +}

Chúng tôi tính toán giá của quyền chọn kỹ thuật số bằng cách sử dụng chức năng này.

> digital.monte.vec (100,100,0.01,0.2,1,10000) giá


của tùy chọn kỹ thuật số
0,471661

Trong trường hợp tùy chọn kỹ thuật số, chúng tôi cũng có thể có giải pháp phân tích bằng cách sử dụng

hàm mật độ xác suất được xác định trong phần 7.3 như sau,


e f (x) dx = e rTΦ (d2).
rT Z
ln (K / S0)

Bằng cách thực hiện ở trên, giải pháp phân tích với các thông số cho trên
là 0,4752845. Mã R cho điều này như sau:

> digital.analytic <- function (S, K, r, sigma, T) + {+ d <-


(log (S / K) + (r + 0.5 * sigma ^ 2) * T) / (sigma * sqrt ( T))

- + sigma * sqrt (T)

+ P <- exp (-r * T) * pnorm (d)


+ return (c ("giá của quyền chọn kỹ thuật số" =
P)) +}
>

> digital.analytic (100,100,0.01,0.2,1) giá


của tùy chọn kỹ thuật số 0,4752845

Tiếp theo, chúng tôi xem xét các tùy chọn nhìn lại. Tùy chọn xem lại là một
tùy chọn trong đó việc hoàn vốn phụ thuộc vào con đường mà các tài sản cơ bản
thực hiện từ lúc đầu của tùy chọn cho đến khi đáo hạn [And98]. Mặc dù có một số
loại quyền chọn xem lại, chúng tôi coi đây là một quyền chọn xem lại, trong đó
giá cơ bản được sử dụng để tính toán khoản thanh toán là giá tối đa trong thời
gian tồn tại của quyền chọn như sau

Khoản hoàn trả = max max {St} t [0, T] K, 0.

Chúng tôi xác định một chức năng để định giá tùy chọn nhìn lại.

> lookback.option <- function (S, K, r, sigma, T, N, M) + {+ P <- 0


Machine Translated by Google

Mô phỏng Monte Carlo 187

+ # M là số điểm quan sát;


+ # tức là, chúng ta chia khoảng thời gian đến ngày đáo hạn cho M của lưới.
+ dt <- T / M
+
+ # N lần lặp lại của mô phỏng Monte Carlo

+ for (n trong 1: N)
+ {
+ # Giá của tài sản cơ bản tại thời điểm t
+ # được khởi tạo bằng giá cơ bản
+ # nội dung S tại thời điểm 0

+ St <- S

+ # Smax là giá trị lớn nhất của St theo ngày đáo hạn
+ # được khởi tạo bởi S
+ Smax <- S

+ # số điểm quan sát ngẫu nhiên


+ x <- rnorm (M, 0,1)
+

+ cho (m trong 1: M)
+ {
+ # mô phỏng của St tại mỗi điểm quan sát
+ St <- St * exp ((r-0,5 * sigma ^ 2) * dt + sigma * sqrt (dt) * x [m])
+ if (St> Smax)
+ # Nếu giá St tại thời điểm t lớn hơn giá
+ # giá trị lớn nhất của St trước t,
+ {
+ Smax <- St # cập nhật giá trị lớn nhất
+ }
+}
+ P <- P + max (Smax-K, 0)
+}
+ P <- exp (-r * T) * P / N
+ return (c ("giá của tùy chọn xem lại" = P))
+}

Chúng tôi chạy tập lệnh này.

> lookback.option (100,100,0,01,0.2,1,10000,100)


giá của tùy chọn nhìn lại
16.05403

Ở đây, chúng tôi chỉ hiển thị các tùy chọn kỹ thuật số và nhìn lại như các tùy chọn kỳ lạ. bên trong

các phần tiếp theo, chúng tôi thảo luận về các tùy chọn kỳ lạ khác, như tùy chọn giỏ, cầu

vồng và av erage. Tuy nhiên, có nhiều lựa chọn khác với những lựa chọn được thảo luận ở đây;

ví dụ: American, Bermudan, compound, binary options. Hơn nữa, chúng tôi có nhiều
dẫn xuất thú vị khác nhau như hoán đổi phương sai, chỉ số VIX, CDS (mặc định tín dụng
Machine Translated by Google

Chương trình 188 R và các ứng dụng của nó trong toán học tài chính

hoán đổi), CDO (nghĩa vụ nợ được thế chấp), v.v. Những độc giả liên quan đến lĩnh vực này có thể

thấy tốt, chẳng hạn như [BO10, CS97] và [Hul12].

8.4 Quyền chọn đa tài sản Quyền chọn kỳ lạ

bao gồm các hợp đồng có nhiều tài sản cơ bản.7 Các hợp đồng đại diện là quyền chọn rổ và quyền chọn

cầu vồng. Quyền chọn mua rổ có khoản hoàn trả đồng thời đề cập đến danh mục đầu tư bao gồm một số

tài sản như

M
1
m
Hoàn trả = tối đa S
X T
M
m = 1 K, 0! .

Để đơn giản, chúng tôi đặt tỷ lệ tài sản trong danh mục đầu tư bằng 1 / M.

Tất nhiên, giả định này có thể được nới lỏng.


Quyền chọn mua cầu vồng có khoản hoàn trả đề cập đến mức tối đa hoặc
giá trị tối thiểu của một số tài sản như

Khoản hoàn trả = max (max {S mT } m = 1, ···, M K, 0).

Chúng tôi định giá các loại tùy chọn này bằng cách sử dụng mô phỏng Monte Carlo. Khó khăn của việc

này là do việc thanh toán các tùy chọn này đồng thời đề cập đến một số tài sản cơ bản. Chúng ta cần

phát triển các nội dung cơ bản đồng thời, không độc lập, bởi vì chúng có thể có mối tương quan với

nhau. Hãy xem xét một


1 M
Ví dụ như giá của các tài sản cơ bản {S t , ···, S theo biện pháp trung lập t } được mô tả un

rủi ro như sau,

1
dS1 /S r σ11 ·· σ1M dW1
t t t
. . . . . .
. . dt + . . . .
. . . . . .
M
dSM r dWM
t /S t = σM1 ··· σMM t .

Giả sử rằng các chuyển động của Brown là độc lập với nhau; tức là, E [Wi E [Wi ] E W tj ] =
t
j
[W t t],
Ito;
nếuˆtôi
tức6là,
= j.
với
Chúng
m = 1,
ta ···,
có thể
M,giải phương trình ngẫu nhiên trên bằng bổ đề

m m 2 σmWt kσmk
2 ) t +
S = S 0e (r 1 ,
t

trong đó σm = (σm1, ··· , σmM), kσmk là chuẩn Euclide và Wt =


0
W1 t , ···, WMt .

7
[Bar95, Boy90] và [BEG89] là những bài báo kinh điển cho vấn đề này.
Machine Translated by Google

Mô phỏng Monte Carlo 189

mn

N
1n , ··, ε Mn) 0

N m
T
N

mn m 2 Tσmε kσmk
2 ) t + √
T e (r 1

N
1 M 1n Mn
T , ··, ST ) = T , ··, S
N
n = 1

S0 = (100,50), K = 75, r = 0,01, Σ =


Machine Translated by Google

Lập trình 190 R và các ứng dụng của nó trong Toán tài chính

+ # phép tính tổng (S ^ m (t)) tmp <-


+ tmp + S [m] * exp ((r-0,5 * v [m] ^ 2) * T +
+ Sigma [m,]% *% x * sqrt ( T)) +} + # phép tính
ở trên không có câu lệnh for + # tmp <- S% *% exp
((r-0.5 * v ^ 2) * T + Sigma% *% x * sqrt (T)) + phần thưởng

<- payoff + max (tmp / MK, 0) +} + # giá tùy chọn rổ + ans <-
payoff / N * exp (-r * T) + return (ans) +}

Chúng tôi chạy tập lệnh này.

> Sigma <- matrix (c (0,2,0.1,0.4,0.5), 2,2)>


basket.option (c (100,50), 75,0.01, Sigma, 1.10000) [1]
14.01399

Tương tự, chúng tôi mô tả một hàm để tính giá của lệnh gọi cầu vồng và
tính giá bằng cách cho S0 = (100,100), K = 100, r = 0,01,
0,2 σ22
σ11 σ12 0,1 =0,5 σ21 0,4
, T = 1 và số lần lặp lại của Monte
Carlo là 10.000. Mô phỏng

> Rainbow.option <- function (S, K, r, Sigma, T, N) + {+


# số lượng nội dung cơ bản + M <- length (S)

+ # Định mức Euclide của mỗi hàng của ma trận Sigma + v <- rep
(0, M) + for (m in 1: M) + {+ v [m] <- sqrt (Sigma [m,]% *% Sigma
[m,]) +}

+ phần thưởng <-


0 + cho (n trong 1:
N) + {+ tmp1 <- 0

+ # Số ngẫu nhiên chuẩn M-chiều

+ x <-rnorm (M, 0,1) +


for (m in 1: M) + {
Machine Translated by Google

Mô phỏng Monte Carlo 191

+ # phép tính S ^ m (t) tmp2


+ <- S [m] * exp ((r-0.5 * v [m] ^ 2) * T
+ + Sigma [m,]% *% x * sqrt (T)) if ( tmp1
+ <tmp2) {tmp1 <- tmp2 # cập nhật giá trị
+ lớn nhất} +} + # tính toán của tmp1 mà
+ không cần câu lệnh for; + # tmp1 <- max (S * exp
+ ((r-0,5 * v ^ 2) * T + Sigma% *% x * sqrt (T))) +
phần thưởng <- phần thưởng + max (tmp1-K, 0) + } + # giá
tùy chọn cầu vồng + ans <- exp (-r * T) * payoff / N +
return (ans) +}

Chạy tập lệnh này.

> Sigma <- matrix (c (0,2,0.1,0.4,0.5), 2,2)>


Rainbow.option (c (100,100), 100,0,01, Sigma, 1,10000) [1]
22,58603

8.5 Phương pháp kiểm soát các biến thể

Trong phần cuối cùng của chương này, chúng ta sẽ thảo luận ngắn gọn về phương pháp biến thể điều

khiển. Phương pháp điều khiển phương sai cũng là một trong những phương pháp giảm phương sai, giống

như phương pháp biến sai đối kháng và phương pháp so khớp thời điểm. Điều này mang lại cho chúng tôi

giá trị của các tùy chọn kỳ lạ với độ chính xác cao [HW88]. Ý tưởng là tốt đẹp và đơn giản.

Như chúng tôi đã mô tả, giá trị của quyền chọn được tính bằng giá trị kỳ vọng
E [f (ST )] cho hàm trả lại f (ST ). Ở đây, chúng tôi xem xét sự phát triển của sim
Monte Carlo. Sau đó, giá trị dự kiến gần đúng được đưa ra bởi

N
1
X f (S n T ). (8,5)
N
n = 1

Để tính toán những điều trên, phương pháp biến thể kiểm soát yêu cầu giới thiệu một
hàm hoàn trả g (ST ) trong đó giá quyền chọn có thể được tính toán một cách phân
tích và xác định giá trị kỳ vọng như sau,

N
1
X (f (S n T ) g (S n T )) + E [g (ST )].
(8,6)
N
n = 1
Machine Translated by Google

192 R Lập trình và các ứng dụng của nó trong Toán tài chính

Lưu ý rằng công thức này về cơ bản giống với giá trị của (8.5). Do đó,
(8.6) cũng dẫn đến giá quyền chọn mua f (·).
Độ chính xác của một phương pháp có thể được xác định bởi phương sai thu được từ
mô phỏng Monte Carlo nhỏ như thế nào. Theo nghĩa này, chúng ta nên so sánh phương
sai của giá quyền chọn dựa trên phương pháp biến thiên kiểm soát (8.6) với phương
sai của giá quyền chọn dựa trên mô phỏng Monte Carlo thông thường (8.5).
Phương sai theo phương pháp thay đổi điều khiển được đưa ra như sau.

N N
1 T ) g (S
Var XN
(f (S
N n = 1
T )) + E [g (ST )]!

N N
1 T ) - 1 XN
= Var XN
f (S g (S
N n = 1 N n = 1
T ) + E [g (ST )]!

N N
1 T ) - 1 XN
= Var XN
f (S g (S
N n = 1 N T )!
n = 1

N N N N
1 1 1
= Var XN
f (S
XN
g (S
XN T )
1 f (S
XN
g (S
N n = 1 T )! + Var N n = 1 T )! 2Cov N n = 1 N n = 1 T )! .

Để tính giá trị chính xác hơn của tùy chọn bằng phương pháp phương sai kiểm
soát, giá trị trên của phương sai phải nhỏ hơn giá trị phương sai của (8.5);
I E,

N N N
1 1 1
Var
N X f (S n N X f (S n N X g (S n
n = 1 T )! > Var n = 1 T )! + Var n = 1 T )!
N N
1 1
- 2Cov
N
X f (S nT )
N
X g (S n
n = 1 n = 1 T )! .

Nếu bất bình đẳng ở trên là đúng, thì việc đưa g (ST ) vào phương pháp
Monte Carlo để tính E [f (ST )] là có ý nghĩa, bởi vì phương sai (độ lớn
của er ror) của giá quyền chọn càng nhỏ.
Chúng tôi sắp xếp lại bất bình đẳng trên,

N N N
1 1 1
2Cov
N
X f (S nT )
N
X g (S n N
X g (S n
n = 1 n = 1 T )! > Var n = 1 T )! .

Điều này được viết lại tiếp theo là

1 1
Cov N PN n = 1 f (S T
n )N PN n = 1 g (S T
n ) 1
> .
1 2
Var N PN n = 1 g (S T
n )
Machine Translated by Google

Mô phỏng Monte Carlo 193

Để đơn giản hóa hơn nữa, chúng tôi giới thiệu hệ số tương quan giữa

N
1
PN n = 1 f (S T
n ) và
1
N PN n = 1 g (S T
n
); I E,

=
Cov 1
N PN n = 1
f (S n
T )N
1
PNn = 1 T)
g (S n
.
ρf g

r Var
1
N PN n = 1
f (S n
T
) r Var
1
N PN n = 1 g (S T
n
)

Sau đó, bất đẳng thức trên cuối cùng được giảm xuống

r Var N
1
PN n = 1 T)
f (S n
1
> .
ρf g 2
r Var N
1
PN n = 1 g (S T
n
)

Điều này ngụ ý rằng động lực học của f và g càng giống nhau, thì
phương sai (sai số) của giá quyền chọn càng nhỏ sao cho điều kiện
trên là đủ. Tức là ta nên chọn hàm hoàn trả g (x) thỏa mãn bất đẳng
thức trên.
Phương pháp biến đổi kiểm soát thường được áp dụng cho quyền chọn trung bình mà khoản

hoàn trả phụ thuộc vào giá trị trung bình của tài sản cơ sở trong khoảng thời gian cố định.

Lý do của điều này là giá trị của tùy chọn trung bình số học không thể được
tính toán phân tích, mặc dù giá trị của tùy chọn trung bình hình học có thể
được tính toán phân tích. Tất nhiên, giá trị trung bình số học và chỉ số địa
lý tương tự nhau. Sử dụng mối quan hệ này, chúng tôi thường áp dụng phương
pháp biến thể kiểm soát. Chính xác hơn, chúng tôi đặt hàm trả thưởng f () là
khoản hoàn trả của tùy chọn trung bình số học và hàm trả tiền g () là khoản
hoàn trả của tùy chọn trung bình hình học.
Do tính năng hấp dẫn của tùy chọn trung bình, 8 có nhiều tài liệu tham khảo;
ví dụ: [CC90, KV90, CV91, TW91, BBC94, GY93, RS95, And98, Vec1, Vec2] và [VX04].
Mặc dù chúng tôi có phương pháp PDE và phương pháp phân tích xấp xỉ để định giá
quyền chọn trung bình, phương pháp Monte Carlo có thể là phương pháp đơn giản nhất
nhưng có thể tốn nhiều thời gian nhất để đạt được giá trị chính xác. Do đó, phương
pháp biến thể điều khiển rất hữu ích trong bối cảnh này.

Hãy để chúng tôi xác định lợi nhuận của tùy chọn trung bình. Chúng tôi cố định thời

gian lấy mẫu t1 < t2 ··· < tM = T và quan sát giá tài sản cơ bản St1 , St2 , ··· , StM Để
.
đơn giản, chúng ta giả sử khoảng thời gian t = tm tm 1 là như nhau đối với mọi m = 1, ···, M.

số 8

Thật vậy, các tùy chọn trung bình ít tốn kém hơn các tùy chọn đơn giản. Những loại quyền chọn này thường được
sử dụng trong thị trường tỷ giá hối đoái và hàng hóa kỳ hạn. Xa hơn, quyền chọn trung bình còn được gọi là quyền chọn
Châu Á. Cái tên “Asian” bắt nguồn từ thực tế là các loại quyền chọn như vậy lần đầu tiên được viết trên giao dịch
chứng khoán trên các sàn giao dịch châu Á.
Machine Translated by Google

194 Lập trình R và các ứng dụng của nó trong Toán tài chính

Giá trị trung bình được tính tại t = T được cho bởi

M
1
ave
S : =
T X Stm
M
m = 1

Đối với giá trị trung bình này, lợi nhuận của quyền chọn mua trung bình được đưa ra bởi

f (S T
ave
) = max (S aveT K, 0),

và lợi nhuận của quyền chọn bán trung bình được đưa ra bởi

ave
f (S ave T ) = max (K S T , 0).

Phần hoàn vốn của quyền chọn trung bình trông giống như quyền chọn rổ. Tuy nhiên, "tốc độ

trung bình" được tính trong khoảng thời gian cố định. Do đó, nó là các tùy chọn phụ thuộc vào

đường dẫn như tùy chọn nhìn lại.

Bản chất của việc định giá quyền chọn trung bình thông qua phương pháp Monte Carlo là
ave, n ave, n
tính tỷ lệPM(Sđược
T ) xác
n = định
1, ···,
bởi Nmẫu
và Stính giá trị trung bình của khoản hoàn trả, trong đó TS là
N N N ave, n = 1 N
t1
, S t2 , ···, StM cho n = 1, ···, N; tức là, ST M
S
m = 1 tm .

Hãy để chúng tôi tính giá quyền chọn mua trung bình thông qua phương pháp Monte Carlo
thông thường được sử dụng để so sánh với phương pháp Monte Carlo thông qua phương pháp
biến thể kiểm soát.

Đầu tiên, chúng tôi xác định hàm để tính giá quyền chọn mua trung bình thông qua nor
phương pháp mal Monte Carlo như sau:

> average.option <- function (S, K, r, sigma, T, N, M) + {

+ P <- 0

+ # M là số điểm quan sát; + # tức là, chúng ta chia khoảng

thời gian đến ngày đáo hạn cho M số lưới. + dt <- T / M

+ # N là số lần lặp lại mô phỏng Monte Carlo

+ for (n trong 1:

N) + {

+ # giá của tài sản cơ bản tại thời điểm t được khởi tạo + # theo giá của tài sản cơ

sở S tại thời điểm 0


+ St <- S

+ # Lưu là giá trị trung bình của St theo ngày đáo hạn + # được

khởi tạo bằng 0,0


+ Tiết kiệm <- 0.0

+ # tạo số ngẫu nhiên với số


Machine Translated by Google

Mô phỏng Monte Carlo 195

+ # điểm quan sát + x <- rnorm

(M, 0,1)
+

+ cho (m trong 1: M)

+ {

+ # mô phỏng St tại mỗi điểm quan sát + # bao gồm M


điểm + St <- St * exp ((r-0,5 * sigma ^ 2) * dt +

sigma * sqrt (dt) * x [m])


+ Lưu <- Lưu + St # cập nhật giá trị trung bình +}

+ P <- P + max (Lưu / MK, 0) +}

+ P <- exp (-r * T) *

P / N + return (c ("giá quyền chọn mua trung bình" =


P)) +}

Cho S0 = 100, K = 100, r = 0,01, σ = 0,2, T = 1 và M = 100. Khi đó, giá


quyền chọn trung bình được đưa ra với 10.000 số lần lặp được đưa ra như sau:

> giá trung bình.option (100,100,0,01,0.2,1,10000,100) của


quyền chọn mua trung bình 4.817254

Tùy chọn gọi đơn giản cho các tham số S0 = 100, K = 100, r = 0,01, σ = 0,2, T = 1
là 8,43. Thật vậy, giá quyền chọn trung bình ít đắt hơn giá quyền chọn đơn giản.
Đối với phương pháp biến thể kiểm soát, chúng tôi cần giải pháp phân tích giá tùy
chọn trung bình theo hệ mét địa lý, được đưa ra bởi [Vor92] (xem [KV90] để biết giá
trị trung bình hình học liên tục). Lưu ý rằng trung bình hình học được xác định bởi
M
đã đưa cho

T
S m = 1 Stm ! 1 / M.
= Y

Hơn nữa,T chúng ta cần cung cấp độ trôi µG và độ bay hơi σG cho giá trị trung bình
đã đưa cho

hình học S như vậy mà

1 2 T + t
µG = lnS0 + r - σ 2 ,
2

σG = σ r t (2 triệu +1) (M +1)


.
6 triệu
Machine Translated by Google

196 Lập trình R và các ứng dụng của nó trong Toán tài chính

Sau đó, giá trị phân tích của giá quyền chọn mua hình học được đưa ra bởi

đã đưa cho rT 1 µG + e 2 2 σ
E [g (S T )] = e GΦ (d1) KΦ (d2) ,

đã đưa cho đã đưa cho


trong đó g (ST ): = max (S T K, 0) và

2
µG lnK + σ d1 = G
,
σG

d2 = d1 σG.

Theo đó, trước tiên chúng ta xác định hàm để tính toán tùy chọn độ tuổi của máy
chủ hình học.

> analysis.geometric.average.option <- function (S, K, r, sigma, T, M) + {+ # M


là số điểm quan sát; + # tức là, chúng ta chia khoảng thời gian đến ngày đáo hạn
cho M số lưới. + dt <- T / M

+ # độ lệch của giá trị trung bình hình học +


mu_G <- log (S) + (r-0,5 * sigma ^ 2) * 0,5 * (T + dt) +
# độ biến động của giá trị trung bình hình học + sigma_G
<- sigma * sqrt (dt * (2 * M + 1) * (M + 1) / (6 * M))
+

+ d1 <- (mu_G - log (K) + sigma_G * sigma_G) / sigma_G + d2


<- d1 - sigma_G
+

+ P <- exp (-r * T) * (exp (mu_G + 0.5 * sigma_G ^ 2) * pnorm (d1)


- + K * pnorm (d2)) + return (P) +}

Bây giờ, chúng ta có thể tính giá quyền chọn trung bình thông qua phương pháp biến thể kiểm soát.

> average.option.control <- function (S, K, r, sigma, T, N, M) + {+


# tính giá phân tích của tùy chọn trung bình hình học + P_ana <-

analysis.geometric.average.option (S, K , r, sigma, T, M)

+
+ P <- 0

+ # M là số điểm quan sát; + # tức là, chúng ta chia khoảng


thời gian đến ngày đáo hạn cho M số lưới. + dt <- T / M

+
+ # N là số lần lặp lại mô phỏng Monte Carlo

+ for (n trong 1: N)
Machine Translated by Google

Mô phỏng Monte Carlo 197

+ {
+ # giá của tài sản cơ bản tại thời điểm t được khởi tạo
+ # theo giá của tài sản cơ bản S tại thời điểm 0
+ St <- S

+ # Save và Save_geo là giá trị trung bình số học và


+ # giá trị trung bình hình học của St theo kỳ hạn
+ # được khởi tạo bằng 0,0 và 1,0
+ Tiết kiệm <- 0.0

+ Save_geo <- 1,0


+ # tạo số ngẫu nhiên với số
+ # điểm quan sát
+ x <- rnorm (M, 0,1)
+

+ cho (m trong 1: M)
+ {
+ # mô phỏng St tại mỗi điểm quan sát
+ # bao gồm M điểm
+ St <- St * exp ((r-0,5 * sigma ^ 2) * dt + sigma * sqrt (dt) * x [m])
+ # cập nhật giá trị trung bình số học
+ Lưu <- Lưu + St
+ # cập nhật giá trị trung bình hình học
+ Save_geo <- Save_geo * St
+ }
+ P <- P + max (Save / MK, 0) -max (Save_geo ^ (1 / M) -K, 0)
+}

+ P <- exp (-r * T) * P / N + P_ana


+ return (c ("giá quyền chọn mua trung bình" = P))
+}

Sử dụng tham số S0 = 100, K = 100, r = 0,01, σ = 0,2, T = 1 và M = 100

giống như ví dụ số ở trên thông qua phương pháp Monte Carlo thông thường,

chúng tôi tính giá quyền chọn trung bình:

> average.option.control (100,100,0,01,0.2,1,10000,100)

giá của quyền chọn mua trung bình


4.887256

Vì giá quyền chọn được tính theo phương pháp Monte Carlo thông thường là 4,817254,

giá quyền chọn theo phương pháp Monte Carlo thông qua phương pháp biến thể kiểm soát cũng tương tự

cho nhau. Để xác nhận tính hiệu quả của phương pháp biến thể kiểm soát, chúng tôi hiển thị

tốc độ hội tụ của cả hai phương pháp. Hình 8.4 mô tả sự hội tụ

của giá quyền chọn cho số lần lặp lại. Giá tùy chọn thông qua kiểm soát
Phương thức variates có vẻ ổn định với số lần lặp lại ít hơn.
Machine Translated by Google

198 Lập trình R và các ứng dụng của nó trong Toán tài chính

4.8

4,6

Monte Carlo bình thường


phương pháp kiểm soát biến thể
4.4

chọn
tùy
giá

4.2

4.0

3.8

0 2000 4000 6000 8000 10000

Hình 8.4: Sự hội tụ của giá quyền chọn

Ngoài các phương pháp được thảo luận ở đây, có nhiều phương pháp thay đổi

phương pháp giảm (xem, ví dụ, [Leh97]); ví dụ: phương pháp phân tích hồi quy,

Martingales xấp xỉ cho phương pháp giảm phương sai, Monte có điều kiện
Phương pháp Carlo, sự phân tầng. Nếu độc giả quan tâm đến chúng, hãy tham khảo các cuốn sách

tập trung vào mô phỏng Monte Carlo; ví dụ: [Fis96, HH64, KW86].
Machine Translated by Google

Chương 9

Định giá phái sinh với


Sự khác biệt một phần

Phương trình

NỘI DUNG

9.1 Phương pháp rõ ràng .............................................. .. 202


9.2 Phương pháp ngầm định ........................................... .... 205

Chúng tôi đã thấy một số phương pháp khác nhau để tính toán giá của các công
cụ phái sinh, giả định các hành vi động lực khác nhau của các tài sản cơ bản.
Tuy nhiên, cũng có thể mô tả động lực của giá đạo hàm bằng phương trình đạo
hàm riêng và như vậy, phương trình đạo hàm rất hữu ích cho việc định giá đạo
hàm. Chúng ta có thể biến bài toán tính giá đạo hàm thành bài toán giải phương
trình đạo hàm riêng. Một trong những phương pháp phổ biến nhất được sử dụng là
phương pháp sai phân hữu hạn, mà chúng tôi minh họa ngắn gọn trong chương này.1

1Để biết các vấn đề chi tiết hơn về phương pháp sai phân hữu hạn, hãy xem ví dụ: [BS78, Cou82, HW93, PTVF92, RM67,
Smi85, TR00, TR00] và [Wil97].

199
Machine Translated by Google

Lập trình 200 R và các ứng dụng của nó trong Toán tài chính

Phương trình vi phân từng phần cho công thức Black-Scholes

Gọi giá của một đạo hàm V (t, S) là một hàm của thời gian t và giá của tài sản rủi
ro cơ bản S. Giá của tài sản rủi ro S được mô tả dưới dạng sau theo thước đo rủi ro

trung lập Q:

dS = rSdt + σSdWt .

ˆ
Sau đó, theo bổ đề của Ito, nó cho rằng

V V 1 dS2 Sdt S
+ 2
dS2 + (rSdt
V t 2V
V
dV = t + Sσ Vt+ VS 12
σSdWt) + dt2 ++ rS

1 2V
2 2
= σ S dt
2 S 2

2
2V V
= S dt + σS dWt . S
S 2

Hơn nữa, có tính đến giá trị kỳ vọng dưới mức rủi ro trung tính
Chắc chắn

E Q [dV] = rV dt,

chúng ta đi đến phương trình đạo hàm riêng sau đây

V V 1 2 2 + rS
+ σ 2
t S 2V rV = 0,
S 2

đó là phương trình đạo hàm riêng Black-Scholes.

Như tên của nó, bản chất của phương pháp sai phân hữu hạn là áp dụng các
đạo hàm gần bằng các sai khác hữu hạn. Thay vì làm gần đúng trực tiếp phương
trình đạo hàm riêng Black-Scholes ở trên, chúng ta cố gắng đơn giản hóa phương
trình bằng cách sử dụng một phép biến đổi.

1. Giới thiệu một biến x thỏa mãn S = e x , dS = Sdx, chúng ta sử dụng các
mối quan hệ sau:

V 1 V 2V 1 V 1 2V
= = - + .
, 2
S S x S 2 S 2 x S 2 x

2. Chúng tôi giới thiệu một hàm f (x, t) thỏa mãn V = f e r (T , nơi T là

t) độ chín của tùy chọn. Sau đó, nó nắm giữ rằng

V f
= e r (T t)
+ rf e r (T t) .
t t
Machine Translated by Google

Định giá phái sinh với phương trình chênh lệch từng phần 201

Hình 9.1: Khái niệm định giá một đạo hàm theo phương trình vi phân riêng, với điều kiện ràng buộc
là tiền hoàn trả khi hết hạn.

Phép biến đổi trên làm giảm phương trình đạo hàm riêng Black-Scholes thành

2 f σ + r - t 2 f σ +x 2
2f = 0. (9,1)
2 2 x

Vì đã biết hàm hoàn trả f (x, T) tại thời điểm t = T, nên phương trình đạo hàm riêng (9.1) có

thể được giải với điều kiện ban đầu trên f (x, T) bằng cách lùi từ t = T đến t = 0 vào khoảng
thời gian (t: T 0). Sau đó, chúng ta đạt được f (x, 0), là giá của đạo hàm tại thời điểm

hiện tại (xem Hình 9.1).

Để giải số (9.1) bằng một phương pháp sai phân hữu hạn, chúng ta cần xác định vùng cho

phép tính trên x, t và chia vùng của x, t thành một lưới riêng phù hợp. Đầu tiên, chúng ta

xác định một khoảng lưới tùy ý x, t và mô tả x, t theo chúng như sau:

xi = i x
, i = 0,1, ···, N, j = 0,1, ···, M.
tj = j t

Giá trị của f tại x = xi , t = tj được mô tả bởi f (xi , tj) = fi, j . Theo (9.1), chúng tôi

tính toán đệ quy trạng thái fi, j tại tj bằng cách sử dụng thông tin của fi, j + 1 tại tj + 1.

Thủ tục này được lặp lại cho đến khi j = 0 (t: T 0). Sau đó, chúng ta đạt được giá của đạo
hàm tại thời điểm 0.

Trong các phần tiếp theo, chúng tôi giới thiệu hai phương pháp phổ biến nhất để giải

phương trình đạo hàm riêng bằng sai phân hữu hạn, phương pháp sai phân hữu hạn tường minh

(phương pháp tường minh) và phương pháp sai phân hữu hạn ẩn (phương pháp im plicit).
Machine Translated by Google

202 Lập trình R và các ứng dụng của nó trong Toán tài chính

9.1 Phương pháp tường minh Sử

dụng định nghĩa của đạo hàm f / x = [f (x + x, t) - f (x, t)] / x,


( x 0), phương pháp tường minh gần đúng với khác biệt bởi sự khác biệt
hữu hạn như sau [ABR97, HW90]:

=
fi, j + 1 - fi, j

t
f t

=
f fi + 1, j + 1 - fi 1, j +
.
1 2 x
x

=
2 f fi + 1, j + 1 2 fi, j + 1 + fi 1, j + 1
2 x 2
x

Thay các xấp xỉ chênh lệch này vào phương trình đạo hàm riêng (9.1), nó
cho rằng

2 σ
fi, j + 1 - fi, j 2 fi + 1, j + 1 - fi 1, j + 1 σ +2 x fi + 1, j + 1 2 fi, j + 1 + fi 1, j + 1
+ r - t = 0. x

2 2 2

2
Ta xác định t / x Sau đó chúng tôi có
= δ và giải các điều trên trên fi, j .

δ 2 xr - σ
2 σ

fi, j
= fi 1, j + 1 + (1 δ σ2 ) fi, j + 1
2 2
2 σ

δ + 2 σ + xr -
fi + 1, j + 1
2 2
= a fi 1, j + 1 + b fi, j + 1 + c fi + 1, j + 1,

trong đó chúng ta xác định a, b, c là hệ số của các số hạng ở phía bên tay phải.
Từ phương trình này, chúng ta có thể tính toán ngược thời gian từ các biến đã biết fi, j +

1 tại thời điểm j + 1 đến fi chưa biết, j tại thời điểm j. Tiếp tục quy trình này đến thời
điểm 0 sẽ đưa chúng ta đến giá trị hiện tại của đạo hàm (xem Hình 9.22 ).

Tiếp theo, chúng tôi hiển thị ví dụ số để định giá quyền chọn mua theo
phương pháp rõ ràng. Trước đó, chúng ta phải lưu ý rằng có các phương pháp để
ngụy tạo việc xây dựng lưới tính toán và vùng của các biến trên các phương pháp
ence khác nhau hữu hạn bao gồm cả phương pháp rõ ràng và ẩn. Hơn nữa, chúng ta
phải tính đến điều kiện biên khi chúng ta sử dụng phương pháp sai phân hữu hạn.
Thật vậy, mặc dù việc xác định vùng hữu hạn của khoảng thời gian [0, T] cho
thời gian t là điều tự nhiên, nhưng việc xác định vùng giá của tài sản cơ bản
S của biến x là điều gây tranh cãi, vì về mặt lý thuyết nó có thể nhận giá trị vô hạn.
Tuy nhiên, không thể tính toán số để xử lý các giá trị vô hạn.

2 Theo hình này, độc giả có thể coi phương pháp tường minh tương tự như cây tri thức. Thật vậy,
phương pháp tường minh về cơ bản giống với cây tri thức. Tuy nhiên, phương pháp ngầm định không giống
với cây tri thức, như chúng ta sẽ thấy ở phần sau.
Machine Translated by Google

Định giá phái sinh với phương trình chênh lệch từng phần 203

Hình 9.2: Sơ đồ khái niệm của phương pháp tường minh

Hình 9.3: Một ví dụ về lưới tính toán được sử dụng trên trục x trong phương pháp rõ ràng

Vì vậy, chúng ta cần thiết lập một vùng đủ lớn và xác định điều kiện biên
trên vùng biên.
Trong ví dụ số sau, đặt S là giá của tài sản cơ bản, K là giá thực hiện,
r là lãi suất phi rủi ro, sigma là biến động, T là thời gian đáo hạn của
quyền chọn, M là số điểm lưới trên khoảng thời gian và N là số điểm lưới
trên giá của tài sản cơ bản: các biến này là biến đầu vào và giá của quyền
chọn là biến đầu ra. Lưu ý rằng số điểm lưới trên giá của tài sản cơ bản
được đặt là 2N sao cho giá hiện tại trùng với một trong các điểm lưới (xem
Hình 9.3). Cũng lưu ý rằng, j lớn hơn ngụ ý rằng t tiến đến 0 trong đoạn mã
sau đây để tính toán hiệu quả, mặc dù hướng có thể ngược lại với trực giác
của chúng ta.

Ví dụ số về phương pháp rõ ràng

> PDEex_call <- function (S, K, r, sigma, T, M, N) {+


# Vùng giá có thể có của tài sản cơ bản được cho + # bằng 20 lần giá hiện tại của
tài sản cơ bản.
+ Smax <- 20 * S

+ # tính x_max tương ứng với Smax + xmax <- log (Smax)

+ # khoảng thời gian [0, T] chia cho M + dt


<- T / M
Machine Translated by Google

204 R Lập trình và các ứng dụng của nó trong toán học tài chính

+ # độ dài từ x = log (S) đến xmax chia cho N + dx <-


(xmax-log (S)) / N + # xmin được cho trước sao cho khoảng
từ xmin đến x = log (S) + # là chia cho N. + xmin <- log (S) -N * dx + x <-
seq (xmin, xmax, by = dx) # 2N + 1 vectơ + # sao cho x [1] và x [2N + 1 ]
tương ứng với các ranh giới.

+ # NN = 2 * N được đặt để x = log (S) nằm trên lưới


+ NN <- 2 * N
+

+ dd <- dt / (dx ^ 2) # delta


+
+ # Điều kiện ban đầu

+ f <- pmax (exp (x) -K, 0) # pay-off at t = T + #


pmax () là một hàm để tính giá trị lớn nhất của + # mỗi yếu tố

+ # lưu trữ thông tin ở bước trước trong g + g <- f

+ # Điều kiện ranh giới + g


[1] <- 0 + a <- (dd / 2) *
(sigma ^ 2-dx * (r-sigma ^ 2/2)) + b <- (1-dd *
sigma ^ 2) + c <- (dd / 2) * (sigma ^ 2 + dx * (r-
sigma ^ 2/2)) + # lần lặp theo hướng t-> 0 (j-> M)
+ for (j trong 1: M) {+ g [NN + 1] <- exp (r * j * dt)
* (Smax-K) # điều kiện biên + for (i in 2: NN) {f [i]
<- a * g [i-1] + b * g [i] + c * g [i + 1]} g <- f # dữ liệu cho bước tiếp
theo +}
+
+
+

+ # giá của phái sinh


+ C0 <- exp (-r * T) * f [N + 1]
+

+ # giải pháp phân tích + d1


<- (log (S / K) + (r + sigma ^ 2/2) * T) / (sigma * sqrt (T)) +
d2 <- d1 - sigma * sqrt (T)
+

+ C0_A <- S * pnorm (d1) - exp (-r * T) * K * pnorm (d2)


+

+ # kết quả theo phương pháp sai phân hữu hạn và


Machine Translated by Google

Định giá phái sinh với phương trình chênh lệch từng phần 205

+ # giải pháp phân tích +


return (c (C0, C0_A)) +}

fi, j + 1 - fi,

j t

fi + 1, j - fi 1,

j 2 x

fi + 1, j 2 fi, j + fi 1, j
2 x 2

3Lược đồ Crank-Nicolson [CN50] cũng là một ứng cử viên sáng giá có tính ổn định vô điều kiện
[TR00]. Tuy nhiên, cuốn sách này chỉ tập trung vào phương pháp ngầm định.
Machine Translated by Google

Chương trình 206 R và các ứng dụng của nó trong toán học tài chính

δ 2 δ 2 σ
fi, j + 1 = - 2 σ σ xr - fi 1, j + (1 + δ σ2 ) fi, j - 2 σ + xr - fi + 1, j
2 2 2 2

= a fi 1, j + b fi, j + c fi + 1, j, (9.2)

f1,

j f2, j

fN 1, j

Hình 9.4: Sơ đồ khái niệm của phương pháp ngầm định


Machine Translated by Google

Định giá phái sinh với phương trình chênh lệch từng phần 207

Hình 9.5: Một ví dụ về lưới tính toán trên trục x với phương pháp ngầm định

vào lưới có kích thước M và không gian của trục x thành lưới có kích thước 2N,
trong đó 2N được xác định sao cho giá tài sản cơ bản hiện tại sẽ giảm trên lưới
(xem Hình 9.5). Cũng lưu ý rằng j trong tập lệnh sau được định nghĩa để tiếp cận
t = 0 khi j được tăng lên.

Ví dụ số về phương pháp ngầm định sử dụng R

> PDEim_call <- function (S, K, r, sigma, T, M, N) {


+ # Khu vực giá có thể có của tài sản cơ bản + # được tính bằng 20 lần giá tài sản
cơ bản hiện tại
+ Smax <- 20 * S

+ # phép tính xmax tương ứng với Smax + xmax <- log
(Smax)
+

+ # khoảng thời gian [0, T] chia cho M + dt


<- T / M + # độ dài từ x = log (S) đến xmax

chia cho N + dx <- (xmax-log (S)) / N + # xmin được cho


trước sao cho khoảng từ xmin đến x = log (S) + # chia hết
cho N + xmin <- log (S) -N * dx + x <- seq (xmin, xmax, by = dx) # 2N +1 vectơ
chiều + # sao cho x [1] và x [2N + 1] tương ứng với các ranh giới

+ # NN = 2 * N được đặt để x = log (S) rơi trên lưới


+ NN <- 2 * N
+

+ dd <- dt / (dx ^ 2) # delta


+

+ a <- -dd * (sigma ^ 2-dx * (r-sigma ^ 2/2)) / 2


+ b <- (1 + dd * sigma ^ 2) + c <- -dd * (sigma ^
2 + dx * (r-sigma ^ 2/2)) / 2
+

+ Da <- cbind (rbind (0, a * Diag (NN-2)), 0)


Machine Translated by Google

Chương trình 208 R và các ứng dụng của nó trong toán học tài chính

+ Db <- b * chéo (NN-1)


+ Dc <- cbind (0, rbind (c * Diag (NN-2), 0))
+
+ D <- Da + Db + Dc # ma trận D
+

+ # Tính toán D ^ (- 1) +

thư viện (MASS) # Gói MASS được sử dụng để + # tính


toán nghịch đảo của ma trận D bằng cách sử dụng ginv ().
+ Dinv <- ginv (D)
+
+ # Điều kiện ban đầu

+ f0 <- pmax (exp (x) -K, 0) # thanh toán tại t = T


+ # véc tơ 2N-1 chiều trong đó các điểm tại + # biên f0 [1] (i
= 0) và f0 [ NN + 1] (i = 2N) bị loại bỏ.
+

+ f <- f0 [2: NN]


+

+ # Điều kiện biên + g <-


seq (0,0, l = NN-1) # một chuỗi từ 0 đến l = NN-1 + g [1] <- a *
0 # điều kiện biên tại i = 0
+

+ # lần lặp theo hướng t-> 0 (j-> M) + for (j in 1: M)


{# điều kiện biên tại i = 2N + g [NN-1] <- c * exp (r *
+ j * dt) * (Smax-K) + f <- Dinv% *% (fg) +}

+ # giá của phái sinh


+ C0 <- exp (-r * T) * f [N]
+

+ # giải pháp phân tích + d1


<- (log (S / K) + (r + sigma ^ 2/2) * T) / (sigma * sqrt (T)) +
d2 <- d1 - sigma * sqrt (T)
+

+ C0_A <- S * pnorm (d1) - exp (-r * T) * K * pnorm (d2)


+

+ # kết quả bằng phương pháp sai phân hữu hạn và nghiệm phân tích + return (c (C0,
C0_A)) +}
Machine Translated by Google

Định giá phái sinh với phương trình chênh lệch từng phần 209

Bằng các tính toán sau, chúng tôi có thể xác nhận rằng giải pháp ngầm định
phương pháp tiếp cận giải pháp phân tích bằng cách tăng số lượng lưới
điểm (M, N) .4

> PDEim_call (100,110,0.01,0.2,5,10,10)


[1] 15.56797 15.87741
> PDEim_call (100,110,0,01,0.2,5,50,50)
[1] 15,84162 15,87741
> PDEim_call (100,110,0,01,0.2,5,100,100)
[1] 15.85572 15.87741
> PDEim_call (100,110,0,01,0.2,5,500,500)
[1] 15,87356 15,87741

Chúng ta có thể tính toán giá của một quyền chọn mua như một hàm của giá cơ bản ban đầu
giá tài sản (hoặc 'giao ngay') bằng cách thay đổi đầu ra của hàm như sau

return (list (exp (x [2: NN]), exp (-r * T) * f))

và thiết lập những điều sau đây

> z <- PDEim_call (100,110,0.01,0.2,5,500,500)


> x <- z [[1]]

> y <- z [[2]]


> plot (x [1: 600], y [1: 600], xlab = "Spot", ylab = "Price", type = "l")

Kết quả được vẽ trong Hình 9.6.

80

60

40
Giá

20

0 50 100 150

Nơi

Hình 9.6: Giá của một quyền chọn mua như một hàm của giá giao ngay tài sản cơ bản.

4Chúng tôi có các kỹ thuật khác để cải thiện độ chính xác bằng các phương pháp về cách chúng tôi đặt thời gian và không gian

lưới và việc thiết lập các điều kiện biên. Ví dụ, có thể sửa đổi kích thước lưới tương ứng với phạm vi giá tài sản theo thời

gian đáo hạn của quyền chọn.


Machine Translated by Google

Lập trình 210 R và các ứng dụng của nó trong Toán tài chính

Vì có một nghiệm phân tích cho giá của một quyền chọn mua, chúng ta có thể so sánh

nghiệm gần đúng bằng phương pháp ngầm định với giải phân tích. Tuy nhiên, nhiều công cụ

phái sinh mà chúng ta có thể quan tâm, không nhất thiết phải có các giải pháp phân tích

nói chung. Tuy nhiên, phương pháp giải phương trình hàm số hàm riêng được áp dụng cho

định giá đạo hàm là chung. Chúng ta có thể sử dụng các phiên bản sửa đổi của các tập lệnh

trên để tính toán các giá trị gần đúng của giá phái sinh mà không nhất thiết phải có các

giải pháp phân tích [WDH93].

Trong cuốn sách này, chúng tôi đã giới thiệu các mô hình, phương pháp và chương trình

khác nhau để giải quyết các vấn đề trong tài chính bằng cách sử dụng R. Tiếp theo cùng

với việc triển khai mã R được giới thiệu sẽ giúp hiểu được các phương pháp và dẫn đến

khám phá những ý tưởng mới. Kết thúc cuốn sách này, chúng tôi hy vọng rằng phần giới

thiệu của chúng tôi sẽ hữu ích cho người đọc trong việc giải quyết nhiều vấn đề và khuyến

khích người đọc tiến tới các giai đoạn học tập nâng cao hơn.
Machine Translated by Google
Machine Translated by Google
Machine Translated by Google

Phụ lục A

Tối ưu hóa với R

NỘI DUNG

A.1 Bài toán tối ưu hóa nhiều biến thể ................................. 213 A.2

Bài toán biên giới hiệu quả bởi tối ưu hóa ...................... 216

A.1 Bài toán tối ưu hóa nhiều biến thể Trong Phần 7.4,

chúng tôi đã sử dụng hàm tối ưu hóa () trong ví dụ về bài toán tối ưu hóa để
tính toán độ biến động ngụ ý. Trong ví dụ này, chỉ có 1 biến không xác định
(biến động ngụ ý). Tuy nhiên, các mô hình phức tạp hơn thường khiến chúng ta
phải xác định một số biến số. Do đó, chúng tôi coi vấn đề sau đây có thể không
thực tế nếu chúng tôi tập trung vào sự biến động ngụ ý, nhưng chứng minh một ví
dụ điển hình về nhiều biến chưa biết trong bài toán tối ưu hóa. Ở đây, chúng tôi
xem xét một vấn đề để tìm ra các ứng cử viên thích hợp nhất của sự biến động σ
và tỷ giá phi rủi ro r với giá thị trường được đưa ra trong Phần 7.4. Chúng tôi
thường xem xét yếu tố trong mô hình sao cho tỷ lệ phi rủi ro r được biết đến và
áp dụng công thức Black-Scholes. Tuy nhiên, để chỉ ra phương pháp của một bài
toán tối ưu hóa nhiều biến, chúng ta giải quyết bài toán trong đó r cũng chưa
biết. R có một chức năng tối ưu hóa () cho loại tối ưu hóa này. Ý tưởng tương
tự như trường hợp 1 chiều (tất nhiên, tối ưu () có thể được áp dụng cho trường hợp 1 chiều).
Lưu ý rằng hàm tối ưu () sẽ thực hiện việc thu nhỏ theo mặc định.
Đầu tiên, chúng ta xác định hàm để tính công thức Black-Scholes.

> black_scholes <- function (S, K, r, sigma, T) + {+


d1 <- (log (S / K) + (r + sigma ^ 2/2) * T) / (sigma *

sqrt (T) )

213
Machine Translated by Google

Lập trình 214 R và các ứng dụng của nó trong Toán tài chính

+ d2 <- d1 - sigma * sqrt (T)


+

+ C0 <- S * pnorm (d1) - exp (-r * T) * K * pnorm (d2) +


return (C0) +}

Chúng tôi viết lại hàm lỗi err1 () được đưa ra trong Phần 7.4 dưới dạng err2 ()
để tối ưu hóa nhiều biến như sau:

> err2 <- function (S, K, var, T, MktPrice) + {+


# var phải bao gồm (r, sigma) + tmp <- (MktPrice-

black_scholes (S, K, var [1], var [2 ], T)) ^ 2

+ return (sum (tmp)) +}

Chúng tôi chạy tập lệnh trên bằng cách đưa ra giá tùy chọn cho mỗi cảnh cáo.

> K_sample <- c (80,90,100,110,120)


> Mkt_sample <- c (22,75,15.1,8.43,4.72,3.28)> # để tính
lãi suất phi rủi ro và biến động dưới dạng trình tối ưu hóa,> # chúng tôi đặt
giá trị ban đầu của chúng tương ứng là 0,01 và 0,1. > tối ưu (c (0,01,0,1),
err2, MktPrice = Mkt_sample, S = 100, + K = K_sample, T = 1) $ par [1] 0,02190933
0,19890999

$ value
[1] 0.9296892

Độ dốc

hàm $ counts
65 NA

$ hội tụ [1] 0

$ tin nhắn
VÔ GIÁ TRỊ

Kết quả này cho thấy lãi suất phi rủi ro tối ưu là 2,2% và mức biến động tối ưu
là 19,9%. Sai số được cho bởi 0,93. Chúng tôi đưa ra các giá trị ban đầu của các
biến không xác định trong đối số của hàm lỗi. Tuy nhiên, nếu chúng ta chọn các
giá trị ban đầu không phù hợp (ví dụ: quá lớn hoặc quá nhỏ), thì giải pháp của
Machine Translated by Google

Tối ưu hóa với R 215

tối ưu hóa có thể là một giải pháp cục bộ, khác với giải pháp toàn cầu thực sự. Chúng
ta cần có một dự đoán tốt về các giá trị ban đầu và có thể thực hiện điều này bằng
cách thử và sai.

Tiếp theo, chúng ta thảo luận về việc sử dụng hàm constrOptim () được sử dụng cho
bài toán tối ưu hóa bị ràng buộc. Không giống như hàm Optim () không đặt ra ràng buộc
đối với việc tối ưu hóa về tỷ lệ phi rủi ro và sự biến động, chúng tôi cố gắng đưa ra
các điểm hạn chế về các biến này để có giá trị dương.

constrOptim (c (0,01,0.1), err2, ui = rbind (c (1,0), c (0,1)), ci = c (0,0),


method = "Nelder-Mead", MktPrice = Mkt_sample , S = 100, K = K_sample, T = 1)

Ở đây, chúng tôi đặt phương thức tối ưu hóa thành phương pháp Nelder-Mead bằng cách ký hiệu

là ing method = "Nelder-Mead" (lưu ý rằng hàm Optim () chọn phương thức Nelder Mead theo

mặc định). Chúng ta có thể chọn các phương pháp khác để tối ưu hóa, chẳng hạn như BFGS, CG,

L-BFGS-B, SANN. Trong thực tế, chúng ta có thể tùy ý chọn bất kỳ một phương pháp nào trong

số chúng, bởi vì nếu chúng ta chọn một phương pháp không phù hợp, thì R sẽ cảnh báo cho chúng ta.

Hơn nữa, chúng ta có thể đặt phạm vi ràng buộc theo ui và ci trong constrOptim ().
Bằng ui và ci, chúng ta có thể xác định ràng buộc sau,

ui × ẩn số ci ≥ 0

1 0
Trong ví dụ trên, ui = và ci = (0,0). Do đó, giải pháp
0 1

(r ) bởi constrOptim () thỏa mãn điều đó, σ

1 0 r
-
≥ 0.
0 1 σ 0 0

Từ đó, chúng ta có thể thêm ràng buộc rằng lãi suất phi rủi ro và sự biến
động có giá trị dương. Kết quả của phép tính số của ví dụ trên được đưa ra bởi

$
par [1] 0,02191454 0,19889573

$ value
[1] 0.9296888

$ counts
hàm gradient 55
NA

$ hội tụ [1] 0
Machine Translated by Google

216 R Lập trình và các ứng dụng của nó trong Toán tài chính

$ tin nhắn
VÔ GIÁ TRỊ

$ external.iterations
[1] 4

$ rào cản.value
[1] 6.257486e-05

Ngay cả khi chúng tôi không đưa ra bất kỳ ràng buộc nào, chúng tôi có thể nhận được các giải pháp

không tiêu cực về lãi suất phi rủi ro và sự biến động. Do đó, chúng ta có thể xác nhận rằng các giải
pháp có kết cấu gần như giống nhau đối với trường hợp mà không có ràng buộc.

A.2 Biên giới hiệu quả bằng vấn đề tối ưu hóa


Trong phần này, chúng tôi xem xét biên giới hiệu quả với hạn chế bán khống.
Giả sử 3 tài sản tồn tại sao cho lợi tức, biến động và hiệp phương sai dự kiến
của chúng được cho bởi µ1 = 0,1, µ2 = 0,05, µ3 = 0,15, σ1 = 0,2, σ2 = 0,1, σ3 =
0,3, σ1,2 = 0,015, σ13 = 0,01 và σ2,3 = 0,02.
Biểu thị trọng số đầu tư là w, vectơ lợi nhuận kỳ vọng là µ và ma trận phương
sai phương sai là V, bài toán của chúng ta được mô tả bằng bài toán tối thiểu
sao cho
2 σ
p
= w 0Vw,

tùy thuộc vào ràng buộc bán khống, ngoài các ràng buộc của vấn đề tối ưu hóa
được giới thiệu trong Phần 4.5; I E,

0
w 1 = 1, w 0µ = µp , wi ≥ 0.

Suy ra điều kiện đẳng thức w 01 = 1 thành 2 điều kiện bất đẳng thức w 01 ≥ 1 và
w 01 ≥ 1, chúng ta có thể áp dụng bài toán trên cho hàm constrOptim () chỉ
cho phép điều kiện bất đẳng thức. Tuy nhiên, constrOptim () yêu cầu các điều
kiện ban đầu được tạo theo quy tắc. Đối với những vấn đề như vậy, chúng tôi
khuyên bạn nên sử dụng hàm giải quyết.QP (D, d, A, b_0, meq = x) đi kèm với gói
quadprog cho Bài toán lập trình bậc hai.1 Hàm giải quyết.QP () suy ra lời giải b
cực tiểu ( d 0b + 1 / 2b 0Db) với các ràng buộc A 0b ≥ b0. Hàm này giải bài toán
tối ưu hóa với x là điều kiện đẳng thức và phần còn lại là điều kiện bất đẳng
thức bằng cách ký hiệu meq = x (không có ký hiệu rõ ràng, nó được hiểu là x = 0).

1 Đối với vấn đề kinh điển này, hãy xem [Dor60] [Dor61] và [FW56]. [Lue69] cung cấp cho chúng tôi
hướng dẫn toàn diện hơn để tối ưu hóa, bao gồm cả vấn đề lập trình bậc hai.
Machine Translated by Google

Tối ưu hóa với R 217

Ở đây, chúng ta hãy sử dụng hàm giải quyết.QP (). Đầu tiên, chúng tôi tải và cài
đặt quadprog tuổi gói (xem Phần 1.9).

> thư viện (quadprog)

Tiếp theo, chúng tôi xác định ma trận hiệp phương sai và tỷ lệ hoàn vốn mong đợi.

> # lợi nhuận dự kiến> mu


<- c (0,1,0.05,0.15)> # ma trận
hiệp phương sai> V <- rbind (c (0,2 ^ 2,

-0.015,0.01), c (-0.015.0.1 ^ 2, -0.02 ), + c (0,01, -0,02,0.3 ^ 2))

Trong ví dụ này, đối số D được hiểu là ma trận phương sai-hiệp phương sai và đối số d
được hiểu là vectơ 0. Chúng tôi định nghĩa A trong đoạn mã sau sao cho hai cột đầu tiên
tương ứng với các điều kiện bình đẳng và ba cột còn lại là các điều kiện bất bình đẳng.

> d <- rep (0,3)> d


[1] 0 0 0> tmp <-

matrix (0, nrow = 3,

ncol = 3)> Diag (tmp) <- 1

> A <- cbind (rep (1,3), mu, tmp)


> A
mu

[1,] 1 0,10 1 0 0 [2,]


1 0,05 0 1 0 [3,] 1
0,15 0 0 1

Ở đây, chúng tôi tính toán trọng số của một danh mục đầu tư giảm thiểu rủi ro với điều
kiện lợi tức là 0,1. Trong trường hợp này, chúng ta cần đặt b0 như sau:

> b0 <- c (1, 0,1, đại diện (0,3))


> b0

[1] 1,0 0,1 0,0 0,0 0,0

Đối số đầu tiên được ký hiệu là 1 có nghĩa là tổng trọng số là 1, đối số thứ hai được
ký hiệu là 0,1 nghĩa là trả về là 0,1, ba đối số còn lại được đặt 0 nghĩa là mỗi trọng
số lớn hơn 0. Theo các ràng buộc này, chúng ta giải bài toán tối ưu hóa bằng cách sử
dụng giải quyết.QP ().

> giải quyết.QP (V, d, A, b0, meq =

2) $ giải pháp

[1] 0,2916667 0,3541667 0,3541667


Machine Translated by Google

Lập trình 218 R và các ứng dụng của nó trong Toán tài chính

giá trị $

[1] 0,004947917

$ không bị giới hạn.solution


[1] 0 0 0

$ lần lặp [1]

3 0

$ Lagrangian
[1] -0,02572917 0,35625000 0,00000000 0,00000000 0,00000000

$
iact [1] 1 2

Kết quả cho thấy rằng mỗi trọng lượng nên được cung cấp khoảng 0,3,0.35,0,35,
1 2 σ
sau đó giá trị nhỏ nhất của
2 p
sẽ là các
tổng 0,005. Hơnsốnữa,
trọng là 1chúng tôinhuận
và lợi có thể
củaxác nhận
danh mụcrằng
đầu
tư là 0,1. Để vẽ biên giới hiệu quả, chúng tôi viết đoạn mã sau và chạy nó và vẽ
biểu đồ kết quả trong Hình A.1 (xem thêm Hình 4.2 để so sánh với nó).

> Frontier <- function (n, mu, V) {+


library (quadprog) + # mu_p theo gia
số 0,001 + mu_p <- seq (min (mu) + 0,001,
max (mu) - 0,001, by = 0,001) + m <- length (mu_p) + sigma_p <-
rep (0, m) + weight <- matrix (0, nrow = m, ncol = n)

+
+ # d được đặt làm vectơ 0 trong trường hợp này

+ d <- rep (0, n)


+ tmp <- matrix (0, nrow = n, ncol =
n) + Diag (tmp) <- 1 + # hai cột đầu
tiên của vectơ A là điều kiện bằng nhau, + # phần còn lại ba cột là
ràng buộc bán khống
+ A <- cbind (rep (1, n), mu, tmp)
+
+
+ for (i in 1: m)
{+ b0 <- c (1, mu_p [i], rep (0, n))
+ Z <- giải quyết.QP (V, d, A, b0, meq = 2)
Machine Translated by Google

Tối ưu hóa với R 219

+ sigma_p [i] <- sqrt (giá trị 2 * Z $)


+ weight [i,] <- Z $ giải pháp
+}
+

+ plot (sigma_p, mu_p, xlim = c (0, max (sqrt (Diag (V)))), "l")
+
+}

Chúng tôi chạy kịch bản.

> Biên giới (3, mu, V)

Bằng cách viết lại phần cuối cùng của tập lệnh trên như sau, chúng ta có thể hiển thị
trọng số của từng nội dung tạo ra phương sai tối thiểu cho lợi nhuận mục tiêu
trong Hình A.2.

0,14

0,12

0,10
mu_p

0,08

0,06

0,00 0,05 0,10 0,15 0,20 0,25 0,30

sigma_p

Hình A.1: Biên giới hiệu quả với hạn chế bán khống

1,0

trọng lượng 3

0,8 trọng lượng 2

trọng lượng 1

0,6

lượng
trọng

0,4

0,2

0,0

0,051 0,066 0,08 0,094 0,109 0,124 0,139

mu_p

Hình A.2: Trọng lượng của từng tài sản


Machine Translated by Google

Lập trình 220 R và các ứng dụng của nó trong Toán tài chính

list <-paste ("weight", 1: n) barplot


(t (weight), names.arg = mu_p, xlab = "mu_p", ylab = "weight", border = 0, legend =
list)
# Chúng tôi xóa đường viền khung bằng cách biểu thị đường viền = 0.
# Bằng cách ký hiệu col = 1: 3, chúng ta có thể mô tả âm mưu được tô màu.

Ngoài ra, chúng ta cũng có thể sử dụng hàm portfolio.optim () sử dụng hàm giải
quyết.QP () và được bao gồm trong gói tseries. Một loại hàm tối ưu hóa khác trong R là
uniroot () tìm kiếm gốc của một hàm trong khoảng thời gian nhất định. Hơn nữa, gói
nleqslv được sử dụng để giải phương trình đồng thời phi tuyến tính. Người đọc nên sử
dụng chúng khi cần thiết.
Machine Translated by Google

Phụ lục B

Giảm tiếng ồn qua


Bộ lọc Kalman

NỘI DUNG

B.1 Giới thiệu về bộ lọc Kalman ....................................... 222 Bộ lọc Kalman phi

B.2 tuyến ... ......................................... 227

Chúng tôi đã tìm hiểu về các mô hình khác nhau; Ví dụ: AR, GARCH, mô hình Cây, mô hình
Black Scholes, v.v. Dựa trên một mô hình, chúng ta có thể làm những việc khác nhau, ví
dụ như dự báo giá trị của giá cổ phiếu, xây dựng chiến lược giao dịch, v.v. Dù làm gì,
chúng ta cũng phải bắt đầu từ việc quan sát dữ liệu. Tuy nhiên, mặc dù nó có vẻ trực
quan, đơn giản và dễ hiểu, nhưng việc quan sát không đơn giản như vậy. Đó là bởi vì dữ
liệu mà chúng tôi quan sát được có thể bị bóp méo với nhiều nguồn nhiễu khác nhau.
Ngay cả khi tồn tại một luật liên tục thúc đẩy quy trình công cụ tài chính, dữ liệu
được quan sát trong thế giới thực vẫn có thể bị nhiễm các nguồn tiếng ồn như khí hậu,
thảm họa, kết quả bầu cử, chiến tranh hoặc những thứ tương tự.
Trong cuộc sống của chúng ta, chúng ta khó có thể quan sát bất kỳ dữ liệu nào mà không có tiếng ồn. Do đó, điều cấp

thiết là chúng ta phải làm thế nào để loại bỏ những nhiễu như vậy để người ta có thể ước tính các quy luật thực sự thúc

đẩy các quá trình hoạt động của các công cụ tài chính.

Lọc là một phương pháp để loại bỏ (lý tưởng) hoặc giảm (thực tế) nhiễu có trong các
dữ liệu khác nhau. Lọc là công nghệ ban đầu không phải dành cho tài chính, mà là công
nghệ dành cho kỹ thuật như kỹ thuật tên lửa. Hãy tưởng tượng một trường hợp mà chúng
ta cần quan sát vận tốc và vị trí của một vật bằng các định luật vật lý, nhưng chúng
ta chỉ có thể quan sát vị trí của vật bằng tiếng ồn. Làm thế nào chúng ta có thể loại
bỏ tiếng ồn và ước tính trạng thái thực liên quan đến vận tốc và vị trí? Đây là một điển hình

221
Machine Translated by Google

222 R Lập trình và các ứng dụng của nó trong toán học tài chính

loại vấn đề lọc. Nếu chúng ta thay thế vị trí của đối tượng thành giá của các
công cụ tài chính, thì công nghệ lọc có thể dễ dàng áp dụng cho lĩnh vực tài
chính.

Trong chương này, chúng tôi giới thiệu ngắn gọn phương pháp được gọi là bộ lọc Kalman

[KB61] , đây là một trong những phương pháp được áp dụng rộng rãi nhất cho các lĩnh vực

khác nhau. Khả năng ứng dụng rộng rãi của bộ lọc Kalman một phần là do đặc tính dựa trên

quá trình xử lý nối tiếp. Ở đây, chúng ta sử dụng thuật ngữ xử lý nối tiếp như sau: Cho

các dịch vụ ob là S1, ··· , SN. Sau đó, chúng ta có thể tính mN trung bình bằng

S1 + ··· + SN
mN = .
N

Khi chúng ta nhận được một quan sát mới SN + 1, mN + 1 trung bình được cho bởi mN + 1 = (S1 +

··· + SN + SN + 1) / (N +1), nhưng nó cũng được mô tả bằng hình thức sau,

S1 + ··· + SN + SN + 1
mN + 1 =
N +1
S1 + ··· + SN SN +
= 1 +
N +1 N +1
S1 + ··· + SN N SN +
= 1 +
N N +1 N +1
N 1
= 1. mN + N +1 N +1
SN +

Điều này có nghĩa là chúng ta không cần phải lấy mẫu lại tất cả các quan sát
S1, ···, SN và SN + 1, mà chúng ta chỉ cần ghi nhớ mN và tính tổng trọng số
của mN và SN + 1. Đây là một ví dụ rất đơn giản về xử lý nối tiếp, nhưng ước
tính dựa trên bộ lọc Kalman về cơ bản là như thế này.
Với khả năng ứng dụng rộng rãi của bộ lọc Kalman, nó được sử dụng trong các
lĩnh vực khác nhau như một trong những công nghệ quan trọng nhất để ước tính.
Ngoài tính linh hoạt rộng rãi, lý thuyết lọc, bao gồm cả bộ lọc Kalman, có nền
tảng toán học sâu sắc và nhiều sách giáo khoa xuất sắc đã được xuất bản về chủ
đề này (xem ví dụ: [ BC09, Kal80 , LS01a, LS01b] và [Xio08] ).

B.1 Giới thiệu về bộ lọc Kalman

Gọi y là quan sát và a là tín hiệu không quan sát. Vấn đề của chúng ta là giao
phối tín hiệu bất cứ lúc nào t. Để ước tính tín hiệu tại bất kỳ thời điểm nào t,
chúng ta hãy tính giá trị kỳ vọng được điều kiện dựa trên quan sát yt ; I E,

aˆt | t = E [at | yt ]. (B.1)

Chúng tôi cũng tính toán dự đoán trước một bước để cập nhật ước tính;

aˆt + 1 = E [at + 1 | yt ], (B.2)


Machine Translated by Google

Giảm tiếng ồn qua Bộ lọc Kalman 223

bằng cách sử dụng ˆat | t và phương sai ước tính Pt | t = Var (at | yt). Công cụ ước lượng đã lọc

ở khoảng thời gian sau, ˆat + 1 | t + 1 = E [at + 1 | yt + 1] được tính bằng ˆat + 1 và phương
sai ước tính Pt + 1 = Var (at + 1). Quá trình xử lý nối tiếp như vậy được gọi là bộ lọc Kalman.

Chính xác hơn, chúng ta xem xét hệ thống sau: Cho tín hiệu a là m
vectơ chiều và quan sát y là vectơ d chiều sao cho

tại + 1 = dt + Ttat + Htηt yt =


(B.3)

ct + Ztat + Gtεt , (B.4)

trong đó η, ε tương ứng với N (0, Im) và N (0, Id) đối với ma trận nhận dạng m và d chiều Im và

Id tương ứng. Hơn nữa, cho các tham số là dt R m, Tt R m × m,


d d × m d × d.
Ht R m × m, ct R , Zt R và Gt R

Chúng ta giả sử rằng các ước lượng ban đầu ˆa0 và P0 đã cho. Sử dụng chúng, chúng tôi ước

tính ˆa0 | 0 và P0 | 0 . Với ˆa0 cho trước, chúng ta có thể ước lượng y0. Thật vậy, ˆy0 được

cho bởi yˆ0 = c0 + Z0aˆ0 + G0ε0. Giá trị trung bình và phương sai của sai số v0 = y0 yˆ0 được

cho bởi

E [v0] = E [y0 yˆ0] = E [y0 c0 Z0aˆ0 G0ε0] = y0 c0 Z0aˆ0


0 0
F0 : = Var (v0) = Var (y0 c0 Z0aˆ0 G0ε0) = Z0P0Z 0 + G0G 0
0
Cov (a0, v0) = Cov (a0, y0 c0 Z0aˆ0 G0ε0) = P0Z 0 ,

trong đó chúng tôi đã sử dụng luật tổng kỳ vọng và tính độc lập giữa a0 và ε0.

Sử dụng phần trên, chúng ta có thể tính ˆa0 | 0 và P0 | 0 . Lưu ý rằng v0 là quan sát y0 trừ
đi hằng số ˆy0. Điều này có nghĩa là E [· | y0] = E [· | v0]. Sau đó, nó theo sau đó

aˆ0 | 0 = E [a0 | y0] = E [a0 | v0] = E [a0] + Cov (a0, v0) Var (v0) 1 v0
0 1
= aˆ0 + P0Z 0F 0 v0 = aˆ0 + K0v0,

0 1
trong đó K0 = P0Z 0F 0 .

Chúng tôi cũng tính P0 | 0 ,

P0 | 0 = Var (a0 | y0) = Var (a0 | v0) = Var (a0) Cov (a0, v0) 2Var (v0) 1
0 0 1 0
= P0 Z0P 0P0Z 0F Sử = P0 Z0P 0K0.
0

dụng ˆa0 | 0 và P0 | 0 , tính


ta được ˆa1 và P1. Điều này rất dễ dàng bởi vì chúng tôi chỉ sử
dụng hệ thống đã cho để tính toán chúng; I E,

aˆ1 = E [a1 | y0] = E [d0 + T0a0 + H0η0 | y0] =

d0 + T0E [a0 | y0] = d0 + T0aˆ0 | 0 = d0 + T0 (aˆ0 + K0v0),

P1 | 0 = Var (a1 | y0) = Var (d0 + T0a0 + H0η0 | y0)

= Var (T0a0 | y0) + Var (H0η0 | y0)


0 0
= T0Var (a0 | y0) T 0 + H0Var (η0 | y0) H 0
0 0
= T0P0 | 0T 0 + H0H 0 .
Machine Translated by Google

224 R Lập trình và các ứng dụng của nó trong toán học tài chính

Các thủ tục này có thể được khái quát hóa. Với ˆat và Pt cho trước , chúng ta có thể tính

aˆt | t và Pt | t như sau

aˆt | t = aˆt + Ktvt .


0

Pt | t = Pt ZtP t Kt .

Từ chúng, chúng tôi cũng có thể tính toán

aˆt + 1 = dt + Ttaˆt | t
0 0

Pt + 1 = TtPt | tT t + HtH t ,

và chúng tôi có thể cập nhật ước tính.

Ứng dụng của bộ lọc Kalman

Hãy để chúng tôi áp dụng bộ lọc Kalman cho hệ thống được mô tả bên dưới

tại + 1 = 0,1 + 0,5at + 0,4ηt ,

yt = tại + 0,6εt ,

tín hiệu ở đâu và quan sát của chúng tôi là yt với tiếng ồn 0,6εt . Ở đây, chúng tôi cố gắng

loại bỏ tiếng ồn khỏi quan sát. Hệ thức là dt = 0,1, Tt = 0,5, Ht = 0,4, ct = 0, Zt = 1, Gt =

0,6 in (B.3) và (B.4).

Chúng ta có thể ước tính tín hiệu a bằng cách sử dụng bộ lọc Kalman theo quy trình đã thảo

luận ở trên. Tuy nhiên, R được trang bị nhiều gói khác nhau cho bộ lọc Kalman. Vì vậy, chúng

tôi sẽ thử một trong số chúng. Ở đây, chúng tôi sử dụng gói FKF rất dễ thực hiện.

Sau khi cài đặt FKF, chúng tôi giới thiệu gói.

> thư viện (FKF)

Hơn nữa, chúng tôi thiết lập số mẫu, quan sát và thông số của Kalman fil
thời hạn.

> # tham số> dt_ <-

ma trận (0.1) # ma trận tương ứng với d_t> Tt_ <- ma trận (0.5) # mảng tương ứng

với T_t> H_ <- ma trận (0.4) # hệ số của H_t> HHt_ <- H _% * % t (H _) # một
mảng tương ứng với H_t * H_t '

>

> ct_ <- ma trận (0) # một ma trận tương ứng với c_t> Zt_ <- ma trận (1) #

một mảng tương ứng với Z_t> G_ <- ma trận (0.6) # thừa số của G_t> GGt_ <- G
_% *% t ( G_) # một mảng tương ứng với G_t * G_t '

>
Machine Translated by Google

Giảm tiếng ồn qua Bộ lọc Kalman 225

> a0_ <- c (0) # một vectơ cho giá trị ban đầu> # của tín
hiệu> P0_ <- ma trận (0,001) # một ma trận cho phương sai
của a0
>

> # tạo mẫu dữ liệu> n_ <-


100 # số mẫu (quan sát)
>
> eta <- rnorm (n_, 0,1)>
eps <- rnorm (n_, 0,1)
>

> a <- rep (0, n_)>


y <- rep (0, n_)>
a [1] <- dt_ [1,1] + H_ [1,1] * eta
[1]> y [1] <- a [1] + G_ [1,1] * eps
[1]> for (i in 2: n _) {+ a [i] <- dt_
[1,1] + Tt_ [1,1] * a [i-1] + H_ [1,1] * eta [i] + y [i] <-
a [i] + G_ [1,1] * eps [i] +}> yt_ <- rbind (y) # quan sát

Cuối cùng, chúng tôi tính toán bộ lọc Kalman bằng cách sử dụng hàm fkf ().

> kalman.obj <- fkf (a0 = a0_, P0 = P0_, dt = dt_, ct = ct_, Tt = Tt_,
+ Zt = Zt_, HHt = HHt_, GGt = GGt_, yt = yt_)

Hình B.1 vẽ biểu đồ kết quả (xem đoạn mã sau).

ước tính
quan sát

trị
giá

2,0
1,5
1,0
0,5
0,0

1,0

0 20 40 60 80 100

Mục lục

Hình B.1: Dữ liệu gốc và dữ liệu làm mịn bằng bộ lọc Kalman

> plot (y, type = "l", ylab = "values",)>


lines (ts (kalman.obj $ att [1,], start = start (y),
+ frequency = frequency (y)), lty = 2)
Machine Translated by Google

226 Lập trình R và các ứng dụng của nó trong Toán tài chính

> chú thích ("topright", c ("quan sát", "ước tính"), + lty = c (1,2),
lwd = c (2.5,2.5), bty = "n")

Chúng ta có thể thấy tín hiệu xuất hiện bằng cách loại bỏ nhiễu khỏi các quan sát.

Trong ví dụ trên, chúng ta giả sử rằng tất cả các tham số của một hệ thống đều đã biết.

Tuy nhiên, nói chung các thông số như vậy có thể không được đưa ra vì tín hiệu a là
không thể quan sát được. Tất nhiên, trong khi chúng ta cần giả sử các tham số hoặc mô
hình ít nhiều để phân tích một hệ thống, bộ lọc Kalman cũng rất hữu ích không chỉ để tái
di chuyển nhiễu mà còn để tìm các tham số này. Để làm được điều đó, chúng ta cần sử dụng
một công cụ tối ưu hóa. Trong khi chúng tôi chỉ ra cách sử dụng hàm tối ưu hóa Optim ()
trong Phụ lục A, chúng tôi cũng đưa ra một mã ví dụ với hàm tối ưu () ở đây.
Giả sử rằng chúng ta không biết Ht và Gt trong hệ thống trên, và cố gắng
ước lượng các tham số này từ dữ liệu quan sát được.

> # tham số> dt_


<- ma trận (0,1)
> Tt_ <- ma trận (0,5)>
ct_ <- ma trận (0)
> Zt_ <- ma trận (1)>
a0_ <- c (0)
> P0_ <- ma trận (0,001)
>

> # tạo mẫu dữ liệu> n_ <-


100 # số mẫu (quan sát)
>

> eta <-rnorm (n_, 0,1)>


eps <-rnorm (n_, 0,1)
>

> a <- rep (0, n_)>


y <- rep (0, n_)> a
[1] <- dt_ [1,1] + 0,4 * eta [1]> y
[1] <- a [1 ] + 0,6 * eps [1]> for (i
in 2: n _) {+ a [i] <- dt_ [1,1] +
Tt_ [1,1] * a [i-1] + 0,4 * eta [ i] # set H_ = 0.4 + y [i] <- a [i] + 0.6 *
eps [i] # set G_ = 0.6 +}> yt_ <- rbind (y) # quan sát

>

> # use logLik để tính khả năng xảy ra nhật ký> # use
-fkf () để tìm khả năng xảy ra nhật ký tối đa kể từ khi tìm thấy tối ưu ()
> # tối thiểu.

> maxlog <- function (a0, P0, dt, ct, Tt, Zt, para, yt) {+
-fkf (a0, P0, dt, ct, Tt, Zt, HHt = matrix (para [1]),
+ GGt = ma trận (para [2]),
Machine Translated by Google

Giảm tiếng ồn qua Bộ lọc Kalman 227

+ yt) $ logLik +}
> # sử dụng tối
ưu để tìm khả năng xảy ra nhật ký tối đa (xem thêm Phụ lục A)> # chúng tôi đặt
các giá trị ban đầu HHt = 0,16, GGt = 0,36 vì chúng tôi> # biết câu trả lời>
parafit <- tối ưu (c (HHt = 0,16, GGt = 0,36), maxlog, a0 = a0_, P0 = P0_, +

dt = dt_, ct = ct_, Tt = Tt_, Zt = Zt_, yt = yt_)> parafit $ par HHt

GGt
0,1683014 0,3208311

B.2 Bộ lọc Kalman phi tuyến

Các hệ không nhất thiết phải có dạng tuyến tính như (B.3) và (B.4). Hãy xem xét
một hệ thống ở dạng tổng quát hơn;

at + 1 = f (at , ηt), (B.5)

yt = g (at , εt). (B.6)

Nếu các hàm f, g là tuyến tính, chúng ta có thể áp dụng bộ lọc Kalman một cách đơn giản.
Tuy nhiên, khi các hàm có dạng phi tuyến tính, làm thế nào để chúng ta ước
tính tín hiệu bằng bộ lọc Kalman? Ba phương pháp sau được sử dụng: thứ nhất,
bộ lọc Kalman mở rộng (EKF). Thứ hai là bộ lọc Kalman không mùi (UKF).
Thứ ba là bộ lọc hạt.
EKF là phương pháp sử dụng xấp xỉ Taylor bậc nhất cho f, g. Bộ lọc Kalman
không có mùi cũng là xấp xỉ nhưng xấp xỉ được áp dụng cho phân bố có điều
kiện của tín hiệu, vì lý thuyết lọc bao gồm bộ lọc Kalman về cơ bản là ước
lượng phân bố có điều kiện của tín hiệu trên các quan sát. Bộ lọc hạt là ứng
dụng của mô phỏng Monte Carlo để lọc.

Trong cuốn sách này, chúng tôi tập trung vào EKF. Vì EKF điều chỉnh mở rộng
chuỗi Taylor để tuyến tính hóa một mô hình, nên cần có khả năng phân biệt liên tục
bậc nhất của f và g. Trong EKF, các thông số mô hình được đánh giá với trạng thái dự
đoán hiện tại ở mỗi bước thời gian. Quá trình này về cơ bản là tuyến tính hóa hàm
phi tuyến tính theo khai triển Taylor bậc một xung quanh ước tính hiện tại, tức là,
ˆat và ηt = εt = 0.
Do đó, chúng tôi tính toán ma trận Jacobian sau:

f f
T˜ (aˆt
g (aˆt
, 0),
, 0),
H˜ G˜
t : = a t : = η (aˆt
f (aˆt
, 0),
,
0). ε

Z˜ t : = t : =
a
Machine Translated by Google

228 Lập trình R và các ứng dụng của nó trong Toán tài chính

Do đó, các hàm f, g được tính gần đúng như

f (at , ηt) ≈ d˜t + T˜ tat + H tηt ,

g (at , εt) ≈ c˜t + Z˜ tat + G˜ tεt ,

trong đó d˜ t : = f (aˆt , 0) T˜ taˆt và ˜ct : = g (aˆt , 0) Z˜ taˆt . Khi đó, hệ thức (B.5)

và (B.6) có thể được viết ở dạng tuyến tính

at + 1 ≈ d˜ t+ T˜ tat + H˜ tηt ,

yt ≈ c˜t + Z˜ tat + G˜ tεt .

Và sau đó, chúng ta có thể áp dụng bộ lọc Kalman cho mô hình trên.

Ứng dụng của EKF Chúng

ta hãy áp dụng EKF cho mô hình chuỗi thời gian phi tuyến tính sau đây.

at + 1 = 0,1 + 0,5at +0,5 cos (at / 5) + 0,4ηt ,


2
yt = at + 0,1a t
+ 0,6εt .

Và sau đó, ma trận Jacobian được tính như

T˜t = 0,5 0,1 sin (aˆt / 5), Hˆ t = 0,4,


Z˜ Gˆ = 1 + 0,2 ˆat
, = 0,6.
t t

Ta cũng có thể định nghĩa d˜ = 0,1 + 0,5 ˆat +0,5 cos (aˆt / 5) - (0,5 0,1 sin (aˆt / 5)) aˆt và -
t
2
c˜t = aˆt +0,1 ˆat (1 + 0,2 ˆat) aˆt .

Chúng tôi sẽ áp dụng bộ lọc Kalman mở rộng cho mô hình trên. Ý tưởng cơ bản là đơn giản,

bởi vì một khi các phép gần đúng như T˜, Z˜ được suy ra ở mỗi bước, các quy trình khác giống

như bộ lọc Kalman thông thường; tức là, chúng tôi chỉ sử dụng FKF.

> library (FKF)> #


function f> f <-

function (state_, eta _) {+ 0.1 + 0.5 *


state_ + 0.5 * cos (state_ / 5) + 0.4 * eta_ +}

>

> # Jacobian của f

> T <- hàm (trạng thái _) {+ 0,5 -

0,1 * sin (trạng thái_ / 5) +}

>

> H <- hàm (trạng thái _) {


+ 0,4
+}
Machine Translated by Google

Giảm tiếng ồn qua Bộ lọc Kalman 229

>
> func_d <- function (state _) {+
f (state_, 0) - matrix (T (state _) * state_) +}

>

> # function g>


g <- function (state_, eps _) {+
state_ + 0.1 * state_ ^ 2 + 0.6 * eps_ +}

>

> # Jacobian của g>


Z <- function (state _) {+ 1
+ 0.2 * state_ +}

>
> G <- hàm (trạng thái _) {+
0.6 +}

>
> func_c <- function (state _) {+
g (state_, 0) - matrix (Z (state _) * state_) +}

>

> # tạo mẫu dữ liệu> n_


<- 100 # số mẫu> eta <- rnorm (n_,
0,1) # n_ số ngẫu nhiên> eps <- rnorm (n_, 0,1) #
n_ số ngẫu nhiên
>
> # giá trị ban đầu

> a0 <- c (0) # một vectơ cho giá trị ban đầu> # của tín
hiệu> P0_ <- ma trận (0,001) # một ma trận cho phương sai
của a0
>
>

> # tín hiệu và quan sát> trạng


thái <- rep (0, n_)> obs.obj <-
rep (0, n_)
>
> state [1] <- f (a0, eta [1])>
obs.obj [1] <- g (state [1], eps [1])
>
> for (i in 2: n_)
+ {
Machine Translated by Google

Lập trình 230 R và các ứng dụng của nó trong Toán tài chính

+ state [i] <- f (state [i-1], eta [i-1])


+ obs.obj [i] <- g (state [i], eps [i]) +}

>
> at_ <- rep (0, n_) # ước tính tiên nghiệm>
att_ <- rep (0, n_) # ước tính hậu kỳ
>
> at_ [1] <- state
[1]> att_ [1] <- state [1]
>
> # đối tượng của bộ lọc Kalman> for (i
in 2: n_) + {

+ # quan sát

+ yt_ <- ma trận (obs.obj [i]) +


tmp.kalman.obj <- fkf (a0 = at_
+ [i-1], P0 = P0_, dt = ma
+ trận (func_d (at_ [i-1])) ,
+ ct = ma trận (func_c (at_ [i-1])),
+ Tt = ma trận (T (at_ [i-1])), Zt =
+ ma trận (Z (at_ [i-1])), HHt = H
+ ( at_ [i-1])% *% H (at_ [i-1]), GGt
+ = G (at_ [i-1])% *% G (at_ [i-1]), yt
+ = yt_)
+
+
+ # cập nhật của at_, P0_ +
at_ [i] <- tmp.kalman.obj $ tại [1,2]
+ P0_ <- ma trận (tmp.kalman.obj $ Pt [1,1,2]) +
att_ [i] <- tmp.kalman.obj $ att [1,1] +}

>
>
> plot (obs.obj, ylab = "values", type =
"l")> lines (ts (g (att_, 0), start = start
(obs.obj), + frequency = frequency (obs.obj)) ,
lty = 2)> chú thích ("topright", c ("quan sát", "ước tính"),
+ lty = c (1,2), bty = "n")

Hình B.2 vẽ biểu đồ kết quả đại diện cho các tín hiệu đã lọc của mô hình phi tuyến tính.
Tuy nhiên, lưu ý rằng EKF chỉ là xấp xỉ bậc nhất.
Machine Translated by Google

Giảm tiếng ồn qua Bộ lọc Kalman 231

4
quan sát
ước tính
3

2
trị
giá

0 20 40 60 80 100

Mục lục

Hình B.2: Bộ lọc Kalman mở rộng

Chúng tôi đã giới thiệu sơ lược về bộ lọc Kalman trong phần này. Fil tering là

một phương pháp để loại bỏ nhiễu từ các quan sát. Trong khi có rất nhiều
phương pháp lọc, bộ lọc Kalman không chỉ là một bộ lọc mà còn là một công cụ dự đoán và
cũng có thể áp dụng để tìm các thông số mô hình. Hơn nữa, bộ lọc Kalman cũng có thể
được sử dụng cho thống kê phi tham số [CKL97].
Machine Translated by Google
Machine Translated by Google

Phụ lục C

Các tài liệu tham khảo khác về


R

NỘI DUNG

C.1 Nguồn thông tin về R .......................................... 233 Gói


C.2 R về tài chính ........................................... ... 234

C.1 Nguồn thông tin trên R

Trong phần phụ lục cuối cùng, chúng tôi đề cập đến các tài liệu tham khảo về R. Đặc biệt

trong các tài liệu hàng đầu về tài chính, nguồn tài nguyên lớn nhất cho R có thể là danh

sách nhập thư R-sig-Finance (https://stat.ethz.ch/pipermail/r-sig -tài chính/). Cách dễ dàng

nhất để tìm thấy những gì chúng tôi đang tìm kiếm là tìm kiếm trên google theo các cụm từ

được nhắm mục tiêu + R-sig-Finance. Tuy nhiên, điều này có thể cung cấp cho chúng tôi quá

nhiều kết quả tìm kiếm để tìm thông tin cụ thể. Trong trường hợp như vậy, chúng tôi thường

sử dụng Rseek (http://www.rseek.org/) nơi chúng ta có thể dễ dàng tìm thấy những thông tin liên quan đến R.

Nếu người đọc muốn thông tin có tổ chức hơn, họ nên tham khảo Chế độ xem tác vụ CRAN

(http://cran.r-project.org/web/views/), nơi chúng tôi có thể tìm thấy thông tin bắt buộc trong

các danh mục, như “Tài chính”, “Chuỗi thời gian” hoặc “Tối ưu hóa”, v.v.

Xa hơn, chúng ta có thể tham gia một hội nghị nổi tiếng về R; Tài chính ứng dụng với R,

nơi chúng ta có thể xem các nghiên cứu mới nhất về lập trình R. Chúng ta cũng có thể tham gia

một hội thảo và trường học hè được tổ chức bởi một dự án có tên là Rmetrics, nơi phát hành

sách giáo khoa (https://www.rmetrics.org/ebooks) và phân phối các gói liên quan đến tài chính.

233
Machine Translated by Google

234 Lập trình R và các ứng dụng của nó trong Toán tài chính

Để nhận tin tức về R, bạn có thể xem R-Bloggers (http://www.r-bloggers.com/). Nguồn


này là một blog, và có rất nhiều thông tin, nhưng nó bao gồm rất nhiều thông tin hữu
ích và chúng tôi tham khảo nó. Các nguồn thông tin hữu ích khác là trang web Revolu

tions (http: /blog.revolutionanalytics.com/) và Microsoft R Application Net work


(https: /mran.microsoft.com/).

C.2 Gói R về tài chính Trong cuốn sách

này, chúng tôi chỉ sử dụng các gói R cơ bản để giới thiệu lý thuyết tài chính.
Tuy nhiên, có nhiều gói R tập trung vào lý thuyết tài chính. Một số ví dụ điển hình
là RquantLib và quantmod.
Chúng tôi cũng đã thảo luận về ước tính các tham số mô hình bằng cách sử dụng kỹ

thuật tối ưu hóa op. Tuy nhiên, việc ước lượng có thể gặp khó khăn trong các mô hình mở rộng.

Đối với các mô hình phức tạp hơn, gói yuima cung cấp cho chúng tôi các giải pháp tốt.
Tuy nhiên, lưu ý rằng gói nâng cao này có thể không tương thích với các phiên bản R
cũ hơn.

Nếu bạn là một người học tập trung vào những điều lý thuyết thuần túy, bạn có thể
thờ ơ với lịch nghỉ lễ của nhiều quốc gia cụ thể. Tuy nhiên, điều quan trọng đối với
các học viên khi làm việc với dữ liệu tài chính, đặc biệt là nếu giao dịch với các tài
sản khác nhau được giao dịch trên các thị trường khu vực khác nhau. Gói dữ liệu thời
gian cung cấp cho chúng ta các hàm trong R để trích xuất thông tin vào các ngày lễ.
Ví dụ: chúng ta có thể lấy thông tin về các ngày lễ của thị trường chứng khoán New
York bằng hàm holidayNYSE () trong gói này.
Nếu bạn có quyền truy cập vào máy trạm Bloomberg, bạn có thể sử dụng RBloomberg,
một gói được thiết kế để sử dụng dữ liệu từ Bloomberg trên R. Lưu ý rằng chúng tôi cần
cài đặt gói RDCOMClient hoặc rcom trên máy trạm Bloomberg của bạn để nó hoạt động.
Machine Translated by Google

Người giới thiệu

[ABR97] L. Andersen và R. Brotherton-Ratcliffe. Quyền chọn vốn chủ sở hữu


nụ cười biến động: Một cách tiếp cận khác biệt hữu hạn tiềm ẩn. Tạp chí
của Tài chính Tính toán, 1: 5–37, 1997.

[Aka74] H. Akaike. Một cái nhìn mới về việc xác định mô hình thống kê. IEEE

Giao dịch trên điều khiển tự động, 19: 716–723, 1974.

[AL10] M. Avellaneda và J. Lee. Kinh doanh chênh lệch giá theo thống kê trên thị trường chứng khoán Hoa Kỳ

thị trường. Tài chính Định lượng, 10: 761–782, 2010.

[And98] J. Andreasen. Định giá của các tùy chọn châu Á được lấy mẫu riêng và xem
´
lại: Một sự thay đổi của phương pháp tiếp cận bằng số. Tạp chí Com
putational Finance, 2: 5–30, 1998.

[Arr64] K. Mũi tên. Vai trò của chứng khoán trong việc phân bổ rủi ro tối ưu
Ổ đỡ trục. Tạp chí Nghiên cứu Tài chính, 31: 91–96, 1964.

´
[Bac00] L. Bachelier. Theorie de la suy đoán. Annales scientifiques de
l'Ecole Normale Superieure ´, 3: 21–86, 1900.

[Bar95] J. Barraquand. Định giá số của chứng khoán châu Âu đa dạng nhiều chiều
cao. Khoa học Quản lý, 41: 1882–1891,
Năm 1995.

[BBC94] L. Bouaziz, E. Briys và M. Crouhy. Định giá của các quyền chọn châu Á
khởi điểm kỳ hạn. Tạp chí Tài chính & Ngân hàng, 18: 823–
839, 1994.

[BBG97] P. Boyle, M. Broadie và P. Glasserman. Phương pháp Monte Carlo


để định giá an ninh. Tạp chí Kinh tế Động lực và Kiểm soát,
21: 1267–1321, 1997.

235
Machine Translated by Google

236 Người giới thiệu

[BC09] A. Bain và D. Crisan. Các nguyên tắc cơ bản của Lọc Stochastic.
Springer, New York, 2009.

[BEG89] P. Boyle, J. Evnine và S. Gibbs. Đánh giá số lượng các tuyên bố ngẫu
nhiên đa biến. Đánh giá về Nghiên cứu Tài chính, 2: 241–
250 năm 1989.

[BF06] D. Brigo và F. Mercurio. Mô hình lãi suất - Lý thuyết và


Thực hành: Với Nụ cười, Lạm phát và Tín dụng (tái bản lần thứ 2). Springer,
Berlin, 2006.

[Bil86] P. Billingsley. Xác suất và Phép đo (xuất bản lần thứ 2). John Wiley
& Sons, Inc., New York, 1986.

[BJRL15] GEP Box, G. Jenkins, GC Reinsel và GM Ljung. Phân tích Time Se ries:
Dự báo và Kiểm soát (xuất bản lần thứ 5). John Wiley
& Sons, Inc., Hoboken, New Jersey, 2015.

[Bla72] F. Màu đen. Thị trường vốn cân bằng với việc đi vay bị hạn chế.
Tạp chí Kinh doanh, 45: 444–454, 1972.

[BO10] M. Bouzoubaa và A. Osseiran. Tùy chọn ngoại lai và giống lai: A


Hướng dẫn Cấu trúc, Định giá và Giao dịch. John Wiley và các con trai,
Inc., New Delhi, 2010.

[Bol86] T. Bollerslev. Tính thay đổi lớn có điều kiện tự động hồi quy
tổng quát. Tạp chí Kinh tế lượng, 31: 307–327, 1986.

[Boy77] P. Boyle. Các lựa chọn: cách tiếp cận Monte-Carlo. Tạp chí tài chính
Kinh tế học, 4: 323–338, 1977.

[Boy90] P. Boyle. Định giá chứng khoán phái sinh liên quan đến nhiều chứng khoán

dưới dạng tập hợp sử dụng phương pháp thời gian rời rạc. Bảo hiểm: Toán học và
Kinh tế học, 9: 131–139, 1990.

[Bre79] D. Nhân giống. Mô hình định giá tài sản liên thời kỳ với ngẫu nhiên
cơ hội tiêu dùng và đầu tư. Tạp chí tài chính
Kinh tế học, 7: 265–296, 1979.

[BS73] F. Black và M. Scholes. Định giá của các quyền chọn và công ty
nợ phải trả. Tạp chí Kinh tế Chính trị, 81: 637–659, 1973.

[BS78] MJ Brennan và ES Schwartz. Phương pháp sai phân hữu hạn và

các quá trình nhảy vọt phát sinh trong việc định giá các khiếu nại tiềm

tàng: Một luận điểm tổng hợp. Tạp chí Phân tích Định lượng và Tài chính, 13: 461–
474 năm 1978.

[Car97] M. Carhart. Về sự bền bỉ trong hoạt động của quỹ tương hỗ. Các
Tạp chí Tài chính, 52: 57–82, 1997.
Machine Translated by Google

Người giới thiệu 237

[CC90] A. Carverhill và L. Clewlow. Tùy chọn tỷ lệ trung bình. Rủi ro, 3: 25–
Ngày 29 năm 1990.

¨
[CFvN50] JG Charney, R. Fjortoft và J. von Neumann. Tương tác số của phương trình xoáy
barotropic. Tellus, 2: 237–254,
Năm 1950.

´
[CK05] M. Capinski và E. Kopp. Đo lường, Tích phân và Xác suất (thứ 2
phiên bản). Springer, London, 2005.

[CKL97] CS Chow, RZ Khasminskii và RS Liptser. Theo dõi một


tín hiệu và các dẫn xuất của nó trong tiếng ồn trắng Gaussian. Stochastic

Pro ngừng và các ứng dụng của chúng, 69: 259–273, 1997.

[CLM97] JY Campbell, AW Lo và AC MacKinlay. Kinh tế lượng


của Thị trường tài chính. Nhà xuất bản Đại học Princeton, Princeton, New
Jersey, 1997.

[CN50] J. Crank và P. Nicolson. Một phương pháp thực tế để đánh giá số lượng
các nghiệm của phương trình vi phân riêng của loại dẫn nhiệt. Kỷ yếu
Toán học của Cambridge
Hiệp hội Triết học, 43: 50–67, 1950.

[Cou82] G. Courtadon. Xấp xỉ hiệu số hữu hạn chính xác hơn


để xác định giá trị của các quyền chọn. Tạp chí Tài chính và Định lượng
Phân tích, 17: 697–703, 1982.

[CRR79] J. Cox, S. Ross và M. Rubinstein. Định giá tùy chọn: Đơn giản hóa
cách tiếp cận. Tạp chí Kinh tế Tài chính, 7: 229–263, 1979.

[CRR86] N. Chen, R. Roll và S. Ross. Lực lượng kinh tế và chứng khoán


thị trường. Tạp chí Kinh doanh, 59: 383–403, 1986.

[CS87] J. Campbell và R. Shiller. Đồng liên kết và kiểm tra hiện tại
các mô hình giá trị. Tạp chí Kinh tế Chính trị, 95: 1062–1087, 1987.

[CS97] L. Clewlow và C. Strickland. Tùy chọn kỳ lạ: Tình trạng của


Mỹ thuật. Thomson Business Press, London, 1997.

[CV91] A. Conze và R. Viswanathan. Op tions phụ thuộc vào đường đi Châu Âu:
Trường hợp trung bình hình học. Tạp chí Tài chính,
46: 1893–1907, 1991.

[Nợ 59] G. Debreu. Thuyết Giá trị. John Wiley & Sons, Inc., New York,
Năm 1959.

[DF79] DA Dickey và WA Fuller. Phân phối các công cụ ước tính cho
chuỗi thời gian tự động hồi phục với một đơn vị gốc. Tạp chí của Hiệp
hội Thống kê Ameri can, 74: 427–431, 1979.
Machine Translated by Google

238 Người giới thiệu

[DG95] D. Duffie và P. Glynn. Mô phỏng monte carlo hiệu quả của giá secu
rity. Biên niên sử về Xác suất Ứng dụng, 5: 897–905, 1995.

[ĐH96] D. Duffie và M. Huang. Tỷ giá hoán đổi và chất lượng tín dụng. Tạp chí
của Tài chính, 51: 921–949, 1996.

[DK94] E. Derman và I. Kani. Cưỡi trên một nụ cười. Rủi ro, 7: 32–39, 1994.

[DK98] E. Derman và I. Kani. Cây ngụ ý Stochastic: Định giá kinh doanh chênh lệch giá

với thuật ngữ ngẫu nhiên và cấu trúc tấn công của sự biến động. Quốc tế
Tạp chí Tài chính Lý thuyết và Ứng dụng, 1: 61–110, 1998.

[DKC96] E. Derman, I. Kani và N. Chriss. Cây tam thức ngụ ý của


nụ cười biến động. Tạp chí Phái sinh, 3: 7–22, 1996.

[Doo42] J. Doob. Các quy trình ngẫu nhiên. John Wiley & Sons, Inc., Mới
York, 1942.

[Dor60] WS Dorn. Đối ngẫu trong lập trình bậc hai. Tạp chí hàng quý
của Toán học Ứng dụng, 18: 155–162, 1960.

[Dor61] WS Dorn. Phép vị tự bậc hai. Tạp chí Xã hội cho


Toán Công nghiệp và Ứng dụng, 9: 51–54, 1961.

[DT85] W. DeBondt và R. Thaler. Thị trường chứng khoán có phản ứng quá mức không?

Tạp chí Tài chính, 40: 793–805, 1985.

[Bản sao94] B. Trùng lặp. Định giá bằng một nụ cười. Rủi ro, 7: 18–20, 1994.

[Dur05] Tháp pháo. Xác suất: Lý thuyết và Ví dụ (xuất bản lần thứ 3).
Nhà xuất bản Duxbury, Belmont, Canada, 2005.

[EG87] RF Engle và C. Granger. Tích hợp và sửa lỗi:


Đại diện, ước tính và thử nghiệm. Kinh tế lượng, 55: 251–
276 năm 1987.

[Ein05] A. Anhxtanh. Về chuyển động của các hạt nhỏ lơ lửng trong
một chất lỏng tĩnh theo yêu cầu của lý thuyết động học phân tử của
nhiệt. Annalen der Physik, 17: 549–560, 1905.
¨
[ELT11] E. Ekstrom, C. Lindberg và J. Tysk. Thanh lý tối ưu của một giao dịch
theo cặp. Trong GD Nunno và B. Øksendal, biên tập viên, Nâng cao
Phương pháp Toán học Tài chính, trang 247–255. Springer,
Berlin, 2011.

[Eng82] Công nghệ RF. Phương sai thay đổi có điều kiện tự hồi quy với các thời
điểm của phương sai của lạm phát ở Anh. Kinh tế lượng, 50: 987–
1008, năm 1982.
Machine Translated by Google

Người giới thiệu 239

[EVDHM05] RJ Elliott, JM Van Der Hoek và WP Malcolm. Giao dịch theo cặp.
Tài chính Định lượng, 5: 271–276, 2005.

[Fam65] E. Fama. Hành vi của giá thị trường chứng khoán. Tạp chí Busi ness, 38:
34–105, 1965.

[Fam91] E. Fama. Thị trường vốn hiệu quả: II. Tạp chí Tài chính,
46: 1575–1618, 1991.

[FF93] E. Fama và K. French. Các yếu tố rủi ro phổ biến trong lợi nhuận

trên cổ phiếu và trái phiếu. Tạp chí Kinh tế Tài chính, 33: 3–56,
Năm 1993.

[FF14] E. Fama và K. French. Mô hình định giá tài sản năm yếu tố. Tạp chí

của Kinh tế Tài chính, 116: 1–22, 2014.

[Fis96] G. Người cá. Monte Carlo: Khái niệm, Thuật toán và Ứng dụng. Springer,

New York, 1996.

[T600] M. Frittelli. Phép đo martingale entropy tối thiểu và

vấn đề định giá trên các thị trường chưa hoàn thiện. Tài chính toán học,
10: 39–52, 2000.

[T607] C. Khoai tây chiên. Tài chính Toán học: Lý thuyết, Mô hình hóa và Triển

khai. John Wiley & Sons, Inc., Hoboken, New Jersey, 2007.

[FW56] M. Frank và P. Wolfe. Một thuật toán cho lập trình bậc hai.

Hậu cần Nghiên cứu Hải quân, 3: 95–110, 1956.

[FY05] J. Fan và Q. Yao. Chuỗi thời gian phi tuyến. Springer, New York,
Năm 2005.

[Gat06] J. Gatheral. Bề mặt biến động. John Wiley & Sons, Inc.,

Hoboken, New Jersey, 2006.

[GL91] C. Gilles và S. LeRoy. Về lý thuyết định giá chênh lệch giá. Thuộc kinh tế

Lý thuyết, 1: 213–230, 1991.

[Gla04] P. Glasserman. Phương pháp Monte Carlo trong Kỹ thuật Tài chính.

Springer, New York, 2004.

[GRS99] S. Gurmu, P. Rilstone và S. Stern. Ước tính bán tham số của

đếm các mô hình hồi quy. Tạp chí Kinh tế lượng, 88: 123–150,
Năm 1999.

[GY93] H. Geman và M. Yor. Quy trình tàu, các lựa chọn Châu Á và theo từng vật

nuôi. Tài chính Toán học, 3: 349–375, 1993.


Machine Translated by Google

240 Người giới thiệu

[Hes93] S. Heston. Một giải pháp dạng đóng cho các tùy chọn với ngẫu nhiên
biến động, với ứng dụng cho các tùy chọn trái phiếu và tiền tệ. Xét lại
của Nghiên cứu Tài chính, 6: 327–343, 1993.

[HH64] J. Hammersley và D. Handscomb. Phương pháp Monte Carlo. Chap man và


Hall, London, 1964.

[HH80] P. Hall và CC Heyde. Lý thuyết giới hạn Martingale và cation Appli của
nó. Báo chí Học thuật, New York, 1980.

[HK79] JM Harrison và D. Kreps. Martingales và chênh lệch giá trên thị trường
chứng khoán nhiều kỳ hạn. Tạp chí Lý thuyết Kinh tế, 20: 381–
408 năm 1979.

[HKLW02] P. Hagan, D. Kumar, A. Lesniewski và D. Woodward. Quản lý


nụ cười rủi ro. Tạp chí Wilmott, (tháng 9): 84–108, 2002.

[HP81] JM Harrison và SR Pliska. Martingales và mô hình liên tục ngẫu nhiên


trong lý thuyết giao dịch liên tục. Các quy trình ngẫu nhiên
và Ứng dụng của họ, 11: 215–260, 1981.

[Hul12] J. Hull. Quyền chọn, Hợp đồng tương lai và các Công cụ phái sinh khác (ấn bản thứ 8).

Pearson, Harlow, Vương quốc Anh, 2012.

[HW88] J. Hull và A. White. Việc sử dụng kỹ thuật biến thể kiểm soát trong
định giá tùy chọn. Tạp chí Phân tích Định lượng và Tài chính,
23: 237–252, năm 1988.

[HW90] J. Hull và A. White. Định giá chứng khoán phái sinh theo phương pháp
chênh lệch hữu hạn ex plicit. Tạp chí Phân tích Định lượng và Tài
chính, 25: 87–100, 1990.

[HW93] J. Hull và A. White. Mô hình lãi suất một yếu tố và định giá của chứng

khoán phái sinh lãi suất. Tạp chí tài chính


và Phân tích Định lượng, 28: 235–254, 1993.

ˆ ˆ
[Ito44 ] K. Ito. Tích phân ngẫu nhiên. Kỷ yếu của Học viện Hoàng gia,
20: 519–524, năm 1944.

ˆ
[Ito51 ˆ] K. Ito. Về phương trình vi phân ngẫu nhiên. Hồi ký của Hội Toán học
Amer ican, 4: 1–51, 1951.

[JB78] CM Jarque và AK Bera. Kiểm tra tính bình thường của các quan sát
và phần dư hồi quy. Đánh giá thống kê quốc tế, 55: 163–
172 năm 1978.

[Joh88] S. Johansen. Phân tích thống kê các vectơ đồng liên kết. Tạp chí
của Kinh tế Động lực và Kiểm soát, 12: 231–254, 1988.
Machine Translated by Google

Người giới thiệu 241

[Joh91] S. Johansen. Ước tính và kiểm tra giả thuyết về đồng liên kết

vectơ trong mô hình VAR gaussian. Kinh tế lượng, 59: 1551–1580,


Năm 1991.

[JP04] J. Jacod và P. Protter. Cơ bản về Xác suất. Springer, Berlin

Heidelberg, 2004.

[JT95] N. Jagadeesh và S. Titman. Phản ứng thái quá, phản ứng chậm và

lợi nhuận đối lập. Tạp chí Nghiên cứu Tài chính, 8: 973–993, 1995.

[JW00] J. James và N. Webber. Mô hình lãi suất: Tài chính En gineering. John

Wiley & Sons, Inc., Chichester, Vương quốc Anh, 2000.

[JW07] R. Johnson và D. Wichern. Hệ thống thống kê đa biến áp dụng ysis (xuất

bản lần thứ 5). Pearson, Upper Saddle River, New Jersey, 2007.

[Kal80] G. Kallianpur. Lý thuyết lọc ngẫu nhiên. Springer, New York,


Năm 1980.

[KB61] RE Kalman và RS Bucy. Kết quả mới trong lọc tuyến tính và

lý thuyết dự đoán. Giao dịch của ASME, Series D., Tạp chí

Kỹ thuật Cơ bản, 83: 95–108, 1961.

[KS98] I. Karatzas và SE Shreve. Phương pháp Tài chính Toán học.

Springer, New York, 1998.

[KV90] AGZ Kemna và CF Vorst. Một phương pháp định giá cho các tùy chọn dựa trên

về giá trị tài sản trung bình. Tạp chí Ngân hàng & Tài chính, 14: 113–
129 năm 1990.

[KW86] M. Kalos và P. Whitlock. Phương pháp Monte Carlo, Tập I: Ba sics. John

Wiley & Sons, Inc., New York, 1986.

[LB78] GM Ljung và GEP Box. Trên một thước đo của sự thiếu phù hợp trong thời gian
mô hình loạt. Biometrika, 65: 297–303, 1978.

[Leh97] J. Lehoczky. Các phương pháp mô phỏng để định giá quyền chọn. Trong M.

Demp ster và S. Pliska, biên tập viên, Toán học Chứng khoán Phái sinh,

trang 133–149. Nhà xuất bản Đại học Cambridge, Cambridge, Vương quốc Anh,
Năm 1997.

[Lin65a] J. Lintner. Giá bảo mật, rủi ro và lợi nhuận tối đa từ phân tích. Tạp chí

Tài chính, 20: 587–615, 1965.

[Lin65b] J. Lintner. Định giá tài sản rủi ro và lựa chọn rủi ro

đầu tư vào danh mục cổ phiếu và ngân sách vốn. Đánh giá về đề xuất và
thống kê sinh thái, 47: 13–37, 1965.
Machine Translated by Google

242 Người giới thiệu

[Lit92] R. Litzenberger. Hoán đổi: Đơn thuần và huyền ảo. Tạp chí Tài chính,
47: 831–850, năm 1992.

[LLW13] S. Larsson, C. Lindberg và M. Warfheimer. Đóng tối ưu


của một giao dịch cặp với một mô hình chứa các bước nhảy. Các ứng dụng của
Toán học, 58: 249–268, 2013.

[LS01a] RS Liptser và AN Shiryaev. Thống kê các quá trình ngẫu nhiên I


(Lý thuyết chung). Springer, Berlin, 2001.

[LS01b] RS Liptser và AN Shiryaev. Thống kê các quá trình ngẫu nhiên II


(Các ứng dụng). Springer, Berlin, 2001.

[Lue69] D. Luenberger. Tối ưu hóa bằng phương pháp không gian véc tơ. John
Wi ley & Sons, Inc., New York, 1969.

[LX08] TL Lai và H. Xing. Các mô hình và phương pháp thống kê cho thị
trường tài chính. Springer, New York, 2008.

[Man63] B. Mandelbrot. Sự biến đổi của giá đầu cơ nhất định. Jour nal of
Business, 36: 394–419, 1963.

[Tháng 352] HM Markowitz. Lựa chọn danh mục đầu tư. Tạp chí Tài chính, 7: 77–
91 năm 1952.

[Mer73a] R. Merton. Một mô hình định giá tài sản vốn xen kẽ. Econo metrica,
41: 867–887, 1973.

[Mer73b] R. Merton. Lý thuyết định giá quyền chọn hợp lý. Tạp chí Bell của
Kinh tế và Khoa học Quản lý, 4: 141–183, 1973.

[Mer77] R. Merton. Về việc định giá các tuyên bố ngẫu nhiên và


Định lý Modigliani-Miller. Tạp chí Kinh tế Tài chính,
5: 241–250, 1977.

[MN98] M. Matsumoto và T. Nishimura. Mersenne Twister: A 623-

số lượng giả đồng nhất được phân bố đều về kích thước


máy phát điện. Giao dịch ACM trên mô hình hóa và mô phỏng máy tính,
8: 3–30, 1998.

[Mos66] J. Mossin. Trạng thái cân bằng trên thị trường tài sản vốn. Kinh tế lượng,
34: 768–783, năm 1966.

[MPV12] DC Mongomery, EA Peck và GG Vining. Giới thiệu về


Phân tích hồi quy tuyến tính (xuất bản lần thứ 5). John Wiley và các con trai,

Inc., Hoboken, New Jersey, 2012.

[MR05] M. Musiela và M. Rutkowski. Phương pháp Martingale trong tài chính


Mô hình hóa (xuất bản lần thứ 2). Springer, New York, 2005.
Machine Translated by Google

Người giới thiệu 243

[Nel90] DB Nelson. Tính ổn định và bền bỉ trong GARCH (1,1)

mô hình. Lý thuyết kinh tế lượng, 6: 318–334, 1990.

[NP33] J. Neyman và ES Pearson. Về vấn đề hiệu quả nhất

kiểm định các giả thuyết thống kê. Các giao dịch triết học của

Hiệp hội Hoàng gia A, 231: 694–706, 1933.

[Phi87] P. Phillips. Hồi quy chuỗi thời gian với một đơn vị gốc. Kinh tế lượng,
55: 277–301, năm 1987.

[PO90] P. Phillips và S. Ouliaris. Tính chất tiệm cận của phần dư dựa trên

kiểm tra đồng liên kết. Kinh tế lượng, 58: 165–193, 1990.

[PP88] P. Phillips và P. Perron. Kiểm tra một đơn vị gốc trong chuỗi thời gian

hồi quy. Biometrika, 75: 335–346, 1988.

[PT95] S. Paskov và J. Traub. Định giá nhanh hơn các công cụ tài chính phái sinh.

Tạp chí Quản lý Danh mục đầu tư, 22: 113–120, 1995.

[PTVF92] W. Press, S. Teukolsky, W. Vetterling, và B. Flannery. Công thức nấu ăn Numeri cal

ở C. Cambridge University Press, Cambridge, Vương quốc Anh,


Năm 1992.

[RB79] J. Rendleman và B. Bartter. Định giá quyền chọn hai trạng thái. Tạp chí của
Tài chính, 34: 1093–1110, 1979.

[RM67] R. Richtmeyer và K. Morton. Phương pháp khác biệt cho các vấn đề về giá trị
ban đầu. Interscience, New York, 1967.

[Ros76] S. Ross. Lý thuyết chênh lệch giá về định giá tài sản vốn. Tạp chí

của Lý thuyết Kinh tế, 13: 341–360, 1976.

[RS95] C. Rogers và Z. Shi. Giá trị của một quyền chọn kiểu Châu Á. Tạp chí của

Xác suất Ứng dụng, 32: 1077–1088, 1995.

[Sha64] WF Sharpe. Giá tài sản vốn: Một lý thuyết về trạng thái cân bằng thị trường

trong điều kiện rủi ro. Tạp chí Tài chính, 19: 425–442,
Năm 1964.

[Shr04] S. Shreve. Tính toán Stochastic cho Tài chính II. Springer, Mới
York, 2004.

[Smi85] GD Smith. Giải pháp số của phương trình vi phân từng phần:

Phương pháp sai biệt hữu hạn (xuất bản lần thứ 3). Nhà xuất bản Clarendon, Oxford,

Vương quốc Anh, năm 1985.

[Tay86] SJ Taylor. Lập mô hình chuỗi thời gian tài chính. John Wiley và các con trai,
Inc., New York, 1986.
Machine Translated by Google

244 Người giới thiệu

[TR00] D. Tavella và C. Randall. Công cụ tài chính định giá:

Phương pháp sai phân hữu hạn. John Wiley & Sons, Inc., New York,
2000.

[TW91] SM Turnbull và LM Wakeman. Một thuật toán nhanh chóng để định giá

Tùy chọn trung bình của Châu Âu. Tạp chí Tài chính và Định lượng

Phân tích, 26: 377–389, 1991.

[Vec1] J. Vece˘ ˘r. Một cách tiếp cận PDE mới để định giá trung bình số học

Tùy chọn Châu Á. Tạp chí Tài chính Tính toán, 4: 105–113,
Năm 2001.

[Vec2] J. Vece˘ ˘r. Định giá thống nhất Châu Á. Rủi ro, 15: 113–116, 2002.

[Vor92] T. Vorst. Giá cả và tỷ lệ phòng hộ của các quyền chọn tỷ giá hối đoái trung bình.

Tạp chí Quốc tế về Phân tích Tài chính, 1: 179–193, 1992.

[VX04] J. Vece˘ ˘r và M. Xu. Định giá các tùy chọn Châu Á trong một bán kỳ
mô hình. Tài chính Định lượng, 4: 170–175, 2004.

[WDH93] P. Wilmott, JN Dewynne và S. Howison. Định giá tùy chọn:

Mô hình Toán học và Tính toán. Nhà xuất bản tài chính Oxford,
Oxford, Vương quốc Anh, 1993.

[Wie23] N. Wiener. Các khoảng sai biệt. Tạp chí Vật lý Toán học,
2: 131–174, năm 1923.

[Wil91] D. Williams. Xác suất với Martingales. đại học Cambridge

Báo chí, Cambridge, Vương quốc Anh, 1991.

[Wil97] G. Willard. Tính toán giá và độ nhạy cho chứng khoán phái sinh độc

lập đường dẫn trong mô hình đa nhân tố. Tạp chí

của Các dẫn xuất, 5: 45–61, 1997.

[Xio08] J. Xiong. Giới thiệu về Lý thuyết lọc Stochastic. Oxford

Nhà xuất bản Đại học, New York, 2008.

[Yos17] D. Yoshikawa. Một cách tiếp cận entropi để giao dịch theo cặp. Sự hỗn loạn,
19: 320, năm 2017.
Machine Translated by Google

Mục lục

! =, data.frame (), 20
7 dev.copy2eps (), 33
==, 7 Box.test dev.off () , 33 Diag
(), 83 FALSE, 11 ( ), 15 dim (), 16
FKF, 224, 228 F, dnorm (), 32 exp (),
11 RBloomberg, 30 f (), 47 fGarch, 99
234 RquantLib, 234 factor (), 21 function
TRUE, 8, 11 T, 11 (), 22, 23 gamma (),
#, 6 % *%, 12, 17 47 get.hist.quote (),
% /%, 6 %%, 6, 26 74, 75 getSymbols.yahooj
&&, 7 abline (), (), 74, 105 i, 10
56 adf.test (), 78 jarque.bera.test (),
ar (), 80, 86 83 library ( ), 37 list (),
arima (), 88 thuộc 17 lm (), 56 lnorm (), 47 log (),
tính (), 21 beta 7, 30, 59 matrix (), 14 ncol (),
(), 47 binorm ( ), 16 nleqslv, 220 nrow (), 16 Optim
47 c (), 11 ca.jo (), 213 , 215, 226 tối ưu hóa (),
(), 104 cbind (), 170, 171 bên ngoài (), 32 dán (),
15 chisq (), 47 10
select ( ), 48, 158
constrOptim (), 215,
216 cos (), 30

245
Machine Translated by Google

246 Mục lục

pdf (), 33 yuima, 234 ||,

góc nhìn (), 32 7

pi (), 7 lô (),
Tiêu chí thông tin Akaike, AIC, 86 giả thuyết
29, 32 po.test (),

104 độc (), 47 thay thế, 48, 50 phương pháp biến thể đối

nghịch, 180, 182 lý thuyết định giá chênh


portfolio.optim (),

220 dự đoán (), 57, 83, 96 , 132 lệch giá, APT, 121, 124

Princecomp (), 65 q (), 4 qt (), Bảo mật Arrow-Debreu, 141, 143–146, 148

51 quadprog, 216, 217 quantmod,

105, 234 rbind (), 15 read.csv (), Tùy chọn châu Á, mô

22, 34 read.table (), 34 rep ( ), hình tự phục hồi 193 , mô hình AR, mô hình

13 dư (), 57 rnorm (), 29, 44, 177 trung bình động 88 tự phục hồi,

Mô hình ARMA, 88 tự
scale (), 65 sd (), 43 sep, 11 seq

(), 12 sin (), 7, 30 Smooth.spline tương quan, mô hình tic dị ứng có

(), 132 giải .QP (), 216, 217 điều kiện tự phục hồi 83 , mô hình ARCH, 98, 99

source (), 35 str (), 13, 17, 65 mô hình độ tuổi di chuyển tích hợp

tự hồi quy, mô hình ARIMA, mô hình


stringAsFactors, 22 Summary (), 56–

58, 99 t (), 47, 65 t.test (), 51 88 tự hồi quy, mô hình AR, mô hình trung bình

timeData, 234 trunc (), 154 ts (), động 80 tự phục hồi,

80 tseries, 104, 220 unslass (),

67 uniroot (), 220 urca, 104 var

(), 43 windows (), 33 write.csv


Mô hình ARMA, 88 tùy
(), 34 write.table ( ), 33
chọn trung bình, 193, 194, 196

tùy chọn trung bình số học, tùy chọn

trung bình hình học 193, 193 , 195

tạ, 61, 70 tùy

chọn rổ, 188

Mô hình nhị thức


Beta, β, 112, 120

mô hình nhị thức nhiều chu kỳ, 149 mô

hình nhị thức một chu kỳ, 140

Công thức Black-Scholes, 165, 167, 168, 170,

172, 200

Phép toán sai phân từng phần Black-Scholes,

phương pháp 200 bootstrap, 134

Thử nghiệm Box-Ljung, 83, 95

Thử nghiệm Box-Pierce,

83 brett, 61

Chuyển động Brown, viên đạn

165 , 70
Machine Translated by Google

Mục lục 247

bướm, 61, 70 kiểm tra giả thuyết, 47

quyền chọn mua, 152, 167–169, 177 phương pháp ngầm định, 205, 207,

đường thị trường vốn, CML, 119, 120 210 biến động ngụ ý, 170, 172 quy
CAPM, 120, 121, 123 định trình tích hợp, 88 hoán đổi lãi
lý giới hạn trung tâm, 43–45 suất, 129, 131, 135

đồng liên kết, khoảng tin cậy Bổ đề Ito, ˆ 165 , 166

103 , tỷ lệ đóng góp 49, 51, 52, 57 ,

66, 72 phương pháp biến thể kiểm soát, Thử nghiệm Jarque-Bera, 83

Bài kiểm tra Johansen, 104


191 đóng góp tích lũy, 66, 72 hàm phân

phối tích lũy, 46, 168


Bộ lọc Kalman, bộ lọc Kalman mở

rộng 107, 222, 223 , bộ lọc Kalman


không mùi EKF, 227, 228 , UKF, 227
độ cong, 61

bậc tự do, 43, 50, 51 delta, 137


hệ số xác định, 58 hệ số xác định
luật số lớn, 43
đã điều chỉnh,
Kiểm tra Ljung-Box, 83,

58 95 tùy chọn nhìn lại, 186

Kiểm tra Dickey-Fuller,


danh mục thị trường, 112, 117, 119
78 tùy chọn kỹ thuật số,
trung bình, 42 trung bình dân số, 46
184 hệ số chiết khấu, 131, 132, 134, 135
trung bình mẫu, 42, 46 danh mục

phương sai trung bình, 113


biên giới hiệu quả, 116, 125, 127, 216

danh mục đầu tư hiệu quả, 119 biện pháp


Mersenne Twister, 179
martingale tương đương, 148 tùy chọn kỳ
biên phương sai tối thiểu, 116, 118, 119,
lạ, 184 phương pháp rõ ràng, 202
125, 127 lý thuyết danh mục đầu

tư hiện đại, phương pháp khớp 111 thời điểm,

Mô hình 3 yếu tố của Fama-French, 125 mô hình trung bình động 182 , mô hình MA,

đuôi béo, 98 tỷ giá cố định, 130, 131 88 mô hình đa nhân tố, 121 đa cộng tuyến, 56

làm phẳng, 69 tỷ giá thả nổi, 130, 131

tỷ giá thả nổi, 130 tỷ giá kỳ hạn, 132,

135 tỷ giá kỳ hạn, 60


không có chênh lệch giá, 122, 123, 125, 140,
143, 148, 152 phân phối chuẩn,

44, 46, 49–51, 69, 98

phân phối chuẩn chuẩn, 44,


gamma, 137
46
Hàm gamma, mô hình
hàm phân phối chuẩn, 168 chuẩn của dữ
phương sai thay đổi có điều kiện tự động hồi
quy tổng quát 50 , liệu, 83 số tiền gốc danh nghĩa, 130

Mẫu GARCH, 98, 99


Machine Translated by Google

248 Mục lục

giả thuyết vô hiệu, 48, 50–52, 78, 80, 83, phương pháp giảm phương sai, mô hình

95, 96, 104, 105 hồi quy tự động 179 vectơ, mô hình VAR, 91 độ
biến động, 113, độ lệch biến động
dự đoán đi trước một bước, 222 118 , nụ cười biến động 172 , 172

p-value, 49, 57, giao

dịch 101 cặp, 106 bộ

lọc hạt, 227


Quy trình Wiener, 165
Kiểm định Phillips-Ouliaris,

104 giá trị hiện tại, 59 đường cong lợi suất, 59, 130

thành phần chính, 59, 61, 64, 70, 72 hàm mật

độ xác suất, 46 quyền chọn mua, 168, 169 chẵn

lẻ lệnh gọi, 169

2 , 58
R-Squared, tùy

chọn R cầu vồng, 190

bản sao, 144, 148 dư,


57 biện pháp trung lập

rủi ro, 146–148, 162, 163, 176

shift,

61 mức ý nghĩa, 49, 51 độ

dốc, 61 tỷ lệ tại chỗ, 135

lỗi tiêu chuẩn, 42 lỗi tiêu


chuẩn không thiên vị, 43

điểm cố định, 77 steepener, 69

giá đình công, 153, 172 tỷ lệ hoán

đổi, 130

phân phối t, 49, 50

thống kê t, 50–52, 54, 57, 101 t-

test, 49 danh mục tiếp tuyến, 119

mô hình tam thức, 156

đơn vị gốc, 77

phương sai,

42 phương sai tổng thể, 45

phương sai mẫu, 42 phương


sai không chệch, 42, 43, 45, 46

You might also like