There is no Cloud Parallel Computing for Home Users ?

I have a copula fitting computing problem with 21 stocks, which with 4 cores an 8 hours running it cannot compute. Therefore I tried to look for a solution in the cloud, however I found out that Home Users cannot have access to then....therefore no solution to my problem, is that correct ?

5 Comments

Maybe, may also be your code could be optimzed to run faster. Since we dont know your code it can not be said.
Thanks Stephan. Below is the code:
lowerTail = 0.07;
upperTail = 0.93;
% K in the code is 21 (stocks)
for idx = k:-1:1
currentRet = returns(:,idx);
marginal{idx} = paretotails(currentRet, lowerTail, upperTail, 'kernel');
U(:,idx) = cdf(marginal{idx}, currentRet);
end
% THE PART BELOW IS THE ONE THAT DOES NOT END CALCULATING (EVEN AFTER 8 HOURS)
[rho, nu] = copulafit('t', U);
If this is your whole code you do not calculate in parallel. Or is there some more code?
Only that last line that needed to use parallel computing, the test of the code is computed in a good manner.
I changed the method of the copulafit function to ‘ApproximateML’ and it ran fine now.
Glad to hear. Please accept helpful answers in order to help people with similar Problems find helpful answers.

Sign in to comment.

 Accepted Answer

Stephan
Stephan on 18 Oct 2018
Edited: Stephan on 18 Oct 2018
Hi,
your code is not written in a way that it performs the calculations in parallel - have a look at statset. This is the way you tell the copulafit function to do parallel and other options. First find out the standard options for copulafit:
>> oldopts = statset('copulafit')
oldopts =
struct with fields:
Display: 'off'
MaxFunEvals: 200
MaxIter: 100
TolBnd: 1.0000e-06
TolFun: []
TolTypeFun: []
TolX: 1.0000e-06
TolTypeX: []
GradObj: []
Jacobian: []
DerivStep: []
FunValCheck: []
Robust: []
RobustWgtFun: []
WgtFun: []
Tune: []
UseParallel: []
UseSubstreams: []
Streams: {}
OutputFcn: []
Parallel is not active by standard. To set parallel, start a parallel pool first by parpool command:
>> parpool
Starting parallel pool (parpool) using the 'local' profile ...
connected to 4 workers.
Then use:
>> options = statset(oldopts,'UseParallel',true)
options =
struct with fields:
Display: 'off'
MaxFunEvals: 200
MaxIter: 100
TolBnd: 1.0000e-06
TolFun: []
TolTypeFun: []
TolX: 1.0000e-06
TolTypeX: []
GradObj: []
Jacobian: []
DerivStep: []
FunValCheck: []
Robust: []
RobustWgtFun: []
WgtFun: []
Tune: []
UseParallel: 1
UseSubstreams: []
Streams: {}
OutputFcn: []
Of course you can do the same in your script and supress outputs with ';' - but for showing hot the difference is, it is better this way i guess.
Then change the call of copulafit so that it uses those options above:
[rho, nu] = copulafit('t', U, options);
Now the calculation should run in parallel mode.
If this is still to slow consider:
[rho,nu] = copulafit('t',[u v],'Method','ApproximateML', options);
This method can be faster but less accuracy on small or middle data - resd this link of the documentation to learn more:
Best regards
Stephan

3 Comments

Thanks a lot Stephan ! I will try it out and let you know
Stephan, just a correction in the last line:
[rho, nu] = copulafit('t', U, 'Options',options);
The code activate Parallel Computing mode, however, not to run this function. A technical lady from Matlab told me PC does not run in the copulafit function...
I have another question posted regarding how to setup 'Conditional' lower bounds in the PortfolioCVaR object in the same way we have for the Portfolio object. Ex: lower bound could be 0 or 0.02. Do you have this answer ? Thanks a lot!

Sign in to comment.

More Answers (0)

Asked:

on 18 Oct 2018

Commented:

on 19 Oct 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!