15%let rgf_tgt_ticket = ${globals.ticket};
18%let cycle_id = ${context.cycle.key};
21%let analysis_run_id = ${context.analysisRun.key};
24${function:ProcessModelParameter(params.BEP,
"BEP",
"MRS")}
27%let log_level = ${params.LOGLEVEL};
28%
if &log_level gt 1 %then
30 %let log_debug =
true;
34 %let log_debug =
false;
38%let max_wait = ${params.MAXWAIT};
41%let base_dt = ${context.cycle.baseDt};
46%let sas_risk_workgroup_dir = %sysfunc(metadata_appprop(Risk Work Group Svr Cfg, root.dir));
49%include
"&sas_risk_workgroup_dir./groups/Public/SASRiskManagementCore/cycles/&cycle_id./init.sas" / lrecl = 32000 source2;
52%irm_set_logging_options();
55%let seg_lvl_model_run_key = ${params.SEGLEVELMODEL.rels(
"context").modelRun.key};
60%irm_rest_get_rgf_model_run(host = &rgf_protocol.:
61 , server = &rgf_service.
62 , solution = &rgf_solution.
64 , tgt_ticket = &rgf_tgt_ticket.
65 , key = &seg_lvl_model_run_key.
66 , outds = tmp_model_run_info
67 , outds_params = ds_out_model_run_parms
69 , fout_pre_code = fpre
70 , fout_post_code = fpost
71 , fout_mip_pre_code = mippre
72 , fout_mip_post_code = mippost
73 , outVarTicket = ticket
74 , outSuccess = httpSuccess
75 , outResponseStatus = responseStatus
81 set ds_out_model_run_parms;
83 lowcase(parameterName) in
84 (
"modelin_datamap_key"
91 ,
"mipnumbersimulations"
92 ,
"mipoutputvariables"
93 ,
"mipcomputedmethods"
94 ,
"mipparametermatrices"
97 ,
"mipprochpriskarguments"
98 ,
"mipaggregationlevels"
101 ,
"mipintervalalignment"
103 and not missing(parameterValue)
105 call symputx(parameterName, parameterValue, "L");
109%let responseStatus =;
111%irm_rest_get_rgf_model(host = &rgf_protocol.:
112 , server = &rgf_service.
113 , solution = &rgf_solution.
115 , tgt_ticket = &rgf_tgt_ticket.
116 , filter = filter=hasObjectLinkTo('%upcase(&rgf_solution.)','model_modelRun',&seg_lvl_model_run_key.,0)
117 , outds = tmp_model_info
118 , outds_params = tmp_model_params
122 , fout_mip_pre_code =
123 , fout_mip_post_code =
124 , outVarTicket = ticket
125 , outSuccess = httpSuccess
126 , outResponseStatus = responseStatus
132data ds_out_model_run_info;
134 tmp_model_run_info (keep = key name rename = (key = modelRunKey name = modelRunName))
153 mipModelingSystemWorkgroup
154 mipModelingSystemName
155 mipModelingSystemVersion
156 mipWeightedOutputVars
157 rename = (key = modelKey
159 solutionCreatedIn = modelPerspectiveId
164 call symputx("model_engine_cd", engineCd, "L");
165 call symputx("model_perspective_id", lowcase(modelPerspectiveId), "L");
168 call symputx("mip_ms_name", mipModelingSystemName, "L");
169 call symputx("mip_ms_version", mipModelingSystemVersion, "L");
170 call symputx("mip_ms_workgroup", mipModelingSystemWorkgroup, "L");
171 call symputx("pre_mip_flg", ifc(preMipFlg = "true", "Y", "N"), "L");
172 call symputx("post_mip_flg", ifc(postMipFlg = "true", "Y", "N"), "L");
173 call symputx("pre_code_flg", ifc(preCodeFlg = "true", "Y", "N"), "L");
174 call symputx("post_code_flg", ifc(postCodeFlg = "true", "Y", "N"), "L");
178%if(&pre_code_flg. = Y) %then %do;
182 %include fpre / source2 lrecl = 32000;
194%let responseStatus =;
196%irm_rest_get_mip_ms_info(host = &mip_protocol.:
197 , server = &mip_service
199 , tgt_ticket = &rgf_tgt_ticket
200 , workgroup = &mip_ms_workgroup
201 , outds = work.tmp_mip_msinfo
202 , outVarTicket = ticket_ms
203 , outSuccess = httpSuccess
204 , outResponseStatus = responseStatus
210 set work.tmp_mip_msinfo;
211 if upcase(modelingSystemName) eq upcase("&mip_ms_name") and
212 upcase(modelingSystemVersion) eq upcase("&mip_ms_version") then
213 call symputx("tgt_ms_sk", modelingSystemId, "G");
220%let responseStatus =;
221%let ticket_workgroup =;
222%irmst_get_model_group_maps(model_group_kind = EVALUATION
224 , add_seg_lvl_ms_sk = &tgt_ms_sk
225 , out_model_group_map = work.model_group_map_seg
226 , mipurl = &mip_protocol.:
227 , tgt_ticket = %superq(rgf_tgt_ticket)
229 , host = &mip_protocol.:
230 , server = &mip_service
232 , workgroup = &mip_ms_workgroup
234 , outds = work._tmp_workgroups_
235 , outVarTicket = ticket_workgroup
236 , outSuccess = httpSuccess
237 , outResponseStatus = responseStatus
245%let base_dt_fmt1 = %sysfunc(inputn(&base_dt, yymmdd10.), yymmddn8.);
246%let base_dt_fmt2 = %sysfunc(inputn(&base_dt, yymmdd10.), yymmddd10.);
248%let source_ptf = synth_port_&base_dt_fmt1._&seg_lvl_model_run_key;
249%let cube_nm = seg_lvl_cube_&base_dt_fmt1._&seg_lvl_model_run_key;
250%let modscen_nm = seg_lvl_scenRun_&base_dt_fmt1._&seg_lvl_model_run_key;
255libname _port_ "&sas_risk_workgroup_dir./groups/&mip_ms_workgroup./&mip_service./input/portfolios";
257%irmst_build_synthetic_portfolio(model_group_map_tbl = work.model_group_map_seg
258 , mipport_libref = _port_
259 , outds = &source_ptf
268%let responseStatus =;
270%irm_rest_create_mip_cube(host = &mip_protocol.:
271 , server = &mip_service
273 , tgt_ticket = %superq(rgf_tgt_ticket)
274 , cubeName = &cube_nm
275 , workgroup = &mip_ms_workgroup
276 , portfolioDataName = &source_ptf
277 , counterpartyDataName =
278 , numberNodes = &mipnumbernodes
279 , numberThreads = &mipnumberthreads
280 , runAsOfDate = &base_dt_fmt2
281 , procHpriskArguments =
285 , maxWait = &max_wait
286 , outds = work.cube_details
287 , outVarTicket = ticket_mip
288 , outSuccess = httpSuccess
289 , outResponseStatus = responseStatus
297data bep_x_mrs_config;
298 length BEP_KEY MRS_KEY 8.;
299 keep BEP_KEY MRS_KEY;
300 bep_cnt = symgetn("BEP_CNT");
302 bep_key = symgetn(cats("BEP_", n));
303 mrs_cnt = symgetn(cats("BEP_", n, "_MRS_CNT"));
305 mrs_key = symgetn(cats("BEP_", n, "_MRS_", i));
309 put "WARNING: No Master Risk Scenarios have been assigned to Business Evolution Plan Id " bep_key;
316%rsk_mkdirs(&sas_risk_workgroup_dir./groups/&mip_ms_workgroup./SASModelImplementationPlatform/input/economics/scenarios_&base_dt_fmt1._&seg_lvl_model_run_key.);
318%irmst_get_scenarios_from_rsm(analysis_run_id = &analysis_run_id
319 , bep_x_mrs_tbl = work.bep_x_mrs_config
321 , out_scen_meta = work.scenario_info
322 , out_scen_data = work.out_scenario_data
323 , rgf_protocol = &rgf_protocol
324 , rgf_host = &rgf_host
325 , rgf_port = &rgf_port
326 , rgf_service = &rgf_service
327 , rgf_solution = &rgf_solution
328 , rsm_protocol = &rsm_protocol
329 , rsm_host = &rsm_host
330 , rsm_port = &rsm_port
331 , rsm_service = &rsm_service
332 , tgt_ticket = %superq(rgf_tgt_ticket)
336libname _econ_ "&sas_risk_workgroup_dir./groups/&mip_ms_workgroup./SASModelImplementationPlatform/input/economics/scenarios_&base_dt_fmt1._&seg_lvl_model_run_key.";
339data _econ_.scenario_data;
340 set work.out_scenario_data end = last;
343 %if(%upcase(&miphorizon.) eq MAX) %then
346 maxHorizon = max(maxHorizon, horizon);
351 call symputx("miphorizon", maxHorizon, "g");
363%let responseStatus =;
365%irm_rest_create_mip_ms_scen_run(host = &mip_protocol.:
366 , server = &mip_service
368 , tgt_ticket = %superq(rgf_tgt_ticket)
369 , workgroup = &mip_ms_workgroup
370 , modelingSystemName = &mip_ms_name
371 , modelingSystemVersion = &mip_ms_version
372 , preExecutionPgmName =
373 , postExecutionPgmName =
374 , instanceName = &modscen_nm
375 , cubeName = &cube_nm
376 , portfolioDataName = &source_ptf
377 , counterpartyDataName =
378 , economicDataName = scenarios_&base_dt_fmt1._&seg_lvl_model_run_key
379 , interval = %lowcase(&mipinterval)
380 , horizon = &miphorizon
381 , outputCurrency = &mipoutputcurrency
382 , genCodeOnly = false
383 , removeCubeEnabled = false
384 , registerScenarios = false
385 , numberSimulations = 0
389 , parameterMatrices = &mipParameterMatrices
392 , numberNodes = &mipnumbernodes
393 , numberThreads = &mipnumberthreads
394 , runAsOfDate = &base_dt_fmt2
395 , procHpriskArguments =
396 , aggregationLevels =
400 , maxWait = &max_wait
401 , outds = work.mip_run_instance_details
402 , outVarTicket = ticket_mip
403 , outSuccess = httpSuccess
404 , outResponseStatus = responseStatus
413%let responseStatus = ;
414%let ticket_workgroup = ;
415%irmst_load_trans_matrix_results(run_name = &modscen_nm
416 , workgroup = &mip_ms_workgroup
417 , model_group_map = work.model_group_map_seg
418 , function_package = work.rating_format
419 , scenario_meta = work.scenario_info
420 , tm_to_load = work.model_trans_matrix
422 , mipurl = &mip_protocol.:
423 , tgt_ticket = %superq(rgf_tgt_ticket)
424 , host = &mip_protocol.:
425 , server = &mip_service
428 , outds = work._tmp_workgroups_
429 , outVarTicket = ticket_workgroup
430 , outSuccess = httpSuccess
431 , outResponseStatus = responseStatus
439%irmst_load_tm_analysis_data(ad_analysis_data_name = %quote(Transition Matrix Results)
440 , ad_analysis_data_desc = %quote(Transition Matrix Results from Segment-level Analysis Run &analysis_run_id.. \nCreated by user &_metauser. on %sysfunc(datetime(), nldatmw200.).)
441 , ad_analysis_run_id = &analysis_run_id
442 , ad_base_date = &base_dt
443 , ad_cycle_id = &cycle_id
444 , ad_details_root = &sas_risk_workgroup_dir
445 , ad_entity_id = &entity_id
446 , ad_libref = &dr_libref
447 , ad_meta_library_name = &dr_library_name
448 , ad_schema_version = &content_version
450 , in_model_group_map = work.model_group_map_seg
451 , in_model_tm_results = work.model_trans_matrix
452 , in_scenario_meta = work.scenario_info
453 , rgf_host = &rgf_host
454 , rgf_port = &rgf_port
455 , rgf_protocol = &rgf_protocol
456 , rgf_service = &rgf_service
457 , rgf_solution = &rgf_solution
458 , tgt_ticket = %superq(rgf_tgt_ticket)