第六讲 MATLAB金融计算,MATLAB金融工具箱介绍,Financial Toolbox(金融工具箱) 日期数据处理 资产均值-方差分析 时间序列分析 固定收益计算 有价证券的收益和价格 统计分析 定价和灵敏度分析 年金和现金流计算 抵押支持债券,Financial Derivatives Toolbox,固定收益、金融衍生品定价 风险评估 敏感度分析 对冲比率,Financial Time Series Toolbox,创建金融时间序列 金融时间序列可视化 技术分析,Fixed-Income Toolbox,国债 票据 抵押证券 公众债券 保证金计算等,GARCH Toolbox,GARCH模型参数估计 GARCH模型预测,广义自回归条件异方差 (Generalized Auto Regressive Conditional Heteroskedasticity),MATLAB金融界主要用户,IMF(国际货币基金组织) Ferderal Reserve Bank(联邦储备银行) Goldman Sachs(高盛) J.P Morgan(摩根大通) Morgan Stanley(摩根士丹利) Soloman Smith Barney(所罗门美邦公司) Moody’s Investors(穆迪投资者服务公司 ) Ernst&Young(安永国际会计公司 ) Deloitte&Touche(德勤会计师事务所) Price Waterhouse Coopers(普华永道会计师事务所 ) Putnam Investment(百能投资 ) Prudential Securities(美国培基证券公司 ) Bank of America(美国银行 ) John Hancock(John Hancock互助人寿保险公司 ) Freddie Mac(房地美 ),金融业相关内容,常微分与偏微分方程 信号过程 曲线拟合 线性代数 矩阵操作 概率分布 描述性统计 非线性回归模型 无约束条件下的非线性最小二乘法 二次规划和线性规划 有约束的线性最小二乘法,金融数据处理与格式转换 货币格式 金融数据的图表技术 现金流的计算与分析 利率期限结构计算 证券类衍生产品定价与分析 资产组合分析 利率模型 利率期限结构敏感性分析 条件均值与方差 对冲分析 GARCH模型,MATLAB金融工具箱框架图,创立时间序列变量,时间序列数组的创立和读取 利用fints函数创立日期型数组 price=[1:6]’ dates=[today:today+5]’ Tsobjkt=fints(dates,price) 金融时间序列文件读取 Tsobjkt=ascii2fts(’at.dat’),16-Oct-2008 1 17-Oct-2008 2 18-Oct-2008 3 19-Oct-2008 4 20-Oct-2008 5 21-Oct-2008 6,时间序列数组运算,日期运算 查找现在时刻 now dateste(ans) 查询当天日期 today 序数型日期转化为字符串日期 datestr(ans) 字符串日期转化为序数型日期 datenum(’03-aug-2003’) 确定每月的第几天 Day=day(’22-Jan-2007’),查询星期 [n,s]=weekday(’22-Jan-2007’) 查询月份 [n,s]=month(D) 将字符型日期以向量形式输出 V=datevec(N) 计算日期间隔 daysact(’27-feb-2008’,’08-aug-2008’) 时间序列数据合并 newfts=merge(fts1,fts2,…,Method,RefObj) 特定日期抽取函数 todaily,toweekly,tomonthly, toquarterly,tosemi,toannual,时间序列数组运算,以招商银行(600036)为例,说明如何将分析家软件数据导入到MATLAB中,然后进行相关操作.,可从分析家网站()下载,步骤1:打开分析家软件,输入代码600036,出现招商银行股价图,时间序列数组运算,步骤2:单击鼠标右键,在弹出的快捷菜单中选择“复制数据”命令,弹出一个提示框,时间序列数组运算,步骤3:打开Excel,将数据粘贴到Excel文件中,时间序列数组运算,步骤4:由于日期型格式是yyyy-mm-dd,不符合MATLAB默认格式,单击“A”列,单击鼠标右键,选择“设置单元格格式”菜单项,出现对话框,时间序列数组运算,步骤5:对日期型数据进行修改,选择“14-Mar-01”的格式,单击“确定”按钮,日期显示格式发生变化,时间序列数组运算,步骤6:拖动鼠标把所要复制的内容确定下来,单击鼠标右键,选择“复制”菜单项,打开Windows记事本,把复制的内容粘贴到记事本中,注意把汉字译成英文,以便MATLAB识别,时间序列数组运算,步骤7:将数据保存到MATLAB7/work目录下的at.txt文件 步骤8:用ascii2fts函数将at.txt中的数据读入MATLAB中,命令如下: zhaohang=ascii2fts(‘at.txt’,2,2),时间序列数组运算,时间序列数据转化为其他类型数据 时间序列数据保存为文本文件 stat=fts2ascii(filename,tsobj,exttext) filename——新文件名 tsobj——需要转化的fints型格式数据 exttext——不需要的描述项的行数,也可以不输入 时间序列数据转化为矩阵数据 tsmat=fts2mat(tsobj,datesflag) tsobj——需要转化的fints型格式数据 datesflag——0(默认值)表示不输出日期到矩阵中,1表示日期也转换,时间序列数组运算,fints型数据求最大值、最小值、均值、标准差及排序 max,min,mean,std,sortfts 实现时间序列的转换 newfts=convertto(oldfts,newfreq) oldfts——需要转换的数据 newfreq——转换的目标,具体如下: ’D’或’d’——天 ’W’或’w’——周 ’M’或’m’——月 ’Q’或’q’——季度 ’S’或’s’——半年 ’A’或’a’——年 如: weekzh=converto(zhaohang,’w’),时间序列数组运算,时间序列数据的抽取 ftse=extfield(tsobj,fieldnames) tsobj——原始数据 fieldnames——原始数据中的字段名 如: weekzhclose=extfield(weekzh,’close’) 还可以用结构变量的方法 weekzhclose=weekzh.close 将价格序列转化为收益率序列 price2ret 将收益率序列转化为价格序列 ret2price,时间序列数组运算,处理时间序列中的缺失数据 newfts=fillts(oldfts,method) method: ’linear’或’le’——线性插值法 ’cubic’或’c’——三次插值法 ’spline’或’s’——样条法 ’nearest’或’n’——最近法 ’pchip’或’p’——逐段光滑的三次Hemite多项式法,MATLAB和Excel数据连接,打开Excel软件,单击“工具”菜单,选择“加载宏”菜单项,弹出“加载宏”对话框。
在“加载宏”对话框中,单击“浏览”按钮,在MATLAB/toolbox/exlink文件夹下选中Excllink文件,单击“确定”按钮 重新回到Excel中“加载宏”对话框,在“Excel Link 2.2 for use with MATLAB ”选项前打钩,加载Excel Link,MATLAB和Excel数据连接,启动MATLAB,将变量输入MATLAB,把MATLAB中变量输入Excel中,执行MATLAB命令,MATLAB和Excel数据连接,MATLAB 自动启动和Excel连接,设置,鼠标在桌面MATLAB图标上右击,弹出“属性”快捷菜单,在对话框“目标”文本框的“Matlab\bin\win32\MATLAB.exe”后面加上“/automation”,,MATLAB和Excel数据连接,Excel Link 的使用,连接管理函数,,MATLAB和Excel数据连接,Excel Link 的使用,数据管理函数,,MATLAB和Excel数据连接,Excel Link 的使用,直接把数据输入到MATLAB中,,把Excel中盐田港(000088)从2008年8月1日到9月30日数据录入MATLAB中,保存变量名为ytg_000088,Excel中盐田港数据分别为日期、收盘价和成交量 单击“startmatlab”按钮启动MATLAB,,MATLAB和Excel数据连接,Excel Link 的使用,直接把数据输入到MATLAB中,,3. 单击“putmatrix”按钮弹出一个菜单,根据菜单提示将Excel中数据用鼠标选定,传输到MATLAB中变量名为ytg_000088,然后单击“确定”按钮,,MATLAB和Excel数据连接,Excel Link 的使用,直接把数据输入到MATLAB中,,,MATLAB和Excel数据连接,Excel Link 的使用,MATLAB中自带Excel文件介绍,,打开MATLAB的toolbox中exlink目录下的ExliSamp.xls文件,MATLAB和Excel数据连接,Excel Link 的使用,MATLAB中自带Excel文件介绍,,打开sheet1,将Excel中DATA数据传给MATLAB工作区中变量data(存储了3个变量25个观察值) MLPutMatrix(”data”,DATA) 在Excel中执行MATLAB命令 MLEvalString(“y=data(:,3)”) MLEvalString(“e=ones(length(data),1)”) MLEvalString(“A=[e data(:,1:2)]”) 计算回归系数 MLEvalString(“beta=A\y”) 计算回归结果 MLEvalString(“bfit=A*beta”) 将原结果和回归结果相比较 MLEvalString(“[y,k] =sort(y)”) MLEvalString(“fit=fit(k)”) MLEvalString(“n=size(data,1)”) 用MATLAB中多项式进行拟合 MLEvalString(“[p,S]=polyfit(1:n,y’,5)”) MLEvalString(“newfit=polyval(p,1:n,S)”) 对拟合结果作图 MLEvalString(“plot(1:n,y,'bo',1:n,fit,'r:',1:n,newfit,'g'),MATLAB和Excel数据连接,Excel Link 的使用,MATLAB中自带Excel文件介绍,,用二叉树方法计算欧式看跌期权价格,打开”sheet4”,数据B4:B10名称是bindata ,分别存放股票价格、行权价、无风险利率、期权存续期(5/12)、时间离散步长(1/12)、股票标准差以及是否是欧式(美式)期权,B15开始存放二叉树各节点价格asset_tree,B23开始存放现金流value_tree 激活D5单元,将Excel中bindata传到MATLAB变量b中,激活D12单元,调用MATLAB中计算二叉树函数binprice,其二叉树数据结果保存在变量p中,价格保存在变量o中。
激活D11、D12,分别保存在MATLAB变量asset_tree与value_tree中,注意B15与B23分别是asset_tree与value_tree的起点MATLAB和Excel数据连接,Excel Link 的使用,简易方法将Excel数据导入MATLAB,,在Excel中建立。