function aVal= multimc(hVal,t,nSim)
% aVal= multimc(hVal,t,nSim)
% HVAL price data matrix, time-by-asset
% T time vector, e.g. 1:100
% NSIM number of simulations
% AVAL time-by-sim-by-assets
% Author: Taras Chaban, 22-May-01
% Copyright (c) 2001 The MathWorks, Inc. All Rights Reserved.
% calculate number of assets
nAsset= size(hVal,2);
nTimes= length(t);
% calculate returns statistics
retVal= log(hVal(2:end,:)./hVal(1:end-1,:));
mRet= mean(retVal);
volat= std(retVal);
corrRnd= zeros(nAsset,nTimes,nSim);
cholMat= chol(corrcoef(retVal))';
for i=1:nSim
% simulations will have the same random sequence
randn('state',i);
corrRnd(:,:,i)= cholMat*randn(nAsset,nTimes);
end
aVal= zeros(nTimes,nSim,nAsset);
for i=1:nAsset
aVal(:,:,i)= montecarlo(hVal(end,i),mRet(i),...
volat(i), t, nSim, squeeze(corrRnd(i,:,:)));
end