Scénario de test & Cas d'usage
Génération d'une copule bivariée (Auto/Habitation) et des sinistres historiques pour chaque branche.
| 1 | |
| 2 | DATA work.copule_assur; |
| 3 | call streaminit(12345); |
| 4 | DO i=1 to 5000; |
| 5 | u_auto = rand('Uniform'); |
| 6 | u_hab = rand('Uniform'); |
| 7 | OUTPUT; |
| 8 | END; |
| 9 | |
| 10 | RUN; |
| 11 | |
| 12 | DATA work.sinistres_auto; |
| 13 | call streaminit(123); |
| 14 | DO i=1 to 1000; |
| 15 | cout = rand('Gamma', 2, 2000); |
| 16 | OUTPUT; |
| 17 | END; |
| 18 | |
| 19 | RUN; |
| 20 | |
| 21 | DATA work.sinistres_hab; |
| 22 | call streaminit(456); |
| 23 | DO i=1 to 800; |
| 24 | cout = rand('Lognormal', 7, 1.5); |
| 25 | OUTPUT; |
| 26 | END; |
| 27 | |
| 28 | RUN; |
| 29 | |
| 30 | PROC CAS; |
| 31 | upload path="work.copule_assur" casout={name="copule_in", replace=true}; |
| 32 | upload path="work.sinistres_auto" casout={name="marge_auto", replace=true}; |
| 33 | upload path="work.sinistres_hab" casout={name="marge_hab", replace=true}; |
| 34 | |
| 35 | RUN; |
| 36 |
| 1 | |
| 2 | PROC CAS; |
| 3 | ecm.ecm / copulaSample={name="copule_in"} analysisVariables={"u_auto", "u_hab"} marginals={{TABLE={name="marge_auto"}, sampleVarName="cout", idVarValue="u_auto"}, {TABLE={name="marge_hab"}, sampleVarName="cout", idVarValue="u_hab"}} seed=999 OUTPUT={outSample={name="perte_globale", replace=true}, varName="TotalLoss"} outsum={outSummary={name="resume_risque", replace=true}, percentiles={{percentile=99.5, variable="VaR_995"}}, tVaRLevels={{percentileLevel=99.5, variable="TVaR_995"}}}; |
| 4 | |
| 5 | RUN; |
| 6 |
L'action doit produire deux tables : 'perte_globale' contenant les simulations agrégées et 'resume_risque' affichant la VaR et la TVaR à 99.5% pour valider la solvabilité.