楼主: 匿名
9271 11

[MATLAB] CIR利率期限结构模型的MLE估计 [推广有奖]

匿名网友
楼主
匿名网友  发表于 2015-7-8 20:37:35 |坛友微信交流群|倒序 |AI写论文
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
本贴主要参考Kladıvko, K. (2007). Maximum likelihood estimation of the Cox-Ingersoll-Ross process: the Matlab implementation. Technical Computing Prague.

CIR 利率期限结构模型

  

\[d{{r}_{t}}=\alpha (\mu -{{r}_{t}})dt+\sqrt{{{r}_{t}}}\sigma d{{W}_{t}}\]



论文及数据集Pribor3M见附件:


  1. clc
  2. clear all
  3. close all

  4. load Pribor3M

  5. Model.Data = Pribor3M; %此处即是文中Model.Data
  6. Model.TimeStep = 1/250; % recommended: 1/250 for daily data, 1/12 for monthly data, etc
  7. Model.Disp = 'y'; % 'y' | 'n' (default: y)
  8. Model.MatlabDisp = 'iter'; % 'off'|'iter'|'notify'|'final' (default: off)
  9. Model.Method = 'besseli'; % 'besseli' | 'ncx2pdf' (default: besseli)

  10. Results = CIRestimation(Model);
  11.     % 使用OLS估计alpha mu sigma
  12.     Nobs = length(Model.Data);
  13.     x = Model.Data(1:end-1);
  14.     dx = diff(Model.Data);           
  15.     dx = dx./x.^0.5;
  16.     regressors = [Model.TimeStep./x.^0.5, Model.TimeStep*x.^0.5];
  17.     drift = regressors\dx;
  18.     res = regressors*drift - dx;
  19.     alpha = -drift(2);
  20.     mu = -drift(1)/drift(2);
  21.     sigma = sqrt(var(res, 1)/Model.TimeStep);
  22.     InitialParams = [alpha mu sigma];
  23.     if ~isfield(Model, 'Disp'), Model.Disp = 'y'; end;
  24.     if strcmp(Model.Disp, 'y')
  25.         fprintf('\n initial alpha = %+3.6f\n initial mu    = %+3.6f\n initial sigma = %+3.6f\n', alpha, mu, sigma);
  26.     end

  27.     % Optimization using fminsearch  优化过程
  28.     if ~isfield(Model, 'MatlabDisp'), Model.MatlabDisp = 'off'; end;
  29.     options = optimset('LargeScale', 'off', 'MaxIter', 300, 'MaxFunEvals', 300, 'Display', Model.MatlabDisp, 'TolFun', 1e-4, 'TolX', 1e-4, 'TolCon', 1e-4);
  30.     if ~isfield(Model, 'Method'), Model.Method = 'besseli'; end;
  31.     if strcmp(Model.Method, 'ncx2pdf')
  32.         [Params, Fval, Exitflag] =  fminsearch(@(Params) CIRobjective2(Params, Model), InitialParams, options);   
  33.     else
  34.         [Params, Fval, Exitflag] =  fminsearch(@(Params) CIRobjective1(Params, Model), InitialParams, options);   
  35.     end
  36.    
  37.     Results.Params = Params;
  38.     Results.Fval = -Fval/Nobs;
  39.     Results.Exitflag = Exitflag;

  40.     if strcmp(Model.Disp, 'y')
  41.         fprintf('\n alpha = %+3.6f\n mu    = %+3.6f\n sigma = %+3.6f\n', Params(1), Params(2), Params(3));
  42.         fprintf(' log-likelihood = %+3.6f\n', -Fval/Nobs);
  43.     end
  44. %最大似然估计方法之一:贝塞尔函数
  45. Data = Model.Data;
  46. DataF = Data(2:end);
  47. DataL = Data(1:end-1);
  48. Nobs = length(Data);
  49. TimeStep = Model.TimeStep;
  50. alpha = Params(1);
  51. mu = Params(2);
  52. sigma = Params(3);

  53. c = 2*alpha/(sigma^2*(1-exp(-alpha*TimeStep)));
  54. q = 2*alpha*mu/sigma^2-1;
  55. u = c*exp(-alpha*TimeStep)*DataL;
  56. v = c*DataF;
  57. z = 2*sqrt(u.*v);
  58. bf = besseli(q,z,1);
  59. lnL= -(Nobs-1)*log(c) + sum(u + v - 0.5*q*log(v./u) - log(bf) - z);
  60. %最大似然估计之二:非中心卡方分布函数
  61. Data = Model.Data;
  62. DataF = Data(2:end);
  63. DataL = Data(1:end-1);
  64. TimeStep = Model.TimeStep;
  65. alpha = Params(1);
  66. mu = Params(2);
  67. sigma = Params(3);

  68. c = 2*alpha/(sigma^2*(1-exp(-alpha*TimeStep)));
  69. q = 2*alpha*mu/sigma^2-1;
  70. u = c*exp(-alpha*TimeStep)*DataL;
  71. v = c*DataF;
  72. nc = 2*u;
  73. df = 2*q+2;
  74. s = 2*v;

  75. gpdf = ncx2pdf(s, df, nc);
  76. ppdf = 2*c*gpdf;
  77. lnL = sum(-log(ppdf));
复制代码

二维码

扫码加我 拉你入群

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

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

关键词:利率期限结构 期限结构 利率期限 结构模型 CIR 模型

kladivko_cir_ptc07.pdf

350.85 KB

Pribor3M.rar

18.5 KB

本附件包括:

  • Pribor3M.mat

已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
xddlovejiao1314 + 100 + 100 + 3 + 3 + 3 精彩帖子

总评分: 经验 + 100  论坛币 + 100  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

沙发
xddlovejiao1314 学生认证  发表于 2015-7-9 17:07:31 |只看作者 |坛友微信交流群
谢谢分享。

使用道具

藤椅
pandacat88 在职认证  发表于 2016-4-12 10:42:21 |只看作者 |坛友微信交流群
谢谢分享

使用道具

板凳
SSS宋 发表于 2016-12-7 11:30:42 |只看作者 |坛友微信交流群
感谢楼主。。。

使用道具

报纸
jenny1526 发表于 2018-5-19 10:52:00 |只看作者 |坛友微信交流群
谢谢分享!

使用道具

地板
economath 发表于 2018-5-22 13:59:27 |只看作者 |坛友微信交流群
CIRestimation函数在哪里。。。

使用道具

7
dieditu 学生认证  发表于 2018-6-14 20:21:02 |只看作者 |坛友微信交流群
楼主,为什么我估计出来的lnL是负数。。

使用道具

8
1969924422 发表于 2019-12-12 23:52:42 |只看作者 |坛友微信交流群
dieditu 发表于 2018-6-14 20:21
楼主,为什么我估计出来的lnL是负数。。
求问 说未定义函数或变量CIRestimation,怎么解决呢?

使用道具

9
1969924422 发表于 2019-12-12 23:53:16 |只看作者 |坛友微信交流群
dieditu 发表于 2018-6-14 20:21
楼主,为什么我估计出来的lnL是负数。。
求问 说未定义函数或变量CIRestimation,怎么解决呢?

使用道具

10
irenea1024 发表于 2020-4-11 13:50:48 |只看作者 |坛友微信交流群
谢谢楼主

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

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

GMT+8, 2024-4-27 06:09