# Estimate exposure at risk and create report  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								# Application developed by LaNubia  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( shiny )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( dplyr )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( ggplot2 )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( lubridate )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( survival )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( pec )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( DT )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( shinycssloaders )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( imfr )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( patchwork )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( tidyr )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( shinythemes )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( triangle )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( DiagrammeR )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								library ( stringr )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								options ( shiny.reactlog  =  TRUE ,  appDir  =  getwd ( ) )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								source ( " mod_basic.R" )  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								source ( " panel.R" )  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								# source("secretary.R")  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								# source("forplumber.R")  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								source ( " modals.R" )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								# Adding initial data  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								# Define UI for application  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								ui  <-  navbarPage (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  theme  =  shinytheme ( " cosmo" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  title  =  " LoanRisk" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  panel1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								# Define server logic required to draw a histogram  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								server  <-  function ( input ,  output )  {  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								  # Data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Some reactive values 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  collateral.dt <- reactiveVal ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  transaction.dt <- reactiveVal ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Adding initial data to reactive values 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  collateral.dt ( read.csv ( " ./data/collateral.csv" )  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  transaction.dt ( read.csv ( " ./data/transactions.csv" )  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Transforming Data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  new.data  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ndt <-  transaction.dt ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    withProgress ( message  =  " Trying to read" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 detail  =  " Hope the handwriting is legible!" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 value  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  1 ,  message  =  " Patience test 1 of 2" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   ndt  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ndt  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     # Change format of some columns 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       origination_date  =  ymd ( origination_date ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       maturity_date  =  ymd ( maturity_date ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       report_date  =  ymd ( report_date ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     # Add age of loan, loan tenure in months, which are compulsory parameters 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( age_of_asset_months  =  round ( as.numeric ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       report_date  -  origination_date 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     )  /  30 ) )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( loan_tenure_months  =  round ( as.numeric ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       maturity_date  -  origination_date 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     )  /  30 ) )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     group_by ( id )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     # Arranging to avoid mistakes in lag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     arrange ( report_date )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     # Add lag of bureau score and total number of defaults. Lag added for delta creation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       cum_default  =  cumsum ( default_flag ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       bureau_score_lag  =  ifelse ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         is.na ( lag ( bureau_score_orig ,  1 ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         bureau_score_orig , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         lag ( bureau_score_orig ,  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     # Adding delta of bureau score (ask me the reason if you do not know why) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( bureau_score_delta  =  bureau_score_lag  - 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                              bureau_score_orig )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     # Adding quarter info for matching later with macroeconomic data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( qtr  =  paste0 ( year ( report_date ) ,  " -Q" ,  quarter ( report_date ) ) )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     # Removing dummy 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     dplyr :: select ( - bureau_score_orig ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  2 ,  message  =  " Patience test 1 of 2" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ndt 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Show uploaded data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ up_data  <-  renderDataTable ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    DT :: datatable ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      new.data ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      extensions  =  c ( " Buttons" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      options  =  list ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        pageLength  =  5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        scrollX  =  TRUE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        dom  =  ' Bfrtip' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        filter  =  list ( position  =  ' top' ,  clear  =  FALSE ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        buttons  =  list ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          list ( extend  =  " csv" ,  text  =  " Download Visible" ,  filename  =  " page" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								               exportOptions  =  list ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 modifier  =  list ( page  =  " current" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								               ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          list ( extend  =  " csv" ,  text  =  " Download All" ,  filename  =  " data" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								               exportOptions  =  list ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 modifier  =  list ( page  =  " all" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								               ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  maxdate  <-  reactive ( max ( new.data ( ) $ report_date ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Show some stats 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  basicstatServer ( " nofloans" ,  dt  =  new.data ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # IMF Data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  imf.data  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    input $ fetchimf 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( ! is.null ( new.data ( ) ) ,  input $ fetchimf ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    # Defining database and other parameters for query of macroeconomic data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    databaseID  <-  " IFS" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    startdate  =  min ( new.data ( ) $ report_date ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    enddate  =  max ( new.data ( ) $ report_date ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    country  =  countries [countries $ Country  ==  input $ country , ] $ Alpha.2.code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    withProgress ( message  =  " Extracting data from IMF" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 detail  =  " Hope their server is up!" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 value  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  1 ,  message  =  " Trying to reach.." ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   print ( country ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   imf.data  <-  tryCatch ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     expr = { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       imf_data ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         databaseID , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         c ( " NGDP_NSA_XDC" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                           " PCPI_IX" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         country  =  stringr :: str_trim ( country ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         start  =  startdate , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         end  =  enddate , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         freq  =  " Q" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         return_raw  =  FALSE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         print_url  =  T , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         times  =  3 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       )  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     error  =  function ( e ) {           # Specifying error message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       showModal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         modalDialog ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                           " Error in IMF database. Sorry for the inconvenience. Can you please try again later?" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       message ( " Error with IMF database. This is usually temporary. Sorry for the inconvenience. Please try again later." ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     finally  =  {                    # Specifying final message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       message ( " Error with IMF database. Please try again later." ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  2 ,  message  =  " Done" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    imf.data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Adding macroeconomic data. Currently GDP and prices data are extracted 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  dataset_with_eco  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( ! is.null ( imf.data ( ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    withProgress ( message  =  " Trying Hard" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 detail  =  " Hang on" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 value  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  1 ,  message  =  " working.." ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   # New dataset by joining GDP and prices data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   dataset_with_eco  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     new.data ( )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     left_join ( imf.data ( ) ,  by  =  c ( " qtr"  =  " year_quarter" ) )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     rename ( gdp  =  NGDP_NSA_XDC ,  prices  =  PCPI_IX )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     select ( - iso2c )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     group_by ( id )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( gdp_lag  =  lag ( gdp ,  1 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                            prices_lag  =  lag ( prices ,  1 ) )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     dplyr :: select ( - qtr )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     dplyr :: select ( - c ( gdp ,  prices ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   # removing rows with no macroeconomic data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   dataset_eco  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     dataset_with_eco [ ! is.na ( dataset_with_eco $ gdp_lag )  & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                                        ! is.na ( dataset_with_eco $ prices_lag ) ,  ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  2 ,  message  =  " working.." ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    return ( dataset_eco ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # GDP Forecast 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  gdp.forecast  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    imf.data  <-  imf.data ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    imf.data $ year_quarter  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      zoo :: as.yearqtr ( imf.data $ year_quarter ,  format  =  " %Y-Q%q" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ga  <-  imf.data [ ,  c ( 2 ,  3 ) ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    minqg  <-  min ( imf.data $ year_quarter ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    gats  <-  ts ( ga $ NGDP_NSA_XDC ,  # AIP_IX, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								               start  =  minqg , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								               frequency  =  4 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    withProgress ( message  =  " Forecasting GDP" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 detail  =  " Hang on" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 value  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  1 ,  message  =  " working.." ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   fit.gdp  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     forecast :: auto.arima ( gats ,  seasonal  =  FALSE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   gdp.forecast  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     fit.gdp  %>%  forecast :: forecast ( h  =  60 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  2 ,  message  =  " Done" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    gdp.forecast 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Price forecast 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  pats.forecast  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    imf.data  <-  imf.data ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    imf.data $ year_quarter  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      zoo :: as.yearqtr ( imf.data $ year_quarter ,  format  =  " %Y-Q%q" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    gp  <-  imf.data [ ,  c ( 2 ,  4 ) ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    minqg  <-  min ( imf.data $ year_quarter ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    pats  <-  ts ( gp $ PCPI_IX ,  start  =  minqg ,  frequency  =  4 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    withProgress ( message  =  " Forecasting price" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 detail  =  " Hang on" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 value  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  1 ,  message  =  " working.." ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   fit.pats  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     forecast :: auto.arima ( pats ,  seasonal  =  FALSE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   pats.forecast  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     fit.pats  %>%  forecast :: forecast ( h  =  60 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  2 ,  message  =  " Done" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    pats.forecast 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Show full data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ fulldata  <-  renderDataTable ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    validate ( need ( ! is.null ( dataset_with_eco ( ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                  message  =  " Data Not ready yet" ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    a  <-  dataset_with_eco ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    DT :: datatable ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      a , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      extensions  =  c ( " Buttons" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      options  =  list ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        pageLength  =  5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        scrollX  =  TRUE , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        dom  =  ' Bfrtip' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        filter  =  list ( position  =  ' top' ,  clear  =  FALSE ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        buttons  =  list ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          list ( extend  =  " csv" ,  text  =  " Download Visible" ,  filename  =  " page" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								               exportOptions  =  list ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 modifier  =  list ( page  =  " current" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								               ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          list ( extend  =  " csv" ,  text  =  " Download All" ,  filename  =  " data" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								               exportOptions  =  list ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 modifier  =  list ( page  =  " all" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								               ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Probability of default 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ expcalcu  <-  renderUI ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( ! is.null ( dataset_with_eco ( ) ) ,  input $ fetchimf ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    fluidRow ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      h3 ( " Probability of asset going bad" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      p ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        " In this section you can see the distribution of probabilities of the assets going bad by year, upto 5 years from the last reporting date. Please click the button to proceed." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      actionButton ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        " start_model_selection" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        " Initiate Model Selection" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        class  =  " glow" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      withSpinner ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        plotOutput ( " probability_default" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        type  =  7 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        color  =  " black" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Model Selection. Using functions. In production these are to be converted to APIs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  selected_model  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( input $ start_model_selection , ! is.null ( dataset_with_eco ( ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    model_sel ( dff = dataset_with_eco ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Preparing tables with predictions. Using functions. In production these are to be converted to APIs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  predicted_table  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    input $ start_model_selection 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( ! is.null ( selected_model ( ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    z <- predic_t ( dff = dataset_with_eco ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                gdpfor = gdp.forecast ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                prfor = pats.forecast ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                maxdate = maxdate ( ) ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                final.model =  selected_model ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    z 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Plot Probability of default 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ probability_default  <-  renderPlot ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    input $ start_model_selection 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( predicted_table ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    withProgress ( message  =  " Plotting" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 detail  =  " Just a moment" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 value  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  1 ,  message  =  " Rushing" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   pl  <-  predicted_table ( )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     group_by ( name )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     #summarise(pd.me=median(value), pd.min=quantile(value,0.05), pd.max=quantile(value, 0.95))%>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     slice_head ( n  =  6 )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( name  =  factor ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       levels  =  c ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_current" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_1yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_2yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_3yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_4yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_5yr" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ) )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     filter ( ! is.na ( name ) )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ggplot ( aes ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       x  =  name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       y  =  value , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       fill  =  name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ) )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     geom_violin ( )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     geom_boxplot ( width  =  0.1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                                  color  =  " black" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                                  alpha  =  0.2 )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     labs ( x  =  " " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                          y  =  " Probability" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                          title  =  " Probability of default" )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     theme_bw ( )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     theme ( legend.title  =  element_blank ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                           legend.position  =  " bottom" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  2 ,  message  =  " Done" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    pl 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Show scenario creation options when exposures and risks are calculated 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ scenario_opts  <-  renderUI ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( ! is.null ( predicted_table ( ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        input $ start_model_selection ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    fluidRow ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      # remove class when btn clicked 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      br ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      h3 ( " Possible Scenarios" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      p ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        " In this section, the parameters for simulation will be selected. Please click on start simulation button to proceed" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    fluidRow ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      column ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        width  =  3 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        h5 ( " Select expected change in collateral value" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        p ( " -ve means reduction in value" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        sliderInput ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " mode_dep" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " Most Probable" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          min  =  -1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          max  =  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          value  =  -0.7 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          step  =  0.1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        sliderInput ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " min_dep" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " Minimum" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          min  =  -1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          max  =  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          value  =  -1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          step  =  0.1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        sliderInput ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " max_dep" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " Max" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          min  =  -1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          max  =  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          value  =  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          step  =  0.1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      column ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        width  =  3 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        sliderInput ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " discount_rate" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " Select Discount rate / WACC" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          min  =  0.00 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          max  =  0.2 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          value  =  0.02 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          step  =  0.01 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        actionButton ( " update" ,  " Start Simulation" ,  class  =  " glow" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        h3 ( " Please do not forget to click this button." ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      column ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        width  =  6 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        p ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " This section shows the possible exposure in case the asset goes bad." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        plotOutput ( " exposure_on_default" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Exposure on Default 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ exposure_on_default  <-  renderPlot ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    input $ update 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( nrow ( predicted_table ( ) ) > 0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    discount_rate_pa  <-  input $ discount_rate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    withProgress ( message  =  " Plotting" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 detail  =  " Just a moment" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 value  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  1 ,  message  =  " Almost there" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   pl  <-  predicted_table ( )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( pv.balance  =  balance  /  ( 1  +  discount_rate_pa )  ^ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                              ( r_n  -  1 ) )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( exposure_on_default  =  pv.balance  *  value )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     group_by ( name )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     summarise ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       pv.balance  =  sum ( pv.balance ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       exposure_on_default  =  sum ( exposure_on_default ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( name  =  factor ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       levels  =  c ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_current" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_1yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_2yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_3yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_4yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                         " risk_5yr" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ) )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     pivot_longer ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       cols  =  c ( " pv.balance" ,  " exposure_on_default" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       names_to  =  " type" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       values_to  =  " amount" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ggplot ( aes ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       x  =  name , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       y  =  amount  /  1000000 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       fill  =  type , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       label  =  paste0 ( round ( amount  /  1000000 ) ,  "  M" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ) )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     geom_col ( position  =  " dodge" )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     geom_text ( aes ( y  =  ( amount  /  1000000 )  +  5 ) ,  position  =  position_dodge ( width  =  1 ) )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     labs ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       x  =  " " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       y  =  " Amount" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       title  =  " Exposure on default" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       subtitle  =  " Amounts discounted" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     theme_bw ( )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     theme ( legend.title  =  element_blank ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                           legend.position  =  " bottom" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  2 ,  message  =  " Done" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    pl 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ credit_loss  <-  renderUI ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( ! is.null ( predicted_table ( ) ) ,  input $ update ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    validate ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      need ( input $ mode_dep  <=  input $ max_dep ,  message  =  " Most probable value should be less than or equal to Max" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      need ( input $ min_dep  <=  input $ mode_dep ,  message  =  " Min value should be less than or equal to Most probable value" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      need ( input $ min_dep  <=  input $ mode_dep ,  message  =  " Min value should be less than or equal to Max value" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    fluidRow ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      # remove class when btn clicked 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      h3 ( " Simulated Credit Loss with probability" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      p ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        " This section shows the distribution of the simlated possible losses. Please select the time to check the corresponding distribution." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      br ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      selectInput ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        " riskperiod" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        " Select time" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        choices  =  c ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " risk_current" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " risk_1yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " risk_2yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " risk_3yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " risk_4yr" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " risk_5yr" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        selected  =  " risk_1yr" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      br ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      column ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        width  =  6 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        p ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " Please click an drag to check the probabilities between ranges of possible loss." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        plotOutput ( " simres" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   brush  =  brushOpts ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     id  =  " sim_res_sel" ,  direction  =  " x" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        verbatimTextOutput ( " cumprob" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      column ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        width  =  6 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        p ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          " This section shows the overall estimated credit loss by year from last reporting date, upto 5 years" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        plotOutput ( " exp_credit_loss" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # collateral<-reactive({ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  #     collateral 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # }) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  simdata  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( nrow ( predicted_table ( ) ) > 0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( ! is.null ( input $ discount_rate ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    input $ update 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    collateral <- collateral.dt ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    discount_rate_pa  <-  input $ discount_rate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    withProgress ( message  =  " Monte Carlo Simulation" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 detail  =  " 1000 simulations" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 value  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  1 ,  message  =  " preparing" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   zz  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     predicted_table ( )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ungroup ( )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     group_by ( id )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     mutate ( pv.balance  =  balance  /  ( 1  +  discount_rate_pa )  ^ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                              ( r_n  -  1 ) )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     left_join ( collateral ,  by  =  " id" )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ungroup ( )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     select ( name ,  pv.balance ,  value ,  collateral ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  2 ,  message  =  " simulating" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   sim.t  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     data.frame ( matrix ( ncol  =  1000 ,  nrow  =  nrow ( zz ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   colnames ( sim.t )  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     paste0 ( " sim" ,  seq ( 1 : 1000 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   sim.col.prob  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ( 1  +  rtriangle ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       1000 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       a  =  input $ min_dep , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       b  =  input $ max_dep , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       c  =  input $ mode_dep 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   for  ( i  in  1 : 1000 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     sim.t [ ,  i ]  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       round ( zz $ value  *  ( zz $ pv.balance  -  zz $ collateral  *  sim.col.prob [i ] ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                             2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   sim.t [sim.t  <  0 ]  <-  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   sim.t  <-  cbind ( zz ,  sim.t ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   setProgress ( value  =  3 ,  message  =  " Done" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    sim.t 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  simresdata  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    dt  <-  simdata ( )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      filter ( name  ==  input $ riskperiod )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ungroup ( )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      select ( matches ( " sim?" ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    hist.pro  <-  density ( colSums ( dt ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    hist.pro 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ simres  <-  renderPlot ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( ! is.null ( simresdata ( ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    hist.pro  <-  simresdata ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    pro_dens  <-  data.frame ( hist.pro $ x ,  hist.pro $ y ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ggplot ( pro_dens , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								           aes ( x  =  hist.pro.x , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								               y  =  hist.pro.y ) )  +  geom_area ( aes ( y  =  hist.pro.y ) )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      labs ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        x  =  " Amount" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        y  =  " Chance" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        title  =  " Simulated expected credit loss" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        subtitle  =  " Amounts discounted" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      theme_bw ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ cumprob  <-  renderText ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( ! is.null ( input $ sim_res_sel ) ,  ! is.null ( simresdata ( ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    hist.pro  <-  simresdata ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    pro_dens  <-  data.frame ( hist.pro $ x ,  hist.pro $ y ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    res  <-  brushedPoints ( pro_dens ,  input $ sim_res_sel ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    if  ( nrow ( res )  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      return ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    paste0 ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      " Probability of the loss to be between " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      min ( res $ hist.pro.x ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      "  and " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      max ( res $ hist.pro.x ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      "  is "  , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      sum ( res $ hist.pro.y ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  finaldt  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    sim_fin ( simdata ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ exp_credit_loss  <-  renderPlot ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( ! is.null ( finaldt ( ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    finaldt ( )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      mutate ( amount  =  x  *  y )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      group_by ( r )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      summarise ( amount  =  sum ( amount ) )  %>% 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ggplot ( aes ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        x  =  r , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        y  =  round ( amount  /  1000 ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        label  =  paste0 ( round ( amount  /  1000 ) ,  "  K" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      ) )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      geom_col ( )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      geom_text ( aes ( y  =  round ( amount  /  1000 )  +  1 ) )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      labs ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        title  =  " Estimated Credit Loss" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        subtitle  =  " Weighted sum of 1000 simulations" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        x  =  " " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        y  =  " Amount" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      theme_bw ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ dlmanager  <-  renderUI ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    input $ update 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    req ( ! is.null ( finaldt ( ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    fluidRow ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      textInput ( " author" ,  " Enter Your Name" ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      downloadButton ( " report" ,  " Generate report" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  output $ report  <-  downloadHandler ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    # For PDF output, change this to "report.pdf" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    filename  =  " easyIFRSriskReport.pdf" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    content  =  function ( file )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      withProgress ( message  =  " Monte Carlo Simulation" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   detail  =  " 1000 simulations" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   value  =  0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     setProgress ( value  =  1 ,  message  =  " Copying to temp directory" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     tempReport  <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       file.path ( tempdir ( ) ,  " easyIFRSriskReport.Rmd" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     file.copy ( " easyIFRSriskReport.Rmd" ,  tempReport ,  overwrite  =  TRUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     setProgress ( value  =  2 ,  message  =  " Passing parameters" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ndata  <-  new.data ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     edata  <-  dataset_with_eco ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     predtable  <-  predicted_table ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     simudata  <-  simdata ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     fidata  <-  finaldt ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     gfor  <-  gdp.forecast ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     pfor  <-  pats.forecast ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     params  <-  list ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       user  =  input $ author , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       newdata  =  ndata , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       predtabledata  =  predtable , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       disrate  =  input $ discount_rate , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       simdata  =  simudata , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       finaldata  =  fidata , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       gdpf  =  gfor , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       pf  =  pfor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     setProgress ( value  =  3 ,  message  =  " Knitting. Hang on." ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     rmarkdown :: render ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       tempReport , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       output_file  =  file , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       params  =  params , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       envir  =  new.env ( parent  =  globalenv ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     setProgress ( value  =  4 ,  message  =  " Done." ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                   } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # File uploading Module 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  observeEvent ( input $ uploadnew ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    showModal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      modal1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  observeEvent ( input $ closemodal1 , { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    removeModal ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  observeEvent ( input $ closemodal2 , { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    removeModal ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Uploading temp file and collecting info about the columns 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  observeEvent ( input $ uploadfiles , { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    df.tr  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      inFile  <-  input $ transaction 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      if  ( is.null ( inFile ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        return ( NULL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      df  <-  read.csv ( inFile $ datapath , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     header  =  input $ header , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     sep  =  input $ sep , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     quote  =  input $ quote ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      df 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    df.c  <-  reactive ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      inFile  <-  input $ collaterals 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      if  ( is.null ( inFile ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        return ( NULL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      df  <-  read.csv ( inFile $ datapath , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     header  =  input $ header , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     sep  =  input $ sep , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                     quote  =  input $ quote ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      df 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " collateralid" , " Select id column" ,  df.c ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " collateralvalue" , " Select Collateral value column" ,  df.c ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " reportdate" , " Select report date column" ,  df.tr ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " origindate" , " Select origin date column" ,  df.tr ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " maturitydate" , " Select maturity date column" ,  df.tr ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " assettype" , " Select asset classifier column" ,  df.tr ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " customertype" , " Select customer classifier column" ,  df.tr ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " otherfact" , " Select any other classifier column" ,  df.tr ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " bureauscore" , " Select bureau score column" ,  df.tr ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " balance" , " Select asset balance column" ,  df.tr ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " status" , " Select loan status" ,  df.tr ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " defaultflag" , " Select default flag column" ,  df.tr ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    updateVarSelectInput ( " transid" , " Select id column" ,  df.tr ( ) , session  =  getDefaultReactiveDomain ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  # Modal 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  observeEvent ( input $ uploadfiles ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    showModal ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      modal2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  observeEvent ( input $ confirmupload , { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    transaction.dt ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        df  <-  read.csv ( input $ transaction $ datapath , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       header  =  input $ header , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       sep  =  input $ sep , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       quote  =  input $ quote ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        head ( df ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        df <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          df  %>%  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          rename ( report_date = input $ reportdate , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 origination_date = input $ origindate , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 maturity_date = input $ maturitydate , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 asset_type = input $ assettype , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 customer_type = input $ customertype , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 bureau_score_orig = input $ bureauscore , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 balance = input $ balance , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 loan_status = input $ status , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 default_flag = input $ defaultflag , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 id = input $ transid ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        if ( input $ dateformat == " ymd" ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          df $ report_date <- ymd ( df $ report_date ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          df $ origination_date <- ymd ( df $ origination_date ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          df $ maturity_date <- ymd ( df $ maturity_date ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          df $ report_date <- dmy ( df $ report_date ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          df $ origination_date <- dmy ( df $ origination_date ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          df $ maturity_date <- dmy ( df $ maturity_date ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        df $ loan_status <- as.integer ( df $ loan_status ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        # Covert to factors 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        df $ asset_type <- as.factor ( df $ asset_type ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        df $ customer_type <- as.factor ( df $ customer_type ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        if ( ! is.null ( input $ otherfact ) ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          for ( i  in  1 : length ( input $ otherfact ) ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								            df $ input $ otherfact [i ] <- as.factor ( df $ input $ otherfact [i ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        df 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    collateral.dt ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        df  <-  read.csv ( input $ collaterals $ datapath , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       header  =  input $ header , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       sep  =  input $ sep , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                       quote  =  input $ quote ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        df <- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          df  %>%  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								          rename ( id = input $ collateralid , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								                 collateral = input $ collateralvalue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								        df 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								    removeModal ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
								# Run the application  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								shinyApp ( ui  =  ui ,  server  =  server )