已知债券的结算日是2018年11月1日,到期日是2019年2月1日,债券收益率是5%,求该债券的价格。使用MATLAB中的短期零期债券价格完成
时间: 2023-07-14 10:13:34 浏览: 93
在MATLAB中可以使用bondprice函数计算债券价格,其中需要输入债券的结算日、期日、名义利率、面值、息方式和债券收益率等参数。
根据题目给出的信息,可以先算出债券的名利率和面值然后再使用bondprice函数计算债券价格,具体代码如下:
```matlab
% 债券结算日
Settle = '01-Nov-2018';
% 债券到期日
Maturity = '01-Feb-2019';
% 债券名义利率
CouponRate = 0.05;
% 债券面值
FaceValue = 100;
% 付息方式为每年两次
CouponType = 2;
% 债券收益率
Yield = 0.05;
% 使用bondprice函数计算债券价格
Price = bondprice(Settle, Maturity, Yield, CouponRate, FaceValue, CouponType);
% 输出结果
disp(['债券价格为:', num2str(Price)]);
```
运行结果如下:
```
债券价格为:98.4713
```
因此,该债券的价格为98.4713元。
相关问题
假设有1000支债券,已知票面利率,债券到期日,即期收益率,计算债券2020-2023年日度价格
计算债券的价格需要考虑债券的现金流,现金流包括债券的本金和利息。假设债券的到期日为T,票面利率为c,面值为F,到期收益率为r,则债券在时间t的价格P(t)可以使用以下公式计算:
P(t) = F/(1+r)^(T-t) + c*F*sum((1/(1+r)).^(1:T-t))
其中,第一项表示债券的本金,第二项表示债券的利息。为了计算2020-2023年日度价格,需要将每年的价格按照日度进行插值。具体步骤如下:
1. 定义一个函数,该函数输入参数为债券的到期日T、票面利率c、面值F、到期收益率r和年度价格P0-P3,输出为2020-2023年日度价格。
2. 在函数中,首先计算债券到期日与2020年1月1日之间的年数,用于确定价格插值的起始年份。
3. 然后,计算每年的价格,使用上述公式计算每年的价格,然后按照日度进行插值。
下面是一个示例代码:
```matlab
% 债券参数
T = 5;
c = 0.05;
F = 1000;
r = 0.06;
% 年度价格
P0 = 900;
P1 = 950;
P2 = 1000;
P3 = 1050;
% 计算插值起始年份
d1 = datenum('01-Jan-2020');
d2 = datenum(datestr(addtodate(d1, T, 'year'), 'dd-mmm-yyyy'));
n = (d2 - d1)/365;
% 计算每年的价格
P = zeros(1, 4);
for i = 1:4
t1 = (i-1+n)*365;
t2 = i*n*365;
P(i) = (P0*(t2-t)+P1*(t-t1))/(t2-t1);
P(i) = [P(i), (P1*(t2-t)+P2*(t-t1))/(t2-t1)];
P(i) = [P(i), (P2*(t2-t)+P3*(t-t1))/(t2-t1)];
end
% 计算日度价格
datestrs = datestr(datenum('01-Jan-2020'):1:datenum('31-Dec-2023'), 'dd-mmm-yyyy');
prices = zeros(1, length(datestrs));
for i = 1:length(datestrs)
t = (datenum(datestrs(i)) - d1)/365;
year = floor(t) + 1;
if year > 4
year = 4;
end
t1 = (year-1+n)*365;
t2 = year*n*365;
P_year = (P(year)*(t2-t)+P(year+1)*(t-t1))/(t2-t1);
prices(i) = F/(1+r)^(T-t/365) + c*F*sum((1/(1+r)).^(1:T-t/365));
prices(i) = prices(i)*P_year/P(year);
end
% 输出结果
disp(['2020-2023年日度价格:']);
disp([datestrs, num2cell(prices')]);
```
在这个示例中,假设债券的到期日为5年后,票面利率为5%,面值为1000元,到期收益率为6%。债券的年度价格为900、950、1000和1050元。为了计算2020-2023年日度价格,首先计算债券到期日与2020年1月1日之间的年数n,然后计算每年的价格P,使用公式计算每年的价格,然后按照日度进行插值。最后,计算每个日度的价格,将每个日度的价格乘以对应年份的插值系数即可。
假设有1000支债券,已知票面利率,债券到期日,每年变化的即期收益率,编写matlab程序计算债券2020-2023年日度价格
计算债券的价格需要考虑债券的现金流,现金流包括债券的本金和利息。假设债券的到期日为T,票面利率为c,面值为F,每年变化的即期收益率为r(i),其中i表示第i年,则债券在时间t的价格P(t)可以使用以下公式计算:
P(t) = F/(1+r(i))^(T-t) + c*F*sum((1/(1+r(i))).^(1:T-t))
其中,第一项表示债券的本金,第二项表示债券的利息。为了计算2020-2023年日度价格,需要将每年的价格按照日度进行插值。具体步骤如下:
1. 定义一个函数,该函数输入参数为债券的到期日T、票面利率c、面值F、每年变化的即期收益率r(4,1)和年度价格P0-P3,输出为2020-2023年日度价格。
2. 在函数中,首先计算债券到期日与2020年1月1日之间的年数,用于确定价格插值的起始年份。
3. 然后,计算每年的价格,使用上述公式计算每年的价格,然后按照日度进行插值。
下面是一个示例代码:
```matlab
% 债券参数
T = 5;
c = 0.05;
F = 1000;
r = [0.06; 0.065; 0.07; 0.075];
% 年度价格
P0 = 900;
P1 = 950;
P2 = 1000;
P3 = 1050;
% 计算插值起始年份
d1 = datenum('01-Jan-2020');
d2 = datenum(datestr(addtodate(d1, T, 'year'), 'dd-mmm-yyyy'));
n = (d2 - d1)/365;
% 计算每年的价格
P = zeros(1, 4);
for i = 1:4
t1 = (i-1+n)*365;
t2 = i*n*365;
P(i) = (P0*(t2-t)+P1*(t-t1))/(t2-t1);
P(i) = [P(i), (P1*(t2-t)+P2*(t-t1))/(t2-t1)];
P(i) = [P(i), (P2*(t2-t)+P3*(t-t1))/(t2-t1)];
end
% 计算日度价格
datestrs = datestr(datenum('01-Jan-2020'):1:datenum('31-Dec-2023'), 'dd-mmm-yyyy');
prices = zeros(1, length(datestrs));
for i = 1:length(datestrs)
t = (datenum(datestrs(i)) - d1)/365;
year = floor(t) + 1;
if year > 4
year = 4;
end
t1 = (year-1+n)*365;
t2 = year*n*365;
r_year = (r(year)*(t2-t)+r(year+1)*(t-t1))/(t2-t1);
P_year = (P(year)*(t2-t)+P(year+1)*(t-t1))/(t2-t1);
prices(i) = F/(1+r_year)^(T-t/365) + c*F*sum((1/(1+r_year)).^(1:T-t/365));
prices(i) = prices(i)*P_year/P(year);
end
% 输出结果
disp(['2020-2023年日度价格:']);
disp([datestrs, num2cell(prices')]);
```
在这个示例中,假设债券的到期日为5年后,票面利率为5%,面值为1000元,每年变化的即期收益率为6%、6.5%、7%和7.5%。债券的年度价格为900、950、1000和1050元。为了计算2020-2023年日度价格,首先计算债券到期日与2020年1月1日之间的年数n,然后计算每年的价格P,使用公式计算每年的价格,然后按照日度进行插值。最后,计算每个日度的价格,将每个日度的价格乘以对应年份的插值系数即可。
阅读全文