46%macro irmst_create_loss_dist_summary(host =
47 , server = SASRiskGovernanceFramework
57 , cred_risk_detail_key =
67 , out_analysis_data = out_analysis_data
68 , out_partition_list =
69 , out_data_definition =
71 , outVarTicket = ticket
72 , outSuccess = httpSuccess
73 , outResponseStatus = responseStatus
80 %let &outVarTicket. =;
81 %let &outSuccess. = 0;
82 %let &outResponseStatus. =;
85 %
if(%length(&logOptions.)) %then
91 %let oldLogOptions = %sysfunc(getoption(mlogic)) %sysfunc(getoption(symbolgen));
93 %
if(%length(&port.) = 0) %then
98 %
if &cred_risk_detail_key. eq %str() %then %
do;
99 %irm_rest_get_rgf_analysis_data(host = &host.
101 , solution = &solution.
103 , tgt_ticket = &tgt_ticket.
104 , filter = filter=hasObjectLinkTo(
'%upcase(&rgf_solution.)',
'analysisData_analysisRun_out',&analysis_run_id.,0)
105 , outds = _analysis_data
106 , outVarTicket = &outVarTicket.
107 , outSuccess = &outSuccess.
108 , outResponseStatus = &outResponseStatus.
109 , restartLUA = &restartLUA.
110 , clearCache = &clearCache.
114 call symputX(
'cred_risk_detail_key',key);
119 %irm_rgf_retrieve_analysis_data(key = &cred_risk_detail_key.
120 , outds = _cred_rsk_detail
123 , solution = &solution.
125 , outSuccess = &outSuccess.
126 , outResponseStatus = &outResponseStatus.
127 , restartLUA = &restartLUA.
128 , clearCache = &clearCache.
133 create table _loss_summary as
135 min(ValueAtRisk_Alpha) as ValueAtRisk_Alpha,
136 min(entity_id) as entity_id,
137 "&risktype." as risk_type,
138 min(reporting_dt) as reporting_dt,
139 min(scenario_id) as scenario_id,
140 sum(ExpectedLoss) as ExpectedLoss,
141 sum(Component_ValueAtRisk) as ValueAtRisk,
143 %
if &risktype.=Credit %then %
do;
144 when sum(Component_ValueAtRisk)<0 then 0
145 when sum(ExpectedLoss)>0 then max(sum(Component_ValueAtRisk)-sum(ExpectedLoss),0)
146 when sum(ExpectedLoss)<=0 then sum(Component_ValueAtRisk)
150 when sum(Component_ValueAtRisk)<0 then 0
151 else sum(Component_ValueAtRisk)
153 end as Economic_Capital
154 from _cred_rsk_detail
155 %if &risktype.=Market %then %do;
156 where simulationpart="Profit and Loss"
163 %irm_rgf_store_analysis_data(ds_in = _loss_summary
165 , analysis_data_name = &name.
166 , analysis_data_desc = &description.
167 , base_date = &base_dt.
168 , cycle_id = &cycle_id.
169 , entity_id = &entity_id.
170 , status_cd = &status_cd.
171 , analysis_run_id = &analysis_run_key.
175 , schema_name = &schema_name.
176 , schema_version = &schema_version.
179 , out_exceptions = &out_exceptions.
180 , out_analysis_data = &out_analysis_data.
181 , out_partition_list = &out_partition_list.
182 , out_data_definition = &out_data_definition.
183 , out_link_instance = &out_link_instance.
188 , solution = &solution.
190 , tgt_ticket = &tgt_ticket.
191 , outVarTicket = &outVarTicket.
192 , outSuccess = &outSuccess.
193 , outResponseStatus = &outResponseStatus.
197 %if(not &&&outSuccess. or not %rsk_dsexist(&out_analysis_data.)) %then %do;
198 %put ERROR: Something went wrong when trying to create the loss distribution summary table.;