首页 Matlab和金融计算3

Matlab和金融计算3

举报
开通vip

Matlab和金融计算3nullMatlab与统计计算3Matlab与统计计算3陆立强 复旦大学数学科学学院第五章 Matlab编程第五章 Matlab编程变量名 字母开头,包含数字、下划线、字母; 区分大小写; 最长63个字符 不能是系统保留字:if、else、function等第五章 Matlab编程第五章 Matlab编程常数 pi:圆周率 NaN:Not a Number(不确定数) eps:ε,10-52 inf:∞ realmax: 21023 realmin: 2-1022 i或j:虚数单位第五章 Matlab编程第五章 ...

Matlab和金融计算3
nullMatlab与统计计算3Matlab与统计计算3陆立强 复旦大学数学科学学院第五章 Matlab编程第五章 Matlab编程变量名 字母开头,包含数字、下划线、字母; 区分大小写; 最长63个字符 不能是系统保留字:if、else、function等第五章 Matlab编程第五章 Matlab编程常数 pi:圆周率 NaN:Not a Number(不确定数) eps:ε,10-52 inf:∞ realmax: 21023 realmin: 2-1022 i或j:虚数单位第五章 Matlab编程第五章 Matlab编程数字格式 默认:双精度:[10-308 ,10308] 显示 short:默认,4位小数(除整数外) short e:科学计数法,尾数4位小数 long:14位小数(除整数外) short e:科学计数法,尾数15位小数 rat:最近分数形式 bank:货币格式(2位小数) 显示格式命令:format 格式第五章 Matlab编程第五章 Matlab编程数字格式 单精度: [10-38 ,1038] 创建 变量名=single(变量名) >>a=magic(4) >>b=single(a) 变量名=single(最小值:步长:最大值) >>b=single(1:8) 运算规则 当单精度遇到双精度,按单精度运算第五章 Matlab编程第五章 Matlab编程数字格式 整数 int8:8位, [-27 ,27-1] int16:16位, [-215 ,215-1] int32:32位, [-231 ,231-1] int64:16位, [-263 ,263-1] 创建:同单精度,类型名不同 运算规则 当长整数遇到短整数,不能进行数学运算 当整型遇到双精度,按整型运算第五章 Matlab编程第五章 Matlab编程数字格式 与格式相关的函数 isa(x,’type’):判断x是否为指定类型的变量; cast(x,’type’):将x转化为指定类型的变量; class(x):返回x的类型第五章 Matlab编程第五章 Matlab编程字符串 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示格式:’字符序列’ 存储格式:字符ASCII编码的数组 访问: 整体:字符串变量名 单体:变量名(下标) 操作1:合并 [字符串1 字符串2] [‘123’ ‘456’]==‘123456’第五章 Matlab编程第五章 Matlab编程字符串 操作2:数字字符串格式转化 字符串转数字:str2num(字符串(数组)) str2num('3.14159e0') ==π str2num(['1 2';'3 4'])==[1 2;3 4] 注:数组中字符串长度必须相等 数字转字符串:num2str(数组,小数点位数) num2str([pi eps])==[3.1416 2.2204e-016] 小数点位数默认为4位 第五章 Matlab编程第五章 Matlab编程字符串 操作3:修改字符串 deblank(字符串):删除尾部空格; strtrim (字符串):删除首、尾部空格; lower (字符串): 全部小写; upper (字符串):全部大写; strjust (字符串,对齐方式):对齐(左、右、中); strrep(字符串,字符串1,字符串2):子串替换 第五章 Matlab编程第五章 Matlab编程字符串 操作4:字符串比较 strcmp(字符串1,字符串2):字符串比较。相等返回1,不等返回0; strcmpi (字符串1,字符串2):字符串比较,忽略大小写; findstr(字符串1,字符串2):在字符串1中查找字符串2。返回首字符位置; strmatch (字符串1,字符串2):返回字符串1在字符串2中出现的次数;第五章 Matlab编程第五章 Matlab编程字符串数组 数组特点:元素类型相同 定义:[字符串1;字符串2] 字符串数组的特点 元素是字符数组 元素长度不等 字符串数组的存储 按最长元素安排所有元素的存储空间 本质上是二维字符数组,带来浪费第五章 Matlab编程第五章 Matlab编程单元数组 定义:元素类型可变的数组 创建 {元素1,(;)元素2,(;) … ,(;) 元素n} a=[1 2;3 4] b={1:4,a,’I use Matlab’} cell(m,n) 或 cell(size(A)) 访问:单元数组{下标} b{1},b{2},b{3} 特点:元素类型可以完全不同,非常自由第五章 Matlab编程第五章 Matlab编程结构变量 定义:记录若干具体或者抽象对象属性的变量,相当于日常应用中的二维表。 例:股价(代码,名称,日期,开盘价,收盘价,最高价,最低价,成交量) 特点: 一列对应一个属性,有命名; 一行对应一个对象 第五章 Matlab编程第五章 Matlab编程结构变量 构造 结构变量.属性名=数据 patient.name = 'John Doe'; patient.billing = 127.00; patient.test = [79 75 73; 180 178 177.5; 220 210 205]; 结构变量=struct(‘属性名1’,数据1, …, ‘属性名n’,数据n) sz1=struct(‘date’,’2007-8-20’,’close’,37.9,’vol’,36638548) sz1(2)=struct(‘date’,’2007-8-21’,’close’,38.56,’vol’,333599021) 第五章 Matlab编程第五章 Matlab编程结构变量 访问:结构变量.属性名(下标) patient.name = 'John Doe'; patient.billing = 127.00; patient.test(2,2) 增加属性 结构变量名.新属性名=数据 patient.ID = ‘000001'; 删除属性 结构变量名= rmfield(结构变量,‘属性名') 结构变量名 = rmfield(结构变量名,属性名数组)第五章 Matlab编程第五章 Matlab编程矩阵变量、单元数组、结构变量的相互转换 矩阵和单元数组 num2cell(矩阵变量):矩阵到单元 A=magic(3) B=num2cell(A) cell2mat(单元数组):单元到矩阵 C=cell2mat(B)第五章 Matlab编程第五章 Matlab编程矩阵变量、单元数组、结构变量的相互转换 单元和结构 struct2cell(结构变量):结构到单元 c=struct2cell(sz1) 注:行和列对换 cell2struct(单元数组,属性名称单元,行数):单元到结构 fields={‘date’,’close’,’vol’}; sz2=cell2struct(c’,fields,2); 第五章 Matlab编程第五章 Matlab编程比较运算:结果取逻辑量—1:对,0:错 ==、~=:相等、不等 A = [2 7 6;9 0 5;3 0.5 6]; B = [8 7 0;3 2 5;4 -1 7]; A==B = [ 0 1 0 0 0 1 0 0 0 ] <、>:大于、小于 <=、>=:大于等于、小于等于第五章 Matlab编程第五章 Matlab编程逻辑运算:基于逻辑量的计算 &:与,|:或,~:非 A = [0 1 1 0 1]; B = [1 1 0 0 1]; A & B = [0 1 0 0 1] A | B = [1 1 1 0 1] ~A = [1 0 0 1 0]第五章 Matlab编程第五章 Matlab编程逻辑函数 And(A,B):同A&B; Or(A,B):同A|B; Not(A):同~A; Xor(A,B):异或——不等为1,相等为0 Xor(A,B)=[1 0 1 0 0]第五章 Matlab编程第五章 Matlab编程逻辑函数 Any(A,dim):检查是否有一个元素非零,是:取1 A=[1 0 1;0 0 0] Any(A)==[1 0 1] Any(A,2)==[ 1 0 ]T All(A,dim):检查是否所有元素非零,是:取1 A=[1 0 1;0 0 0] all(A)==[0 0 0] all(A,2)==[ 0 0 ]T第五章 Matlab编程第五章 Matlab编程逻辑函数 查找非零元素函数:find [i,j,v]=find(A):返回非零元素的坐标和值 find(A):返回非零元素的序号,列优先 [i,j,v] = find(A, k, 'first') [i,j,v] = find(A, k, 'last') k:寻找前k个数 ’first’:第一个开始; ’last’:最后一个开始第五章 Matlab编程第五章 Matlab编程 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 控制 for循环: 经典格式 for 循环变量=标量1:[标量2:]标量3 matlab语句 end 运行:循环变量从标量1(初值)开始,依次按标量2(步长)递增,直到大于等于标量3(终值),重复执行matlab语句for n = 3:10 r(n) = rank(magic(n)); end r运行效率不及数组方式第五章 Matlab编程第五章 Matlab编程流程控制 for循环: 特殊格式 for 循环变量=数组 matlab语句 end 运行:循环变量自1开始重复执行循环,次数为数组的列数。 array=randperm(10); for n=array x(n)=n; end x第五章 Matlab编程第五章 Matlab编程流程控制 while循环 经典格式 while 标量逻辑运算 matlab语句 end 逻辑运算结果为真则运行 t=1;sum=0; while t<=5 sum=sum+t t=t+1 end sum第五章 Matlab编程第五章 Matlab编程流程控制 while循环 特殊格式 while 数组逻辑运算 matlab语句 end 逻辑运算结果所有元素为真则运行 第五章 Matlab编程第五章 Matlab编程流程控制 单向选择 If 逻辑运算 Matlab语句 end 例 a=10 If a>0 disp(‘a>0’) end第五章 Matlab编程第五章 Matlab编程双向选择 If 逻辑运算 Matlab语句1 else Matlab语句2 end例 a=10 if a>0 disp(‘a>0’) else disp(‘a<=0’) end第五章 Matlab编程第五章 Matlab编程多向选择1 If 逻辑运算1 Matlab语句1 elseif 逻辑运算2 Matlab语句2 else Matlab语句3 end例 a=10 If a<0 disp(‘a<0’) elseif a<10 disp(‘a<10’) else disp(‘a>10’) end第五章 Matlab编程第五章 Matlab编程多向选择2 Switch 表达式 case 比较数据1 Matlab语句1 case 比较数据2 Matlab语句2 …… case 比较数据n Matlab语句n otherwise Matlab语句n+1 end厘米计长度值转换 switch unit case {‘inch’,’in’,1} y=x*2.54 case {‘feet’,’ft’,2} y=x*2.54/12 case {‘meter’,’m’,3} y=x/100; case {‘milimeter’,’mm’,4} y=x*10; otherwise disp(‘unknown unit’); end第五章 Matlab编程第五章 Matlab编程交互命令 input命令 作用:用户在命令窗口界面上输入数据 接受变量=input(提示字符串),任意格式 x=input(‘输入长度值(单位:厘米)’) 接受变量=input(提示字符串,’s’),字符串格式 unit=input(‘选择转换单位(1:in,2:ft,3:m,4:cm,5:mm)’,’s’) return命令 作用:中止函数运行,返回主调函数 第五章 Matlab编程第五章 Matlab编程交互命令 keyboard命令 作用:中断函数运行,转入键盘输入命令状态,直到输入return命令为止 在函数中使用有助于程序调试 报警命令 warning(警告字符串):只警告,不停止 error(报错字符串):报错后停止 第五章 Matlab编程第五章 Matlab编程函数句柄 因为涉及函数的处理,一些Matlab命令需要将函数名称作为参数,如fmin,fplot等 虽然形式上和字符串相同,但函数名参数所提供的信息远超于普通字符串,有更为深刻的含义:自变量个数和类型、因变量个数和类型、对应规则; 函数句柄就是专门记录函数信息的数据类型,它的作用和函数名相同第五章 Matlab编程第五章 Matlab编程函数句柄 定义:函数句柄 = @函数名 应用案例 >>fh=@sin; >>fplot(fh,[-pi pi]) >>y=fh(x) >>trigFun = {@sin, @cos, @tan}; >>plot(trigFun{2}(-pi:0.01:pi))第五章 Matlab编程第五章 Matlab编程匿名函数 背景:简单函数采用M函数表示不方便,函数句柄有助于解决上述不足。 创建:@(参数表) 表达式 例: >>g = 2.5; omega = 10; >>ft=@(t) (g * cos(omega * t)) >>fplot(ft,[0 7]) >>quad(ft, 0, 7) Quad:计算函数定积分第五章 Matlab编程第五章 Matlab编程匿名函数 例: >>sqr = @(x) x.^2; >>y=sqr(2); >>A=eye(3);B=ones(3); >>sumAxBy = @(x, y) (A*x + B*y); >>C=sumAxBy(5,6) >>A = {@(x)x.^2, @(y)y+10, @(x,y)x.^2+y+10}; >>A{1}(4) + A{2}(7); >>A{3}(4, 7); 第五章 Matlab编程第五章 Matlab编程匿名函数 应用案例 >>fh=@sin; >>fplot(fh,[-pi pi]); >>y=fh(x); >>trigFun = {@sin, @cos, @tan}; >>plot(trigFun{2}(-pi:0.01:pi));第五章 Matlab编程第五章 Matlab编程程序向量化处理 常规循环结构的特点:容易理解,效率低 程序向量化:使用向量化代码或者语句代替循环结构。 例:vetorizeEXM1.M 例:vetorizeEXM2.M第六章 Monte Carlo(MC) 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 第六章 Monte Carlo(MC)方法蒙特卡罗(Monte Carlo)方法 也称为计算机随机模拟方法,是一种基于“随机数”的计算方法。 起源 美国在第二次世界大战进研制原子弹的“曼哈顿计划”。 基本思路 早在17世纪,人们就知道用事件发生的“频率”来决定事件的“概率”。 19世纪人们用投针试验的方法来决定圆周率π。 20世纪40年代电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能。 第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法基本思想 所求解问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 是某随机事件A出现的概率(或者是某随机变量B的期望值)。 通过某种“实验”的方法,得出A事件出现的频率,以此估计出A事件出现的概率(或者得到随机变量B的某些数字特征,得出B的期望值)。 工作过程 产生各种概率分布的随机变量 用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。 第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法步骤 构造或描述概率过程: 正确描述概率过程或者构造一个概率过程,它的某些参量正好是所要求问题的解。 实现从已知概率分布抽样 最基本的一个概率分布是(0,1)上的均匀分布,随机数就是具有这种均匀分布的随机变量。 随机数序列就是具有这种分布的总体的一个简单子样。 由已知分布随机抽样都是以产生随机数为前提的。 建立各种估计量,得到问题的解。在蒙特卡罗计算中,使用最多的是无偏估计。 第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法抽象概率语言描述 构造一个概率空间(W ,A,P),其中,W 是一个事件集合,A是集合W 的子集的s 体,P是在A上建立的某个概率测度; 在这个概率空间中,选取一个随机变量q (w ),使得这个随机变量的期望值 正好是所要求的解Q ,然后用q (w )的简单子样的算术平均值作为Q 的近似值。 主要不足 是收敛速度较慢; 误差的概率性质,其概率误差正比于样本数N 如果单纯以增大N来减小误差,就要增加计算量。第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法Matlab生成(伪)随机数 基本函数 Rand(m,n):[0,1]均匀分布随机数 Randn(m,n): 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 正态分布随机数 常见一元随机数 Normrnd(mu,sigma,m,n):正态分布,m行,n列, Unifrnd(a,b,m,n):连续均匀分布,范围:[a,b],m,n同上; Unidrnd(N,m,n):离散均匀分布,范围:[1,N], m,n同上; Randsample(总体,样本数):总体中等概率随机抽样;第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法Matlab生成(伪)随机数 常见多元随机数 Mvnrnd(MU,SIGMA,n):多元正态分布随机数,n:组数 Mnrnd(n,p,m):多项分布,p:各项概率,n:总数,m:组数 随机数发生器的状态和控制 为什么伪随机性:后一个随机数根据上一个随机数而产生。 第一个随机数的随机性如何保证:随机数发生器的状态参数随时改变; 如果控制了发生器的状态,可以生成相同的随机数向量。 Matlab函数1:s=rand('state') Matlab函数2:rand('state‘,s)第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法Matlab生成(伪)随机数 任意分布一元随机数 有限个离散分布: Randsample(取值范围,样本数,true,分布函数) 已知:X={-2,-1,0,1,2},P={0.05,0.2,0.5,0.2,0.05} 要求产生81个服从上述分布的随机数 X=[-2 -1 0 1 2]; P=[0.05 0.2 0.5 0.2 0.05]; y=Randsample(X,91,true,p); Reshape(y,[9 9])第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法Matlab生成(伪)随机数 任意分布一元随机数 连续分布: 已知:密度函数f(x)或者分布函数F(x),x属于[a,b] 原理:设y1、y2、… 、 yn是[0,1]上均匀分布随机数,则xi=F-1(yi)(i=1, …,n)是服从F(x)的随机数 步骤 生成yi(i=1, …,n) 解方程F(xi)= yi 若已知密度函数f,则F(x)=quadl(f,[a,x]),quadl:定积分函数 例第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法Matlab生成(伪)随机数 应用实例1:随机投点法求pi 原理 x,y~U(-1,1), P(x2+y2≤1}=π/4 模拟: P(x2+y2≤1}=m/n m:圆内点数; n:总数 程序第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法Matlab生成(伪)随机数 应用实例2:模拟资产价格走势 原理 S:资产组合价格,随机变量; μ:资产收益率均值; σ:资产收益率标准差; z:N(0,t),t:时间; 理论解: 第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法Matlab生成(伪)随机数 应用实例2:模拟资产价格走势 模拟方法 n:模拟时段数; ri:各时段模拟收益率; Δt:时间步长; Δzi:各时段模拟随机量;第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法Matlab生成(伪)随机数 应用实例2:模拟资产价格走势 Matlab函数1:模拟收益率 retSeries=portsim(miu,sigma,n,deltaT,Nsim); retSeries:各时段收益率模拟值 miu,sigma,n,deltaT:同上; Nsim:总模拟次数 Matlab函数2:模拟价格 PriceSeries=ret2tick(retSeries,StartPrice) retSeries:同上,n*Nsim维; StartPrice:初始价格向量,Nsim维 实例第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法Matlab生成(伪)随机数 应用实例3:模拟资产组合价值走势 原理 S=(S1,S2, …, Sn):多个资产的价格,随机向量; μi:资产收益率均值; Σ:资产收益率协方差矩阵, Σi:协方差矩阵的第i行 Z:N(0,tI) 正态分布随机向量; N:资产种类数 理论解:无第六章 Monte Carlo(MC)方法第六章 Monte Carlo(MC)方法Matlab生成(伪)随机数 应用实例3:模拟资产价格走势 模拟方法 m:模拟时段数; Rj i:各种资产在各时段模拟收益率; Δt:步长; Δzj:各时段模拟随机量; Matlab函数同上 ,实例第七章 资产组合计算第七章 资产组合计算资产组合收益与方差 理论 组合包含N种证券,占比为 每种证券的收益率向量 则:该组合的收益率期望和方差分别为 其中:E(r)、Cov(r)分别为随机向量r的期望和协方差第七章 资产组合计算第七章 资产组合计算资产组合收益与方差 Matlab函数 [PortRisk, PortReturn] = portstats(ExpReturn,ExpCovariance, PortWts) 参数 ExpReturn:各资产收益期望向量 ExpCovariance: 各资产收益协方差矩阵 PortWts(可选): 各资产的占比矩阵(默认为等值) PortRisk:各资产组合收益的标准差向量 PortReturn :各资产组合收益的期望向量 算例第七章 资产组合计算第七章 资产组合计算有效前沿 定义:称以下优化问题的解W*(μ) 为该资产组合的有效前沿 第七章 资产组合计算第七章 资产组合计算有效前沿 Matlab函数 [PortRisk, PortReturn, PortWts] = frontcon(ExpReturn, ExpCovariance, NumPorts, PortReturn, AssetBounds, Groups, GroupBounds) 参数 ExpReturn:各资产收益期望向量 ExpCovariance :各资产收益协方差矩阵 NumPorts(可选):有效前沿上的组合个数,默认为10个。 PortReturn(可选):各组合的收益率期望向量,默认值在最大值到最小值间均匀分布。第七章 资产组合计算第七章 资产组合计算参数 AssetBounds(可选):组合中各资产占比的上下限 ,默认下限为0 (限制卖出),默认上限为1(单一资产组合) Groups(可选):资产分组矩阵 ,Groups(i,j) = 1 表示资产J属于I组,Groups(i,j) = 0表示资产J不属于I组 GroupBounds(可选):各组资产占比之和的上下限 ,默认下限=0,默认上限=1第七章 资产组合计算第七章 资产组合计算参数 PortRisk:各资产组合收益的标准差向量 PortReturn :各资产组合收益的期望向量 PortWts: 各资产组合的占比矩阵 注:若引用时不带上述3个返回参数,则直接绘制有效前沿的图形 算例第七章 资产组合计算第七章 资产组合计算带约束条件资产组合有效前沿 约束条件的表示格式 第七章 资产组合计算第七章 资产组合计算Matlab函数 [PortRisk, PortReturn, PortWts] = portopt(ExpReturn, ExpCovariance,NumPorts, PortReturn, ConSet) 参数 ExpReturn:同前 ExpCovariance:同前 NumPorts(可选) :同前 PortReturn (可选):同前 ConSet(可选):约束条件矩阵第七章 资产组合计算第七章 资产组合计算算例 Ret=[0.1 0.3];cov=[0.02 0;0 0.04]; Constr=[1 1 1;1 0 0.2;-1 0 0;0 -1 -0.3]; Portopt(ret,cov,[],[],constr); 第七章 资产组合计算第七章 资产组合计算CAPM模型 假设 证券市场是有效的,即信息完全对称; 存在无风险资产,投资者可以自由地自由地借入或贷出; 投资风险用方差表示; 所有的投资都是理性的,依据马尔科维茨组合模型进行决策; 证券交易没有成本; 每种证券的收益率呈正态分布;第七章 资产组合计算第七章 资产组合计算CAPM模型 结论 E(ri):证券i的期望收益; E(rm):市场组合的期望收益; rf:无风险利率; 解释 无风险利率以债券利率或者银行存款利率为准; 市场组合以指数为标准; βf:投资组合风险与市场风险之比 组合的期望收益等于无风险利率加上风险补偿,补偿大小用β来描述 第七章 资产组合计算第七章 资产组合计算CAPM模型 作用 验证上市证券价格的“合理性”; 帮助确定IPO股票的价格; 回归模型 案例
本文档为【Matlab和金融计算3】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_565847
暂无简介~
格式:ppt
大小:407KB
软件:PowerPoint
页数:0
分类:工学
上传时间:2013-06-07
浏览量:15