Matlab金融计算讲义.ppt
《Matlab金融计算讲义.ppt》由会员分享,可在线阅读,更多相关《Matlab金融计算讲义.ppt(137页珍藏版)》请在冰点文库上搜索。
专题十一:
MATLAB金融计算,目录,第1章金融时间序列分析,1.1时间序列变量的创立,1.1.1fints函数创立时间变量序列Matlab中有专门的时间序列格式来保存时间序列数据。
命令为fints(dates,data)。
第一列为时间,其他列为相应的数据。
例1-1文件:
fts_ex01.m程序:
dates=today:
today+5;data=1:
6;tsobjkt=fints(dates,data),1.1.2时间序列数据的读取,
(1)ascii2fts函数读取后缀为txt、dat文件的数据。
tsobj=ascii2fts(filename,timedata,descrow,colheadrow,skiprows)filename:
文件名timedata:
判断是不是按天记录的数据,是则输入t,否则为nt。
可缺省。
descrow:
确定文件中文字说明的行数colheadrow:
变量名所在的行数skiprows:
不需要读入的列,例1-2读取文件名为fts_ex02.txt内的数据命令:
tsobj=ascii2fts(fts_ex02.txt,1,2)结果:
tsobj=desc:
USSTCompanyStockfreq:
Unknown(0)dates:
(6)CLOSE:
(6)06-Jun-2013107-Jun-2013208-Jun-2013309-Jun-2013410-Jun-2013511-Jun-20136,
(2)xlsread函数读取excel中的数据。
data,txt=xlsread(filename.xlsx,Sheet1);data:
读取的数据txt:
读取的文本,包括日期。
例1-3读取文件名为fts_ex03.xlsx内的数据。
data,txt=xlsread(fts_ex03.xlsx,Sheet1);结果:
(3)fetch函数从网络获取股票数据(Yahoo、Bloomberg)c=yahoo;%从雅虎获取数据x=fetch(c,security_name,fields,fromedate,todate,period);security:
证券的名字(代号)fields可取close,high,volumeperiod可取d,w,m,v,分别表示日、周、月、红利,例1-4从雅虎获取宝钢股份2013.1.4至2013.5.21的日收盘价,并绘图。
文件:
fts_ex04.m结果:
1.1.3数据的简单处理,
(1)日期运算,特定日期抽取函数,
(2)数据类型转换,(3)缺失数据的处理利用插值法补全数据。
命令:
newfts=fillts(oldfts,method)oldfts:
原始数据method:
处理方法。
linear:
线性插值法cubic:
3次插值法spline:
样条插值法nearest:
最近法pchip:
逐段光滑的3次hemite多项式法,1.2.1平稳性检验
(1)ADF检验原假设h0:
时间序列为单位根过程h,pValue,stat,cValue,reg=adftest(y,Para_Name,Para_Value,.)输入参数:
y:
时间序列变量;Para_Name:
参数名字,包括:
alpha,lags,model,testmodel包括AR,ARD,TS,test包括t1,t2,Fh=0不能拒绝时间序列为单位根过程的假设,h=1拒绝pValue:
p值,若pValuealpha,拒绝时间序列为单位根过程的原假设cValue:
统计量拒绝原假设的临界值reg:
结构型变量,包括有效样本容量,回归系数等,1.2金融时间序列的统计分析,
(2)Phillips-Perron检验调用方式:
h,pValue,stat,cValue,reg=pptest(y,Para_Name,Para_Value,.)输入参数同上,1.2.2相关性,1.2.3假设检验
(1)单个样本均值的t检验命令:
h,p,ci,stats=ttest(X,m,alpha,tail)输入参数:
X:
样本m:
理论值alpha:
显著性水平tail:
检验方式,tail=0表示双尾检验,tail=1表示右尾检验(h0:
ux=m)ci:
1-alpha的置信区间stats:
结构型变量,给出了t统计量,t统计量的自由度,样本的标准差;,
(2)两个样本均值的t检验h,p,ci,stats=ttest2(X,Y,alpha,tail,vartpye)输入参数:
vartpye:
equal表示两个样本的方差相等,unequal表示方差不等。
(3)单个样本卡方检验h,p,ci,stats=vartest(X,V,alpha,tail)输入参数:
V:
方差的理论值(4)两个样本的F检验h,p,ci,stats=vartest2(X,Y,alpha,tail),1.3时间序列模型的估计,1.3.1时间序列模型介绍
(1)自回归(AR)模型如果时间序列是它前期值与随机项的线性函数,即引入滞后算子Q,并记AR(Q)为:
模型可以写为:
(2)移动平均(MA)模型如果时间序列是随机项的线性组合,即引入滞后算子Q,并记MA(Q)为:
模型可以表示为:
(3)自回归移动平均模型(ARMA)如果时间序列是随机项的线性组合和前期的线性函数,即引入滞后算子Q,模型可以表示为:
MATLAB中时间序列的模型如下:
其中:
A(Q),B(Q),C(Q),D(Q),F(Q)都是含有延迟算子的多项式。
1.3.2时间序列模型估计,
(1)AR模型的估计命令:
m=ar(y,n)m,ref1=ar(y,n,approach,window)y:
观察值n:
模型的阶数approach:
计算模型参数的方法fb:
Forward-Backward方法ls:
最小二乘yw:
Yule-Walker方法burg:
BurgsLattic-Based方法gl:
GeomaticLattic方法window:
处理缺失值的方法now:
没有缺失值yw:
Yule-Walker方法处理缺失值,例1-5给出青岛啤酒2012年5月2日至2013年5月21日的日收盘价收益率,用2阶的AR模型进行估计。
文件:
fts_ex05.m结论:
偏相关系数都落在置信区间内,AR模型不适合描述其收益率。
(2)ARMAX模型的估计命令:
sys=armax(data,nanbncnk)sys=armax(data,nanbncnk,Name,Value)data:
数据nanbncnk:
滞后阶数ARMAX模型的格式:
其中:
如果只取nanc,则模型变为ARMA模型如果只取na,则模型变为AR模型如果只取nc,则模型变为MA模型如果只取na,nb,nk,则模型变为ARX模型即:
AR模型:
armax(data,na,na)ARX模型:
armax(data,na,na,nb,nb,nk,nk)MA模型:
armax(data,nc,nc)ARMA模型:
armax(data,na,na,nc,nc),例1-6利用例5中的数据,用MA模型进行估计。
文件:
fts_ex06.m例1-7利用青岛啤酒和沪深300指数2012年5月2日至2013年5月21日的日收盘价收益率,用ARMAX模型进行估计。
文件:
fts_ex07.m,(3)广义线性模型PEM调用方式:
sys=pem(data,na,na,nb,nb,nc,nc,nd,nd,nf,nf,nk,nk)(4)Box-Jenkins模型调用方式:
sys=bj(data,nb,nb,nc,nc,nd,nd,nf,nf,nk,nk),1.4GARCH模型,1.4.1广义自回归条件异方差(GARCH)模型,1.4.2GARCH模型的参数设定命令:
Spec=garchset(param1,val1,param2,val2,.)例1-8生成GARCH模型可识别的参数命令:
spec=garchset(c,0,k,0.0001,garch,0.9,arch,0.05),1.4.3模拟生成GARCH(P,Q)数据命令:
y=garchsim(spec,num)例1-9模拟生成出例8中GARCH(1,1)模型的10个样本值。
命令:
spec=garchset(c,0,k,0.0001,garch,0.9,arch,0.05)y=garch(spec,10),1.4.4GARCH模型的参数估计命令:
Coeff,Errors,LLF,Innovations,Sigmas=garchfit(Spec,Series)Series:
时间序列的样本观测值Coeff:
模型的参数估计值Errors:
模型参数的标准差LLF:
最大似然估计法中的对数目标函数值Innovations:
残差向量Sigmas:
对应于Innovations的标准差。
例1-10对于例8中的GARCH(1,1)模型,模拟生成数据,然后进行估计。
文件:
fts_ex10.m,1.5金融时间序列GUI,1.5.1ftstool演示1.5.2ftsgui演示1.5.3tatool演示,1.5.1ftstool,1.建立和管理时间序列对象;2.并可以连接ftstool。
演示文件:
ftst.mat,1.5.2ftsgui,主窗口,演示文件:
disney.mat,1.5.3tatool,1.获取股票数据2.分析股票走势3.各种指标分析,演示文件:
tat.mat,案例1由上证指数2011.1.1-2011.12.31的成交量数据,建立ARMA模型,并预测未来10天的成交量。
文件:
anli01.m,第2章固定收益证券计算,2.1固定收益证券基本概念,定义:
固定收益证券是指持券人可以在特定的时间内取得固定的收益并预先知道取得收益的数量和时间,如固定利率债券、优先股股票等。
交易日:
买卖双方达成交易的日期。
交割日:
买方支付价格和卖方交割证券的日期。
起息期间:
上一次付息日与下一次付息日之间的天数。
交割日距离到期日的天数:
规则是包括交割日不包括到期日。
起息日到交割日天数:
含计息日不含交割日。
到期日:
固定收益证券的终止日期。
常见应计期间计算方法:
2.2现金流计算函数,2.2.1现金流基本计算,2.2.2计算复杂形式现金流,例2-1某债券结算日为2012年10月1日,到期日为2013年3月31日,年贴现率为0.0497,求债券收益率。
文件:
fis_ex01.m,2.2.3短期债券回购计算TBEDiscount=tbillrepo(RepoRate,InitialDiscount,PurchaseDate,SaleDate,Maturity)RepoRate:
回购利率InitialDiscount:
初始贴现率PurchaseDate:
购买日期SaleDate:
卖出日期Maturity:
到期日TBEDiscount:
回购盈亏平衡点的贴现率,例2-2短期债券初始贴现率为0.0475,债券到期日为2013年4月3日,购买债券日期为2013年1月3日,卖出日期为2013年2月3日,回购利率为0.045,求该项投资的盈亏平衡点贴现率。
文件:
fis_ex02.m,2.2.4国库券收益MMYield,BEYield,Discount=tbillyield(Price,Settle,Maturity)Price:
面值为100的国库券价格Settle:
结算日Maturity:
到期日MMYield:
货币市场的收益BEYield:
债券市场的收益Discount:
债券的贴现率,例2-3已知债券的价格为98.75,结算日期为2012年10月1日,到期日为2013年3月31日,将其分别折算为货币市场收益率、债券市场收益率和贴现率。
文件:
fis_ex03.m,2.2.5可转换债券定价CbMatrix,UndMatrix,DebtMatrix,EqtyMatrix=cbprice(RiskFreeRate,StaticSpread,Sigma,Price,ConvRatio,NumSteps,IssueDate,Settle,Maturity,CouponRate)RiskFreeRate:
无风险利差StaticSpread:
静态利差Sigma:
股票波动的标准差ConvRatio:
转换比例CouponRate:
息票率CbMatrix:
可转换债券的可转换价格矩阵UndMatrix:
二叉树格式的债券价格DebtMatrix:
可转换债券价格的债券部分EqtyMatrix:
可转换债券价格的股票部分,例2-4已知无风险利率为0.05,标的资产波动标准差为0.3,可转换债券转换比率为1:
1,二叉树时间离散数目为200个时间段。
债券发行日为2002年1月2日,结算日为2002年1月2日,到期日为2007年1月2日,息票率为0.04,每年支付2次利率,天数采用30/360(SIA)方法。
月末法则默认为1,红利以绝对数量美元支付,在2004年1月2日以110元的价格赎回。
文件:
fis_ex04.m,2.2.6固定收益久期Duration,ModDuration=cfdur(CashFlow,Yield)CashFlow:
各期现金流Yield:
贴现率Duration:
久期ModDuration:
修正的久期,2.3利率期限结构,利率期限结构是指在在某一时点上,不同期限资金的收益率与到期期限之间的关系。
利率的期限结构反映了不同期限的资金供求关系,揭示了市场利率的总体水平和变化方向,为投资者从事债券投资和政府有关部门加强债券管理提供可参考的依据。
2.3.1已知债券收益率计算利率期限结构调用方式:
ZeroRates,CurveDates=zbtyield(Bonds,Yields,Settle,OutputCompounding)Bonds:
息票的时间利率和面值OutputCompounding:
复利的计算方式ZeroRates:
期限结构上的利率CurveDates:
期限结构的日期,例2-5已知国债面值为100美元,各期收益率如下表,试分析上述品种构成的利率期限结构。
文件:
fis_ex05.m,2.3.2计算特定时间收益率调用方式:
Rates=ratetimes(Compounding,RefRates,RefEndDates,RefStartDates,EndDates,StartDates,ValuationDate)Compounding:
每年支付利息的频率RefRates:
每个时间段的利率RefEndDates:
时间段的结束日期RefStartDates:
时间段的开始日期EndDates:
新时间段的结束日期StartDates:
新时间段的开始日期ValuationDate:
利率的评估日,例2-6如果已知原始利率期限结构如下:
求出对应于下面日期的利率:
文件:
fis_ex06.m,第3章资产组合计算,3.1资产组合基本原理,一般来说,投资者对于投资活动所最关注现的问题是预期收益和预期风险的关系。
投资者或“证券组合”管理者的主要意图,是尽可能建立起一个有效组合。
那就是在市场上为数众多的证券中,选择若干证券进行组合,以求得单位风险水平上的收益最高,或单位收益水平上风险最小。
3.1.1基本函数,3.1.2资产组合VaR调用方式:
ValueAtRisk=portvrisk(PortReturn,PortRisk,RiskThreshold,PortValue)PortReturn:
总资产的回报PortRisk:
总资产的标准差RiskThreshold:
概率阈值PortValue:
资产总的价值,例3-1已知资产年回报率为0.0029,标准差为0.0308,资产现在价值为1亿,求1%水平下资产的在险价值。
文件:
pf_ex01.m,3.2资产组合有效前沿,3.2.1均值方差有效前沿命令:
PortRisk,PortReturn,PortWts=frontcon(ExpReturn,ExpCovariance,NumPorts,PortReturn,AssetBounds,Groups,GroupBounds)ExpReturn:
每项资产预期回报ExpCovariance:
资产之间的协方差矩阵NumPorts:
资产组合有效前沿上的点的个数PortReturn:
有效前沿上每个点的回报AssetBounds:
资产权重的上下限区间Groups:
区分资产是否属于群GroupBounds:
每种群权重约束区间PortRisk:
组合的标准差PortReturn:
组合的回报PortWts:
权重,3.2.2带约束条件的资产组合有效前沿命令:
PortRisk,PortReturn,PortWts=portopt(ExpReturn,ExpCovariance,NumPorts,PortReturn,ConSet)ConSet:
约束条件其他同上。
例3-2各资产的相关系数矩阵、预期回报和标准差如下表,试给出有效前沿。
文件:
pf_ex02.m,3.2.3线性规划求解组合资产问题MATLAB中线性规划形式:
命令:
x=linprog(f,A,b)x=linprog(f,A,b,Aeq,beq,lb,ub),例3-3某资产组合中有3种资产,各资产的收益率分别为0.2、0.1、0.15。
要求资产1与资产3的权重小于资产2的权重,且没有卖空。
求解使得上述收益率最大的投资组合。
文件:
pf_ex03.m,例3-4以我国上证股票代号为600006到600010(2012.4.10-2013.4.10)的5只股票为例,考虑如何在这5只股票中选择一个最优权重式的组合的收益达到2%的月收益,同时使得组合的风险在所有满足2%的月收益的可能组合中风险最小(考虑允许卖空和不允许卖空)文件:
pf_ex04.m,第4章金融衍生品计算,本章框架,4.1金融衍生产品种类,4.2欧式期权计算,4.2.1Black-Scholes方程这个表达式就是表示期权价格变化的Black-Scholes偏微分方程。
它同时适合欧式看涨期权、欧式看跌期权、美式看涨期权和美式看跌期权,只是它们的终值条件和边界条件不同,其价值也不相同。
4.2.2欧式期权价格函数,命令Call,Put=blsprice(Price,Strike,Rate,Time,Volatility,Yield)输入参数Price标的资产价格Strike执行价Rate无风险利率Time距离到期日的时间,即期权的存续期Volatility标的资产的标准差Yield标的资产的红利率输出参数Call欧式看涨期权价格Put欧式看跌期权价格,例4-1股票价格为100,股票波动率标准差为0.5,无风险率为10,期权执行价95,存续期为0.25年,试计算该股票欧式期权价格。
Call,Put=blsprice(100,95,0.1,0.25,0.5)Call=13.6953Put=6.3497,4.2.3欧式期权希腊字母,4.2.4期货期权定价函数,输入方式:
Call,Put=blkprice(Price,Strike,Rate,Time,Volatility)输入参数Price期货价格Strike期货期权执行价Rate无风险利率Time期权存续期Volatility期货变化标准差输出参数Call欧式看涨期权价格Put欧式看跌期权价格,4.3衍生产品定价数值解,4.3.1二叉树模型对于一些期权,无法像欧式期权一样有解析解,因此需要用数值解进行近似计算,二叉树方法就是其中一种。
二叉树期权定价模型把时间分成许多小的时间段,并假设期权价格波动只有向上和向下两个方向,且假设在整个考察期内,价格每次向上(或向下)波动的概率和幅度不变。
得到二叉树结构图,最后根据二叉树进行倒推定价。
二叉树模型分为:
CRR二叉树模型和EQP二叉树模型。
4.3.2二叉树定价函数命令:
AssetPrice,OptionValue=binprice(Price,Strike,Rate,Time,Increment,Volatility,Flag,DividendRate,Dividend,ExDiv)Increment:
时间的增量Volatility:
波动率的标准差Flag:
看涨期权(Flag=1),看跌期权(Flag=0)DividendRate:
默认值为0,表示没红利,如果给出了红利率,Dividend与ExDiv值为0。
Dividend:
标的资产价外红利金额,除了固定红利率之外的红利。
ExDiv:
标的资产除息日期。
AssetPrice:
二叉树每个节点价格。
OptionValue:
期权在每个节点现金流。
例4-2股票价格为52,无风险利率为10,期权存续期为5个月,波动率的标准差为0.4,在3个半月(折合时间为3.5)发放红利2.06元,看跌期权执行价为50,利用二叉树模型估计看跌期权价格。
输入命令:
Price,Option=binprice(52,50,0.1,5/12,1/12,0.4,0,0,2.06,3.5),4.4证券类衍生产品定价函数,1.证券特征定义(StockSpec)调用方式StockSpec=stockspec(Sigma,AssetPrice,DividendType,DividendAmounts,ExDividendDates)输入参数Sigma标的资产波动率AssetPrice标的资产的价格DividendType红利发放方式,“cash”现金红利绝对额,“constant”常数红利,“continuous”连续形式红利。
DividendAmounts发放红利数量ExDividendDates除息日,如果红利是连续型的,则不需要该参数。
4.4.1分类定价,2.无风险收益率格式(RateSpec)命令:
RateSpec,RateSpecOld=intenvset(RateSpec,Parameter1,Value1,Parameter2,Value2)输入参数RateSpec旧无风险利率格式Parameter1参数1的名称Value1参数1的值Parameter2参数2的名称Value2参数2的值,输出参数RateSpec无风险利率新格式RateSpecOld无风险利率旧格式RateSpec中各个参数内容如下Disc为贴现率Rates国债票息StartDates开始日EndDates结束日ValuationDate评估日,即价格树起始时间Basis应计天数计算方式EndMonthRule月末法则Compounding票息转换为贴现率方式,3.树图离散时间格式
(1)CRR型树时间离散格式调用方式TimeSpec=crrtimespec(ValuationDate,Maturity,NumPeriods)输入参数ValuationData评估日,CRR型树起始日期Maturity到期日NumPeriods离散时间段
(2)EQP型树时间离散格式调用方式TimeSpec=eqptimespec(ValuationDate,Maturity,NumPeriods)输入参数同上,4.4.2证券类衍生产品二叉树建立,1.CRR型二叉树函数的调用命令:
CRRTree=crrtree(StockSpec,RateSpec,TimeSpec)输入参数StockSpec股票的格式RateSpec利率的格式TimeSpec时间的离散化方法输出参数CRRTree价格树2.EQP型二叉树函数的调用命令:
EQPTree=eqptree(StockSpec,RateSpec,TimeSpec),例4-3股票波动的标准差为0.2,标的资产的价格为50,红利类