Rulebooks

The following section displays the content of rulebooks_prod.yml.

Rulebooks

Loading rulebooks visualization...

Raw YAML Content

version: v1
title: "Production rulebooks"

rulebooks:
  #### FLOAT RULEBOOKS

  - rulebook_name: primary_rulebook_v1_0
    priority: 100
    apply_to: 100
    type: floats
    superseding: true
    rules:
      - rule_name: RuleCashAdvanceScore
        name: cash_advance_score_200
        ab_group: underwriting.rulebook.primary.ml.prod
        custom_props:
          min_cash_advance_score: 200
          loan_amount_window: 20
      - rule_name: RuleMLPaybackPrediction
        name: ml_payback_prediction_0_8
        ab_group: underwriting.rulebook.primary.ml.prod
        custom_props:
          min_prediction_score: 0.8
          max_float_count: 1
          deny_non_applicable: false
      - rule_name: RuleLowTransactions
        custom_props:
          days_to_consider: 32
          average_transactions: 1.6
          float_rank: 1
      - rule_name: RuleAgeOfAccount
        custom_props:
          min_age: 25
      - rule_name: RuleMultipleAccounts
        custom_props:
          max_accounts: 2

  - rulebook_name: rulebook_catch_all_v1_0
    priority: 200
    apply_to: 0
    type: floats
    superseding: false
    rules:
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleSuspiciousHighBalance
        custom_props:
          high_account_balance: 1000000
          min_age_of_account: 5

  - rulebook_name: rulebook_balance_catch_all_v1_1
    priority: 300
    apply_to: 100
    type: floats
    superseding: false
    rules:
      - rule_name: RuleBalanceRequirement
        name: balance_requirement_1000
        custom_props:
          min_available: 100000
          min_current: 2000
      - rule_name: RuleGoodStanding
      - rule_name: RuleValidDebitCard
      - rule_name: RuleSuspiciousHighBalance
        custom_props:
          high_account_balance: 1000000
          min_age_of_account: 5

  - rulebook_name: rulebook_balance_catch_all_v1_2
    priority: 250
    apply_to: 100
    type: floats
    superseding: false
    rules:
      - rule_name: RuleBalanceBetweenBounds
        custom_props:
          max_float_rank: 3
          min_balance: 1
          max_balance: 100
      - rule_name: RuleBalanceRequirement
        name: balance_requirement_100
        custom_props:
          min_available: 10000
          min_current: 40000
          min_num_of_floats: 1
      - rule_name: RuleGoodStanding
      - rule_name: RuleValidDebitCard
      - rule_name: RuleSuspiciousHighBalance
        custom_props:
          high_account_balance: 1000000
          min_age_of_account: 5

  - rulebook_name: rulebook_existing_balance_bypass_v1_0
    priority: 8000
    apply_to: 30
    type: floats
    superseding: false
    rules:
      - rule_name: RuleGoodStanding
      - rule_name: RuleValidDebitCard
      - rule_name: RuleLowTransactions
        name: low_transactions_6_25
        custom_props:
          days_to_consider: 32
          average_transactions: 6.25 # 200+ transactions in 32 days
          float_rank: 1
      - rule_name: RuleCollectionsErrors
        name: collection_errors_0_2
        custom_props:
          max_error_ratio: 0.2
      - rule_name: RuleFloatRank
        name: float_rank_1
        custom_props:
          min_float_rank: 1

  - rulebook_name: rulebook_core_v1_8
    priority: 9900
    apply_to: 100
    type: floats
    superseding: false
    rules:
      - rule_name: RuleBalanceRequirement
        name: balance_requirement_0
        custom_props:
          min_available: 0
          min_current: 0
      - rule_name: RuleInstitutionCheck
        custom_props:
          min_balance: 500
          institution_list: [ins_35, ins_115640, ins_129229, ins_132289]
      - rule_name: RuleBalanceBetweenBounds
        custom_props:
          max_float_rank: 3
          min_balance: 1
          max_balance: 100
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleRecurringDepositsAndHighTransfer
        custom_props:
          min_income: -14900
          transfer_ratio: 0.8
      - rule_name: RuleCollectionsErrors
        custom_props:
          max_error_ratio: 1.5
      - rule_name: RuleAverageBalance
        custom_props:
          available_threshold: 0
      - rule_name: RuleSpendVelocity
        custom_props:
          min_income: -14900
          spend_percentage: 0.8
          days_after_income: 4
          allowed_high_spend_instances: 2
      - rule_name: RuleSuspiciousHighBalance
        custom_props:
          high_account_balance: 1000000
          min_age_of_account: 5

  - rulebook_name: rulebook_core_v1_9
    priority: 9850
    apply_to: 10
    type: floats
    superseding: false
    rules:
      - rule_name: RuleBalanceRequirement
        name: balance_requirement_0
        custom_props:
          min_available: 0
          min_current: 0
      - rule_name: RuleInstitutionCheck
        custom_props:
          min_balance: 500
          institution_list: [ins_35, ins_115640, ins_129229, ins_132289]
      - rule_name: RuleBalanceBetweenBounds
        custom_props:
          max_float_rank: 3
          min_balance: 1
          max_balance: 100
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleRecurringDepositsAndHighTransfer
        custom_props:
          min_income: -14900
          transfer_ratio: 0.8
      - rule_name: RuleCollectionsErrors
        custom_props:
          max_error_ratio: 1.5
      - rule_name: RuleAverageBalance
        custom_props:
          available_threshold: 0
      - rule_name: RuleSuspiciousHighBalance
        custom_props:
          high_account_balance: 1000000
          min_age_of_account: 5

  - rulebook_name: rulebook_cash_advance_v1_0
    priority: 9600
    apply_to: 100
    type: floats
    superseding: false
    rules:
      - rule_name: RuleCashAdvanceScore
        name: cash_advance_score_500
        custom_props:
          min_cash_advance_score: 500
          loan_amount_window: 20
          max_float_rank: 0
          deny_for_float_rank: true
      - rule_name: RuleValidDebitCard
      - rule_name: RuleSuspiciousHighBalance
        custom_props:
          high_account_balance: 1000000
          min_age_of_account: 5

  - rulebook_name: rulebook_cash_advance_v2_0
    priority: 9650
    apply_to: 100
    type: floats
    rules:
      - rule_name: RuleCashAdvanceScore
        name: cash_advance_score_700
        custom_props:
          min_cash_advance_score: 700
          loan_amount_window: 20
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleSuspiciousHighBalance
        custom_props:
          high_account_balance: 1000000
          min_age_of_account: 5

  - rulebook_name: rulebook_ml_cash_advance_v1_0
    priority: 9800
    apply_to: 100
    type: floats
    rules:
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleFloatRank
        name: float_rank_0
        custom_props:
          max_float_rank: 0
      - rule_name: RuleMLPaybackPrediction
        name: ml_payback_prediction_0_35
        custom_props:
          min_prediction_score: 0.35
          max_float_count: 0
          deny_non_applicable: true
      - rule_name: RuleSuspiciousHighBalance
        custom_props:
          high_account_balance: 1000000
          min_age_of_account: 5

  - rulebook_name: rulebook_float_checks_a
    priority: 9750
    apply_to: 100
    type: floats
    superseding: false
    rules:
      - rule_name: RuleFloatRank
        name: float_rank_5
        custom_props:
          min_float_rank: 5
      - rule_name: RuleRecentFloat
        name: recent_float_10
        custom_props:
          max_days: 10
      - rule_name: RuleGoodStanding

  - rulebook_name: rulebook_float_checks_b
    priority: 9700
    apply_to: 100
    type: floats
    superseding: false
    rules:
      - rule_name: RuleFloatRank
        name: float_rank_3
        custom_props:
          min_float_rank: 3
      - rule_name: RuleRecentFloat
        name: recent_float_5
        custom_props:
          max_days: 5
      - rule_name: RuleGoodStanding

  - rulebook_name: rulebook_competitor_ewa_dollar_amount
    priority: 9500
    apply_to: 100
    type: floats
    superseding: false
    rules:
      - rule_name: RuleEWADollarAmount
        custom_props:
          days_to_consider: 32
          required_min_borrow_amount: 35000
          required_min_repayment_amount: 35000
          min_advance_amount: -2000
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleFloatRank
        name: float_rank_0
        custom_props:
          max_float_rank: 0

  - rulebook_name: competitor_ewa_rulebook_v1_0
    priority: 9500
    apply_to: 100
    type: floats
    superseding: false
    rules:
      - rule_name: RuleCompetitorEwa
        custom_props:
          number_of_days: 32
          min_inflows: 10
          min_repayments: 10
          min_advance_amount: -2000
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding

  - rulebook_name: rulebook_ontime_float_repayment_v2_0
    apply_to: 100
    priority: 8700
    type: floats
    superseding: false
    rules:
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleMLPaybackPrediction
        name: ml_payback_prediction_0_47
        custom_props:
          min_prediction_score: 0.47
          max_float_count: 1
          deny_non_applicable: true
      - rule_name: RuleSubscriptionRank
        name: subscription_rank_2_50
        custom_props:
          min_rank: 2
          paid_within_days: 50
      - rule_name: RuleOnTimeFloatPayback
        name: on_time_float_payback_3_1_1
        custom_props:
          days_after_float_on_time: 3
          required_last_floats_on_time: 1
          required_float_rank: 1
      - rule_name: RuleFloatRank
        name: float_rank_must_be_1
        custom_props:
          min_float_rank: 1
          max_float_rank: 1

  - rulebook_name: rulebook_ontime_float_repayment_v3_0
    apply_to: 50
    priority: 8600
    type: floats
    superseding: false
    rules:
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleOnTimeFloatPayback
        name: on_time_float_payback_3_2_3
        custom_props:
          days_after_float_on_time: 3
          required_last_floats_on_time: 2
          required_float_rank: 3

  - rulebook_name: rulebook_ontime_float_repayment
    apply_to: 100
    priority: 8800
    type: floats
    superseding: false
    rules:
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleOnTimeFloatPayback
        custom_props:
          days_after_float_on_time: 7
          required_last_floats_on_time: 3
          required_float_rank: 4

  - rulebook_name: rulebook_essential_spend_groceries
    apply_to: 100
    priority: 9400
    type: floats
    superseding: false
    rules:
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleTransferRatio
        name: transfer_ratio_groceries
        custom_props:
          max_transfer_percentage: 30
          required_number_of_transactions: 1
          days_to_consider: 32
          transfer_categories: ["TRANSFER_IN", "TRANSFER_OUT"]
      - rule_name: RuleEssentialSpend
        name: essential_spend_groceries
        custom_props:
          required_float_rank: 0
          required_dollar_amount: 500
          required_number_of_transactions: 6
          essential_categories: ["FOOD_AND_DRINK_GROCERIES"]
          days_to_consider: 32

  - rulebook_name: rulebook_essential_spend_bookstore
    apply_to: 0
    priority: 8900
    type: floats
    superseding: false
    rules:
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleTransferRatio
        name: transfer_ratio_bookstore
        custom_props:
          max_transfer_percentage: 20
          required_number_of_transactions: 1
          days_to_consider: 32
          transfer_categories: ["TRANSFER_IN", "TRANSFER_OUT"]
      - rule_name: RuleEssentialSpend
        name: essentialspend_bookstore
        custom_props:
          required_float_rank: 0
          required_dollar_amount: 500
          required_number_of_transactions: 1
          essential_categories:
            ["GENERAL_MERCHANDISE_BOOKSTORES_AND_NEWSSTANDS"]
          days_to_consider: 32

  - rulebook_name: rulebook_essential_spend_medical
    apply_to: 0
    priority: 9100
    type: floats
    superseding: false
    rules:
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleTransferRatio
        name: transfer_ratio_medical
        custom_props:
          max_transfer_percentage: 20
          required_number_of_transactions: 1
          days_to_consider: 32
          transfer_categories: ["TRANSFER_IN", "TRANSFER_OUT"]
      - rule_name: RuleEssentialSpend
        name: essential_spend_medical
        custom_props:
          required_float_rank: 0
          required_dollar_amount: 500
          required_number_of_transactions: 1
          essential_categories: ["MEDICAL_OTHER_MEDICAL"]
          days_to_consider: 32

  - rulebook_name: rulebook_essential_spend_transportation_parking
    apply_to: 0
    priority: 9000
    type: floats
    superseding: false
    rules:
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleTransferRatio
        name: transfer_ratio_parking
        custom_props:
          max_transfer_percentage: 20
          required_number_of_transactions: 1
          days_to_consider: 32
          transfer_categories: ["TRANSFER_IN", "TRANSFER_OUT"]
      - rule_name: RuleEssentialSpend
        name: essential_spend_transportation_parking
        custom_props:
          required_float_rank: 0
          required_dollar_amount: 500
          required_number_of_transactions: 1
          essential_categories: ["TRANSPORTATION_PARKING"]
          days_to_consider: 32

  - rulebook_name: rulebook_essential_spend_music
    apply_to: 0
    priority: 9200
    type: floats
    superseding: false
    rules:
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RuleTransferRatio
        name: transfer_ratio_music
        custom_props:
          max_transfer_percentage: 20
          required_number_of_transactions: 1
          days_to_consider: 32
          transfer_categories: ["TRANSFER_IN", "TRANSFER_OUT"]
      - rule_name: RuleEssentialSpend
        name: essential_spend_music
        custom_props:
          required_float_rank: 0
          required_dollar_amount: 500
          required_number_of_transactions: 1
          essential_categories: ["ENTERTAINMENT_MUSIC_AND_AUDIO"]
          days_to_consider: 32

  - rulebook_name: rulebook_payroll_spend_v1_0
    apply_to: 0
    priority: 7900
    type: floats
    superseding: false
    rules:
      - rule_name: RuleValidDebitCard
      - rule_name: RuleGoodStanding
      - rule_name: RulePayrollSpend
        custom_props:
          lookback_days: 60
          days_after_payroll: 2
          spend_cap_multiplier: 1.05
          min_qualifying_payroll_amount: 40000
          max_single_txn_percentage: 20.0
          min_qualifying_inflows: 4

  #### LOAN RULEBOOKS

  - rulebook_name: primary_rulebook_loan_v1_0
    priority: 100
    apply_to: 100
    type: loan
    superseding: true
    rules:
      - rule_name: RuleCashAdvanceScore
        name: cash_advance_score_200
        custom_props:
          min_cash_advance_score: 200
          loan_amount_window: 20
      - rule_name: RuleLowTransactions
        custom_props:
          days_to_consider: 32
          average_transactions: 1.6
          float_rank: 1
      - rule_name: RuleAgeOfAccount
        custom_props:
          min_age: 25
      - rule_name: RuleMultipleAccounts
        custom_props:
          max_accounts: 2

  - rulebook_name: rulebook_loan_test_v1_0
    priority: 300
    apply_to: 100
    type: loan
    superseding: false
    rules:
      - rule_name: RuleGoodStanding
      - rule_name: RuleValidDebitCard
      - rule_name: RuleSuspiciousHighBalance
        custom_props:
          high_account_balance: 1000000
          min_age_of_account: 5