RAP® Data Science Blog/Runoff Analysis
Alt

RAP Use Cases

Runoff Analysis

Portfolio Insights Suite

By Becca Smith
September 4, 2024 | 6 min read

The RAP® Portfolio Insights Suite uses advanced analytics to improve customer retention and increase growth for innovators in the origination and servicing space.

Retention here refers to the ability of a mortgage lender to keep existing mortgage customers and loans within its portfolio.

Retention Strategies often include:

  • Offering competitive interest rates and loan terms
  • Providing timely and attractive refinance options to prevent customers from moving to other lenders.
  • Implementing loyalty programs or incentives for long-term customers

Portfolio Growth is defined as the expansion of a lender’s portfolio by acquiring new mortgage loans.

Strategies often include:

  • Developing new mortgage products to attract a broader range of customers.
  • Enhancing marketing efforts to reach potential new customers.
  • Expanding into new geographic markets
  • Forming partnerships with real estate agents, builders, and other relevant entities
  • Offering competitive loan terms and innovative mortgage solutions

Both retention and growth are crucial for a mortgage lender’s financial health and overall market competitiveness. Retention helps ensure a stable revenue stream from interest payments on existing loans, while growth helps increase market share and overall revenue potential.

The RAP® Portfolio Insights Suite takes a data-driven approach to portfolio retention and growth strategies.

Introduction

Categorize mortgage transactions (sales, refis, reverse mortgages, natural payoffs) and classify paid in full loans as retained or lost. Get a competitive view of which lenders and loan officers you are losing out to. Understand which types of loan products you retain the most of and which regions you perform the best in.

1. Portfolio Match & Append. Match your monthly portfolio paid in full snapshot with ICE data to get a unique property ID assigned. This allows you to utilize the ICE Property, Real Estate and Mortgage datasets and tie them back to your own portfolio.

%%local 

 

from ipywidgets import widgets,Button,Layout,Label 

import IPython 

import time 

 

layout= Layout(width='500px',display='left',Positioning='left',justify_content='space-between') 

style = {'description_width': '400px'} 

 

start_date= widgets.DatePicker(description='Start Date', layout=layout) 

end_date= widgets.DatePicker(description='End Date', layout=layout) 

label1 = widgets.HTML(value='Database to save results to (No special characters or spaces)') 

db_for_results= widgets.Text(value="database_name",style =style,layout=layout) 

label2 = widgets.HTML(value='Table to save results to (No special characters or spaces)') 

table_name_for_results= widgets.Text(value="table_name",style =style,layout=layout) 

label3 = widgets.Label(value='Notebook File Path') 

file_path= widgets.Text(value= "Paste the file path here",style =style,layout=layout) 

run_button = widgets.Button(description="Run", style=dict(font_weight='bold', text_color='white',button_color='blue')) 

display(start_date,end_date,run_button) 

 

def on_button_clicked(b): 

  global localString,start_date_new,end_date_new 
  start_date_new=str(start_date.value).replace(",)",")") 
  end_date_new=str(end_date.value).replace(",)",")") 

   db_for_results_new=str(db_for_results.value).replace(",)",")") 

   table_name_for_results_new=str(table_name_for_results.value).replace(",)",")") 

  file_path_new=str(file_path.value).replace(",)",")") 
  local_list=[start_date_new,end_date_new]    
  localString = ' | '.join(local_list) 
  run_button.style.button_color = 'gray' 
  time.sleep(1) 
  run_button.style.button_color = 'blue' 
run_button.on_click(on_button_clicked) 

2. Check public records data for updates in the PIF time range for portfolio properties. Assign “No county updates” to any loans that have not been updated yet by the county. Assign “no match” to any records that were not matched based on the Portfolio input property address.

3. Combine deed and mortgage records falling into the given input portfolio payoff time range and match the transactions to the corresponding input portfolio property using the ICE distinct property id, transaction id and subject lien information.

query = """ 

create or replace temp view ma_runoff_deed{} as 

select  
row_number() over (partition by p.input_record_number, d.fipscode, d.assessors_parcel_number order by p.input_record_number, d.fipscode, d.assessors_parcel_number, d.bkfsinternal_pid) as instance, 

p.input_record_number, 

-- ADDRESS DETAIL 
d.fipscode, d.assessors_parcel_number, d.property_full_street_address, d.property_city_name, d.property_state, d.property_zip_code, 

p.{}, 

-- DEED DETAIL 
d.original_date_of_contract, d.recording_date, d.document_type_code, 

-- LOAN DETAIL 
d.concurrent_tdloan_type, d.concurrent_tdloan_amount, d.concurrent_tdtype_financing, d.concurrent_tdinterest_rate, d.concurrent_tddue_date, d.adjustable_rate_rider, d.adjustable_rate_index, d.interest_only_period, d.fixed_step_rate_rider, d.stand_alone_refi, d.equity_credit_line,  

-- LENDER DETAIL 
d.concurrent_tdlender_name, d.concurrent_tdlender_type, d.loan_organization_nmls_id, d.loan_organization_name, d.mortgage_broker_nmls_id, d.mortgage_broker, d.loan_officer_nmls_id, d.loan_officer_name, 

-- BORROWER DETAIL 
d.number1_buyer_first_name_and_middle_name, d.number1_buyer_last_name_or_corporation_name, 

-- PROPERTY DETAIL 
d.assessors_land_use, d.residential_indicator, 

-- OTHER 

d.deed_transaction_type, d.bkfsinternal_pid 

from ma_runoff_deedpid{} p 
  inner join public_records.deed_nationwide d on 
    p.fipscode = d.fipscode and p.assessors_parcel_number = d.assessors_parcel_number and p.bkfsinternal_pid = d.bkfsinternal_pid 

where residential_indicator = 1 

""".format(table_ext_for_results, mapping_payoff_date, table_ext_for_results) 

spark.sql(query) 

4. Add additional data from the active lien table and release tables that enable mortgage transaction classification into sales, refis, forgiveness programs, reverse mortgages and natural payoffs.

5. Organize transactions into recaptured and lost categories. Add additional detail on the next transaction that has been classified in 3. when it is available

6. Visualize results in Plotly and/or Tableau. Track monthly changes in loss%.

rap-portfolio-insights-1-21.jpg
rap-portfolio-insights-1-22.jpg
rap-portfolio-insights-1-23.jpg
rap-portfolio-insights-1-24.jpg
rap-portfolio-insights-1-25.jpg
headshot-becca-smith.jpg

Becca Smith, Director, Mortgage Data & Analytics

Becca has over 10 years of experience as a Data Scientist implementing Machine Learning and AI solutions within the life sciences, healthcare, manufacturing and financial services industries and 4 years of experience as a product leader. She holds a Bachelor of Science in Computational Biochemistry from the University of Texas at Austin and a Master of Science in Analytics from the Georgia Institute of Technology.

Related resources
icon

Follow us on Linkedin

icon

Access Mortgage Monitor reports

icon

2025 Borrower Insights Survey report

Read more from the Connection Point

Ready to get started? Get in touch.

Get Started