LKML Fintech analytics

Loans

Loans model for fintech analytics.

inferred

Blocks

loans.view.lkml · 305 lines
inferred
view: loans {
  sql_table_name: demo_company.sample_original ;;

  dimension: id_loan {
    label: "Loan ID"
    primary_key: yes
    sql: ${TABLE}.id_loan ;;
  }

  dimension: cd_msa {
    label: "Cbsa Code"
    sql: ${TABLE}.cd_msa ;;
  }

  dimension: vintage {
    type: int
    sql: ${dt_first_pi_year} ;;
  }

  dimension: fico {
    label: "Origination FICO"
    type: number
    sql: ${TABLE}.fico ;;
  }

  dimension: fico_tier {
    type: tier
    sql: ${fico} ;;
  }

  dimension: fico_more_than_700 {
    type: yesno
    sql: ${fico} > 700 ;;
  }

  dimension: int_rt {
    label: "Origination Coupon"
    type: number
    sql: ${TABLE}.int_rt ;;
  }

  dimension: prop_type {
    label: "Property Type"
    sql: ${TABLE}.prop_type ;;
  }

  dimension: servicer_name {
    label: "Servicer Name"
    sql: ${TABLE}.servicer_name ;;
  }

  dimension: zipcode {
    label: "Zip Code"
    type: zipcode
    sql: ${TABLE}.zipcode ;;
  }

  dimension: ltv {
    label: "Origination LTV"
    type: number
    sql: ${TABLE}.ltv ;;
  }

  dimension: orig_upb {
    label: "Original Balance (upb)"
    type: number
    sql: ${TABLE}.orig_upb ;;
  }

  dimension: channel {
    hidden: yes
  }

  dimension: cnt_borr {
    label: "Number of Borrowers"
    type: number
    hidden: yes
    sql: ${TABLE}.cnt_borr ;;
  }

  dimension: cnt_units {
    label: "Number of Property Units"
    type: number
    hidden: yes
    sql: ${TABLE}.cnt_units ;;
  }

  dimension: dti_over_65 {
    label: "Is Debt-to-Income over 65% (dti)"
    type: yesno
    hidden: yes
    sql: (${TABLE}.dti = '   ') ;;
  }

  dimension: total_ending_upb {
    label: "Total Balance at Prepay or FC"
    type: number
    hidden: yes
    sql: CASE
  WHEN (${last_reporting.is_prepaid} OR ${last_reporting.is_foreclosure}) THEN ${last_reporting.act_endg_upb}
  ELSE NULL
END ;;
  }

  dimension: fico_over_700 {
    label: "fico is over 700"
    type: yesno
    hidden: yes
    sql: ${fico} >= 700 ;;
  }

  dimension: fico_tiered_100 {
    label: "fico tiered (by 100, 6 bins)"
    type: tier
    hidden: yes
    sql: ${fico} ;;
  }

  dimension: fico_tiered_50 {
    label: "fico tiered (by 50, 12 bins)"
    type: tier
    hidden: yes
    sql: ${fico} ;;
  }

  dimension: bad_fico {
    label: "fico is below 380"
    type: yesno
    hidden: yes
    sql: ${fico} < 380 ;;
  }

  dimension: flag_fthb {
    label: "First Time Homebuyer (fthb)"
    type: yesno
    hidden: yes
    sql: ${TABLE}.flag_fthb ;;
  }

  dimension: loan_purpose {
  }

  dimension: ltv_tier {
    type: tier
    hidden: yes
    sql: ${ltv} ;;
  }

  dimension: mi_pct {
    label: "Mortgage Insurance Percentage (pct)"
    type: number
    hidden: yes
    sql: ${TABLE}.mi_pct ;;
  }

  dimension: occpy_sts {
    label: "Occupancy Status"
    hidden: yes
  }

  dimension: orig_loan_term {
    type: number
    hidden: yes
    sql: ${TABLE}.orig_loan_term ;;
  }

  dimension: orig_property_value {
    type: number
    hidden: yes
    sql: 1.0 * ${orig_upb} / ${ltv} ;;
  }

  dimension: amount_upb_tier {
    type: tier
    hidden: yes
    sql: ${orig_upb} ;;
  }

  dimension: ppmt_pnlty {
    type: yesno
    hidden: yes
    sql: ${TABLE}.ppmt_pnlty ;;
  }

  dimension: seller_name {
    hidden: yes
    sql: ${TABLE}.seller_name ;;
  }

  dimension: st {
    label: "State"
    hidden: yes
    sql: ${TABLE}.st ;;
  }

  dimension: dti {
    label: "Original Debt-to-Income (dti)"
    type: number
    hidden: yes
    sql: ${TABLE}.dti ;;
  }

  dimension_group: dt_first_pi {
    label: "Vintage"
    type: time
    timeframes: [year, month, month_num]
    sql: ${TABLE}.dt_first_pi ;;
  }

  dimension_group: dt_matr {
    label: "Loan Maturity (dt_matr)"
    type: time
    timeframes: [year, month]
    sql: trunc(dateadd(day,1,TO_DATE(${TABLE}.dt_matr,'YYYYMM'))) ;;
  }

  measure: count_fico_more_than_700 {
    type: count
    filters: [fico_more_than_700: "True"]
  }

  measure: count {
    label: "Loan Count"
    type: count
  }

  measure: total_orig_upb {
    label: "Total Balance"
    type: sum
    sql: ${orig_upb} ;;
  }

  measure: total_orig_upb_700 {
    label: "Total Balance > 700"
    type: sum
    filters: [fico_more_than_700: "True"]
    sql: ${orig_upb} ;;
  }

  measure: int_times_upb {
    type: sum
    hidden: yes
    sql: 1.0 * ${int_rt} * ${orig_upb} ;;
  }

  measure: wa_int_rate {
    label: "WA Coupon"
    type: number
    sql: ${int_times_upb} / ${total_orig_upb} ;;
  }

  measure: average_orig_upb {
    label: "Average Balance"
    type: avg
    sql: ${orig_upb} ;;
  }

  measure: count_bad_ficos {
    type: count
    hidden: yes
    filters: [bad_fico: "True"]
  }

  measure: percent_bad_ficos {
    type: number
    hidden: yes
    sql: 100.0 * ${count_bad_ficos}/NULLIF(${count},0) ;;
  }

  measure: average_int_rt {
    type: avg
    sql: ${int_rt} ;;
  }

  measure: average_fico {
    type: avg
    hidden: yes
    sql: ${fico} ;;
  }

  measure: average_ltv {
    type: avg
    hidden: yes
    sql: ${ltv} ;;
  }

  measure: average_dti {
    label: "Average Original Debt-to-Income (DTI) Ratio"
    type: avg
    hidden: yes
    sql: ${dti} ;;
  }

  measure: count_percent_of_previous {
    type: percent_of_previous
    hidden: yes
    sql: ${count} ;;
  }

  measure: total_amount_percent_of_previous {
    type: percent_of_previous
    hidden: yes
    sql: ${total_orig_upb} ;;
  }
}
loans.view.lookml · 203 lines
source-preserved
- view: loans
  sql_table_name: demo_company.sample_original
  fields:
  - dimension: id_loan
    primary_key: true
    label: Loan ID
    sql: ${TABLE}.id_loan
  - dimension: cd_msa
    label: Cbsa Code
    sql: ${TABLE}.cd_msa
  - dimension: vintage
    type: int
    sql: ${dt_first_pi_year}
  - dimension: fico
    type: number
    label: Origination FICO
    sql: ${TABLE}.fico
  - dimension: fico_tier
    type: tier
    sql: ${fico}
  - dimension: fico_more_than_700
    type: yesno
    sql: ${fico} > 700
  - dimension: int_rt
    type: number
    label: Origination Coupon
    sql: ${TABLE}.int_rt
  - dimension: prop_type
    label: Property Type
    sql: ${TABLE}.prop_type
  - dimension: servicer_name
    label: Servicer Name
    sql: ${TABLE}.servicer_name
  - dimension: zipcode
    type: zipcode
    label: Zip Code
    sql: ${TABLE}.zipcode
  - dimension: ltv
    type: number
    label: Origination LTV
    sql: ${TABLE}.ltv
  - dimension: orig_upb
    type: number
    label: Original Balance (upb)
    sql: ${TABLE}.orig_upb
  - dimension: channel
    hidden: true
  - dimension: cnt_borr
    type: number
    hidden: true
    label: Number of Borrowers
    sql: ${TABLE}.cnt_borr
  - dimension: cnt_units
    type: number
    hidden: true
    label: Number of Property Units
    sql: ${TABLE}.cnt_units
  - dimension: dti_over_65
    type: yesno
    hidden: true
    label: 'Is Debt-to-Income over 65% (dti)'
    sql: (${TABLE}.dti = '   ')
  - dimension: total_ending_upb
    type: number
    hidden: true
    label: Total Balance at Prepay or FC
    sql: CASE
  WHEN (${last_reporting.is_prepaid} OR ${last_reporting.is_foreclosure}) THEN ${last_reporting.act_endg_upb}
  ELSE NULL
END
  - dimension: fico_over_700
    type: yesno
    hidden: true
    label: fico is over 700
    sql: ${fico} >= 700
  - dimension: fico_tiered_100
    type: tier
    hidden: true
    label: fico tiered (by 100, 6 bins)
    sql: ${fico}
  - dimension: fico_tiered_50
    type: tier
    hidden: true
    label: fico tiered (by 50, 12 bins)
    sql: ${fico}
  - dimension: bad_fico
    type: yesno
    hidden: true
    label: fico is below 380
    sql: ${fico} < 380
  - dimension: flag_fthb
    type: yesno
    hidden: true
    label: First Time Homebuyer (fthb)
    sql: ${TABLE}.flag_fthb
  - dimension: loan_purpose
  - dimension: ltv_tier
    type: tier
    hidden: true
    sql: ${ltv}
  - dimension: mi_pct
    type: number
    hidden: true
    label: Mortgage Insurance Percentage (pct)
    sql: ${TABLE}.mi_pct
  - dimension: occpy_sts
    hidden: true
    label: Occupancy Status
  - dimension: orig_loan_term
    type: number
    hidden: true
    sql: ${TABLE}.orig_loan_term
  - dimension: orig_property_value
    type: number
    hidden: true
    sql: 1.0 * ${orig_upb} / ${ltv}
  - dimension: amount_upb_tier
    type: tier
    hidden: true
    sql: ${orig_upb}
  - dimension: ppmt_pnlty
    type: yesno
    hidden: true
    sql: ${TABLE}.ppmt_pnlty
  - dimension: seller_name
    hidden: true
    sql: ${TABLE}.seller_name
  - dimension: st
    hidden: true
    label: State
    sql: ${TABLE}.st
  - dimension: dti
    type: number
    hidden: true
    label: Original Debt-to-Income (dti)
    sql: ${TABLE}.dti
  - dimension_group: dt_first_pi
    type: time
    timeframes:
    - year
    - month
    - month_num
    sql: ${TABLE}.dt_first_pi
  - dimension_group: dt_matr
    type: time
    timeframes:
    - year
    - month
    sql: trunc(dateadd(day,1,TO_DATE(${TABLE}.dt_matr,'YYYYMM')))
  - measure: count_fico_more_than_700
    type: count
    filters:
    - fico_more_than_700: True
  - measure: count
    type: count
    label: Loan Count
  - measure: total_orig_upb
    type: sum
    label: Total Balance
    sql: ${orig_upb}
  - measure: total_orig_upb_700
    type: sum
    label: 'Total Balance > 700'
    filters:
    - fico_more_than_700: True
    sql: ${orig_upb}
  - measure: int_times_upb
    type: sum
    sql: 1.0 * ${int_rt} * ${orig_upb}
  - measure: wa_int_rate
    type: number
    label: WA Coupon
    sql: ${int_times_upb} / ${total_orig_upb}
  - measure: average_orig_upb
    type: avg
    label: Average Balance
    sql: ${orig_upb}
  - measure: count_bad_ficos
    type: count
    filters:
    - bad_fico: True
  - measure: percent_bad_ficos
    type: number
    sql: 100.0 * ${count_bad_ficos}/NULLIF(${count},0)
  - measure: average_int_rt
    type: avg
    sql: ${int_rt}
  - measure: average_fico
    type: avg
    sql: ${fico}
  - measure: average_ltv
    type: avg
    sql: ${ltv}
  - measure: average_dti
    type: avg
    label: Average Original Debt-to-Income (DTI) Ratio
    sql: ${dti}
  - measure: count_percent_of_previous
    type: percent_of_previous
    sql: ${count}
  - measure: total_amount_percent_of_previous
    type: percent_of_previous
    sql: ${total_orig_upb}

Contents

  • loans.view.lkml
  • loans.view.lookml