ecm ecm

Performance: Hochvolumige Analyse des operativen Risikos mit Sampling-Optimierung

Scénario de test & Cas d'usage

Geschäftskontext

Eine Großbank führt einen Stresstest für operationelle Risiken durch. Aufgrund der enormen Datenmenge (Millionen von Datenpunkten) muss die Simulation optimiert werden. Es wird getestet, wie sich die Reduzierung der Stichproben im 'Rumpfbereich' (Body Region) auf die Laufzeit auswirkt, ohne die Genauigkeit im kritischen Randbereich zu verlieren.
Datenaufbereitung

Generierung eines großen Datensatzes (1 Million Zeilen) für Stresstests.

Kopiert!
1 
2DATA casuser.copula_large;
3DO i=1 to 1000000;
4u1=rand('uniform');
5u2=rand('uniform');
6u3=rand('uniform');
7OUTPUT;
8END;
9 
10RUN;
11 
12DATA casuser.op_risk_1;
13DO i=1 to 1000000;
14loss_val=rand('weibull', 1.5);
15OUTPUT;
16END;
17 
18RUN;
19 
20DATA casuser.op_risk_2;
21DO i=1 to 1000000;
22loss_val=rand('lognormal', 8, 2);
23OUTPUT;
24END;
25 
26RUN;
27 
28DATA casuser.op_risk_3;
29DO i=1 to 1000000;
30loss_val=rand('exponential');
31OUTPUT;
32END;
33 
34RUN;
35 

Étapes de réalisation

1
Ausführung mit 'bodySampleFrac', um nur 10% der Daten im Rumpfbereich zu samplen und Performance zu gewinnen.
Kopiert!
1 
2PROC CAS;
3ecm.ecm / copulaSample={name="copula_large"} marginals={{TABLE={name="op_risk_1"}, sampleVarName="loss_val"}, {TABLE={name="op_risk_2"}, sampleVarName="loss_val"}, {TABLE={name="op_risk_3"}, sampleVarName="loss_val"}} bodySampleFrac=0.1 tailStart=0.95 edfAccuracy=0.001 OUTPUT={outSample={name="stress_test_result", replace=TRUE}} seed=0;
4 
5RUN;
6 

Erwartetes Ergebnis


Die Aktion sollte deutlich schneller ausgeführt werden als eine vollständige Simulation, da 'bodySampleFrac=0.1' verwendet wird. Trotzdem muss die Genauigkeit im Tail-Bereich (definiert durch 'tailStart=0.95') hoch bleiben. Der Seed=0 generiert einen zufälligen Startwert.