Cash Flow Edit Logic

This chapter describes the set of logical validations that are performed, and the order in which they should be performed, on the Account table data during a Cash Flow Edits rule run.

This chapter covers the following topics:

Overview of Cash Flow Edit Logic

Oracle Transfer Pricing makes use of cash flow modeling to generate results. Inconsistent or incomplete Account table data can interrupt cash flow generation and further processing by the application.

Oracle Transfer Pricing provides a data validation and correction process, called Cash Flow Edits, to verify the accuracy and check the completeness of your Account table data and make corrections to it before you use it to generate cash flows and for further processing. See: Cash Flow Edits, Oracle Transfer Pricing User Guide.

The Cash Flow Edits process rule contains a set of checks to be performed on the Account table data that validate the data for consistency and ensure that the data is logically correct for handling by the cash flow engine. The set of checks and the order in which they should be performed are together known as cash flow edit logic.

Cash Flow Edit Logic

The following table details the set of checks and the order in which they are performed:

Note: The cash flow edit logic cannot be modified.

Cash Flow Edit Logic
Error Code Error Condition Assignment Error Level Warning Description/Purpose
9106 AMRT_TERM_MULT not equal to D, M, or Y AMRT_TERM_MULT = 'M' 2 Invalid AMRT_ TERM_MULT Checks for valid amortization term multipliers
9107 NEG_AMRT_EQ_MULT not equal to D, M, or Y NEG_AMRT_EQ_MULT = M 2 Invalid NEG_ AMRT_EQ_ MULT Checks for valid Neg. Amortization Eq. Multipliers
9109 ORG_TERM_MULT not equal to D, M, or Y ORG_TERM_MULT = 'M' 2 Invalid ORG_ TERM_MULT Checks for valid Original term multipliers
9112 PMT_FREQ_MULT not equal to D, M, or Y PMT_FREQ_MULT = 'M' 2 Invalid PMT_ FREQ_MULT Checks for valid payment frequency multipliers
9117 REPRICE_FREQ_MULT not equal to D, M, or Y REPRICE_FREQ_MULT = 'M' 2 Invalid REPRICE_ FREQ_MULT Checks for valid reprice frequency multipliers
9115 RATE_SET_LAG_MULT not equal to D, M, or Y RATE_SET_LAG_MULT equal to 'M' 2 Invalid RATE_ SET_LAG_MULT Checks for valid rate set lag multipliers
9111 PMT_CHG_FREQ_MULT not equal to D, M, or Y PMT_CHG_FREQ_MULT equal to 'M' 2 Invalid PMT_ CHG_FREQ_ MULT Checks for valid payment change frequency multipliers
9105 AMRT_TYPE_CODE (<= 999 and not equal to 100, 200, 400, 500, 600, 700, 710, 800, 801, 802, 820, 830, or 999) or >29999 Set AMRT_TYPE_CODE equal to '700' 2 Invalid Amortization Type Checks that amortization type codes are either in the user defined range or that they are a valid OFSA code
9166 If REPRICE_FREQ < 0 REPRICE_FREQ = 0 2 Reprice_Freq < 0 Reprice frequencies must not be negative
9167 If AMRT_TYPE_CODE = 710 and REPRICE_FREQ < > 0 REPRICE_FREQ = 0 2 Rule of 78s Reprice_Freq<>0 Rule of 78's instruments are implicitly fixed
9155 IF INTEREST_RATE_CODE < 0 or INTEREST_RATE_CODE > 99999 INTEREST_RATE_CODE = 0 2 Int Rt Code out of range Interest rate code must be within a valid range
9156 NET_MARGIN_CODE <> 0 and NET_MARGIN_CODE <> 1 NET_MARGIN_CODE = 0 2 Invalid Net Margin Code Valid net margin codes are 0 or 1
9157 T_RATE_INT_RATE_CODE < 0 or T_RATE_INT_RATE_CODE > 99999 T_RATE_INT_RATE_CODE = 999 2 T Rt Int Rt Cd out of rng T rate interest rate code must be within a valid range
9104 ACCRUAL_BASIS_CODE <1 or >6 ACCRUAL_BASIS_CODE equal to '3' 2 Invalid Accrual Basis Cd Accrual basis code must be between 1 and 6 inclusively
9114 RATE_CHG_RND_CODE <0 or >4 RATE_CHG_RND_CODE equal to '0' 2 Invalid Rate Chg Rnd Cd Rate change round code must be between 0 and 4
9132 (CUR_PAYMENT < 0 and CUR_PAR_BAL > 0) or (CUR_PAYMENT > 0 and CUR_PAR_BAL < 0) Set CUR_PAYMENT equal to 0 2 Pmt, bal opposite signs Current payment and current balance cannot have opposite signs
9158 If CUR_BOOK_BAL <> (CUR_PAR_BAL + DEFERRED_CUR_BAL) Warning Only 1 CurBkBl <> ParBl + Def Bl Current book balance should equal the current par balance + current deferred balance
9159 CUR_NET_PAR_BAL_C - CUR_PAR_BAL * ( 1 - PERCENT_SOLD/100) >.001 Warning 1 NetParBl<>Com ptd NetParBl Current net par balance should reflect the bank-owned portion of the current gross balance
9168 ORG_PAR_BAL = 0 and REPRICE_FREQ = 0 Warning 1 OrgParBal=0! Fixed Rate For transfer pricing of fixed rate instruments, the original balance should be populated
9152 ORG_PAR_BAL < CUR_PAR_BAL and AMRT_TYPE_CODE =710 message only: OrgParBal < CurParBal 1 Org Par Bal < Cur Par Bal Original balance on rule of 78's instruments should not be greater than current balance
9160 If AMRT_TYPE_CODE = 600 and PMT_DECR_CY < 0 PMT_DECR_CY = 0 2 Payment Decrease Cycle=0 Payment decrease cycle cannot be less than zero (Neg Am instruments only)
9127 ORG_PAYMENT_AMT = 0 and PMT_DECR_LIFE > 0 and AMRT_TYPE_CODE = 600 Set PMT_DECR_LIFE equal to 0 2 Org Pmt=0, Pmt Dec Lf<>0 Payment decrease life is expressed as a percent of a zero original payment (Neg Am instruments only)
9162 If AMRT_TYPE_CODE = 600 and PMT_DECR_LF <> 0 and CUR_PAYMENT < ORG_PAYMENT_AMT * (1 - PMT_DECR_LF/100) Warning Only 1 Cur Pmt < Life Pay Floor Current payment is less than the minimum payment amount (Neg Am instruments only)
9161 If AMRT_TYPE_CODE = 600 and PMT_DECR_LF < 0 Set PMT_DECR_LIFE equal to 0 2 PmtDecrLf<0 for Adj NegAm Payment decrease life cannot be less than zero (Neg Am instruments only)
9136 AMRT_TYPE_CODE = 600 and PMT_INCR_CYCLE < 0 Set PMT_INCR_CYCLE equal to 0 2 Pmt Incr Cycle < 0 Payment increase cycle cannot be less than zero (Neg Am instruments only)
9128 ORG_PAYMENT_AMT = 0 and PMT_INCR_LIFE > 0 and AMRT_TYPE_CODE = 600 Set PMT_INCR_LIFE equal to 0 2 Org Pmt=0, Pmt Incr Lf<>0 Payment increase life is expressed as a percent of a zero original payment (Neg Am instruments only)
9163 If AMRT_TYPE_CODE = 600 and PMT_INCR_LF < 0 Set PMT_INCR_LIFE equal to 0 2 PmtIncrLf<0 for Adj NegAm Payment increase life cannot be less than zero (Neg Am instruments only)
9164 If AMRT_TYPE_CODE = 600 and PMT_INCR_LF <> 0 and CUR_PAYMENT > ORG_PAYMENT_AMT * (1 + PMT_INCR_LF/100) Warning Only 1 Cur Pmt > Life Pay Cap Current payment is greater than the maximum payment amount (Neg Am instruments only)
9141 RATE_DECR_CYCLE < 0 RATE_DECR_CYCLE equal to 0 2 Rate Decr Cycle < 0 Rate decrease cycle must not be negative
9144 RATE_FLOOR_LIFE > CUR_NET_RATE message only: Rt Floor Lf > Cur Net Rt 1 Rt Floor Lf > Cur Net Rt Rate floor life must not be greater than the current net rate
9145 RATE_INCR_CYCLE < 0 RATE_INCR_CYCLE equal to 0 2 Rate Incr Cycle < 0 Rate increase cycle cannot be less than 0
9103 CUR_NET_RATE < 0 message only: Current Net Rate < 0 1 Current Net Rate < 0 Current net rate must not be negative
9102 CUR_GROSS_RATE < 0 message only: Current Gross Rate < 0 1 Current Gross Rate < 0 Current gross rate must not be negative
9108 (NEG_AMRT_LIMIT >= 200)or(NEG_AMRT_LIMIT < 0) and AMRT_TYPE_CODE = 600 Set NEG_AMRT_LIMIT equal to 0 2 Invalid NgAm Limit Neg Am limit value does not fall in a valid range (Neg Am instruments only)
9140 RATE_CHG_MIN < 0 Set RATE_CHG_MIN equal to 0 2 Rate Chg Min < 0 Minimum rate change cannot be negative
9139 RATE_CAP_LIFE < CUR_NET_RATE and RATE_CAP_LIFE <>0 message only: Rt Cap Life < Cur Net Rt 1 Rt Cap Life < Cur Net Rt Current net rate is greater than the rate cap
9118 RATE_CHG_RND_FAC < 0 or RATE_CHG_RND_FAC > 1 Set RATE_CHG_RND_FAC equal to 0 2 Invalid Rt Chg Rnd Fact Rate change round factor must be a percentage
9138 RATE_CAP_LIFE < CUR_GROSS_RATE and RATE_CAP_LIFE <> 0 and CUR_GROSS_RATE <> 0 and TEASER_END_DATE < CALENDAR_PERIOD_END_DATE Set RATE_CAP_LIFE equal to CUR_GROSS_RATE 1 Rt Cap Lf < Cur Gross Rt Current gross rate is greater than the rate cap life
9143 RATE_FLOOR_LIFE > CUR_GROSS_RATE and CUR_GROSS_RATE <> 0 and TEASER_END_DATE < CALENDAR_PERIOD_END_DATE Set RATE_FLOOR_LIFE equal to CUR_GROSS_ RATE 1 Rt Floor Lf > Cur Grss Rt Current gross rate is less than the rate floor
9130 (ORIGINATION_DATE < 01/01/1950) or(ORIGINATION_DATE >01/01/2099) Set ORIGINATION_DATE = 01/01/1950 2 Orig. Dt < 01/01/1950 Origination date must be acceptable
9165 If ISSUE_DATE > ORIGINATION_DATE Set ISSUE_DATE = ORIGINATION_DATE 2 Issue Date > Orig Date Issue date cannot be greater than origination date
9124 ORIGINATION_DATE >= CALENDAR_PERIOD_END_DATE and ORIGINATION_DATE >= NEXT_PAYMENT_DATE NEXT_PAYMENT_DATE = ORIGINATION_DATE + 1 day 2 Next Pmt Dt < Org Dt Next payment date is less than origination date (future origination case)
9123 CALENDAR_PERIOD_END_DATE > ORIGINATION_DATE and CALENDAR_PERIOD_END_DATE >= NEXT_PAYMENT_DATE NEXT_PAYMENT_DATE equal to CALENDAR_PERIOD_END_DATE + 1 day 2 Next Pmt Dt < CALENDAR_PERIOD_END_DATE Next payment date is less than Calendar Period End Date (past origination case). Calendar Period End Date cannot be greater than the origination date and greater than the next payment date
9125 ORIGINATION_DATE <= CALENDAR_PERIOD_END_DATE and NEXT_REPRICE_DATE <= CALENDAR_PERIOD_END_DATE and REPRICE_FREQ > 0 NEXT_REPRICE_DATE equal to CALENDAR_PERIOD_END_DATE + 1 day 2 Next Repr Dt < CALENDAR_PERIOD_END_DATE Next reprice date is less than Calendar Period End Date (past origination case)
9126 ORIGINATION_DATE > CALENDAR_PERIOD_END_DATE and NEXT_REPRICE_DATE < ORIGINATION_DATE and REPRICE_FREQ > 0 Set NEXT_REPRICE_DATE equal to ORIGINATION_ DATE + 1 day 2 Next Repr Dt < Org Dt Next reprice date is less than the origination date (future origination case)
9169 If REPRICE_FREQ <> 0 and TEASER_END_DATE > ORIGINATION_DATE and TEASER_END_DATE > CALENDAR_PERIOD_END_DATE and NEXT_REPRICE_DATE > TEASER_END_DATE Set NEXT_REPRICE_DATE equal to TEASER_END_ DATE 2 Next Repr Dt > Ts End Dt Next reprice date is greater than tease end date
9121 If AMRT_TYPE_CODE = 600 and NEG_AMRT_EQ_FREQ > 0 and NEG_AMRT_EQ_DATE <= MAX(ORIGINATION_DATE, CALENDAR_PERIOD_END_DATE) Set NEG_AMRT_EQ_DATE equal to NEXT_REPRICE_ DATE 2 NgAm Eq Dt < Org Dt Neg Am equalization date is less than origination date (future origination) or less than the Calendar Period End Date (past origination) (Neg am instruments only)
9147 REMAIN_NO_PMTS_C < 1 REMAIN_NO_PMTS_C = 1 2 Rem No Pmts < 1 There has to be at least 1 payment left
9119 MATURITY_DATE < NEXT_PAYMENT_DATE MATURITY_DATE = NEXT_PAYMENT_DATE +((REMAIN_NO_PMTS_C-1)/PMT_FREQ) 2 Mat Dt < Next Pmt Dt Maturity date cannot be before the next payment date
9134 If AMRT_TYPE_CODE = 600 and PMT_CHG_FREQ > 0 and CALENDAR_PERIOD_END_DATE < PMT_ADJUST_DATE and PMT_ADJUST_DATE < ORIGINATION_DATE PMT_ADJUST_DATE = NEXT_REPRICE_DATE 2 Pmt Adj Dt < Org Dt Payment adjustment date is less than origination date (future origination) (Neg am instruments only)
9133 If AMRT_TYPE_CODE = 600 and PMT_CHG_FREQ > 0 and CALENDAR_PERIOD_END_DATE > PMT_ADJUST_DATE PMT_ADJUST_DATE = NEXT_REPRICE_DATE 2 Pmt Adj Dt < CALENDAR_PERIOD_END_DATE Neg Am equalization date is less than the Calendar Period End Date (past origination) (Neg am instruments only)
9154 REPRICE_FREQ <> 0 and LAST_REPRICE_DATE > NEXT_REPRICE_DATE LAST_REPRICE_DATE = NEXT_REPRICE_DATE minus REPRICE_FREQ 2 LastReprDt>Nex tReprDt Last reprice date is greater than next reprice date
9148 RATE_SET_LAG < 0 RATE_SET_LAG = 0 2 Set Lag < 0 Rate set lag cannot be negative
9120 NEG_AMRT_EQ_FREQ < 0 and AMRT_TYPE_CODE = 600 NEG_AMRT_EQ_FREQ equal to 0 2 NegAmEqFrq < 0 Neg Am Equalization frequency cannot be negative (Neg Am instruments only)
9153 REPRICE_FREQ = 0 and (AMRT_TYPE_CODE = 500 or AMRT_TYPE_CODE = 600) message only: AdjAmrtType, ReprFrq=0 1 AdjAmrtType, ReprFrq=0 Reprice frequency denotes fixed on adjustable amortization types (Conventional Adjustable and Adjustable Neg Am)
9110 If AMRT_TYPE_CODE = 600 and PMT_CHG_FREQ < 0 PMT_CHG_FREQ equal to 0 2 Invalid Pmt Chg Frq Payment change frequency cannot be negative (Neg Am instrument only)
9131 PMT_FREQ > calculated original term PMT_FREQ equal to calculated original term 2 Payment Freq > Org Term Payment frequency cannot be greater than original term
9129 ORG_TERM <> calculated original term within 45 days or ORG_TERM = 0 Set ORG_TRM = calculated original term 2 Org Term<>Mat Dt -Org Dt Original term should equal the time between the origination date and the maturity date
9135 PMT_FREQ <= 0 and ORIGINATION_DATE <= CALENDAR_PERIOD_END_DATE and MATURITY_DATE > CALENDAR_PERIOD_END_DATE ORIGINATION_DATE > CALENDAR_PERIOD_END_DATE and MATURITY_DATE > ORIGINATION_DATE NEXT_PAYMENT_DATE = MATURITY_DATE and ORG_TERM = calculated original term and PMT_ FREQ = calculated original term and REMAIN_NO_ PMTS_C = 1 2 Pmt Freq <= 0, Trm Assumed Payment frequency is less than or equal to zero, and both maturity date and origination date are valid dates and can be used to calculate payment frequency
9135 PMT_FREQ <= 0 and ORIGINATION_DATE <= CALENDAR_PERIOD_END_DATE, MATURITY_DATE<= CALENDAR_PERIOD_END_DATE but NEXT_PAYMENT_DATE > CALENDAR_PERIOD_END_DATE or ORIGINATION_DATE> CALENDAR_PERIOD_END_DATE, MATURITY_DATE < ORIGINATION_DATE, but NEXT_PAYMENT_DATE > ORIGINATION_DATE MATURITY_DATE = NEXT_PAYMENT_DATE and ORG_TERM = calculated original term and PMT_FREQ = calculated original term and REMAIN_NO_PMTS_C = 1 2 Pmt Freq <= 0, Trm Assumed Payment frequency is less than or equal to zero and maturity date is invalid, but next payment date can be used to calculate a valid payment frequency
9135 PMT_FREQ <= 0 and ORIGINATION_DATE <= CALENDAR_PERIOD_END_DATE, MATURITY_DATE<= CALENDAR_PERIOD_END_DATE, and NEXT_PAYMENT_DATE <= CALENDAR_PERIOD_END_DATE or ORIGINATION_DATE> CALENDAR_PERIOD_END_DATE, and both MATURITY_DATE and NEXT_PAYMENT_DATE less than ORIGINATION_DATE MATURITY DATE = CALENDAR PERIOD END DATE + 1 day and NEXT PAYMENT DATE = CALENDAR PERIOD END DATE + 1 day and ORG TERM = calculated original term and PMT_FREQ = calculated original term and REMAIN_NO_PMTS_C = 1 2 Pmt Freq <= 0, Trm Assumed Payment frequency less than or equal to zero and all dates which can be used to calculate payment frequency are in the past
9100 If ((AMRT_TYPE_CODE <> 700 or (AMRT_TYPE_CODE = 700 and AMRT_TERM <> 0)) and AMRT_TERM (in days) < ORG_TERM (in days) Set AMRT_TERM equal to ORG_TERM, AMRT_ TERM_MULT = ORG_ TERM_MULT 2 Org Term > Amrt Term Amortization term can only be equal to zero on Non/Amortizing instruments and cannot be < Original Term
9170 If REMAIN_NO_PMTS_C + (REMAIN_TERM_C (in days) / REPRICE_FREQ (in days)) >2000 Warning 1 >2000 Events for Record The maximum number of events that can be modeled has been exceeded
9171 LRD_BALANCE=0 LRD_BALANCE = CUR_ PAR_BAL 2 LRDBalance=0 The balance as of the last reprice date cannot be equal to 0
9172 ADJUSTABLE_TYPE_CODE <> 0 and LAST_REPRICE_DATE < ISSUE_DATE Message Only 1 LastRepriceDate <IssueDate When the last reprice date is less than the issue date, transfer pricing will not occur
9174 REPRICE_FREQ > 0 and ADJUSTABLE_TYPE_CODE = 0 Message Only 1 AdjType=0 & ReprFreq>0 Reprice frequency and adjustable type code are inconsistent
9175 REPRICE_FREQ = 0 and ADJUSTABLE_TYPE_CODE <> 0 Message Only 1 AdjType<>0 & ReprFreq=0 Reprice frequency and adjustable type code are inconsistent
9176 AMRT_TYPE_CODE = 100 and ADJUSTABLE_TYPE_CODE <> 0 Message Only 1 AdjType<>0 & AmrtType=100 Variable adjustable type on Conventional Fixed instrument
9177 AMRT_TYPE_CODE = 710 and ADJUSTABLE_TYPE_CODE <> 0 ADJUSTABLE_TYPE_CODE =0 2 AdjType<>0 & AmrtType=710 Rule of 78's instrument should only have a fixed adjustable type code
9178 (AMRT_TYPE_CODE = 500 or AMRT_TYPE_CODE = 600) and ADJUSTABLE_TYPE_CODE = 0 Message Only 1 AdjType=0 & Amrt(500,600) Fixed adjustable type code on adjustable amortization codes (Conventional Adjustable and Adjustable Neg Am)
9179 LAST_PAYMENT_DATE > NEXT_PAYMENT_DATE and PAYMENT_FREQ > 0 LAST_PAYMENT_DATE = NEXT_PAYMENT_DATE - PMT_FREQ 2 LastPayDate>=NextPayDate Last payment date is greater than next payment date and can be calculated using payment frequency
9179 LAST_PAYMENT_DATE > NEXT_PAYMENT_DATE and PAYMENT_FREQ <= 0 LAST_PAYMENT_DATE = ORIGINATION_DATE 2 LastPayDate>=NextPayDate Last payment date is greater than next payment date, but cannot be calculated using payment frequency
9180 LAST_PAYMENT_DATE < ORIGINATION_DATE LAST_PAYMENT_DATE = ORIGINATION_DATE 2 LastPayDate<OrigDate Last payment date cannot be less than the origination date
9181 LAST_PAYMENT_DATE > CALENDAR_PERIOD_END_DATE and ORIGINATION_DATE <= CALENDAR_PERIOD_END_DATE LAST_PAYMENT_DATE = CALENDAR_PERIOD_END_DATE 2 Last Pay Date>Calendar Period End Date Last payment date cannot be greater than the Calendar Period End Date if the instrument originated in the past
9182 INT_TYPE = 2 and AMRT_TYPE CD = 100, 400, 500, 600 or 800 INT_TYPE = 1 2 IntType<>1,2 / Amrt Type Interest type can only be arrears for conventionally amortizing instruments
9182 INT_TYPE <> 1 or 2 INT_TYPE = 1 2 IntType<>1,2 / Amrt Type Interest type must be a valid OFSA code
9183 COMPOUND_BASIS_CODE <> 110, 120, 130, 140, 150, 160, 170 or 200 COMPOUND_BASIS_CODE = 160 2 Invalid CompBasisCode Compounding basis code must be a valid OFSA code
9184 (ACCRUAL_BASIS_CODE = 1, 4 or 5) and (PMT_FREQ_MULT = D or AMRT_TYPE_CODE = 800, 801, or 802) ACCRUAL_BASIS_CODE = 3 2 AmrtType/Accrl Basis Error Accrual basis code cannot have a 30 day month assumption on instruments defined by a payment schedule

Related Topics

Overview of Cash Flow Edit Logic