楼主: aywinng
15802 11

[问答] 请教如何将多个利率曲线画在一张三维图中。 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

67%

还不是VIP/贵宾

-

威望
0
论坛币
350 个
通用积分
0.3600
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
954 点
帖子
122
精华
0
在线时间
237 小时
注册时间
2007-7-17
最后登录
2024-4-24

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如题。总共60个即期利率曲线(每天一个),我想把这些曲线按照时间都放在一张三维图中。

相关代码如下:

PlottingDates = CurveSettle+20:30:CurveSettle+365*25;
TimeToMaturity = yearfrac(CurveSettle,PlottingDates);
NSParYields = NSModel.getParYields(PlottingDates);
plot3(TimeToMaturity,n,NSParYields)

运行出错:
Vectors must be the same lengths.




我知道问题应该是出在红色的n上面,n就是从1到60,我不知道应该怎样实现我的目的。应该是很简单的问题,但是我实在不擅长这方面的知识,希望高人来帮我一下。是不是程序用错了呢?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:利率曲线 三维图 maturity vectors Curves 曲线 三维 如何

沙发
aywinng 发表于 2012-4-16 11:40:11 |只看作者 |坛友微信交流群
有人明白这个问题吗?请来帮我一下,非常感谢。自己顶

使用道具

藤椅
epoh 发表于 2012-4-16 16:32:03 |只看作者 |坛友微信交流群
aywinng 发表于 2012-4-16 11:40
有人明白这个问题吗?请来帮我一下,非常感谢。自己顶
个人认为应该不适合plot3
假设n=60,PlottingDates相同
NSParYields不同(这里我用NSParYields+0.001*i)
利用loop,画出60条curves

Settle = repmat(datenum('30-Apr-2008'),[6 1]);
Maturity = [datenum('07-Mar-2009');datenum('07-Mar-2011');...
datenum('07-Mar-2013');datenum('07-Sep-2016');...
datenum('07-Mar-2025');datenum('07-Mar-2036')];

CleanPrice = [100.1;100.1;100.8;96.6;103.3;96.3];
CouponRate = [0.0400;0.0425;0.0450;0.0400;0.0500;0.0425];
Instruments = [Settle Maturity CleanPrice CouponRate];

NSModel = IRFunctionCurve.fitNelsonSiegel('Zero',datenum('30-Apr-2008'),Instruments);

CurveSettle=733528 ;     %datenum('30-Apr-2008')
PlottingDates = CurveSettle+20:30:CurveSettle+365*25;
TimeToMaturity = yearfrac(CurveSettle,PlottingDates);
NSParYields = NSModel.getParYields(PlottingDates);
%plot(PlottingDates,NSParYields,'r')
%hold on
%datetick('x')

%%%%
n=60
figure;  
hold on;
for i=1:n     
plot(PlottingDates,(NSParYields+0.001*i));
end
datetick('x')
   ns.bmp      

使用道具

板凳
aywinng 发表于 2012-4-17 01:05:15 |只看作者 |坛友微信交流群
epoh 发表于 2012-4-16 16:32
个人认为应该不适合plot3
假设n=60,PlottingDates相同
NSParYields不同(这里我用NSParYields+0.001*i ...
高手!好厉害。但是我还是想画一个三维图。我把我的数据简化一下,变成10组,前辈帮我看看可以吗?

x轴范围是0-10(表示到期时间),y轴范围是0-10(表示共十条利率曲线),z轴范围是0-0.05(表示即期利率)。

x轴的取值是 x = [1 2 3 4 5 7 10];


十组即期利率数据的矩阵表示如下:
rate = [0.0204        0.0314        0.0384        0.0428        0.0455        0.0483        0.0497
0.0179        0.0316        0.0389        0.0429        0.0452        0.0474        0.0488
0.0165        0.0311        0.0385        0.0424        0.0447        0.0469        0.0484
0.0155        0.0304        0.0377        0.0417        0.0439        0.0462        0.0477
0.0148        0.0295        0.037        0.041        0.0433        0.0456        0.0471
0.0155        0.0293        0.0365        0.0404        0.0427        0.0451        0.0467
0.0164        0.0291        0.0358        0.0395        0.0418        0.0443        0.0461
0.0144        0.0284        0.0359        0.0399        0.0423        0.0447        0.0463
0.0146        0.0277        0.0349        0.0389        0.0414        0.044        0.0456
0.013        0.0252        0.0323        0.0364        0.0389        0.0416        0.0432]

我想把这些数据做成三维图,应该怎么实现呢?我用Matlab自带的图形工具总是不成功,不知道问题出在那里。
附件就是我想要实现的图形,是其他人论文中摘取的,拜托帮我看下。

即期利率三维图.jpg
附件是60条曲线放在一起的效果,大概就是这个样子的。

即期利率三维图.jpg (40.34 KB)

即期利率三维图.jpg

使用道具

报纸
epoh 发表于 2012-4-17 10:09:56 |只看作者 |坛友微信交流群
aywinng 发表于 2012-4-17 01:05
高手!好厉害。但是我还是想画一个三维图。我把我的数据简化一下,变成10组,前辈帮我看看可以吗?

x轴 ...
方便的话请告知原图之x,y,z各代表甚么

Vectors must be the same lengths.

x = [1 2 3 4 5 7 10];
所以y要设为 y=1:7,否则会出错

要画几条线,关键在rate matrix
如果是7 x 10,画10条
如果是7 x 60,画60条

所以x,y要设正确,图形才会漂亮

ratetranpose=rate'

plot3([1 2 3 4 5 7 10],ratetranpose,1:7)

grid on

   test.bmp

使用道具

地板
wenpan9933 发表于 2012-4-17 10:34:57 |只看作者 |坛友微信交流群
应该用mesh或者surf函数绘制三维曲面图。

使用道具

7
aywinng 发表于 2012-4-17 10:58:58 |只看作者 |坛友微信交流群
epoh 发表于 2012-4-17 10:09
方便的话请告知原图之x,y,z各代表甚么

Vectors must be the same lengths.
我上面写了x,y,z 所代表的意思啊。

x表示的是到期时间,y表示的是利率曲线的条数,z表示的是利率。

我想试试用mesh来实现。

使用道具

8
aywinng 发表于 2012-4-17 11:00:30 |只看作者 |坛友微信交流群
wenpan9933 发表于 2012-4-17 10:34
应该用mesh或者surf函数绘制三维曲面图。
能再详细一点吗?我也想用mesh来实现,但总是出错。

使用道具

9
aywinng 发表于 2012-4-17 11:32:29 |只看作者 |坛友微信交流群
epoh 发表于 2012-4-17 10:09
方便的话请告知原图之x,y,z各代表甚么

Vectors must be the same lengths.
我把图片重新上传了一次,现在能看到各个坐标了。谢谢帮助。

使用道具

10
aywinng 发表于 2012-4-17 13:07:34 |只看作者 |坛友微信交流群
嗯,搞定了,代码超级简单,大半夜的脑袋太晕了。谢谢大家的帮忙。

z = [0.0204        0.0314        0.0384        0.0428        0.0455        0.0483        0.0497
0.0179        0.0316        0.0389        0.0429        0.0452        0.0474        0.0488
0.0165        0.0311        0.0385        0.0424        0.0447        0.0469        0.0484
0.0155        0.0304        0.0377        0.0417        0.0439        0.0462        0.0477
0.0148        0.0295        0.037        0.041        0.0433        0.0456        0.0471
0.0155        0.0293        0.0365        0.0404        0.0427        0.0451        0.0467
0.0164        0.0291        0.0358        0.0395        0.0418        0.0443        0.0461
0.0144        0.0284        0.0359        0.0399        0.0423        0.0447        0.0463
0.0146        0.0277        0.0349        0.0389        0.0414        0.044        0.0456
0.013        0.0252        0.0323        0.0364        0.0389        0.0416        0.0432];

x=[1 2 3 4 5 7 10];

y = [1:10];

mesh(x,y,z)

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 23:34