我对MatLab/Octave很陌生,我正在努力解决一个我试图解决的问题。
投资组合由 1,000 笔贷款组成,每笔贷款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亿美元的方差
我真的在为投资组合的模拟而苦苦挣扎。
这是以八度音阶实现这一点的最直接方法(在我看来(。
%%% 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 %.3gn', p );
% Expected loss
[ ExpNumDefaults, VarDefaults ] = binostat( NumberOfLoans, ProbOfDefault );
ExpLoss = PricePerLoan * ExpNumDefaults;
VarLoss = (PricePerLoan .^ 2) * VarDefaults;
fprintf( 'Expected loss of portfolio: %dn', ExpLoss );
fprintf( 'Variance of portfolio: %dn', VarLoss );
输出:
Probability of 50 loans defaulting is 3.21e-09
Expected loss of portfolio: 1000000
Variance of portfolio: 9000000000
这利用了statistics
包,您可以从八度终端安装,如下所示(-forge
选项直接从Octave Forge网站下载(:
pkg install statistics -forge
我会使用统计包而不是"手动"执行这些计算的原因是,需要阶乘的中间步骤会导致非常大的数字,这可能会破坏您的计算,而统计包以优化的方式实现这些功能,从而解决这些问题。
如果你是一个完全的八度初学者,那么上面的代码片段中可能会发生很多新的东西。我建议您从官方文档中阅读八度的基础知识,并使用help
函数直接从八度终端查找此处使用的功能。