当前位置:首页 » 股市行情 » matlab生成股票价格路径
扩展阅读
金钱豹自助餐攻略 2025-02-08 00:43:41

matlab生成股票价格路径

发布时间: 2023-08-03 17:38:50

『壹』 matlab绘制股市K线图

将上述数据输入到Excel,保存文件名为pfyh。代码为:
clear;clc;
[NUM]=xlsread('pfyh','B1:E11');n=[NUM];[ro,co]=size(n);
figure
candle(n(ro-10:ro,2),n(ro-10:ro,3),n(ro-10:ro,4),n(ro-10:ro,1))
title('烛型图');
xlabel('日期');
ylabel('价格');
axis([0,inf,7,inf]);
dateaxis('x', 2, '1/4/2005')

『贰』 如何用matlab计算期权价格

参考论文
期权定价理论是现代金融学中最为重要的理论之一,也是衍生金融工具定价中最复杂的。本文给出了欧式期权定价过程的一个简单推导,并利用Matlab对定价公式给出了数值算例及比较静态分析,以使读者能更直观地理解期权定价理论。
关键词:Matlab;教学实践
基金项目:国家自然科学基金项目(70971037);教育部人文社科青年项目(12YJCZH128)
中图分类号:F83文献标识码:A
收录日期:2012年4月17日
现代金融学与传统金融学最主要的区别在于其研究由定性分析向定量分析的转变。数理金融学即可认为是现代金融学定量分析分支中最具代表性的一门学科。定量分析必然离不开相应计算软件的应用,Matlab就是一款最为流行的数值计算软件,它将高性能的数值计算和数据图形可视化集成在一起,并提供了大量内置函数,近年来得到了广泛的应用,也为金融定量分析提供了强有力的数学工具。
一、Black-Scholes-Merton期权定价模型
本节先给出B-S-M期权定价模型的简单推导,下节给出B-S-M期权定价模型的Matlab的实现。设股票在时刻t的价格过程S(t)遵循如下的几何Brown运动:
dS(t)=mS(t)dt+sS(t)dW(t)(1)
无风险资产价格R(t)服从如下方程:
dR(t)=rR(t)dt(2)
其中,r,m,s>0为常量,m为股票的期望回报率,s为股票价格波动率,r为无风险资产收益率且有0<r<m;dW(t)是标准Brown运动。由式(1)可得:
lnS(T):F[lnS(t)+(m-s2/2)(T-t),s■](3)
欧式看涨期权是一种合约,它给予合约持有者以预定的价格(敲定价格)在未来某个确定的时间T(到期日)购买一种资产(标的资产)的权力。在风险中性世界里,标的资产为由式(1)所刻画股票,不付红利的欧式看涨期权到期日的期望价值为:■[max(S(T)-X,0)],其中■表示风险中性条件下的期望值。根据风险中性定价原理,不付红利欧式看涨期权价格c等于将此期望值按无风险利率进行贴现后的现值,即:
c=e-r(T-1)■[max{S(T)-X,0}](4)
在风险中性世界里,任何资产将只能获得无风险收益率。因此,lnS(T)的分布只要将m换成r即可:
lnS(T):F[lnS(t)+(r-s2/2)(T-t),s■](5)
由式(3)-(4)可得欧式看涨期权价格:
c=S(t)N(d1)-Xe-r(T-1)N(d2)(6)
这里:
d1=■(7)
d2=■=d1-s■(8)
N(x)为均值为0标准差为1的标准正态分布变量的累积概率分布函数。S(t)为t时刻股票的价格,X为敲定价格,r为无风险利率,T为到期时间。欧式看跌期权也是一种合约,它给予期权持有者以敲定价格X,在到期日卖出标的股票的权力。
下面推导欧式看涨期权c与欧式看跌期权p的联系。考虑两个组合,组合1包括一个看涨期权加上Xe-r(T-1)资金,组合2包含一个看跌期权加上一股股票。于是,在到期时两个组合的价值必然都是:
max{X,S(T)}(9)
欧式期权在到期日之前是不允许提前执行的,所以当前两个组合的价值也必相等,于是可得欧式看涨期权与看跌期权之间的平价关系(put-call parity):
c+Xe-r(T-t)=p+S(t)(10)
由式(10)可得,不付红利欧式看跌期权的价格为:
p=Xe-r(T-t)N(-d2)-S(t)N(-d1)(11)
二、Black-Scholes-Merton模型的Matlab实现
1、欧式期权价格的计算。由式(6)可知,若各参数具体数值都已知,计算不付红利的欧式看涨期权的价格一般可以分为三个步骤:先算出d1,d2,涉及对数函数;其次计算N(d1),N(d2),需要查正态分布表;最后再代入式(6)及式(11)即可得欧式期权价格,涉及指数函数。不过,欧式期权价格的计算可利用Matlab中专有blsprice函数实现,显然更为简单:
[call,put]=blsprice(Price,Strike,Rate,Time,Volatility)(12)
只需要将各参数值直接输入即可,下面给出一个算例:设股票t时刻的价格S(t)=20元,敲定价格X=25,无风险利率r=3%,股票的波动率s=10%,到期期限为T-t=1年,则不付红利的欧式看涨及看跌期权价格计算的Matlab实现过程为:
输入命令为:[call,put]= blsprice(20,25,0.03,0.1,1)
输出结果为:call=1.0083put=5.9334
即购买一份标的股票价格过程满足式(1)的不付红利的欧式看涨和看跌期权价格分别为1.0083元和5.9334元。
2、欧式期权价格的比较静态分析。也许纯粹计算欧式期权价格还可以不利用Matlab软件,不过在授课中,教师要讲解期权价格随个参数的变化规律,只看定价公式无法给学生一个直观的感受,此时可利用Matlab数值计算功能及作图功能就能很方便地展示出期权价格的变动规律。下面笔者基于Matlab展示欧式看涨期权价格随各参数变动规律:
(1)看涨期权价格股票价格变化规律
输入命令:s=(10∶1∶40);x=25;r=0.03;t=1;v=0.1;
c=blsprice(s,x,r,t,v);
plot(s,c,'r-.')
title('图1看涨期权价格股票价格变化规律');
xlabel('股票价格');ylabel('期权价值');grid on
(2)看涨期权价格随时间变化规律
输入命令:s=20;x=25;r=0.03;t=(0.1∶0.1∶2);v=0.1;c=blsprice(s,x,r,t,v);
plot(t,c,'r-.')
title('图2看涨期权价格随时间变化规律');
xlabel('到期时间');ylabel('期权价值');grid on
(3)看涨期权价格随无风险利率变化规律
s=20;x=25;r=(0.01∶0.01∶0.5);t=1;v=0.1;c=blsprice(s,x,r,t,v);
plot(r,c,'r-.')
title('图3看涨期权价格随无风险利率变化规律');
xlabel('无风险利率');ylabel('期权价值');grid on
(4)看涨期权价格随波动率变化规律
s=20;x=25;r=0.03;t=1;v=(0.1∶0.1∶1);c=blsprice(s,x,r,t,v);
plot(v,c,'r-.')
title('图4看涨期权价格随波动率变化规律');
xlabel('波动率');ylabel('期权价值');grid on
(作者单位:南京审计学院数学与统计学院)

主要参考文献:
[1]罗琰,杨招军,张维.非完备市场欧式期权无差别定价研究[J].湖南大学学报(自科版),2011.9.
[2]罗琰,覃展辉.随机收益流的效用无差别定价[J].重庆工商大学学报(自科版),2011.
[3]邓留宝,李柏年,杨桂元.Matlab与金融模型分析[M].合肥工业大学出版社,2007.

『叁』 求一个matlab程序,随机游走以100左右为基准的500个数据,图像类似于股票价格曲线

先说清楚概率分布啊,你这个所谓的游走表现为均匀分布还是高斯分布还是其他任何种类的概率分布,方差是多少。如果你只需要一个看的像那么回事的图的话,
a=normrnd(100,5,1,500);
plot(1:500,a);
把5改大点可以让波动幅度变大

『肆』 关于利用matlab绘制股票线型的数据问题

从bggf.mat 读得的bggf数据看上去有4列
看你用highlow 函数的调用方式,这四列应该是
开市价 最高价 最低价 收市价

而r是用size获得的数据的行数
之所以报错就是bggf(r-100:r,2)取下标的时候错了
r是数据的行数,肯定是个正整数没错,错就错在r-100
你文件里面的数据如果不足100行,那么r-100就会出现负数
数据正好是100行,那么r-100就会等于0
在matlab里面,下标是从1开始的正整数,所以发生以上情况就会错

如果你的数据是刚刚好100行的,那么完全不用这么麻烦,直接用:代替就可以了
highlow(bggf(:,2),bggf(:,3),bggf(:,4),bggf(:,1),'r')
但是这样写无论是数据有多少行,图都会照画,不足100行,超过100行照单全收

如果你的数据有超过100行,你只想取最后的100行,你应该减99而不是100
highlow(bggf(r-99:r,2),bggf(r-99:r,3),bggf(r-99:r,4),bggf(r-9:r,1),'r')
但是当数据不足行时,这样写会同样报错

『伍』 怎么用matlab绘制股市K线图

K线图(Candlestick Charts)又称蜡烛图、日本线、阴阳线、棒线、红黑线等,常用说法是“K线”。它是以每个分析周期的开盘价、最高价、最低价和收盘价绘制而成。
K线图 是技术分析的一种,最早日本人于十九世纪所创,起源于日本十八世纪德川幕府时代(1603~1867年)的米市交易,用来计算米价每天的涨跌,被当时日本米市的商人用来记录米市的行情与价格波动,包括开市价、收市价、最高价及最低价,阳烛代表当日升市,阴烛代表跌市。这种图表分析法在当时的中国以至整个东南亚地区均尤为流行。由于用这种方法绘制出来的图表形状颇似一根根蜡烛,加上这些蜡烛有黑白之分,因而也叫阴阳线图表。通过K线图,人们能够把每日或某一周期的市况表现完全记录下来,股价经过一段时间的盘档后,在图上即形成一种特殊区域或形态,不同的形态显示出不同意义。可以从这些形态的变化中摸索出一些有规律的东西出来 。K线图形态可分为反转形态、整理形态及缺口和趋向线等。后K线图因其细腻独到的标画方式而被引入到股市及期货市场。股市及期货市场中的K线图的画法包含四个数据,即开盘价、最高价、最低价、收盘价,所有的k线都是围绕这四个数据展开,反映大势的状况和价格信息。如果把每日的K线图放在一张纸上,就能得到日K线图,同样也可画出周K线图、月K线图。
它是以每个分析周期的开盘价、最高价、最低价和收盘价绘制而成。以绘制日k线为例,首先确定开盘和收盘的价格,它们之间的部分画成矩形实体。如果收盘价格高于开盘价格,则k线被称为阳线,用空心的实体表示。反之称为阴线用黑色实体或白色实体表示。很多软件都可以用彩色实体来表示阴线和阳线,在国内股票和期货市场 ,通常用红色表示阳线,绿色表示阴线。(但涉及到欧美股票及外汇市场的投资者应该注意:在这些市场上通常用绿色代表阳线,红色代表阴线,和国内习惯刚好相反。)用较细的线将最高价和最低价分别与实体连接。最高价和实体之间的线被称为上影线,最低价和实体间的线称为下影线。
用同样的方法,如果用一分钟价格数据来绘k线图,就称为一分钟k线。用一个月的数据绘制k线图,就称为月k线图。绘图周期可以根据需要灵活选择,在一些专业的图表软件中还可以看到2分,3分钟等周期的k线。
k线是一种特殊的市场语言,不同的形态有不同的含义。

『陆』 怎么用matlab编程把股票交易的分笔数据处理成1分钟数据

P=[];‘输入,开盘价,最高价,最低价,收盘价成交量依次5天的数据’
T=[];’输出,即第二日的收盘’
net=newff(minmax(P),[7,1],,'traingdx');
net.trainParam.epochs=1000; ‘最大训练次数,根据需要可自行调节’
net.trainParam.goal=0.01; ‘误差’
net.trainParam.lr=0.01; ‘学习率’
net=train(net,P,T); ‘训练网络’
test=[];‘待预测数据输入’
out=sim(net,test); ‘仿真预测’
我的这个程序没有进行初始化,你还需要先将数据进行初始化后才能算。

『柒』 想问一下怎样用MATLAB画10000条股票的价格走势

xlsread 可以导入数据 比如data=xlsread('dd.xls','Sheet1','B1:G2')就是读取dd.xls文件里面b1到g2之间的数据!

『捌』 这个用matlab怎么写程序(画股票7日移动平均线)

%没有数据,所以不知道会不会有问题,你试一下
data=xlsread('C:\新建文件夹\111.xls');
nlen=length(data);
n=7;
data_avg=zeros(nlen-n+1,1);
for i=1:nlen-n+1
data_avg(i)=mean(data(i:i+n-1));
end
xlswrite('C:\新建文件夹\111.xls',data_avg,'Sheet1','B7')

『玖』 如何在matlab中编写股市macd的计算方法

你的公式太不明确,需要知道太多量才能计算得到要的结果
下面是根据你上面写的模糊的公式编的,有问题可以Hi我。

function [DI,DIF,DEA,BAR,MACD]=stocks(tmaxi,tci,tmini,EMA12_y,EMA26_y,DIF_9,MACD_y)
%需要知道的量
%1.当日最高指数tmaxi
%2.当日收盘指数tci
%3.当日最低指数tmini
%4.昨日的12日EMA:EMA_12
%5.昨日的26日EMA:EMA_26
%6.最近9日的DIF:DIF_9
%7.昨日的MACD:MACD_y
%当然如果给出前面9个或者EMA12,26
%之后的就可以计算了
DI=[tmaxi,tci,tmini*2];
L12=0.1538;
L26=0.0741;
EMA12=L12*tci+11/13*EMA12_y;
EMA26=L26*tci+25/26*EMA26_y;
DIF=EMA12-EMA26;
DEA=sum(DIF_9)/9;
BAR=DIF-DEA;
MACD=DIF-DIF(end)*0.2+MACD_y;
MACD_y=[MACD_y,MACD];
MACD_y(1)=[];
end

『拾』 怎么用matlab将股票历史行情的txt转换成金融时间序列数据

运用ascii2fts。
比如下面这个txt文档:
我想把它转化成金融时间序列的数据:
用fts=ascii2fts('文档名称.txt',作为标题的是txt中的第几行,作为金融时间序列的抬头的是txt中的第几行,忽略的行);