1. 寫作背景
金融數量分析是充滿變革與創新的世界,從20世紀50年代的馬科維茨投資組合模型,到70年代的B S期權定價公式,再到90年代的抵押貸款債券(SDO)和信用違約互換(SDS)定價模型等,這些模型在當時無不是創新的產物。在金融數量分析的學習與研究中,往往會遇到沒有現成求解工具的模型,需要我們利用基本的數學原理或者數值計算軟件,根據實際情況建立金融數量模型,對模型進行求解、驗證等。在這個過程中,不僅需要數學原理,而且可能需要更多的數值處理技巧。因為只有在數學原理與數值計算技術有效結合的前提下,才能更有效地求解金融數學模型。
無論是過去的長期資本管理公司(Long Term Capital Management),還是現在的文藝復興科技有限公司(Renaissance Institutional Equities Fund),都是數量技術力量的體現。雖然CDS、CDO 引發了金融危機,但金融數量分析以數學與計算機相結合為基礎不會改變。近幾年,國內金融機構已經將金融數量化作為重要的發展戰略,金融機構大量地招收懂數學和編程的復合型人才,而只懂金融理論的崗位需求越來越少。最近幾年金融數量分析在中國發展迅速,各種程序化交易策略正被應用在實盤交易中,像2015年的Alpha策略、2016年的多因子策略都大放異彩。
金融數量分析需要數值計算工具,而MATLAB強大的數值計算功能與豐富的工具箱為金融數量分析提供了有效武器。目前,MATLAB在世界各大金融機構得到了廣泛應用,使用MATLAB 的金融機構有世界貨幣基金組織、聯邦儲備委員會、摩根斯坦利、高盛等。MATLAB中大量現成的函數是金融數量分析研究的利器。
2. 編寫宗旨及特點
針對目前市場上有很多關于MATLAB的圖書,但其基本上都是按教科書的模式編寫的,且書中的案例也相對簡單這一現狀,作者編寫了本書。本書的主要特點: 選用的案例來源于作者的實際工作,案例的結構為背景 理論 案例分析 代碼。
背景: 案例產生的環境、背景概述有助于讀者加深對案例本質的理解。案例背景的相關數據都來源于現實的金融市場。
理論: 解決案例所涉及的理論知識與數值算法。MATLAB作為解決問題的工具畢竟不是全能的,只有了解了工具內在的理論與邏輯才能更有效地使用它。
案例分析: 使用數學原理(統計、優化、數值等)對案例進行分析,找出解決問題的技術路線,幫助讀者從解決問題的角度進行思考。
代碼: MATLAB程序是根據案例分析得到的算法或思路進行編寫的。程序中內含編程的技巧與方法,代碼中作者給出了詳細的注釋,其目的是幫助讀者理解并熟練使用代碼以解決實際問題。
3. 致 謝
本書是作者近些年使用MATLAB編程的匯總與提煉。本書得到了作者的領導、同事、朋友的幫助,同時還有熱心的讀者為本書提供了非常好的修改建議,借本書出版之際,向他們表示真誠的感謝。此外特別感謝天津科技大學的謝中華、劉寅立、張立東、孟祥波等老師們的熱情幫助。
同時感謝北京航空航天大學出版社長期一貫的支持與合作,以及各位編輯們的辛勤工作。
還要特別感謝我的家人,編寫此書占用了大量本應該陪同她們的時間,感謝家人對我工作與事業的支持!
4. 其 他
書中所有程序的源代碼可在北京航空航天大學出版社網站(http://www.buaapress.com.cn/mzs/welcome/index)下載專區免費下載。同時,北京航空航天大學出版社聯合MATLAB中文論壇(http://www.iLovematlab.cn/)為本書設立了在線交流版塊(https://ilovematlab.cn/forum-159-1.html),在閱讀本書的過程中有任何疑問,都可以在交流版塊向作者提問!
由于作者水平有限,書中不當之處,敬請讀者批評指正。本書網絡支持:www.ariszheng.com,作者郵箱:ariszheng@gmail.com,編輯郵箱:shpchen2004@163.com。
作 者
2017年11月于北京
第1章 金融市場與金融產品…………… 1
1.1 金融市場………………………… 1
1.1.1 貨幣市場…………………… 2
1.1.2 資本市場…………………… 2
1.1.3 商品市場…………………… 3
1.2 金融機構………………………… 3
1.2.1 存款性金融機構…………… 4
1.2.2 非存款性金融機構………… 4
1.2.3 家庭或個人………………… 5
1.3 基礎金融工具…………………… 6
1.3.1 原生金融工具……………… 6
1.3.2 衍生金融工具……………… 6
1.3.3 金融工具的基本特征……… 6
1.4 金融產品………………………… 7
1.5 金融產品風險…………………… 8
第2章 MATLAB基礎知識概述……… 10
2.1 MATLAB的發展歷程和影響…………………………………… 10
2.2 基本操作………………………… 11
2.2.1 操作界面…………………… 11
2.2.2 Help幫助文檔…………… 12
2.2.3 系統變量…………………… 13
2.3 多項式運算……………………… 17
2.3.1 多項式表達方式…………… 17
2.3.2 多項式求解………………… 17
2.3.3 多項式乘法(卷積)………… 18
2.4 多項式的曲線擬合……………… 18
2.4.1 函數擬合…………………… 18
2.4.2 曲線擬合工具CFTOOL……………………………… 20
2.4.3 多項式插值………………… 20
2.5 微積分計算……………………… 22
2.5.1 數值積分計算……………… 22
2.5.2 符號積分計算……………… 23
2.5.3 數值微分運算……………… 23
2.5.4 符號微分運算……………… 25
2.6 矩陣計算………………………… 26
2.6.1 線性方程組的求解………… 26
2.6.2 矩陣的特征值和特征向量……………………………… 26
2.6.3 矩陣求逆…………………… 27
2.7 M 函數編程規則……………… 27
2.8 繪圖函數………………………… 32
2.8.1 簡易函數繪圖……………… 32
2.8.2 二維圖形的繪制…………… 34
2.8.3 三維圖形的繪制…………… 35
2.8.4 等高線圖形的繪制………… 37
2.8.5 二維偽彩圖的繪制………… 38
2.8.6 矢量場圖的繪制…………… 39
2.8.7 圖形的填色………………… 40
第3章 MATLAB與Excel的數據交互與數據處理案例………………… 42
3.1 數據交互函數…………………… 42
3.1.1 獲取文件信息函數xlsfinfo……………………………… 42
3.1.2 讀取數據函數xlsread …… 43
3.1.3 寫入數據函數xlswrite…… 45
3.1.4 可視化交互界面函數uiimport……………………………… 46
3.2 Excel Link宏………………… 48
3.2.1 加載Excel Link宏……… 48
3.2.2 使用Excel Link宏……… 48
3.3 數據交互實例…………………… 51
3.3.1 基金相關性的計算………… 51
3.3.2 多個文件的讀取和寫入…… 53
3.4 數據的平滑處理………………… 54
3.4.1 smooth函數……………… 54
3.4.2 smoothts函數…………… 57
3.4.3 medfilt1函數……………… 60
3.5 數據的標準化…………………… 61
3.5.1 數據的標準化變換………… 62
3.5.2 數據的極差變換…………… 64
第4章 MATLAB與數據庫的數據交互………………………………… 66
4.1 數據源配置……………………… 66
4.2 MATLAB連接數據庫………… 68
4.2.1 Database工具箱簡介…… 68
4.2.2 Database工具箱函數…… 68
4.2.3 數據庫的數據讀取………… 69
4.2.4 數據庫的數據寫入………… 73
4.3 網絡數據讀取…………………… 76
4.3.1 Sina財經實時數據……… 76
4.3.2 Tencent財經歷史數據…… 78
第5章 貸款按揭與保險產品現金流分析案例……………………… 81
5.1 貨幣時間價值計算……………… 81
5.1.1 單利終值與現值…………… 81
5.1.2 復利終值與現值…………… 82
5.1.3 連續復利計算……………… 82
5.2 固定現金流計算………………… 83
5.2.1 固定現金流現值計算函數pvfix ……………………… 83
5.2.2 固定現金流終值計算函數fvfix ……………………… 84
5.3 變化現金流計算………………… 85
5.4 年金現金流計算………………… 86
5.5 商業按揭貸款分析……………… 88
5.5.1 按揭貸款還款方式………… 88
5.5.2 等額還款模型與計算……… 89
5.5.3 等額本金還款……………… 91
5.5.4 還款方式比較……………… 94
5.5.5 提前還款違約金估算……… 94
5.6 商業養老保險分析……………… 95
5.6.1 商業養老保險案例………… 95
5.6.2 產品結構分析……………… 96
5.6.3 現金流模型………………… 96
5.6.4 保險支出現值函數………… 97
5.6.5 保險收入現值函數………… 97
5.6.6 案例數值分析……………… 99
5.6.7 案例分析結果…………… 100
第6章 隨機模擬概率分布與隨機數…………………………… 101
6.1 概率分布 ……………………… 101
6.1.1 概率分布的定義………… 101
6.1.2 幾種常用的概率分布…… 101
6.1.3 密度函數、分布函數和逆概率分布函數值的計算……… 104
6.2 隨機數與蒙特卡羅模擬……… 107
6.2.1 隨機數的生成…………… 107
6.2.2 蒙特卡羅模擬…………… 110
6.3 隨機價格序列………………… 113
6.3.1 收益率服從正態分布的價格序列………………… 113
6.3.2 具有相關性的隨機序列… 115
6.4 帶約束的隨機序列…………… 117
第7章 CFTOOL數據擬合GDP與用電量增速分析……………… 120
7.1 案例背景GDP與用電量的關系…………………………… 120
7.2 數據擬合方法………………… 122
7.3 MATLAB CFTOOL的使用………………………………… 122
7.3.1 CFTOOL函數的調用方式…………………………… 123
7.3.2 導入數據………………… 123
7.3.3 數據的平滑處理………… 124
7.3.4 數據篩選………………… 125
7.3.5 數據擬合………………… 1263
7.3.6 繪圖控制………………… 129
7.3.7 擬合后處理……………… 130
7.4 加權重擬合…………………… 131
第8章 策略模擬組合保險策略分析…………………………… 134
8.1 固定比例組合保險策略……… 134
8.1.1 策略模型………………… 134
8.1.2 模型參數………………… 135
8.2 時間不變性組合保險策略…… 136
8.2.1 策略模型………………… 136
8.2.2 模型參數………………… 136
8.3 策略數值模擬………………… 136
8.3.1 模擬情景假設…………… 136
8.3.2 固定比例組合保險策略模擬…………………………… 137
8.3.3 時間不變性組合保險策略模擬……………………… 140
8.4 策略選擇與參數優化………… 144
8.4.1 模擬情景假設…………… 144
8.4.2 模擬方案與模擬參數…… 144
8.4.3 模擬程序與結果………… 145
第9章 KMV 模型求解方程與方程組的數值解……………… 153
9.1 方程與方程組………………… 153
9.1.1 方 程…………………… 153
9.1.2 方程組…………………… 153
9.2 方程與方程組的求解………… 154
9.2.1 fzero函數………………… 154
9.2.2 fsolve函數……………… 155
9.2.3 含參數方程組的求解…… 157
9.3 KMV模型方程組的求解…… 159
9.3.1 KMV模型簡介………… 159
9.3.2 KMV模型計算方法…… 160
9.3.3 KMV模型計算程序…… 161
第10章 期權定價模型與數值方法… 165
10.1 期權基礎概念………………… 165
10.1.1 期權及其相關概念……… 165
10.1.2 買入期權、賣出期權平價組合…………………………… 166
10.1.3 期權防范風險的應用…… 166
10.2 期權定價方法的理論基礎…… 167
10.2.1 布朗運動………………… 168
10.2.2 伊藤引理………………… 169
10.2.3 Black
Scholes微分方程…………………………… 171
10.2.4 Black
Scholes方程求解…………………………… 173
10.2.5 影響期權價格的因素分析…………………………… 175
10.3 B S公式隱含波動率計算… 178
10.3.1 隱含波動率概念………… 178
10.3.2 隱含波動率計算方法…… 179
10.3.3 隱含波動率計算程序…… 180
10.4 期權二叉樹模型……………… 184
10.4.1 二叉樹模型的基本理論…………………………… 184
10.4.2 二叉樹模型的計算……… 185
10.5 期權定價的蒙特卡羅方法…… 187
10.5.1 模擬基本思路…………… 187
10.5.2 模擬技術實現…………… 187
10.5.3 模擬技術改進…………… 188
10.5.4 歐式期權蒙特卡羅模擬…………………………… 190
10.5.5 障礙期權蒙特卡羅模擬…………………………… 193
10.5.6 亞式期權蒙特卡羅模擬…………………………… 196
第11章 股票掛鉤結構分析………… 200
11.1 股票掛鉤產品的基本結構…… 200
11.1.1 高息票據與保本票據…… 200
11.1.2 產品構成要素說明……… 201
11.1.3 產品的設計方法………… 202
11.2 股票掛鉤產品案例分析……… 204
11.2.1 產品定價分析…………… 2044
11.2.2 產品案例要素說明……… 204
11.2.3 保本票據定價與收益…… 205
11.2.4 高息票據定價與收益…… 209
11.3 分級型結構產品分析………… 210
11.3.1 分級型結構產品的組成…………………………… 210
11.3.2 分級型結構產品的結構比例……………………… 211
11.3.3 分級型結構產品的收益分配……………………… 211
11.3.4 分級型結構產品的流通方式……………………… 212
11.3.5 分級型結構產品的風險控制……………………… 212
11.4 鯊魚鰭期權期望收益測算…… 213
11.4.1 鯊魚鰭期權簡介………… 213
11.4.2 鯊魚鰭期權收益率曲線…………………………… 213
11.4.3 期望收益測算(歷史模擬法)…………………………… 214
11.4.4 結果與分析……………… 215
第12章 馬科維茨均值方差模型…… 218
12.1 模型理論……………………… 218
12.2 收益與風險計算函數………… 219
12.3 有效前沿計算函數…………… 220
12.4 約束條件下有效前沿………… 224
12.5 模型年化參數計算…………… 226
第13章 基金評價與投資組合績效… 228
13.1 資產定價(CAPM)模型……… 228
13.2 組合績效指標………………… 229
13.2.1 Beta與Alpha的計算… 230
13.2.2 夏普比率………………… 234
13.2.3 信息比率………………… 235
13.2.4 跟蹤誤差………………… 236
13.2.5 最大回撤………………… 237
13.3 業績歸因分析………………… 240
13.3.1 大類資產配置效應、行業配置效應和個股選擇效應……240
13.3.2 基金選股與擇時能力分析…………………………… 241
第14章 風險價值VaR計算………… 242
14.1 VaR模型…………………… 242
14.1.1 VaR模型的含義……… 242
14.1.2 VaR的主要性質……… 242
14.1.3 VaR模型的優點與缺點…………………………… 243
14.2 VaR的計算方法…………… 244
14.3 數據讀取……………………… 244
14.3.1 數據提取………………… 245
14.3.2 數據可視化與標準化…… 246
14.3.3 數據簡單處理與分析…… 247
14.4 數據處理……………………… 252
14.5 歷史模擬法程序……………… 254
14.6 參數模型法程序……………… 256
14.7 蒙特卡羅模擬程序…………… 257
14.7.1 基于隨機收益率序列的蒙特卡羅風險價值計算……
257
14.7.2 基于幾何布朗運動的蒙特卡羅模擬………………… 260
第15章 跟蹤誤差最小化非線性最小二乘法MATLAB編程… 262
15.1 理論與案例…………………… 262
15.1.1 非線性最小二乘法……… 262
15.1.2 跟蹤誤差最小化背景…… 262
15.2 模型建立……………………… 263
15.2.1 實際案例………………… 263
15.2.2 數學模型………………… 264
15.3 MATLAB實現……………… 265
15.3.1 lsqnonlin函數………… 265
15.3.2 建立目標函數…………… 266
15.3.3 模型求解………………… 269
15.4 擴展問題……………………… 272
第16章 分形技術移動平均Hurst指數計算…………………… 273
16.1 Hurst指數簡介……………… 273
16.2 R/S方法計算Hurst指數… 274
16.3 移動窗口Hurst指數計算程序………………………………… 274
16.3.1 時間序列分段…………… 274
16.3.2 Hurst指數計算………… 276
16.3.3 移動窗口Hurst指數計算…………………………… 278
第17章 固定收益證券的久期與凸度計算……………………………… 281
17.1 基本概念……………………… 281
17.2 價格與收益率的計算………… 284
17.2.1 計算公式………………… 284
17.2.2 債券定價計算…………… 285
17.2.3 債券收益率計算………… 288
17.3 久期與凸度的計算…………… 291
17.3.1 債券久期的計算………… 291
17.3.2 債券凸度的計算………… 294
17.4 債券組合久期免疫策略……… 297
第18章 利率期限結構與利率模型… 301
18.1 利率理論與投資策略………… 301
18.1.1 利率的期限結構理論…… 301
18.1.2 利用利率結構投資策略…………………………… 301
18.2 利率期限結構………………… 303
18.2.1 建立利率期限結構的方法…………………………… 303
18.2.2 利率期限結構的計算…… 304
18.2.3 利率期限結構的平滑…… 309
18.3 利用利率期限結構計算遠期利率………………………………… 310
18.4 利率模型……………………… 313
18.4.1 利率模型分類…………… 313
18.4.2 Ho Lee模型………… 314
18.4.3 BDT二叉樹的構建…… 318
18.4.4 HJM 模型的構建……… 321
第19章 線性優化理論與方法……… 323
19.1 線性規劃理論………………… 323
19.1.1 線性規劃的求解方法…… 323
19.1.2 線性模型的標準形式…… 324
19.2 線性優化MATLAB求解…… 324
19.2.1 linprog函數…………… 324
19.2.2 線性規劃模型的表示…… 325
19.2.3 內點法求解……………… 326
19.2.4 單純形法求解…………… 326
19.3 含參數線性規劃……………… 327
第20章 非線性優化理論與方法…… 329
20.1 理論背景……………………… 329
20.1.1 非線性問題……………… 329
20.1.2 非線性優化……………… 329
20.2 理論模型……………………… 330
20.2.1 無約束非線性優化……… 330
20.2.2 約束非線性優化………… 331
20.3 MATLAB實現……………… 331
20.3.1 fminunc函數…………… 331
20.3.2 fminsearch函數………… 335
20.3.3 fmincon函數…………… 337
20.4 擴展問題……………………… 341
20.4.1 大規模優化問題………… 341
20.4.2 含參數優化問題………… 343
第21章 資產收益率分布的擬合與檢驗……………………………… 345
21.1 案例描述……………………… 345
21.2 數據的描述性統計…………… 346
21.2.1 描述性統計量…………… 346
21.2.2 統計圖…………………… 350
21.3 分布的檢驗…………………… 353
21.3.1 chi2gof函數…………… 353
21.3.2 jbtest函數……………… 355
21.3.3 kstest函數……………… 357
21.3.4 kstest2函數…………… 358
21.3.5 lillietest函數…………… 361
21.3.6 方法結論分析…………… 363
21.4 投資組合分布圖比較………… 363
第22章 技術分析指標計算與回測……………………………… 367
22.1 理論簡介……………………… 367
22.2 行情數據的K線圖………… 367
22.2.1 數據讀取………………… 367
22.2.2 蠟燭圖(K線) ………… 368
22.3 技術指標計算………………… 373
22.3.1 移動平均線……………… 373
22.3.2 布林帶…………………… 374
22.3.3 平滑異同移動平均線…… 376
22.3.4 其他技術指標…………… 377
22.4 動態技術指標………………… 378
22.5 指標回測分析………………… 381
22.5.1 讀取數據………………… 381
22.5.2 計算交易信號和持倉信號…………………………… 381
22.5.3 模擬交易………………… 382
22.5.4 交易結果評價…………… 383
22.5.5 回測結果可視化………… 384
第23章 編程實用技巧……………… 388
23.1 變量的初始化………………… 388
23.2 集合的交并函數……………… 390
23.3 坐標軸時間標記……………… 393
23.4 坐標軸過原點實現…………… 395
23.5 定時觸發程序運行…………… 397
23.6 發送郵件……………………… 397
參考文獻………………………………… 399