首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MatLab/Octave中模拟贷款组合?

如何在MatLab/Octave中模拟贷款组合?
EN

Stack Overflow用户
提问于 2020-02-03 01:03:23
回答 1查看 88关注 0票数 0

我是MatLab/Octave的新手,我正在努力解决一个我想要解决的问题。

一个投资组合由1000笔贷款组成,每笔贷款的金额为10,000美元,每个贷款的违约概率为0.1。计算50笔贷款违约的概率,以及预期损失和投资组合的方差。使用Matlab/Octave模拟上面的投资组合。

所以我计算了概率(1,000!/50!950!)(1/10)^50(9/10)^950 E(Z)=10,000E(X)=10,000np=10,000x1,000x0.1=$1,000,000的预期损失和Var(Z)=10,000^2Var(X)=10,000^2np(1-p)=10,000^2x1,000x0,1x0,9=的差额为90亿美元(1,000!/50!950!)(1/10)^50(9/10)^950

我真的在努力模拟投资组合。

EN

回答 1

Stack Overflow用户

发布于 2020-02-04 21:11:36

在我看来,这是用八度音阶实现这一点的最直接的方法。

代码语言:javascript
复制
%%% The Portfolio problem:
    pkg load statistics;   % required for the `binopdf` and `binostats` functions

  % Problem variables
    NumberOfLoans = 1000;
    PricePerLoan  = 10000;
    ProbOfDefault = 0.1;

  % Binomial probability of 50 in 1000 loans defaulting for a binomial parameter of 0.1
    p = binopdf( 50, NumberOfLoans, ProbOfDefault );
    fprintf( 'Probability of 50 loans defaulting is %.3g\n', p );

  % Expected loss
    [ ExpNumDefaults, VarDefaults ] = binostat( NumberOfLoans, ProbOfDefault );
    ExpLoss = PricePerLoan * ExpNumDefaults;
    VarLoss = (PricePerLoan .^ 2) * VarDefaults;

    fprintf( 'Expected loss of portfolio: %d\n', ExpLoss );
    fprintf( 'Variance of portfolio: %d\n', VarLoss );

输出:

代码语言:javascript
复制
Probability of 50 loans defaulting is 3.21e-09
Expected loss of portfolio: 1000000
Variance of portfolio: 9000000000

这利用了statistics包,您可以像这样从一个八度终端安装它( -forge选项直接从Octave Forge网站下载):

代码语言:javascript
复制
pkg install statistics -forge

我之所以使用统计软件包而不是“手工”执行这些计算,是因为需要阶乘的中间步骤会导致非常大的数字,这可能会破坏您的计算,而统计软件包以优化的方式实现这些函数,从而绕过这些问题。

如果你是一个完全的八度初学者,那么在上面的代码片段中可能会发生很多新的事情。我建议您阅读official documentation中有关八度的基础知识,并使用help函数直接从八度终端查找此处使用的函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60028474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档