金融软件应用操作信息01共享.docx
- 文档编号:10135607
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:19
- 大小:73.38KB
金融软件应用操作信息01共享.docx
《金融软件应用操作信息01共享.docx》由会员分享,可在线阅读,更多相关《金融软件应用操作信息01共享.docx(19页珍藏版)》请在冰点文库上搜索。
金融软件应用操作信息01共享
金融软件基础操作
一、MATLAB环境介绍:
1、命令窗口
2、命令历史窗口
3、工作空间
4、M文件编辑窗口
5、当前路径窗口
6、图形窗口
7、帮助窗口
二、几个重要的命令
1、help
2、load
3、path
4、save
5、plot
6、clc
7、clear
8、clf
三、基本操作练习
1、命令窗运行入门
【例1-1】求
的算术运算结果。
【例1-2】简单矩阵
的输入步骤。
【例1-3】矩阵的分行输入
【例1-4】指令的续行输入
【解答】
s=1-1/2+1/3-1/4+1/5-1/6...
+1/7-1/8
2、复数和复数矩阵
【例1-5】复数
表达,
及计算
。
【解答】
(1)经典教科书的直角坐标表示法
z1=3+4i
(2)采用运算符构成的直角坐标表示法和极坐标表示法
%运算符构成的直角坐标表示法
z2=1+2*i
%运算符构成的极坐标表示法
z3=2*exp(i*pi/6)
z=z1*z2/z3
z2=
1.0000+2.0000i
z3=
1.7321+1.0000i
z=
0.3349+5.5801i
【例1-6】复数矩阵的生成及运算
A=[1,3;2,4]-[5,8;6,9]*i
B=[1+5i,2+6i;3+8*i,4+9*i]
C=A*B
A=
1.0000-5.0000i3.0000-8.0000i
2.0000-6.0000i4.0000-9.0000i
B=
1.0000+5.0000i2.0000+6.0000i
3.0000+8.0000i4.0000+9.0000i
C=
1.0e+002*
0.99001.1600-0.0900i
1.1600+0.0900i1.3700
【例1-7】求上例复数矩阵C的实部、虚部、模和相角。
C_real=real(C)
C_imag=imag(C)
C_magnitude=abs(C)
C_phase=angle(C)*180/pi%以度为单位计算相角
C_real=
99116
116137
C_imag=
0-9
90
C_magnitude=
99.0000116.3486
116.3486137.0000
C_phase=
0-4.4365
4.43650
3、绘图
【例1-8】画出曲线
及其它的包络线
。
的取值范围是
。
【解答】
%定义自变量取值数组
t=0:
pi/50:
4*pi;
%计算与自变量相应的y0数组
y0=exp(-t/3);
%计算与自变量相应的y数组
y=exp(-t/3).*sin(3*t);
%用不同颜色、线型绘制曲线
plot(t,y,'-r',t,y0,':
b',t,-y0,':
b')
%在“坐标纸”画小方格
grid
【例1-9】画出
所表示的三维曲面。
的取值范围是
。
【解答】
clear;
%定义自变量x的一维刻度向量
x=-8:
0.5:
8;
%定义自变量y的一维刻度向量
y=x';
%计算自变量平面上取值点
坐标的二维数组
X=ones(size(y))*x;
%计算自变量平面上取值点
坐标的二维数组
Y=y*ones(size(x));
%计算中间变量
R=sqrt(X.^2+Y.^2)+eps;%
<5>
%计算与自变量二维数组相应的函数值
<6>
Z=sin(R)./R;
%绘制三维网格图
plot3(X,Y,Z);
mesh(Z);
4、命令行的编辑
【例1-10】命令行操作过程示例。
(1)计算
,则应依次键入以下字符
y1=2*sin(0.3*pi)/(1+sqrt(5))
(2)按【Enter】键,该指令被执行,并给出结果
假如希望调回前面输入的指令重新运行,或希望对前面输入的指令加以修改后再运行,只要反复按动键盘上的“”键,就可从内存中把以前输入的那指令调回到当前行,以供重新运行或修改后运行。
(3)利用指令回调,进行新的计算。
若想计算
。
用键调回已输入指令y1=2*sin(0.3*pi)/(1+sqrt(5));然后把y1改成y2;把sin改成cos便可。
即得
y2=2*cos(0.3*pi)/(1+sqrt(5))
y2=
0.3633
5、指令who和whos
【例1-11】用who检查MATLAB内存变量。
在指令窗中运行以下指令,就可看到内存变量。
who
Yourvariablesare:
RYxy1
XZyy2
【例1-12】键入whos,获得驻留变量的详细情况:
全部变量名,变量的数组维数,占用字节数,变量的类别(如双精度),是否复数等。
whos
NameSizeBytesClass
R33x338712doublearray
X33x338712doublearray
Y33x338712doublearray
Z33x338712doublearray
x1x33264doublearray
y33x1264doublearray
y11x18doublearray
y21x18doublearray
Grandtotalis4424elementsusing35392bytes
6、变量的文件保存和读取-save和load指令
【例1-13】数据的存取。
(1)建立用户目录,并使之成为当前目录,保存数据
%在D盘上创建目录my_dir
mkdir('d:
\','my_dir');
%使d:
\my_dir成为当前目录
cdd:
\my_dir
%选择内存中的X,Y,Z变量保存为saf.mat文件
savesafXYZ
%显示目录上的文件
dir
...saf.mat
(2)清空内存,从saf.mat向内存装载变量Z
%清除内存中的全部变量
clear
%把saf.mat文件中的Z变量装入内存
loadsafZ
%检查内存中有什么变量
who
Yourvariablesare:
Z
〖说明〗
如果一组数据是经过长时间的复杂计算后获得的,那末为避免再次重复计算,常使用save加以保存。
此后,每当需要,都可通过load重新获取这组数据。
这种处理模式常在实际中被采用。
三、帮助获取
1、命令窗中的help命令
(1)直接使用help获得命令的使用说明
【例1-14】假如准确知道所要求助的主题词,或指令名称,使用help是获得在线帮助最简单有效的途径。
本例演示:
矩阵对数函数logm使用说明的在线求助。
helplogm
LOGMMatrixlogarithm.
L=LOGM(A)isthematrixlogarithmofA,theinverseofEXPM(A).ComplexresultsareproducedifAhasnegativeeigenvalues.Awarningmessageisprintedifthecomputedexpm(L)isnotclosetoA.
[L,esterr]=logm(A)doesnotprintanywarningmessage,butreturnsanestimateoftherelativeresidual,norm(expm(L)-A)/norm(A).
IfAisrealsymmetricorcomplexHermitian,thensoisLOGM(A).
Somematrices,likeA=[01;00],donothaveanylogarithms,realorcomplex,andLOGMcannotbeexpectedtoproduceone.
SeealsoEXPM,SQRTM,FUNM.
(2)使用help命令进行分类搜索
【例1-15】运行不带任何限定的help,可以得到分类名称明细表。
help
HELPtopics:
matlab\general-Generalpurposecommands.
matlab\ops-Operatorsandspecialcharacters.
matlab\lang-Programminglanguageconstructs.
matlab\elmat-Elementarymatricesandmatrixmanipulation.
matlab\elfun-Elementarymathfunctions.
matlab\specfun-Specializedmathfunctions.
............
Formorehelpondirectory/topic,type"helptopic".
(3)采用helptopic获得具体子类的命令明细
【例1-16】如果用户想知道有关矩阵操作指令一栏表,则运行以下指令。
helpelmat
Elementarymatricesandmatrixmanipulation.
Elementarymatrices.
zeros-Zerosarray.
ones-Onesarray.
............
Basicarrayinformation.
size-Sizeofmatrix.
length-Lengthofvector.
............
Matrixmanipulation.
reshape-Changesize.
diag-Diagonalmatricesanddiagonalsofmatrix.
............
Specialvariablesandconstants.
ans-Mostrecentanswer.
eps-Floatingpointrelativeaccuracy.
............
Specializedmatrices.
compan-Companionmatrix.
gallery-Highamtestmatrices.
............
2、命令窗中的lookfor命令
【例1-17】查找包含积分这个关键词的所有指令。
lookforintegral
ELLIPKECompleteellipticintegral.
EXPINTExponentialintegralfunction.
DBLQUADNumericallyevaluatedoubleintegral.
INNERLPUsedwithDBLQUADtoevaluateinnerloopofintegral.
QUADNumericallyevaluateintegral,lowordermethod.
QUAD8Numericallyevaluateintegral,higherordermethod.
COSINTCosineintegralfunction.
SININTSineintegralfunction.
ASSEMAAssemblesareaintegralcontributionsinaPDEproblem.
COSINTCosineintegralfunction.
FOURIERFourierintegraltransform.
IFOURIERInverseFourierintegraltransform.
SININTSineintegralfunction.
四、程序设计基础
1、for循环结构
【例1-18】一个简单的for循环示例。
fori=1:
10%i依次取1,2,…10,.
x(i)=i;%对每个i值,重复执行循环体,
end
x%要求显示运行后数组x的值。
x=
12345678910
2、while循环结构
【例1-19】Fibonacci数组的元素满足Fibonacci规则:
,
;且
。
现求该数组中第一个大于10000的元素。
a
(1)=1;a
(2)=1;i=2;
whilea(i)<=10000
%当现有的元素仍小于10000时,求解下一个元素。
a(i+1)=a(i-1)+a(i);
i=i+1;
end
i,a(i)
i=
21
ans=
10946
3、if-else-end分支结构
【例1-20】一个简单的分支结构。
cost=10;number=12;
ifnumber>8
sums=number*0.95*cost;
end
sums
sums=
114.0000
4、switch-case结构
【例1-21】
value=input('Enterthepositiveinteger:
');
switch(value)
case{1,3,5,7,9}
disp('Thevalueisodd.');
case{2,4,6,8,10}
disp('Thevalueiseven.');
otherwise
disp('Thevalueisoutofrange.');
end
5、脚本文件和函数文件
【例1-22】建立一个脚本文件将变量a,b的值互换,然后运行该脚本。
clear
a=1:
10;
b=[11:
14;15:
18];
c=a;
a=b;
b=c;
a
b
将以上代码保存为文件exch.m,然后在命令窗口中运行。
【例1-23】建立一个函数文件fexch.m将变量x,y的值互换,然后在命令窗口中调用该函数文件。
function[output1,output2]=fexch(input1,input2)
%Thisisfunctiontoexchangetwomatrices
%input1,input2areinputvariables
%output1,output2areoutputvaribales
output1=input2;
output2=input1;
%(return)
%Theendofthisexamplefunction
将以上代码保存为文件:
fexch.m,注意要保持文件名和函数名一致。
调用时以文件名来调用。
如果文件名和函数名不一致,调用时要采用文件名来调用。
clear
x=1:
10;
y=[11:
14;15:
18];
[x,y]=fexch(x,y)
金融时间序列数据分析操作
一、有关日期的常用命令
【例2-1】练习datenum和datestr两个函数的用法。
如今天的日期数表示。
【例2-2】计算两个日期间的间隔:
相隔多少天。
d=daysact('T1','T2');%T1,T2是字符串型日期。
计算2008-9-1至2008-12-31相隔多少天。
【例2-3】求两个日期之间的所有工作日。
bdates=busdays(sdate,edate,bdmode,holvec);
%sdate为开始日期,
%edate为结束日期,
%bdmode为工作日的频率,1-每天,2-每周,6-每年.
%holvec为指定的节假日(字符串或序列数)向量。
。
计算2008-9-1与2008-12-31间的所有工作日,工作频率为每周工作5天,其中2008-9-15,2008-10-1为节假日。
二、数组的创立和数据文件的读取
1、利用fints函数创立日期型数组
调用方式:
fts=fints(dates,data,datanames,freq,desc)
【例2-4】构建一个金融时间序列,日期从今天开始连续产生5个未来的日期序列,每个日期对应一个数据,数据采用randn函数产生,数据字段名为’return’。
数据说明信息为’test’。
(1)给出实现代码。
(2)将该时间序列数据保存为文本文件myfts_file.txt
stat=fts2ascii(filename,tsobj,exttext);
将时间序列数据tsobj保存为文本文件filename,并加上扩展名,exttext为描述性说明,紧跟在desc说明行的下一行。
stat=fts2ascii(filename,dates/times,data,colheads,desc,exttext);
colheads:
日期时间dates/times和数据data对应的字段名。
desc:
描述性参数。
stat成功标记。
(3)将该时间序列数据转换为矩阵数据,并将该矩阵保持为tsmat.mat数据文件。
tsmat=fts2mat(fts,dateflag,seriesname)
fts:
需要进行转换的时间序列数据
datefalg:
是否提取日期时间数据,0为不提取(默认),1表示提取,提取的日期数据是日期序列数格式。
seriesname:
仅提取该字段名对应的数据。
(4)求该时间序列数据的最大值、最小值、均值、标准差和对其从大到小排序排序。
max(myFts);min(myFts);mean(myFts);std(myFts)
sortfts(myFts);sortfts(myFts,'Data1');sortfts(myFts,'Data1',-1)
[SFTS,SIDX]=sortfts(myFts,'Data1',1)
2、金融时间序列文件的读取
调用方式:
fts=ascii2fts(filename,timedata,descrow,colheadrow,skiprows)
filename-ascii文件名并放单引号内(txt,dat)。
Timedata-文件中是否存在时间信息的字符标记。
若存在时间信息,则为't',否则为‘nt'。
descrow-文件中文字说明在哪一行。
colheadrow-每列变量名在哪一行。
skiprows-不需要输入且在字段名以后的行号。
【例2-5】用clc和clear命令进行初始化,然后采用该函数读取例2-4建立的myfts_file.txt。
给出实现代码。
【例2-6】用clc和clear命令进行初始化,然后采用load函数读取例2-4建立的tsmat.mat数据文件。
给出实现代码。
【例2-7】用clc和clear命令进行初始化,然后读取从网上下载的原始数据USD_CNY_D.xls。
给出实现代码。
1)采用File->ImportData…命令导入数据
字符串与数据是分开导入的。
2)将USD_CNY_D.xls另存为USD_CNY_D.txt,然后采用【例2-5】中的方法读取。
(1)查看并修改Excel文件中的日期格式;
(2)将修正Excel文件另存为txt文件,或者打开记事本将Excel文件内容拷入存储;将汉字翻译为英文;
(3)确定txt文件中说明内容的行号、字段名称的行号、字段名和数据之间的行号。
(4)函数调用实现数据文件读取;
【例2-8】特定日期抽取函数。
对【例2-7】导入的数据fts_ex1进行抽取操作。
todaily:
抽取日数据;
toweekly:
抽取周末数据;
tomonthly:
月末数据;
toquarterly:
季度末数据;
tosemily:
抽取半年末数据。
toannual:
抽取年末数据;
3、金融时间序列的相关、自相关和偏相关系数
【例2-9】导入美元人民币汇率时间序列数据文件USD_CNY_D.txt,并将其转化为矩阵数据。
求汇率时间序列与其变动率时间序列的相关系数。
求该汇率变动率时间序列的自相关系数和偏相关系数。
价格时间序列转化为收益率时间序列:
price_ret=price2ret(Series);
序列xt与序列yt的相关系数:
调用:
R=corrcoef(x,y);
序列yt自相关系数:
调用:
[ACF,Lags,Bounds]=autocorr(Series,nLags);
ACF-自相关系数函数值,与Lags一一对应。
如果某阶自相关系数超出Bounds区间,就表明存在该阶自相关。
序列yt偏自相关系数:
调用:
[PACF,Lags,Bounds]=parcorr(Series,nLags);
【解答】
4、金融时间序列界面功能练习
请按照教材P65-68,自行练习。
《MATLAB金融计算与金融数据处理》
练习
1、自行验证教材中示例代码
第2章P9-48、P33-38
第6章P230-253
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 金融 软件 应用 操作 信息 01 共享