Simulating Default Times

/*--------------------------------------------------------------

                    SAS Sample Library

        Name: hpcopex1.sas
 Description: Example program from SAS/ETS User's Guide,
              The HPCOPULA Procedure
       Title: Simulating Default Times
     Product: SAS/ETS Software
        Keys: copula joint distribution
        PROC: HPCOPULA
       Notes:

--------------------------------------------------------------*/

ods graphics on;

data inparm;
    Y1=1.0;
    Y2=0.8;
    output;
    Y1=0.8;
    Y2=1.0;
    output;
run;

proc print data = inparm;
run;


/* simulate the data from bivariate normal copula */
proc hpcopula;
   var Y1-Y2;
   define cop normal (corr=inparm);
   simulate cop /
            ndraws     = 1000000
            seed       = 1234
            outuniform = normal_unifdata;
   PERFORMANCE nodes=4 nthreads=4 details
               host="&GRIDHOST" install="&GRIDINSTALLLOC";
run;


/* default time has exponential marginal distribution with parameter 0.5 */
data default;
   set normal_unifdata;
   array arr{2} Y1-Y2;
   array time{2} time1-time2;
   array surv{2} survive1-survive2;
   lambda = 0.5;
   do i=1 to 2;
      time[i] = -log(1-arr[i])/lambda;
      surv[i] = 0;
      if (time[i] >3) then surv[i]=1;
   end;
   survive = 0;
   if (time1 >3) && (time2 >3) then survive = 1;
run;

proc corr data = default pearson kendall;
   var time1 time2;
run;

proc freq data=default;
   table survive survive1-survive2;
run;